← Troubleshooting guides

How to investigate a rejected Peppol invoice

Short answer: capture the exact rejection code, locate its UBL field, compare that value with the source accounting record, correct the source data, regenerate the XML and validate it again before resubmission.

1. Preserve the original rejection message

Keep the rule identifier, severity, message and XML location supplied by the accounting platform or Access Point. A label such as BR-CO-16 is more useful than a generic message such as “invalid invoice.”

2. Separate syntax, business-rule and routing problems

Malformed XML must be repaired before business rules can be evaluated. Business-rule findings usually identify missing or inconsistent invoice data. Routing findings commonly involve the buyer or seller electronic address and its identifier scheme.

3. Find the corresponding UBL element

Use the rule's XML path to locate the field. For example, invoice identity values appear near the document root, party data appears under the supplier or customer party, and monetary reconciliation appears under cac:LegalMonetaryTotal.

4. Correct the source system

Identifiers, legal names, dates, VAT data, payment terms and monetary values should come from the accounting or invoicing system. Avoid inserting a guessed value directly into XML merely to satisfy a rule.

5. Regenerate and validate again

Generate a fresh invoice file, rerun the relevant checks and confirm that totals still reconcile. If the file passes local checks but is rejected again, compare the new Access Point message with the previous one; it may expose a later validation layer.

6. Keep an audit trail

Retain the original file, rejection report, corrected source value and regenerated file according to your organization's record-handling policy.

Important: RejectFix provides implemented diagnostics and safe deterministic repairs only where the intended change is unambiguous. It does not replace the official OpenPeppol validation artefacts or your Access Point.

Find your Peppol or UBL error code →