Peppol with Xero: EU e-invoicing for international companies
Last updated 2026-05-28 · ~5 min read
Xero does not support Peppol or any EU structured invoice format natively. Pactaro bridges that gap: it connects to Xero via a single OAuth authorisation, intercepts every approved invoice via webhook, and automatically generates the correct EU format — Peppol BIS 3.0, ZUGFeRD, or Factur-X — based on the recipient country, then emails the compliant document to your client and archives it for 10 years in EU-hosted immutable storage. Peppol-network delivery, France PDP routing, and Italy SdI transmission are rolling out — join the waitlist. Your workflow in Xero remains completely unchanged.
Xero and Peppol: the gap
Xero was built for the New Zealand and Australian markets. It is widely used by companies with EU subsidiaries — especially in the UK, NZ, and Australia — but its invoice output is a standard PDF. That PDF cannot satisfy any EU structured e-invoicing mandate.
| EU requirement | What Xero generates | What is needed |
|---|---|---|
| Peppol BIS 3.0 (Belgium, NL B2G, cross-border) | PDF only | EN 16931 XML routed via Peppol access point |
| ZUGFeRD (Germany B2B) | PDF only | PDF/A-3 with embedded EN 16931 XML |
| XRechnung (Germany B2G) | PDF only | Pure EN 16931 XML via Peppol or ZRE/OZG-RE |
| Factur-X (France) | PDF only | PDF/A-3 with embedded EN 16931 XML via certified PDP |
| FatturaPA (Italy) | PDF only | Italian XML schema routed through SdI |
The gap is structural. Xero would need to rebuild its invoice output pipeline, gain accreditation as a Peppol access point, and integrate directly with Italy's SdI and France's PDP infrastructure. None of that is on Xero's 2026 roadmap. A dedicated compliance bridge is the practical solution.
Which EU countries mandate Peppol?
Peppol is the most widely adopted EU e-invoicing transport standard, underpinned by the EN 16931 data model. The table below shows the current mandatory status by country.
| Country | Mandate scope | Format | Effective date | Status |
|---|---|---|---|---|
| Belgium | All B2B (VAT-registered) | Peppol BIS 3.0 | 1 January 2026 | Active |
| Netherlands | B2G mandatory; B2B voluntary | Peppol BIS / NLCIUS | B2G since 2019 | B2G active; B2B expanding |
| Germany | B2G (public authorities) | XRechnung via Peppol | B2G active; B2B from Jan 2027 | B2G active |
| France | Peppol UBL accepted via PDP | Peppol UBL or Factur-X | Sep 2026 (receive); Sep 2026/2027 (send) | Imminent |
| EU cross-border (ViDA) | Digital reporting for cross-border B2B | Peppol BIS 3.0 or EN 16931 | From 2028 | Upcoming |
Legal bases: Belgium — Loi du 2 août 2023. Netherlands — Aanwijzingsbesluit elektronisch factureren. Germany — §14 UStG, Wachstumschancengesetz March 2024. France — Ordonnance n°2021-1190. EU ViDA — Council Directive 2022/542/EU (proposed). This table is informational; consult a tax advisor for binding guidance. Full country detail: EU e-invoicing mandate overview.
The Xero difference
If you have used other accounting tools with Pactaro or reviewed our QuickBooks integration, there is one important Xero-specific behaviour to understand: Xero fires its webhook on invoice approval, not on invoice creation.
- The trigger event: Pactaro listens for the
INVOICESwebhook event with statusAPPROVED. That event fires in real time the moment you click the Approve button in Xero. It does not fire when you save a draft. - Practical implication: an invoice created in draft in Xero is not visible to Pactaro until you approve it. Your internal review cycle — editing line items, adjusting amounts, routing for internal sign-off — happens entirely inside Xero without triggering any Pactaro action. Pactaro activates only at the moment the invoice becomes legally issued.
- Read-only OAuth scope: Pactaro requests only the
accounting.transactions.readpermission. This grants read access to approved transaction data. Pactaro never writes to, modifies, or deletes anything in your Xero account.
This architecture means Pactaro processes only invoices that have been formally approved — matching the legal moment of invoice issuance. If you void a previously approved invoice in Xero, Pactaro detects the status change and marks it accordingly in your Pactaro dashboard.
Using QuickBooks Online instead of Xero? See the Peppol with QuickBooks page.
One integration, all EU formats
Many companies using Xero invoice customers across multiple EU countries simultaneously. Rather than managing separate compliance tools per country, Pactaro derives the correct format from the recipient country on each invoice automatically.
| Invoice recipient country | Format generated | Delivery channel |
|---|---|---|
| Belgium (B2B) | Peppol BIS 3.0 | Email today · Peppol-network rolling out |
| Germany (B2B) | ZUGFeRD (PDF/A-3 + EN 16931 XML) | Email with compliant attachment |
| Germany (B2G, public authority) | XRechnung | Email today · Peppol/ZRE-portal rolling out |
| France | Factur-X (PDF/A-3 + EN 16931 XML) | Email today · PDP routing rolling out |
| Italy | Roadmap — SdI/FatturaPA not yet available | — |
| Netherlands (B2G) | Peppol BIS / NLCIUS | Email today · Peppol-network rolling out |
| Cross-border EU (other) | Peppol BIS 3.0 | Email today · Peppol-network rolling out |
You do not configure this per invoice. Pactaro reads the billing address country and VAT number prefix on each approved Xero invoice and selects the correct regime automatically. You stay in Xero; Pactaro handles every country behind the scenes.
How Pactaro works with Xero
- OAuth connection — you authorise Pactaro once via OAuth inside your Xero account. Pactaro receives only the
accounting.transactions.readscope — read-only access to approved invoice data. The authorisation takes under two minutes and can be revoked from Xero at any time. - APPROVED webhook — when you approve an invoice in Xero, Xero immediately fires an
INVOICESwebhook event with statusAPPROVEDto Pactaro. No polling, no manual exports, no batch uploads. - Recipient country detection — Pactaro reads the billing address country and the VAT number prefix on the invoice to determine which EU mandate applies.
- Format generation and delivery — Pactaro generates the correct structured document (Peppol BIS 3.0 XML, ZUGFeRD hybrid PDF, Factur-X hybrid PDF, or XRechnung) and emails it to your client today along with a courtesy PDF. Peppol-network transmission, France PDP routing, and Italy SdI/FatturaPA are rolling out — join the waitlist.
- Archive — the original Xero invoice data, the generated XML, and the delivery confirmation are stored for 10 years in an immutable EU archive (Cloudflare R2 with Object Lock, Compliance Mode), satisfying German GoBD / §147 AO, French DGFiP archiving requirements, and Italian SdI record-keeping rules.
EU data residency & GDPR
Pactaro is designed EU-first. All invoice data stays within the EU throughout its lifecycle:
- Database and authentication — Supabase EU-Central region (Frankfurt, Germany).
- Application layer — Vercel EU Edge regions.
- 10-year immutable archive — Cloudflare R2 EU (Amsterdam), Object Lock Compliance Mode.
- OAuth tokens — encrypted at rest using pgsodium AEAD-DET within the EU-hosted Postgres instance. Tenant data is isolated via Postgres Row-Level Security (FORCE) — even administrative queries are scoped to the relevant tenant.
All sub-processors are listed on the public sub-processor page and have signed Article 28 GDPR data processing agreements. Full data residency and compliance documentation is at pactaro.com/trust. The GDPR-compliant data processing agreement is available as PDF.
Frequently asked questions
Does Xero support Peppol natively?
No. Xero was built for the New Zealand and Australian markets and generates standard PDF invoices only. It does not produce Peppol BIS 3.0 XML and has no Peppol access-point connectivity. Companies using Xero that need to comply with Peppol mandates in Belgium, the Netherlands, or other EU markets require a compliance bridge such as Pactaro, which connects via a single OAuth authorisation, generates the correct Peppol BIS document, and delivers it by email today. Peppol-network transmission is rolling out — join the waitlist.
Which EU countries mandate Peppol?
Belgium has mandated Peppol BIS 3.0 for all B2B invoices between VAT-registered companies since 1 January 2026. The Netherlands mandates Peppol for B2G (government) invoices since 2019, with B2B adoption expanding. Germany accepts XRechnung delivery via Peppol for B2G (public authority) invoices. France accepts Peppol UBL through certified PDP platforms as one of its eligible formats. Additional EU countries are expected to adopt Peppol-compatible mandates as the EU VAT in the Digital Age (ViDA) directive is implemented from 2028 onward.
When does Pactaro process a Xero invoice?
Pactaro processes a Xero invoice when you approve it in Xero — not when you create it. Xero fires a webhook event (event type INVOICES, status APPROVED) at the moment of approval. Pactaro listens for this event, fetches the invoice data, converts it to the correct EU format, and delivers it. Draft invoices are never processed. This means your internal drafting and review workflow is completely unaffected; Pactaro only activates on the final approval action.
How does Pactaro handle both Peppol and country-specific formats from Xero?
Pactaro detects the recipient country on each approved invoice and automatically selects the correct format. For Belgian and Dutch recipients: Peppol BIS 3.0 (emailed today; Peppol-network transmission rolling out). For German B2B recipients: ZUGFeRD (PDF/A-3 with embedded EN 16931 XML), delivered by email. For German public authorities: XRechnung, delivered by email (Peppol/ZRE-portal routing rolling out). For French recipients: Factur-X (emailed today; PDP routing rolling out). Italy SdI/FatturaPA is on the roadmap and not yet available. No per-invoice configuration is required — format selection is fully automatic.
What OAuth permissions does Pactaro need for Xero?
Pactaro requests only the accounting.transactions.read scope from Xero. This is a read-only permission that allows Pactaro to fetch approved invoice data. Pactaro does not request write access and never modifies, creates, or deletes anything in your Xero account. You can revoke the OAuth connection from Xero at any time from Settings > Connected Apps.
Is Pactaro GDPR-compliant?
Yes. Pactaro stores and processes all customer data exclusively within the European Union. The database and authentication run on Supabase EU-Central (Frankfurt). The application runs on Vercel EU Edge regions. The 10-year immutable invoice archive is stored on Cloudflare R2 EU (Amsterdam) with Object Lock in Compliance Mode. OAuth refresh tokens are encrypted at rest using pgsodium AEAD-DET within the EU-hosted Postgres instance. All sub-processors are listed at pactaro.com/subprocessors and have signed Article 28 GDPR data processing agreements.
Beta access
Pactaro is currently in a private beta with 30 founder slots. Beta participants use Pactaro free for the duration of the beta and receive personal onboarding from the founders.
Disclaimer: Pactaro is not a tax advisor. This page describes EU e-invoicing regulations and Pactaro software only. It does not constitute tax or legal advice. For binding compliance guidance applicable to your situation, consult a qualified tax advisor or attorney in the relevant jurisdiction.
Related pages: Peppol QuickBooks (EN) · EU e-invoicing mandate overview · ZUGFeRD Xero (DE) · Factur-X Xero (FR) · FatturaPA Xero (IT) · Peppol Xero (NL) · Trust & Security · Sub-processors · DPA