Peppol infrastructure for SaaS platforms
Regulation moves. Your code shouldn't have to.One integration puts supported customers on Peppol — and keeps them compliant as each mandate lands.
Your customers invoice through one TypeScript SDK and one master API key. We absorb spec changes, country quirks and new mandates — so you never ship a migration to stay compliant.
$npx @getpeppr/cli validate invoice.json$npm install @getpeppr/sdkTry with npx first — no signup, no API key. Or check a receiver in the free Peppol lookup. Install the SDK when you're ready to send.
SDK v5.4.1 · CLI v0.12.1 · latest on npm
import { Peppol } from "@getpeppr/sdk";
const peppol = new Peppol({ apiKey: "sk_sandbox_master_..." });
const invoice = await peppol.invoices.send({
sender: { externalSubTenantId: "customer_8412" },
number: "INV-2026-001",
to: {
name: "SPF Economie (test receiver)",
peppolId: "9925:BE0314595348",
street: "Rue du Progrès 50",
city: "Brussels",
postalCode: "1210",
country: "BE",
},
lines: [
{ description: "Consultation", quantity: 1,
unitPrice: 90, vatRate: 0, vatCategory: "O",
taxExemptReason: "Integration test" },
],
});
console.log(invoice.status); // "submitted"Coverage today
Invoice from nine countries today
Peppol is one network, but every country decides how a company proves who it is. Where we can check that automatically, you sign up and send. Where we can't, we do it with you.
- France
- Belgium
- Ireland
- Netherlands
- Denmark
- Sweden
Sign up and send on your own. We check your declared Peppol identifier automatically through the relevant verification source. No call with us and no manual approval on our side — you set yourself up from the console.
- Germany
- Norway
- United Kingdom
We complete the checks with you and read your first invoice before it goes out.
Legal mandates
Belgium
Live
B2B mandate since 1 Jan 2026
Structured invoices via Peppol BIS for Belgian VAT-taxable B2B.
Germany
Receive live
since 1 Jan 2025
Issuing obligations phase in after transitional periods.
France
Receive mandate live
since 1 Sept 2026
All receive since 1 Sept 2026; large and mid-sized businesses issue since then, SMEs follow on 1 Sept 2027.
Regulatory coverage
Mandate-ready by design
getpeppr is built on Storecove, a certified Peppol Access Point across the EU. BIS 3.0 revisions, country CIUS layers and network changes ship through that integration — your JSON contract stays exactly the same.
Certified Access Point backbone
Storecove is a certified Peppol Access Point connected to the EU Peppol network. BIS 3.0 updates, format revisions, and new country onboardings flow through that integration before reaching your code.
Country layer, shipped per mandate
When a new EU mandate lands, getpeppr ships the country-specific layer — identifier schemes, validation rules, CIUS extensions. Your JSON contract stays exactly the same.
Roadmap aligned with EU regulation
BIS 3.0 today. Country CIUS as mandates land. ViDA Digital Reporting Requirements for cross-border B2B by 1 July 2030 — same SDK, same contract, same JSON.
Not sure if a company can receive Peppol invoices? Look up any Peppol participant — free, no signup.
Stop wrestling with XML
The typical Peppol integration takes 3-5 weeks of reading documentation. Ours takes minutes.
Read 47-page "quick start" guide
Understand UBL 2.1 XML schema (150+ elements)
Learn AS4 protocol for message delivery
Handle BIS 3.0 validation rules that contradict each other
Build 150+ lines of XML by hand per invoice
Contact sales for sandbox access
3-5 weeks before first invoice
npm install @getpeppr/sdk
Write JSON — we generate compliant UBL XML
Full TypeScript types with autocomplete
Actionable validation errors with fix suggestions
Instant self-service sandbox with API keys
Done. Ship it.
Minutes to first invoice
Built for platforms
One platform account. N legal entities underneath it.
Your customers each keep their own Peppol identity. Your team keeps one integration. getpeppr models that directly: provision a customer, capture authorisation, send on their behalf, and listen for lifecycle webhooks.
No XML in your product, no access-point operations in your backlog, and no per-customer onboarding loop rebuilt from scratch.
Read the Peppol API integration guideYour SaaS platform
One master API key
Customer A
Own Peppol identity
Customer B
Own authorisation
Customer C
Own lifecycle status
getpeppr
Verification, UBL/BIS 3.0, Peppol delivery, webhooks
Try before you buy
Try Peppol locally. No signup, no API key.
Validate, look up receivers, and convert UBL invoices from your terminal. Sign up only when you're ready to send through the Peppol network.
npx @getpeppr/cli validate invoice.jsonvalidate · BIS 3.0 offlineinit · scaffold a starterlookup · receiver directoryCode that speaks for itself
Every operation is a single, intuitive method call. Full TypeScript autocomplete. No XML, no SOAP, no pain.
import { Peppol } from "@getpeppr/sdk";
const peppol = new Peppol({ apiKey: "sk_sandbox_..." });
const identity = await peppol.identity.get();
if (identity.sandboxFirstSend?.status !== "ready") throw new Error(identity.sandboxFirstSend?.message);
const result = await peppol.invoices.send({
number: "INV-2026-042",
// Sandbox delivers only to test recipients — in production,
// use your customer's Peppol ID.
to: {
name: "SPF Economie (test receiver)",
peppolId: "9925:BE0314595348",
street: "Rue du Progrès 50",
city: "Brussels",
postalCode: "1210",
country: "BE",
},
lines: [
{ description: "Consulting Q1", quantity: 40, unitPrice: 125, ...identity.sandboxFirstSend.line },
{ description: "Travel expenses", quantity: 1, unitPrice: 350, ...identity.sandboxFirstSend.line },
],
paymentTerms: "Net 30 days",
paymentIban: "BE68539007547034",
});
console.log(`Sent! ID: ${result.id}`);Everything you need to ship Peppol invoices
Built by developers who spent weeks reading Peppol docs so you don't have to.
Built country by country
Self-serve in France, Belgium, Ireland, the Netherlands, Denmark and Sweden, and we onboard you personally in three more countries. One API — the country-specific rules are ours to carry, not yours.
Built-in Validation
Pre-send validation catches errors before they hit the network. Human-readable messages with fix suggestions, not cryptic Peppol rule IDs.
TypeScript Native
Full type safety from invoice creation to webhook handling. Autocomplete every field. Catch errors at compile time, not runtime.
BIS 3.0 Tooling
Peppol BIS 3.0 tooling out of the box. Generate invoices and credit notes, include allowances and attachments, and track Peppol delivery.
Real-time Webhooks
Get notified when invoices are sent, accepted, or refused — pushed as each status lands, retried if your endpoint is down. No polling. Event-driven architecture like Stripe.
Zero XML
Send JSON, we generate compliant UBL XML. Your developers will never see an angle bracket. That's a promise.
Peppol API comparison
Five providers compared on tenant model, tooling, pricing, onboarding, and market focus. The source-checked guide explains where each one fits.
| Provider | SDKs | Pricing | Countries | Self-Service | Evaluation path |
|---|---|---|---|---|---|
| getpepprYou are here | TypeScript + CLI | Business from EUR 49/mo + usage; Platform: one plan at EUR 99/mo + usage, 50 Legal Entities included, no per-customer minimum | Belgium + France + Ireland + Netherlands + Denmark + Sweden self-serve · French regulated CTC in pilot · 3 more assisted | Sandbox self-serve; Platform production contract-gated | Free sandbox + offline CLI |
| peppol.sh | REST/OpenAPI + code samples; TypeScript, Python and PHP SDKs announced as coming soon (none on npm as of 2026-09-03) | Personal EUR 0.20/document; Connect EUR 0.16→0.10 (EUR 250 top-up) | Developer- and agent-first Peppol | Yes (API-created sandbox) | Instant API-created sandbox |
| e-invoice.be | 5 languages (TS, Python, PHP, Ruby, Java) + MCP | From EUR 0.25/invoice; Enterprise from EUR 0.18 | Belgian certified AP; claims 30+ reachable countries | Yes | Free sandbox, no sales call |
| Storecove | RESTful JSON API + OpenAPI/Swagger | Quote required | 31-country compliance; Peppol + DBNAlliance | 30-day test account by request | Requested 30-day sandbox |
| Basware | Network REST API + XML integrations | Subscription; contact Basware | Global network | Support-provisioned test account | Testing account via Basware Support |
Simple, transparent pricing
Start free. Send your first invoice in minutes. Scale without surprises.
Business plans run from a free sandbox to EUR 399/month. The Platform plan lets SaaS products send and receive on behalf of their customer companies, with 50 companies included and no per-customer minimum.
For companies sending their own Peppol invoices.
Sandbox
Test everything. No credit card required.
- Unlimited test documents
- Full SDK access
- Sandbox environment
- Validation API
- Documentation & guides
No credit card. No time limit.
Starter
For developers and early-stage SaaS.
- 100 documents included (sent + received)
- Live Peppol delivery
- Webhooks & events
- Email support (< 24h)
- Management dashboard
- Up to 3 team members
Pro
For growing businesses.
- 800 documents included (sent + received)
- Live Peppol delivery
- Webhooks & events
- Management dashboard
- Email support (< 24h)
- Up to 10 team members
Business
For high-volume document exchange.
- 2,000 documents included (sent + received)
- Live Peppol delivery
- Webhooks & events
- Management dashboard
- Priority email support
- Up to 25 team members
For SaaS products that send and receive Peppol documents on behalf of their customer companies.
One contract, one bill for the whole platform. Your customers never pay us.
Platform
Everything a multi-tenant product needs to put its customers on Peppol, priced by what they actually exchange.
- Send and receive for every customer company under one contract
- EUR 0.25 per production document, sent or received
- No per-customer fee for your first 50 companies, no setup fee, no per-customer minimum: a customer that sends two invoices costs you two documents
- 50 customer Legal Entities included, then EUR 1 per registered Legal Entity per month. Deregister a customer you no longer serve and it stops counting
- One central bill for the whole platform, never one per customer. Usage is charged when it reaches EUR 50
- Identity verification of your customer companies, DPA and platform agreement included
- Free sandbox with unlimited test documents and up to 10 test customer companies, before and after you go live
Free and self-serve, no agreement. Production after a signed platform agreement and DPA.
Estimate your monthly bill
Two numbers are enough. Move the sliders or type your own.
- PlatformEUR 99.00
- 600 documents × EUR 0.25EUR 150.00
- 150 Legal Entities beyond the 50 included × EUR 1EUR 150.00
That is EUR 2.00 per customer per month, EUR 0.67 per document all-in.
Estimate in EUR, excluding VAT. Plan: EUR 99/mo, EUR 0.25/doc, 50 Legal Entities included, EUR 1 per extra Legal Entity.
Any business document (invoice, credit note or other) that reaches the Peppol network for one of your customers, sent or received, in production. Sandbox traffic is never billed, and neither is a document refused at submission.
One customer company registered with your platform in production. It counts while it is registered, because our access point reserves its place from the moment you create it, whether or not it transacts yet.
Nothing changes in the formula. Each registered company beyond the 50th adds EUR 1 a month, and that is all. Above 2,000 documents a month, talk to us about a committed rate.
Tell us about your platform: how many customer companies, roughly how many documents each, and which countries.
Email hello@getpeppr.dev and we will reply with the platform agreement + DPA path.
Chat uses the Crisp widget when it is available.
All prices in EUR, excluding VAT. Business plans have no setup fees. Platform production access is contract-gated. Usage counts documents both sent and received.
Frequently asked questions
Which countries can I send invoices to?
Any participant on the Peppol network, wherever it is registered — that part does not depend on where you are. What does depend on your country is where you can invoice FROM. We check your declared Peppol identifier automatically through the relevant verification source. You are self-serve in France, Belgium, Ireland, the Netherlands, Denmark and Sweden today, and we onboard you personally in Germany, Norway and the United Kingdom. The coverage page at getpeppr.dev/countries has the full list.
Is the sandbox really free?
Yes. Free forever, unlimited test documents, no credit card required. When you're ready to go live, plans start at EUR 49/month.
Do I need to understand Peppol or UBL?
No. Send JSON, we handle the UBL XML generation, BIS 3.0 compliance, and Peppol network delivery. Zero XML knowledge required.
Is getpeppr production-ready?
Yes. We run on Storecove's certified Peppol Access Point and production sending is enabled. Our SDK and gateway carry 15,000+ automated tests and are built for Peppol BIS 3.0.
What is the SaaS Platform plan for?
It is for SaaS products that send and receive Peppol documents on behalf of many customer companies. Each customer company you register for production counts as one Legal Entity. There is one Platform plan: EUR 99 a month plus EUR 0.25 per document, with 50 Legal Entities included, then EUR 1 per registered Legal Entity per month beyond them. There is no per-customer minimum and no setup fee.
Can SaaS platforms go live self-serve?
Sandbox is free, needs no agreement and is self-serve: an organisation admin chooses “A platform for my customers” at signup, or starts the platform sandbox trial later from the console overview, then creates the sandbox master key in the console. Production platform access is contract-gated — we enable it after a signed platform agreement and DPA, so responsibilities, the entity count you are billed on, and data processing terms are clear before live customer sending.
How is platform usage billed?
One central bill for the whole platform, never one per customer: the EUR 99 platform fee, EUR 0.25 per document sent or received in production, and EUR 1 per month for each registered customer Legal Entity beyond the 50 included. Accrued usage is charged when it reaches EUR 50, so small volumes never produce noisy micro-charges. There is no per-customer setup fee and no per-customer minimum. Sandbox is free, self-serve and needs no agreement.
How does getpeppr compare to building with raw Peppol?
A typical Peppol integration takes 3–5 weeks: reading UBL 2.1 specs, implementing XML generation, handling AS4 protocol, and managing BIS 3.0 validation rules. With getpeppr, you send JSON and we handle everything. Most developers send their first test invoice in minutes, not weeks.
Roadmap
TypeScript SDK, webhooks, CLI (send + validate + scaffold + lookup), sandbox + production sending
France CTC pilot for the French mandate (in force since 1 Sept 2026)
More national rule cartridges
Ready to ship Peppol invoices?
Validate locally or create a free sandbox. No credit card, full SDK access.
$npm install @getpeppr/sdkFree sandbox forever. No credit card required. Production access follows the plan you choose.