Peppol infrastructure for SaaS platforms
Regulation moves. Your code shouldn't have to.One integration puts every customer 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.0.0 · CLI v0.10.0 · 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",
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 verify your company automatically against the official registry behind the Peppol identifier you declare. 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
Mandate starts
1 Sept 2026
All receive; large and mid-sized businesses issue first, SMEs follow in 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. Your code doesn't change.
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 platform 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 Compliant
Full Peppol BIS 3.0 compliance out of the box. Invoices, credit notes, allowances, attachments, delivery — all handled.
Real-time Webhooks
Get notified instantly when invoices are delivered, accepted, or rejected. 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: six-month Pilot at EUR 99/mo, standard plans EUR 199–499/mo + usage | 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 + examples; TypeScript SDK availability unclear | 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. Platform plans support SaaS products sending on behalf of customer Legal Entities.
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 sending on behalf of customer Legal Entities.
A Legal Entity is one customer company you activate for production sending.
Platform Pilot
For early SaaS platforms validating production Peppol with first customers.
- 6-month pilot bridge
- Up to 10 production Legal Entities
- EUR 0.35 per production document (sent or received)
- Platform Order Form + DPA required
- Guided onboarding
- Conversion path to Starter or Growth
Contract-gated. No public checkout.
Platform Starter
For young SaaS platforms and design partners.
- Fixed monthly fee, paid upfront
- Up to 10 production Legal Entities
- EUR 0.25 per production document (sent or received)
- Auto-charge usage when accrued usage reaches EUR 50
- Production access is enabled after a signed platform agreement and DPA
Contact details below.
Platform Growth
For growing SaaS platforms with real customer volume.
- Fixed monthly fee, paid upfront
- Up to 50 production Legal Entities
- EUR 0.22 per production document (sent or received)
- EUR 150/mo per additional block of 50 Legal Entities
- Usage billed automatically as platform volume grows
- Production access is enabled after a signed platform agreement and DPA
Contact details below.
Tell us about your platform volume and target 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. 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, across roughly 30 countries — that part does not depend on where you are. What does depend on your country is where you can invoice FROM. We verify your company automatically against the official registry behind the Peppol identifier you declare. 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 has 1,888 passing tests and full BIS 3.0 compliance.
What are the SaaS platform plans for?
They are for SaaS products that need to send Peppol invoices on behalf of many customer companies. Each customer company you activate for production sending counts as one Legal Entity. Early-stage platforms can start with the 6-month Platform Pilot before converting to Starter or Growth.
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, Legal Entity limits, and data processing terms are clear before live customer sending.
How is platform usage billed?
Platform plans combine a fixed monthly fee with per-document usage, counting documents both sent and received. Platform Pilot uses a higher per-document rate during the 6-month bridge, Platform Starter publishes a EUR 50 auto-charge threshold for accrued usage, and Platform Growth uses volume-adjusted automatic billing so larger platforms do not get noisy micro-charges.
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 Sept 2026 mandate, CSV export, Python SDK
More national rule cartridges, multi-country routing
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.