Extract data from Peppol e-invoices
Peppol turns an invoice into a message that two accounting systems exchange without a human in between. Instead of emailing a PDF, a supplier hands a structured UBL invoice to its Peppol Access Point, which routes it across the network to the buyer's Access Point using participant identifiers on both ends, the four-corner model that public buyers across Europe now mandate. The payload follows Peppol BIS Billing 3.0, a customisation of the EN 16931 standard, so the same Business Terms travel on every invoice regardless of which system generated it.
Reading a Peppol invoice is a matter of the Business Terms and the routing metadata around them. Each field maps to a coded term: the invoice number is BT-1, the specification identifier that declares Peppol conformance is BT-24, the buyer reference that carries a public body's Leitweg-ID is BT-10, and the payment means code follows UNTDID 4461. Sender and receiver appear not only as company names but as electronic addresses, the participant identifiers an Access Point uses to deliver the document. A receiver that also keeps a PDF rendering needs both views to agree.
Talonic reads a Peppol invoice, whether from the UBL payload or its PDF rendering, into the Business Term structure a downstream system expects. An invoice from Aachen Data Systems GmbH to a Brandenburg public authority, carrying a Leitweg-ID and a SEPA payment means code, returns its participant identifiers, two service lines, a 19% VAT breakdown, and a gross total of 18,088.00 EUR that reconciles to the amount due for the receiving Access Point.
What gets extracted from Peppol e-invoices
How extraction works for Peppol e-invoices
A Peppol document is structured UBL by design, but it reaches many teams as a PDF rendering, a print export, or a validation report, and the coded Business Terms still have to be recovered. Talonic classifies the invoice and maps every value to its EN 16931 business term in the Field Registry, so BT-1, the BT-24 specification identifier, the BT-10 buyer reference, and the payment means code resolve by meaning rather than by position on the page. Supplier and buyer participant identifiers are captured as electronic addresses alongside their VAT identifiers, the VAT breakdown must sum to the tax total and the payable, and the Leitweg-ID that routes a public-sector invoice is preserved. Confidence and pixel-region provenance for each field follow DIN SPEC 91491, so an interoperability analyst can reconcile the rendered invoice against the message the Access Point delivered.
Sample extraction
A Peppol BIS Billing 3.0 e-invoice to a public authority
{
"document_number": "RE-2026-11827",
"document_date": "2026-06-30",
"invoice_type_code": "380",
"specification_identifier": "urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:bis3:ubl",
"currency": "EUR",
"buyer_reference": "04011000-1234512345-06",
"supplier": {
"name": "Aachen Data Systems GmbH",
"tax_id": "DE290143756",
"peppol_id": "0204:DE290143756",
"city": "Aachen",
"country_code": "DE"
},
"buyer": {
"name": "Ministerium für Digitales Brandenburg",
"peppol_id": "0204:04011000",
"city": "Potsdam",
"country_code": "DE"
},
"line_items": [
{
"line_id": "1",
"item_name": "Cloud platform subscription, annual",
"quantity": 12,
"quantity_unit_code": "MON",
"item_net_price": 1200,
"line_net_amount": 14400,
"item_vat_category_code": "S",
"item_vat_rate": 19
},
{
"line_id": "2",
"item_name": "Onboarding services",
"quantity": 5,
"quantity_unit_code": "HUR",
"item_net_price": 160,
"line_net_amount": 800,
"item_vat_category_code": "S",
"item_vat_rate": 19
}
],
"subtotal": 15200,
"total_amount_without_vat": 15200,
"vat_breakdown": [
{
"vat_category_code": "S",
"vat_category_taxable_amount": 15200,
"vat_category_rate": 19,
"vat_category_tax_amount": 2888
}
],
"tax_amount": 2888,
"payment_means_code": "58",
"iban": "DE21370501980001234567",
"bic": "AACSDE33XXX",
"total_amount": 18088,
"amount_due": 18088
}Frequently asked
Can it read the UBL payload as well as a PDF rendering?
Yes. A Peppol invoice is structured UBL by design, but many teams see it as a PDF rendering or a print export; the extraction recovers the coded Business Terms from either view and checks that the two agree.
How are the participant identifiers captured?
The supplier and buyer electronic addresses, the participant identifiers an Access Point routes on, are captured alongside the VAT identifiers, so the invoice can be matched to the sender and receiver on the network.
Does it keep the Leitweg-ID and specification identifier?
The BT-10 buyer reference that carries a public body Leitweg-ID and the BT-24 specification identifier that declares Peppol BIS Billing 3.0 conformance are both preserved, since a public-sector receiver routes and validates on them.
Is the payment means code recognised?
The payment means code is read against UNTDID 4461, so a SEPA credit transfer (58) is distinguished from a standard credit transfer (30), and the IBAN and BIC are captured for the payable.
What fields are extracted from Peppol e-invoices?
Talonic returns Peppol e-invoices as schema-validated, typed fields. Common fields include Invoice Number (BT-1), Specification Identifier (BT-24), Buyer Reference (BT-10), Supplier Participant ID, and more, each normalized (dates to ISO 8601, amounts as numbers) and mapped to a stable key so the output shape stays the same across layouts.
How accurate is extraction from Peppol e-invoices, and how is confidence reported?
Every extracted cell carries a confidence score from 0.0 to 1.0 and a provenance pointer back to the source page and region, so low-confidence values can be reviewed against the original before the data is trusted downstream. There is no single accuracy number: confidence is reported per field so you can gate on it.
Can I use Peppol e-invoices extraction in production?
Yes. The same engine behind this guide is available as a production REST API and Node SDK with sync, async, and streaming modes, schema versioning, signed webhooks, and EU-resident processing. Start free with an API key, then scale on usage-based pricing.
What does it cost to extract data from Peppol e-invoices?
There is a free tier for prototyping and agent evaluation with no credit card. Paid usage is credit-based at 1,000 credits per euro: page ingestion is 100 credits per page and registry-resolved queries are free. See talonic.com/pricing for current rates.
Ready to extract from your own Peppol e-invoices?
- GDPR
- HIPAA
- ISO 27001 / 42001 aligned
- DIN SPEC 91491 co-author
- EU-resident infrastructure
Author note
Reviewed by Talonic engineering · last reviewed 2026-07-06