How EU e-invoicing works
EU e-invoicing is off by default and enabled per tenant — the mandate landscape is fragmented (B2G vs B2B, different national rollout dates), so you switch it on only where a mandate applies. Once enabled, every finalized invoice generates an EN 16931 document in UBL 2.1 syntax (Peppol BIS Billing 3.0), with your seller identity and per-rate VAT subtotals.This is separate from India’s IRN e-invoicing — enabling one has no effect on the
other. See E-Invoicing (EU) for the concept detail.
Prerequisites
- An API key for the API call below, or dashboard access to Settings.
- Your EN 16931 seller identity: legal name, VAT number (with country prefix), and two-letter country code — enabling is rejected without them.
- Customers with accurate tax ids and billing countries — the buyer party is projected from them.
Step 1: Set your seller identity and enable
Set the opt-in flag plus your EN 16931 seller party. In the dashboard, go to Settings → EU e-invoicing; or call the API:Step 2: Make sure your customers carry a VAT identity
The buyer party is projected from the customer record:- VAT id comes from the customer’s tax id.
- Country is normalized to an ISO 3166-1 alpha-2 code (common EU country names are mapped; a two-letter code passes through).
- Name and postal address come from the customer’s billing details.
Step 3: Finalize an invoice
Generation runs after the invoice is committed (via subscription billing or manual finalization) — it never blocks or rolls back invoicing. The document and its delivery status are stored against the invoice.Verify your setup
1
Config reads back enabled
GET /v1/settings/eu-einvoice returns enabled: true with your seller
identity.2
A finalized invoice has a document
After finalizing an invoice for an EU customer, the stored e-invoice status is
generated (built) or sent (delivered) — not failed.3
Totals reconcile
Line nets sum to the subtotal and the per-rate VAT subtotals sum to the tax
total — the document is exact to the cent.
Going live: the Access Point
Recurso generates and stores the document today and hands it to a pluggable transport. Connecting a production Peppol Access Point is a provider-credential step — until it’s wired, documents are generated, validated, stored, and retrievable, and the delivery hop is exercised by a built-in transport. Generation and retry behaviour are unchanged once a live Access Point is connected.Next steps
- E-Invoicing (EU) concept + delivery statuses
- Set up US sales tax if you also sell into the US