One API for
EU e-invoicing
Romania
Italy
Belgium
Poland
France
Germany
Send JSON. We convert to the right XML format, authenticate with the government, submit, track status, and fire webhooks. Start in 5 minutes.
import { MandatoClient } from "@getmandato/sdk";
const mandato = new MandatoClient({
apiKey: "mk_live_...",
});
const invoice = await mandato.invoices.create({
country: "RO",
supplier: { vatNumber: "RO12345678", name: "Acme SRL" },
customer: { vatNumber: "RO87654321", name: "Client SRL" },
lines: [
{ description: "Consulting", unitPrice: 1000, vatRate: 19 },
],
});
console.log(invoice.id, invoice.status);
// "inv_abc123", "submitted" How it works
From JSON to accepted invoice
Three steps. One API call. Every EU country.
{
"country": "RO",
"supplier": { ... },
"lines": [ ... ]
} Your App
Mandato handles it all
<Invoice xmlns="urn:oasis:ubl">
<cbc:ID>INV-2026-001</cbc:ID>
<cac:AccountingSupplier...>
</Invoice>
Government
Features
Everything you need to go live
From JSON to government-accepted e-invoice in seconds.
Send JSON, get compliance
Your invoice data as a simple JSON object. We convert it to UBL, FatturaPA, XRechnung, or whatever format the government requires.
Government authentication
OAuth2, digital certificates, USB tokens -- we handle all the auth complexity. Connect once, submit forever.
Real-time status tracking
Know instantly when your invoice is accepted, rejected, or needs attention. Webhooks fire on every status change.
AI error translation
Government error messages in Romanian, Italian, or Polish? We translate them to plain English with suggested fixes.
EU-hosted infrastructure
All data stored on Hetzner Cloud in Nuremberg, Germany. GDPR compliant by design. No data leaves the EU.
Idempotent by design
Every API call is idempotent with automatic deduplication. Network failures won't cause duplicate invoices.
JSON in, compliant XML out
Your simple JSON becomes government-ready UBL XML. Automatically.
Expanding across Europe
Supporting EU e-invoicing mandates as they go live.
- Romania (ANAF e-Factura)Live
- Italy (SDI FatturaPA)In Development
- Poland (KSeF)In Development
- Belgium (Peppol BIS 3.0)Coming Soon
- France (PPF / Factur-X)Planned
- Germany (XRechnung)Planned
Rollout timeline
We're shipping new countries every quarter. Here's what's live and what's next.
Romania
ANAF e-Factura
Italy
SDI FatturaPA
Poland
KSeF
Belgium
Peppol BIS 3.0
France
PPF / Factur-X
Germany
XRechnung
Spain
TicketBAI / SII
Portugal
SAF-T PT
Greece
myDATA
Netherlands
Peppol NL
Developer-first API
Three API calls from JSON to government-accepted invoice. Try it in the sandbox.
{
"country": "RO",
"type": "standard",
"currency": "RON",
"supplier": {
"vatNumber": "RO12345678",
"name": "TechVision SRL"
},
"customer": {
"vatNumber": "RO87654321",
"name": "Client SRL"
},
"lines": [
{
"description": "Software license",
"quantity": 1,
"unitPrice": 500,
"vatRate": 19
}
]
} {
"id": "inv_abc123",
"status": "submitted",
"country": "RO",
"govId": null,
"supplierVat": "RO12345678",
"customerVat": "RO87654321",
"grossAmount": 595.00,
"currency": "RON",
"xmlUrl": "https://api.getmandato.dev/v1/...",
"createdAt": "2026-02-11T14:30:12Z"
} Why Mandato?
Stop building e-invoicing infrastructure. Start shipping invoices.
Scroll to see all providers →
Simple, transparent pricing
Start free. Scale as you grow. No hidden fees.
Sandbox
Try the API with test data
- 50 invoices/month
- 1 company
- Test environment only
- Community support
- Full API access
Growth
For growing businesses
- 5,000 invoices/month
- 10 companies
- Live + test environments
- AI error translation
- Priority email support
- Webhook retries
- Usage analytics
Scale
For high-volume operations
- 100,000 invoices/month
- Unlimited companies
- Live + test environments
- AI error translation
- Dedicated support + SLA
- Custom webhook endpoints
- SSO / SAML
- Audit log API
Ready to simplify e-invoicing?
Start with our free sandbox. No credit card required. Go live when you're ready.
Free sandbox with 50 invoices/month · No credit card · Live in 5 minutes