errorbusinessEN 16931

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.

Severity
Fatal
Rule set
EN 16931
Country
All EU
Fix type
INPUT REQUIRED
Confidence
85%
Category
identifier

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

Failing XML
<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>
Corrected XML
<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

XPath/Invoice/cbc:BuyerReference
SpecEN 16931
Operationset_default
StrategyDerive from OrderReference if available, otherwise prompt user for buyer reference or PO number

Common 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

Share this guide:

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.