PEPPOL-EN16931-R102:Document Reference Only Allowed for Invoice Line Object
Fix: Move non-object document references to cac:AdditionalDocumentReference at the document level, or ensure line-level DocumentReference elements use DocumentTypeCode '130'. Upload your invoice to fix this automatically.
PEPPOL-EN16931-R102 fires when a DocumentReference element is used at the wrong level in the invoice. The cac:DocumentReference element can only be used to reference an invoiced object at the line level, not at the document header level.
Engine Classification
Move non-130 DocumentReference from InvoiceLine to AdditionalDocumentReference at document level.
Confidence: 92% · Applied automatically in pipeline
What is PEPPOL-EN16931-R102?
PEPPOL-EN16931-R102 is a fatal validation rule defined in the Peppol BIS 3.0 specification. It validates the This rule validates that cac:DocumentReference within an invoice line is only used for the invoiced object identifier (BT-128). The Schematron assertion checks that DocumentReference elements at the line level contain a DocumentTypeCode of '130' (invoiced object identifier). 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: This rule validates that cac:DocumentReference within an invoice line is only used for the invoiced object identifier (BT-128). The Schematron assertion checks that DocumentReference elements at the line level contain a DocumentTypeCode of '130' (invoiced object identifier).
Why This Error Matters
This is a fatal error — the invoice will be rejected by any Peppol Access Point. Misplacing references breaks automated document processing.
PEPPOL-EN16931-R102 is a hard failure — the invoice must be corrected and re-sent before it can reach the recipient.
Invoice rejected by Peppol Access Point. Cannot be delivered to buyer.
Invoice Navigator can automatically correct this error in your pipeline. The fix is applied with full audit evidence, so your compliance trail remains intact.
Validator Behavior
- ·Causes invoice rejection
- ·Rejected by PEPPOL Access Points
- ·Error returned: PEPPOL-EN16931-R102
- ·Specification: Peppol BIS 3.0
How to Fix It
Before / After
<cac:InvoiceLine>\n <cac:DocumentReference>\n <cbc:ID>CONTRACT-2024-001</cbc:ID>\n <cbc:DocumentTypeCode>916</cbc:DocumentTypeCode>\n </cac:DocumentReference>\n</cac:InvoiceLine>
<cac:InvoiceLine>\n <cac:DocumentReference>\n <cbc:ID schemeID="ABZ">OBJECT-REF-123</cbc:ID>\n <cbc:DocumentTypeCode>130</cbc:DocumentTypeCode>\n </cac:DocumentReference>\n</cac:InvoiceLine>
Technical Reference
This rule validates that cac:DocumentReference within an invoice line is only used for the invoiced object identifier (BT-128). The Schematron assertion checks that DocumentReference elements at the line level contain a DocumentTypeCode of '130' (invoiced object identifier).Common Causes
- ·Mapping contract references to line-level DocumentReference instead of AdditionalDocumentReference.
- ·Using generic DocumentReference template without correct DocumentTypeCode.
- ·Migrating from non-Peppol UBL where line-level references were more permissive.
- ·ERP mapping puts attachment references at line level.
Seeing this in production? The API handles PEPPOL-EN16931-R102 automatically. See the fix response →
Commonly Seen In
Frequently Asked Questions
Your invoice has a DocumentReference at line level that is not an invoiced object identifier. Only code 130 is allowed there.
In cac:AdditionalDocumentReference at the document root level.
Code 130 from UNCL 1001 means Invoicing data sheet — used for the invoiced object identifier.
Yes. It detects misplaced references and moves them to the correct level automatically.
Related Errors
Related Content
Last updated: 25 March 2026
Validate your invoice
Drop your XML here to check for PEPPOL-EN16931-R102
Auto-fix PEPPOL-EN16931-R102 in seconds
Upload your invoice and we fix this error automatically. Financial fields are never touched.