UBL-CR-666:Disallowed element: cbc:TaxExemptionReasonCode
Fix: Invoice Navigator automatically removes the disallowed `cbc:TaxExemptionReasonCode` element from your Invoice (UBL-CR-666). Upload your invoice to fix this automatically.
UBL 2.1 Invoice schema does not include `cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReasonCode`. This element must be removed for EN 16931 compliance.
Engine Classification
Remove disallowed UBL element per EN16931 specification
Confidence: 95% · Applied automatically in pipeline
What is UBL-CR-666?
UBL-CR-666 is a fatal validation rule defined in the UBL 2.1 specification. It validates the TaxExemptionReasonCode element under TaxSubtotal > TaxCategory 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/cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReasonCode
Why This Error Matters
Invoice will be rejected by EN16931 validators. These conformance rules prohibit UBL attributes and element combinations not in the EN16931 e-invoicing profile. Remove the disallowed attribute or restructure the element.
UBL-CR-666 is a hard failure — the invoice must be corrected and re-sent before it can reach the recipient.
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
- ·Fails UBL schema validation
- ·Error returned: UBL-CR-666
- ·Specification: UBL 2.1
How to Fix It
Locate the disallowed element
Open your invoice XML and find cbc:TaxExemptionReasonCode at /Invoice/cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReasonCode. This element is not permitted in the target e-invoice profile and triggers UBL-CR-666.
Remove cbc:TaxExemptionReasonCode
Delete the entire cbc:TaxExemptionReasonCode block and its child elements. Invoice Navigator automatically removes the disallowed `cbc:TaxExemptionReasonCode` element from your Invoice (UBL-CR-666).
Re-validate your invoice
Upload the corrected invoice to confirm UBL-CR-666 is resolved. If your software consistently adds this element, contact your vendor about their e-invoice export settings.
Before / After
<cac:TaxCategory> <cbc:TaxExemptionReasonCode>value</cbc:TaxExemptionReasonCode> </cac:TaxCategory>
<cac:TaxCategory> <!-- cbc:TaxExemptionReasonCode removed for EN 16931 compliance --> </cac:TaxCategory>
Technical Reference
/Invoice/cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReasonCodeCommon Causes
- ·AdditionalDocumentReference has both object ID and attachment
- ·Cannot combine invoice object identifier with embedded doc
- ·Reference must be either object ID or attachment not both
- ·Document reference structure invalid combination
- ·ERP exports conflicting reference types together
Seeing this in production? The API handles UBL-CR-666 automatically. See the fix response →
Frequently Asked Questions
UBL 2.1 Invoice schema does not include `cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxExemptionReasonCode`. This element must be removed for EN 16931 compliance.
Invoice Navigator automatically removes the disallowed `cbc:TaxExemptionReasonCode` element from your Invoice (UBL-CR-666). You can also use Invoice Navigator's compliance engine to correct this automatically in your pipeline.
Yes, UBL-CR-666 is a critical error that will cause invoice rejection. It must be fixed before submission.
Many instances of UBL-CR-666 can be automatically corrected using Invoice Navigator's compliance engine. The fix is applied in your pipeline with full audit evidence.
Last updated: 14 April 2026
Validate your invoice
Drop your XML here to check for UBL-CR-666
Auto-fix UBL-CR-666 in seconds
Upload your invoice and we fix this error automatically. Financial fields are never touched.