4 min read

Does Stripe support Peppol? What you can and can't do

Stripe issues compliant invoices but does not generate UBL or reach a Peppol access point — here are the three realistic ways to close that gap.

The short answer is no — not natively. Stripe is excellent at issuing invoices, collecting payment, and keeping your customer and tax records straight. It does not send those invoices over the Peppol network, and there is no setting that turns that on. If a customer or a national mandate has asked you for Peppol delivery, that is the gap you have to fill.

It helps to be precise about where Stripe stops, because the missing piece is smaller and more specific than "Stripe doesn't do e-invoicing".

What Stripe already gives you

When you finalise an invoice in Stripe, you get a properly numbered document with your legal name, your customer's details, line items, VAT breakdown, and a PDF rendering. For a normal email-a-PDF workflow that is the whole job.

Stripe also holds the data that a structured invoice needs. The company profile, the customer's country and tax ID, the currency, the totals — all of it is already in the account. So the raw material for a compliant Peppol document exists. What is missing is the last two steps that turn that data into something the Peppol network will accept and route.

The two steps Stripe doesn't do

A Peppol invoice is not a PDF. It is a structured XML document — UBL 2.1, following the Peppol BIS Billing 3.0 profile, which is the Peppol-specific binding of the European standard EN 16931. The PDF can ride along as a human-readable attachment, but the machine-readable UBL is the actual invoice as far as the network is concerned.

Two things have to happen that Stripe has no notion of:

  1. Generate the UBL. Map Stripe's invoice into the correct EN 16931 fields, apply the right VAT category codes, and pass the Peppol validation rules. A document that is malformed or fails a business rule gets rejected at the door.
  2. Reach an access point. Peppol runs on a four-corner model: you send to your access point, it routes to the recipient's access point, and that delivers to them. Getting a document onto the network means going through a certified access point and first resolving the recipient's address in the Peppol Directory. Stripe is not a participant on that network and cannot do the lookup or the handoff.

If you want the background on the network itself, we cover it in what is Peppol. The point here is that everything Stripe lacks lives in those two steps.

Three ways to close the gap

Migrate to an ERP with Peppol built in. Systems like the larger accounting and ERP suites can generate compliant e-invoices and connect to an access point. If you are already outgrowing Stripe Billing this may be worth it anyway. As a fix for one compliance requirement it is a heavy change: you move your system of record, retrain your finance workflow, and take on a migration project to solve a delivery problem.

Build the integration yourself. Access point providers expose APIs, so a capable team can wire Stripe webhooks to a service that builds the UBL, validates it, submits it, and tracks the delivery states. This keeps Stripe as the system of record. The cost is ongoing: you own UBL generation, you keep up with Peppol specification updates, and you build the monitoring to know when a send failed and why. For most small finance teams that is more than the problem is worth.

Add a thin delivery layer on top of the invoices you already issue. This keeps Stripe exactly as it is and bolts on only the two missing steps. That is what Peppost does. You connect Stripe once over OAuth, and it reads your finalised invoices and credit notes, generates the BIS Billing 3.0 UBL, attaches the original Stripe PDF as the human-readable rendering, checks the recipient in the Peppol Directory before any credit is spent, and dispatches through a certified access point. There is no subscription — you buy prepaid credits and spend one per send, and new accounts get a few free sends to test the whole path, including in Stripe test mode. The getting-started guide shows what the setup involves.

To be even-handed: the thin-layer approach is send-only. It delivers the invoices you raise in Stripe; it does not turn you into a Peppol receiver or replace your accounting software. If you also need to receive structured invoices from suppliers, that is a separate capability and worth naming when you compare options.

Choosing

If Stripe is working for you and the only thing you are missing is Peppol delivery, the honest recommendation is to start with the lightest option that solves it and keep Stripe as your source of truth. When you are ready to actually send one, the step-by-step walkthrough covers it, and the FAQ answers the usual objections about pricing, test mode, and what happens when a send fails.