How to send a Stripe invoice over Peppol, step by step
A concrete walkthrough from a finalised Stripe invoice to a delivered Peppol document, including what each delivery state actually means.
You have a customer who wants their invoice over Peppol, and the invoice already exists in Stripe. This is the walkthrough from that starting point to a delivered document. None of it involves leaving Stripe as your billing system — the invoice you send is the invoice you already raised.
1. Finalise the invoice in Stripe
Peppol delivery only works on finalised invoices and credit notes, not drafts. A draft can still change its number and its totals, and a structured invoice has to be authoritative — the number and amounts become part of the machine-readable document that lands in your customer's system. So finalise it in Stripe first, exactly as you would before emailing the PDF.
Credit notes work the same way. If you need to correct something already sent, you issue a Stripe credit note and, if needed, a fresh invoice, and send both. A document that has entered the Peppol network cannot be recalled, so correction is always forward-looking, never an undo.
2. Check your own company details
This is the step people skip, and it is the one that causes rejected sends. Your own profile — legal name, VAT number, registered address, country — flows straight into the UBL as the supplier fields. Peppol validation is strict about these. A missing VAT number or a malformed address is not a cosmetic problem; it can fail the document before it reaches anyone.
Peppost pre-fills this from what Stripe already holds when you connect, but it is worth a look before your first real send. If a field is thin in Stripe, fix it in Stripe so your source of truth stays correct. The account settings guide covers where each field comes from.
3. Connect Stripe to Peppost
You do this once. Sign in with Stripe, which runs an OAuth handshake — Peppost never sees your Stripe secret keys, only a scoped credential Stripe issues. Your company profile is read across automatically, and finalised invoices and credit notes become visible to send. Onboarding is a few minutes, and a test-mode Stripe account works end to end so you can rehearse before touching a live invoice.
4. Look up the recipient
A Peppol invoice is addressed to a participant identifier, not an email address — usually built from the recipient's VAT or company number. Before sending, Peppost resolves that identifier against the Peppol Directory to confirm the recipient is registered and can accept the document. This happens before any credit is spent, so a customer who is not on the network never costs you anything. If they come back as not reachable, that is its own small problem to solve, and the how-to on checking a customer walks through it.
5. Dispatch
With the recipient confirmed, you send. Peppost generates the UBL 2.1 document in the Peppol BIS Billing 3.0 profile, attaches the original Stripe PDF as the human-readable rendering, and hands it to a certified access point. One credit is spent per send. The full click-path, including where each button lives, is in the sending guide.
What the delivery states mean
A send is not instant-or-failed; it moves through stages, and reading them correctly saves you from chasing false alarms:
- Sent to access point — the document has left Peppost and entered the network through the sending access point. Most sends reach this within seconds.
- Delivered — the recipient's access point has accepted the document. This is the confirmation that matters, and it usually arrives within a few minutes, depending on how quickly the recipient's system responds.
- Failed — something rejected the document. If it failed before leaving the access point, the credit is refunded automatically. If the recipient's access point raised the error after delivery was attempted, you see the original network error message so you know what to fix — commonly a supplier field that did not validate, which loops you back to step two.
Delivery status sits next to each invoice in the app, so you are never guessing. If a state stalls or an error message is opaque, the troubleshooting page maps the common ones to their causes, and the FAQ covers what happens to your credit when a send fails.
After the first one
The first send is the one worth doing carefully — check your details, use test mode, watch it go all the way to delivered. After that it is a couple of clicks per invoice. Because there is no subscription, sending sits idle at no cost between invoices; you spend a credit only when you actually send. New accounts get a few free sends to get through this exact walkthrough, and the pricing page shows what a credit costs once those run out. If Peppol delivery is new to you and you want the wider picture of why Stripe needs this layer at all, does Stripe support Peppol is the place to start.