PEPPOL-EN16931-R003:Buyer reference or order reference is required
Fix: Populate cbc:BuyerReference with the buyer's reference (cost centre, Leitweg-ID, or agreed identifier), OR populate cac:OrderReference/cbc:ID with the purchase order number. This requires input — the value must come from the buyer. Provide the required value in the free validator.
PEPPOL-EN16931-R003 fires when a Peppol invoice contains neither a buyer reference (BT-10, cbc:BuyerReference) nor an order reference (BT-13, cac:OrderReference/cbc:ID). At least one of the two must be present. This lets the buyer's AP process (Accounts Payable) match the incoming invoice to their internal purchase order or cost centre without manual research.
Engine Classification
Business data required · Explicit input workflow · No assumptions made
Required input: Buyer Reference / PO Number
What is PEPPOL-EN16931-R003?
PEPPOL-EN16931-R003 is a fatal validation rule defined in the EN 16931 specification. It validates the BuyerReference element in the UBL invoice XML.
When this rule fires, the invoice is rejected by Peppol access points and never reaches the buyer.
Target path: /Invoice/cbc:BuyerReference
Why This Error Matters
Buyers process high invoice volumes and rely on automated matching. Without a reference the invoice must be routed manually, delaying payment and creating disputes. For German public buyers, the Leitweg-ID in cbc:BuyerReference is the routing key without which the invoice never reaches the correct accounting unit.
PEPPOL-EN16931-R003 is a hard failure — the invoice must be corrected and re-sent before it can reach the recipient.
Peppol access points reject invoices without a buyer reference or purchase order reference. Your buyer cannot match the invoice to their records, causing payment delays.
Validator Behavior
- ·Causes invoice rejection
- ·Error returned: PEPPOL-EN16931-R003
- ·Specification: EN 16931
How to Fix It
Before / After
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"> <cbc:ID>INV-2026-0842</cbc:ID> <cbc:IssueDate>2026-08-12</cbc:IssueDate> <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode> <!-- neither cbc:BuyerReference nor cac:OrderReference present --> <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode> </Invoice>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2">
<cbc:ID>INV-2026-0842</cbc:ID>
<cbc:IssueDate>2026-08-12</cbc:IssueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:BuyerReference>04011000-1234512345-06</cbc:BuyerReference>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cac:OrderReference>
<cbc:ID>PO-2026-000442</cbc:ID>
</cac:OrderReference>
</Invoice>Technical Reference
/Invoice/cbc:BuyerReferenceCommon Causes
- ·Neither buyer reference nor PO number provided
- ·Buyer did not supply reference when ordering
- ·ERP does not capture buyer references
- ·Free-form sale without PO
- ·Reference fields not mapped in export
Seeing this in production? The API handles PEPPOL-EN16931-R003 automatically. See the fix response →
Frequently Asked Questions
No. R003 is satisfied if either one is present with a non-empty value. Providing both is allowed and improves invoice matching on the buyer side, but it is not required.
The Leitweg-ID is the routing identifier for German public sector invoicing. It goes in cbc:BuyerReference (BT-10). Without it, the invoice cannot be routed through the ZRE or OZG-RE portal.
Technically it passes R003, but it is a bad practice. Ask the buyer for a real reference — otherwise the invoice will fail to auto-match on their side and cause payment delays.
Populate cbc:BuyerReference with your own internal identifier (quote number, contract reference, or the customer's cost centre if known). This satisfies R003 and helps reconciliation.
No — this requires input. Invoice Navigator flags R003 and prompts for a value; if you configure a standing rule (e.g. always use quote number), it applies automatically to future invoices.
Last updated: 12 August 2026
Validate your invoice
Drop your XML here to check for PEPPOL-EN16931-R003
Fix PEPPOL-EN16931-R003 with guided input
Upload your invoice and we'll ask for the missing data, then apply a safe, auditable fix.