Skip to content

Guide · source-checked 2026-09-18

How to add Peppol e-invoicing to your software without becoming an access point

Your customers need to send and receive Peppol invoices, and your product is where they create them. Here are the three ways to add it, what each one leaves to your team, and when each one fits.

Short answer

You don't need to become a Peppol access point. Map your invoices to JSON and call a Peppol API; a certified access point carries them across the network. If you send on behalf of your customers, pick a provider with a real multi-tenant sender model. getpeppr manages many customer legal entities under one master API key per environment, each identity-verified and authorised by the customer before it can send live invoices, with a TypeScript SDK and a free sandbox.

Three ways to add Peppol to your product

They all end on the same network. What changes is how much of it your team has to build and keep up to date.

Option 1

Become an access point yourself

  • Join OpenPeppol and sign the Service Provider Agreement with your Peppol Authority, or with OpenPeppol where your country has none
  • Run the network stack: an AS4 implementation and Peppol PKI certificates, plus SMP registration for the customers you receive for
  • Pass OpenPeppol's AS4 onboarding test before you get a production certificate
  • Generate and validate UBL, and stay compliant with the BIS specifications your service uses as they are released

Fits when e-invoicing is your product, not a feature of it.

Option 2

Integrate an access point's API directly

  • No accreditation on your side — the provider holds it
  • You map your invoices to the provider's document model
  • You build customer onboarding, identity handling and status reconciliation

Fits when you need broad direct infrastructure and have the team to build the layer above it.

Where most software vendors landOption 3

Use a Peppol API built for software vendors

  • Send JSON; validated UBL is generated and delivered for you
  • Customer legal entities are created through the API; each customer authorises on a hosted page
  • Status webhooks and a sandbox to test before anything is live

Fits when invoicing is a feature of your product. getpeppr, e-invoice.be and peppol.sh work this way.

Peppol accreditation

Become an access point yourself:
Yours to obtain and keep
Integrate an access point's API directly:
The provider's
Use a Peppol API built for software vendors:
The provider's

UBL generation and validation

Become an access point yourself:
You build it
Integrate an access point's API directly:
Shared with the provider
Use a Peppol API built for software vendors:
Handled by the provider

Onboarding each customer company

Become an access point yourself:
You build it
Integrate an access point's API directly:
You build it
Use a Peppol API built for software vendors:
API, plus a hosted customer authorisation

Keeping up with rulebook updates

Become an access point yourself:
Your team
Integrate an access point's API directly:
Shared with the provider
Use a Peppol API built for software vendors:
The provider

First decision: who is the sender?

This one question decides which option fits. Answer it before comparing providers.

Your own invoices

Your company sends

You bill your customers as one legal entity. One verified sender, one API key, many recipients. Every option above handles this.

On behalf of customers

Each customer sends under its own name

Each customer is a separate legal entity on the network. You need consent, identity checks and an explicit sender per invoice. Ask each provider how it does this before promising it to your customers.

What it looks like in code

Send an invoice, keep the id, match status webhooks on the same id.

import { Peppol, webhooks } from "@getpeppr/sdk";

const peppol = new Peppol({ apiKey: process.env.GETPEPPR_API_KEY! });

// 1. Send. `id` is the provider document GUID — store it on your invoice row.
const { id } = await peppol.invoices.send(invoiceData);

// 2. Status webhooks carry that same value. `event.data` is `unknown` on the
//    envelope, so narrow it before reading the field.
const event = await webhooks.constructEvent(rawBody, signature, webhookSecret);
const { providerDocumentId } = event.data as { providerDocumentId?: string };

if (providerDocumentId === id) {
  // Same document. Update the row you stored in step 1.
}

Full walkthrough in the Platform sending and webhooks guide.

What getpeppr covers today

These figures come from the same constants the pricing page uses, kept in step with the product by parity tests.

Self-serve Peppol sending

France, Belgium, Ireland, the United Kingdom, the Netherlands, Denmark, Germany, Sweden and Norway

Assisted onboarding in .

Platform plan

EUR 99 / month

EUR 0.25 per production document, sent or received. 50 customer legal entities included, then EUR 1 per registered legal entity per month.

Sandbox

Free

Unlimited test documents and up to 10 test customer companies, before and after you go live.

This covers standard Peppol invoice sending and receiving. It is not a statement of any country's mandate, clearance or tax-reporting coverage.

Frequently asked questions

Do I need to become a Peppol access point to send e-invoices from my software?

No. You can connect through a certified access point, either by integrating its API directly or by using an API built for software vendors. Becoming an access point yourself means joining OpenPeppol, signing a Service Provider Agreement with your national Peppol Authority, running an AS4 implementation with Peppol PKI certificates and passing OpenPeppol's onboarding test — worth it when e-invoicing is your core product, rarely otherwise.

Can my SaaS send Peppol invoices on behalf of my customers?

Yes, if your provider supports a platform sender model: each customer is registered as its own legal entity, identity-verified, and authorises you to send in its name before any live invoice goes out. With getpeppr you create those legal entities through the API under one master key per environment; each customer then confirms on a getpeppr-hosted page, co-branded with your name, and a live send is refused until it has. The Platform plan includes 50 customer legal entities.

Is Peppol e-invoicing mandatory in Belgium?

Since 1 January 2026, Belgian VAT-taxable businesses must in principle issue structured electronic invoices to each other, under the law of 6 February 2024 (Moniteur belge, 20 February 2024), which added Article 53 §2bis to the VAT Code. The scope has exceptions — among them businesses without a Belgian establishment and those carrying out only Article 44 exempt supplies — and the law of 10 February 2026 narrowed it further and added a case where the recipient cannot technically receive a structured invoice. The default exchange is Peppol BIS over the Peppol network; another format is possible by mutual agreement and must still meet EN 16931. Check your own position against the sources below rather than treating this as advice.

How much does it cost to add Peppol for my customers?

On getpeppr's Platform plan: EUR 99 per month plus EUR 0.25 per production document sent or received, with 50 customer legal entities included and EUR 1 per month per registered legal entity beyond that. Production access follows a signed platform agreement and DPA.

Can I test before signing anything?

Yes. The sandbox is free and self-serve, with unlimited test documents and up to 10 test customer companies. You can also validate invoices offline with the CLI without an account at all.

Sources

Every external claim on this page was checked against a primary source on 2026-09-18. Mandates and provider offerings change — re-check the linked source before making a decision.

Add Peppol to your product

Create a free sandbox, send a test invoice, and check it against your own invoice data before you talk to anyone.

Free sandbox forever, no credit card. Production access follows a signed platform agreement and DPA. Or read the Platform docs first.