Fix a rejected or failed Peppol invoice
Diagnose rejected or failed Peppol invoices in Belgium: validation errors, addressing failures, and business rejects via IMR. Correct without corrupting invoice numbering.
Updated
Separate three kinds of “reject”
A Peppol invoice can fail in three different places. Treat them differently:
| Failure type | Where you see it | Meaning |
|---|---|---|
| Validation / syntax | Your tool or Access Point before or at send | UBL / EN 16931 / BIS rules failed |
| Addressing / routing | Send fails: participant not found, no endpoint | Buyer not reachable under that ID |
| Business reject (IMR) | Delivery succeeded; buyer returns Rejected / Under query | Content or commercial objection |
Confusing transport failure with business rejection wastes time and often breaks numbering. Background on responses: Peppol IMR.
Step 1: Read the exact status
Capture: invoice number, send timestamp, recipient ID used, error code/text, and whether the Access Point reported delivered. If delivered, do not “resend the same invoice” until you know whether the buyer rejected it commercially.
Step 2: Fix by failure type
Validation errors
Typical causes: missing VAT category, totals that do not reconcile, wrong currency, empty mandatory party fields, invalid unit codes.
- Open the validation report line by line.
- Correct master data or line items in the draft if the document was never issued in your legal sequence.
- If the number was already issued, follow Step 3 (numbering) before inventing a second document.
Content rules: EN 16931 / UBL and Belgian legal mentions.
Addressing failures
- Re-check the buyer’s enterprise number (ten digits, scheme 0208).
- Run participant lookup.
- Confirm legal entity (parent vs subsidiary).
- If truly off-network, see Client not on Peppol.
Do not “fix” routing by changing random identifiers on a delivered invoice.
Business reject via IMR
Read the reason code and free text. Common themes: wrong PO/reference, price/quantity dispute, wrong buyer entity, tax treatment dispute.
- Agree the commercial correction with the buyer.
- Issue a credit note (and a new invoice if needed) rather than silently rewriting history. See Credit notes on Peppol.
- Resubmit only the corrected structured documents.
- IMR reject
A structured Invoice Message Response that says the buyer will not accept the invoice as submitted, after Peppol delivery already succeeded.
Step 3: Protect invoice numbering
Belgian invoices need a unique, chronological sequence. Bad patterns:
- Reusing the same invoice number after a failed send that your books already treat as issued
- Deleting a failed number and leaving a gap without a documented policy
- Editing a delivered Peppol XML and resending it as if it were new
Practical rules:
- Never issued (blocked before allocation): fix and send under the next number when ready.
- Issued but not delivered (network/validation after number taken): keep the number; correct data and resend the same invoice only if your Access Point and accounting rules allow retransmission of the same document ID; otherwise credit and re-issue per your accountant’s process.
- Delivered then business-rejected: keep the original; credit note + new invoice with a new number.
When unsure whether the number was consumed, check your invoicing ledger first, not only the Peppol UI.
Quick recovery checklist
- Classify: validation vs addressing vs IMR
- Fix the root cause once
- Choose credit / re-issue / resend according to whether the number and delivery already exist
- Confirm the buyer’s inbox shows the corrected document
- File the error text and IMR with the invoice for audit