4 min read

Credit notes over Peppol: correcting an invoice the compliant way

Why you can't recall a Peppol document, and how to correct one properly with a Stripe credit note — plus a fresh invoice when the amount changes — both sent over the network.

You sent an invoice over Peppol and something is wrong with it — a price, a line item, the wrong customer. The instinct is to pull it back and fix it. You cannot. A document that has entered the Peppol network cannot be recalled, and that is not a limitation of any one tool — it is how the network works. The right move is to correct it forward, with a credit note, and this is how.

Why there is no undo

Peppol delivery is closer to registered post than to a shared document. Once your access point hands a document to the recipient's access point, it has been delivered into their system, and there is no message that reaches back in to delete it. The recipient may have already booked it in their accounting software. Recalling it would mean rewriting a record you no longer control.

So corrections in a structured-invoicing world are always additive. You do not edit the original; you issue a new document that references it and adjusts the position. In accounting terms this is exactly what a credit note has always been — Peppol just makes it the only available mechanism, because the alternative of quietly editing a sent invoice does not exist.

The credit note is its own Peppol document type

A credit note is not a negative invoice and it is not a variant of the invoice format. In Peppol it is a distinct document type with its own profile — the credit-note profile under Peppol BIS Billing 3.0, still aligned with EN 16931. It carries a reference back to the invoice it corrects, so the recipient's system can tie the two together and net them off correctly.

That distinction matters: a credit note is a first-class document you send over the network, not a workaround. Stripe already models it as its own object — a Stripe credit note raised against a finalised invoice — and Peppost sends it as the correct Peppol document type, not as an invoice with a minus sign. It generates the credit-note UBL, attaches the original Stripe PDF as the human-readable rendering, and dispatches it through a certified access point.

When a credit note is enough, and when you also need a new invoice

Two situations, two shapes:

  • The invoice should not have gone out, or the amount was too high. Issue a Stripe credit note for the full or partial amount. The credit note cancels or reduces the original, the recipient's ledger nets out, and you are done. One document, sent over Peppol.
  • The amount was wrong and a corrected invoice is owed. Issue a Stripe credit note to reverse the original in full, then raise a fresh, correct invoice. Send both over Peppol. The credit note unwinds the mistake; the new invoice states what is actually due. The recipient ends up with a clean, self-consistent set of documents rather than an edited one.

The principle underneath both is the same: never try to make the first document disappear. Add the documents that make the record correct.

How the send and the credit behave

Sending a credit note works exactly like sending an invoice, because to Peppost it is the same operation on a different document type. You pick the finalised Stripe credit note, Peppost looks the recipient up in the Peppol directory to confirm they are reachable, and only then is a credit spent — one per send, credit notes included, at the same rate as any invoice on the pricing page. If the recipient is not on the network, you find out before anything is charged.

On refunds: if a send fails before the document leaves our access point, the credit is refunded automatically — nothing left, so nothing was used. But once the document has been delivered, a later rejection by the recipient's side does not refund the credit, because the send did happen. That is the same rule for credit notes as for invoices, and the FAQ states it plainly. Only finalised Stripe credit notes can be sent, by the way — drafts are excluded, because their numbers and totals are not yet authoritative.

The workflow, start to finish

  1. Decide the shape: a credit note alone, or a credit note plus a corrected invoice.
  2. Raise the Stripe credit note against the original invoice, and finalise it. If a corrected invoice is needed, raise and finalise that too.
  3. In Peppost, send the credit note over Peppol; confirm the recipient lookup and dispatch. Send the new invoice the same way if you raised one.
  4. Watch each document reach delivered on the dashboard.

None of this asks you to leave Stripe — the credit note lives there as your record, like the invoice it corrects. Peppost only adds the delivery. If you want the underlying walkthrough for the send itself, how to send a Stripe invoice over Peppol covers each state in detail, and the sending guide has the click-path. The rule is simple: on Peppol you correct forward, never back.