HOWTO · European Digital Identity Wallet · sign.html

Sign an invoice in the browser — with your EU Wallet identity.

If you are a freelancer, tradesperson or small self-employed issuer signing an invoice as a natural person with your European Digital Identity Wallet, the direct path is: sign in at logineu.html with your wallet, then open sign.html and sign the PDF by drag-and-drop. Your PDF never leaves the browser — only the SHA-256 hash goes over the wire.

What you need. A modern browser (Chrome, Edge, Firefox, Safari) and a European Digital Identity Wallet with a valid PID credential. The EU reference wallet, national eIDAS wallets, or our own Web Wallet are supported.

1 Sign in with your EU Wallet

Open logineu.html. The page shows a QR code (on desktop) or a deep-link (on mobile) that you confirm in your wallet app. The wallet presents your PID attributes (given name, family name, e-mail) to our OIDC provider.

Once confirmed, your browser tab is authenticated with your wallet-backed identity.

2 Open sign.html in the same tab

Navigate to sign.html. You are already signed in — no re-authentication. The page shows your current profile (name from the PID credential) in the header.

On your first visit the server mints your personal signing certificate behind the scenes: an EC P-256 certificate whose Subject DN is populated from your OIDC attributes (CN=Given Family, GN=Given, SN=Family, SAN rfc822Name=e-mail).

3 Sign the invoice by drag-and-drop

Drag the PDF invoice onto the dotted drop zone. The preview is rendered locally by PDF.js — no browser plugin, no third-party viewer. The PDF never leaves your device.

Options available:

  • PAdES conformance level: B-T (with timestamp, default), B-LT (with long-term validation data) or B-LTA (with archive timestamp)
  • Encrypted PDFs: the Standard security handler (RC4-128, AES-128) is supported — you do not have to decrypt the PDF first
  • Existing signatures: preserved via incremental save

4 Sign — only the hash goes over the wire

Click Sign. The browser computes the SHA-256 hash of the ByteRange to be signed and sends only that hash (32 bytes, base64-encoded) via our Cloud Signature Consortium v2 API to our signing server. The server signs the hash with your personal EC P-256 key and immediately fetches a qualified RFC 3161 timestamp from a QTSP on the EU LOTL.

The browser inserts the signature bytes and the timestamp token as PAdES-B-T attributes into the PDF's signature field — that is where the actual signature assembly happens. At higher levels (B-LT/B-LTA) the browser additionally embeds OCSP revocation data and archive timestamps.

5 Download the signed PDF

The browser offers the finished signed PDF for download immediately — typically within seconds of the click. The file contains:

  • The original PDF, byte-preserved
  • A signature field with your identity attributes (from the wallet)
  • A qualified timestamp under eIDAS Art. 42 (statutory presumption of data integrity under Art. 41(2))
  • Optionally (B-LT / B-LTA): OCSP revocation data, archive timestamps

This PDF is verifiable across the ten-year retention window (AO §147) and carries a cryptographic proof that it has not been altered since the timestamp moment — a building block for GoBD-compliant retention. See GoBD-compliant signing for the full legal framing.

? Frequently asked

Do I need a new certificate for every invoice?
No. Your personal certificate is minted on the first visit to sign.html and reused as long as you are signed in with the same wallet identity.

Is this a QES (Qualified Electronic Signature)?
No. The signing key today is software-backed and the certificate is from the tenant-owned CA. This is an Advanced Electronic Signature (AdES) under eIDAS Art. 3(11). QES is not required for invoices under UStG §14(3) since 2011; the statutory evidentiary weight for integrity comes from the qualified timestamp (eIDAS Art. 41(2)).

Can I automate this?
Yes — see HOWTO: Sign invoices via CSC v2 API. Same endpoints, no browser UI.

Sign now First: sign in with EU Wallet Back to overview Deutsch