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.

submit-invoice.ts
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.

invoice.json
{
  "country": "RO",
  "supplier": { ... },
  "lines": [ ... ]
}

Your App

Mandato
Validate
Convert
Authenticate
Submit

Mandato handles it all

Accepted

<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.

invoice.json
JSON
 

Expanding across Europe

Supporting EU e-invoicing mandates as they go live.

Live
In Development
Coming Soon
Planned
Other EU
  • 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

Live
Live 100%

Italy

SDI FatturaPA

Q2 2026
In development 65%

Poland

KSeF

Q2 2026
In development 45%

Belgium

Peppol BIS 3.0

Q3 2026
In development 25%

France

PPF / Factur-X

Q4 2026
Planned 10%

Germany

XRechnung

Q4 2026
Planned 10%

Spain

TicketBAI / SII

2027
Planned 5%

Portugal

SAF-T PT

2027
Planned 5%

Greece

myDATA

2027
Planned 5%

Netherlands

Peppol NL

2027
Planned 5%

Developer-first API

Three API calls from JSON to government-accepted invoice. Try it in the sandbox.

Request POST /v1/invoices
{
  "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
    }
  ]
}
Response
Sending...
{
  "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.

Feature
Mandato
Recommended
Avalara
Sovos
Build it yourself
Developer API
~
~
Time to first invoice
5 minutes
Weeks
Weeks
2-6 months
JSON input
~
Multi-country EU
Per-country build
TypeScript SDK
~
N/A
Webhooks
~
Custom build
AI error translation
EU-only hosting
~
You choose
Transparent pricing
From €49/mo
Contact sales
Contact sales
Engineering cost
Setup complexity
npm install
Weeks onboarding
Enterprise contract
Months of work

Scroll to see all providers →

Simple, transparent pricing

Start free. Scale as you grow. No hidden fees.

Sandbox

Try the API with test data

Free
Start for free
  • 50 invoices/month
  • 1 company
  • Test environment only
  • Community support
  • Full API access
Most popular

Growth

For growing businesses

€49 /month
Start free trial
  • 5,000 invoices/month
  • 10 companies
  • Live + test environments
  • AI error translation
  • Priority email support
  • Webhook retries
  • Usage analytics

Scale

For high-volume operations

€199 /month
Contact sales
  • 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