errorsyntaxPeppol BIS 3.0

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.

Severity
Fatal
Rule set
Peppol BIS 3.0
Country
All EU
Fix type
AUTO-FIX
Confidence
92%
Category
structure

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

1.

2.

3.

4.

5.

Before / After

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

XPathThis 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).
SpecPeppol BIS 3.0
StrategyMove non-130 DocumentReference from InvoiceLine to AdditionalDocumentReference at document level.

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

SAP S/4HANAMicrosoft Dynamics 365Custom XSLT

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

Share this guide:

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.