Domain-Keyed Document Stamp

An open protocol for verifying the origin and content of documents.

  • A phone held over a printed page, its camera lined up on the stamp in the page's corner. The phone is drawn in blue.

    Frictionless

    Issuing software creates a stamp with a single function call. Any conforming verifier can check it, including one that runs in a web browser, without an account or a fee.

  • A printer with a sheet in its output tray. The stamp printed on the sheet is drawn in blue.

    Portable

    The signed data is contained in the QR code itself, so a stamp remains verifiable after the document is printed, photocopied or scanned.

  • A stamp taken apart into five stacked layers, each a published standard: QR code, Base45, DEFLATE, Ed25519 and DNS. The Ed25519 signature layer is drawn in blue. DNSRFC 1035 Ed25519RFC 8032 DEFLATERFC 1951 Base45RFC 9285 QRISO/IEC 18004

    Compliant

    Each component is an existing published standard: QR codes, Base45, DEFLATE compression, Ed25519 signatures and the Domain Name System.

At least €27 billion is lost to fraud in Europe each year

This figure is the sum of the published estimates for three kinds of fraud in which an organisation pays out on the strength of documents: insurance claims, social benefit claims and bank transfers. Most European countries publish no such estimates, so the figure is a lower bound, and the actual losses are higher. Its composition is given below the example.

Fraud of this kind commonly involves altered or fabricated documents, such as invoices, payslips, medical reports and bank statements. Because PDF files and printed documents carry no reliable proof of origin, a recipient generally cannot verify one without contacting the organisation that issued it, a step that is slow and is frequently omitted.

invoice-2026-0917.pdfSaved
Northwind B.V.Invoice 2026-0917
Customer
Harbour Logistics B.V.
Date
30 Sep 2026
Amount
4,812.50 EUR
Pay to IBAN
LT12 1000 0111 0100 1000
Due
30 Oct 2026
Before
NL91 ABNA 0417 1643 00
After
LT12 1000 0111 0100 1000

In this example, the bank account number on a genuine invoice has been replaced. The document contains no indication of the change, and a customer paying the invoice would transfer the amount to the new account.

Illustrative invoice.

Composition of the estimate

CategoryAreaSourceAnnual loss
Insurance claims fraud, detected and undetectedEuropean markets that report itInsurance Europe, Insurance fraud: not a victimless crime, for 2017€13.0 billion
Social benefit fraudUnited KingdomDepartment for Work and Pensions, Fraud and error in the benefit system, for 2024–25€7.7 billion
Family, housing and minimum-income benefit fraudFranceCour des comptes, Certification des comptes du régime général, exercice 2023€3.9 billion
Fraudulent credit transfersEU and EEAEBA and ECB, 2025 Report on Payment Fraud, for 2024€2.5 billion
Total€27.1 billion

The United Kingdom estimate of £6.5 billion is converted at €1.18 per pound, the average reference rate of the European Central Bank for 2024. Not included are fraud committed by the issuers of documents themselves, such as missing-trader VAT fraud with invoices from the fraudsters' own companies, which the European Commission estimates at €12.5 to 32.8 billion a year, and fraud in loan, mortgage and subsidy applications, for which no comparable estimates are published.

Documents commonly used in fraud

Fraud of this kind relies on documents that one organisation issues and another relies on, while the document passes through the hands of a third party, such as an applicant, a claimant or a supplier. The following documents are commonly altered or fabricated for this purpose. Each of them can carry a DKDS stamp from its issuer.

  • Income and finance

    • Payslips
    • Employer statements
    • Bank statements
    • Tax assessments
    • Pension statements
  • Invoices and payments

    • Invoices
    • Credit notes
    • Payment requests
    • Purchase orders
    • Receipts
  • Insurance and health

    • Medical reports
    • Sick notes
    • Prescriptions
    • Repair estimates
    • Damage assessments
  • Housing

    • Rental agreements
    • Rent receipts
    • Utility bills
    • Proofs of address
    • Property valuations
  • Education and employment

    • Diplomas
    • Academic transcripts
    • Professional certificates
    • Employment contracts
    • References
  • Official records

    • Birth and marriage certificates
    • Certificates of good conduct
    • Company register extracts
    • Permits and licences
    • Court decisions
  • Trade and transport

    • Certificates of origin
    • Bills of lading
    • Delivery notes
    • Inspection certificates
    • Customs documents
  • Vehicles

    • Registration certificates
    • Roadworthiness certificates
    • Service records
    • Mileage statements
    • Purchase agreements

Passports and identity cards are not listed. They carry their own security features and, in the European Union, an electronic chip that can be verified.

How a stamp works

A DKDS stamp is a QR code printed on a document. It contains the key facts of the document, the domain name of the issuer and a digital signature over both. The public key needed to check the signature is published in the issuer's DNS records, in a manner similar to DKIM for email, so that any party can verify a stamp without an account or an intermediary.

Issuer
northwind.example
holds the private key
DNS
k2026._dkds.northwind.example
v=DKDS1; k=ed25519; p=6kps…0iw=
Invoice
Verifier
northwind.example, 7 fields
Signature valid
  1. 1The issuer publishes a public key as a TXT record in the DNS of its domain. This is done once, and again whenever the key is replaced.
  2. 2For each document, the issuer signs the key facts with the corresponding private key and prints them, together with the signature, as a QR code on the document.
  3. 3A verifier scans the QR code and reads the facts, the signature and the domain name of the issuer.
  4. 4The verifier retrieves the public key from the DNS of that domain and checks the signature against it.

Selecting a step plays the animation from that point.

Verifying a document

A verifier displays the domain that signed the stamp and the facts it contains. The reader then compares these facts with those printed on the document. A difference between the two indicates that the document was altered after it was issued.

Document as received
Northwind B.V.Invoice 2026-0917
Customer
Harbour Logistics B.V.
Date
30 Sep 2026
Amount
4,812.50 EUR
Pay to IBAN
LT12 1000 0111 0100 1000
Due
30 Oct 2026
Verifier output
Verifier
Signed by
northwind.example
30 Sep 2026, 09:00 UTC. The signature is valid.
Supplier
Northwind B.V.
Invoice no.
2026-0917
Date
2026-09-30
Customer
Harbour Logistics B.V.
Amount
4,812.50 EUR
Pay to IBAN
NL91 ABNA 0417 1643 00
Due
2026-10-30

In this example the signature is valid, which shows that the stamp was issued by northwind.example. The bank account number in the stamp differs from the one printed on the invoice, which shows that the invoice was altered after it was issued.

The stamp shown is a valid DKDS stamp. Because northwind.example is a reserved domain name, a live verifier will not find its key.

A stamp issued by dkds.org

This stamp was signed on 10 October 2026 with the key that dkds.org publishes at k2026._dkds.dkds.org. A verifier reports a valid signature by dkds.org and displays the fields the stamp contains. A phone can read the stamp from the screen; on a computer, its text can be copied and pasted into the verifier.

Text of the stamp DKDS:*50CVCKVC7*5$KE$U0NF6TF6NMDLZ3A200Z4AHM0WGCN1*DOZ1CG/OJ9O.ND/0L$195ZOIEG%D2SVDGL744N*JS3YV:3K9KB7-PNW7G$4O91$GJDY5VWS6TACAB+-MGRSGIO5NGF7RV8GH57BTU/2DQA4CFUGJVIASI6L1SD921-2MIRB30I5 F516:O3TQI$I8GYK/:JN9AROT3VBROMU2E5/IVMF+/KCXLNY5.T8.BRZ$NL2R4O3XH7R.65I175LN.9*LLCB4GVKC71%/5SQ7

What a stamp establishes

A valid stamp establishes

  • That the stamp was signed with a key published by the holder of the domain.
  • That the facts in the stamp have not been altered since signing.
  • The time at which the stamp was signed.

A valid stamp does not establish

  • That the facts are true. A stamp identifies who stated them, not whether they are correct.
  • That the printed document matches the stamp. This comparison is made by the reader.
  • Confidentiality. The contents of a stamp can be read by anyone who scans it.

Implementations

DKDS is defined by an open specification, which includes test vectors for checking the correctness of an implementation. Any party may implement the protocol without permission or fees.

The reference implementation, dkds.js, can be used as a software library, as a command-line tool or as a local HTTP service, which allows software written in other languages to create and verify stamps. A browser-based verifier is available at scan.dkds.org; documents are checked on the device and are not transmitted.