Conformo
Create and check German, French and EU e-invoices in JavaScript. No Java, no server, and the same verdict as the official KoSIT validator.
You pass one invoice as JSON. Conformo writes XRechnung, ZUGFeRD / Factur-X (PDF or XML), UBL or Peppol BIS, and validates the result with the official KoSIT, CEN, Peppol and French rule files, run on your machine. Free and open source (Apache-2.0).
Pick your entry point
- Library:
npm install @conformo/toolkit. Works in Node and in the browser. - CLI:
npx @conformo/cli validate invoice.xml, for scripts and CI pipelines. - MCP server: lets Claude, Cursor or another AI agent create and check e-invoices locally.
- HTTP API: a stateless server you host yourself, described in OpenAPI.
Not a developer? The free web app makes an e-invoice in your browser, and the validator checks one you received. No signup for either.
Why you can trust the output
- It runs the official rule files unmodified and agrees 100% with the official KoSIT validator on the official test invoices. CI measures this on every change: conformance report.
- A daily job watches KoSIT, CEN and OpenPeppol for new rule releases. A new version only ships if agreement is still 100%: how updates work.
- What it does not do yet is written down, not hidden: limits.
Quickstart
npm install @conformo/toolkitimport { createXml, validate } from '@conformo/toolkit';
const invoice = { number: 'INV-1', issueDate: '2027-01-15', currency: 'EUR', seller: { name: 'Seller GmbH', vatId: 'DE123456789', country: 'DE' }, buyer: { name: 'Buyer GmbH', country: 'DE' }, payment: { meansCode: '58', iban: 'DE89370400440532013000' }, lines: [{ name: 'Work', quantity: 2, unitPriceMinor: 5000, taxCategory: 'S', taxRate: 19 }] };
const { xml } = createXml(invoice, 'cii'); // EN 16931 CII, the XML inside ZUGFeRD and Factur-X
const result = await validate(xml); // the official CEN Schematron, run locally
console.log(result.valid, result.ruleSets.map((r) => r.id)); // true [ 'en16931-cii' ]Money is always integer minor units: 5000 is EUR 50.00. Every code sample on this site is run by the test suite, so if a sample stops working, the build fails.
Pick your way in
- npm librarycreateXml, createPdf, validate, convert, parse
- CLIconformo create / validate / convert
- MCP serverClaude Desktop, Claude Code, Cursor
- HTTP APIFor PHP, Python, Java back ends; OpenAPI 3.1
- Germany 2027What the mandate requires, with code
- Not done yetWhat Conformo does not do, said plainly
Not a developer? Make an invoice in the app or check one you received. Both run in your browser.
Shown, not claimed
From the conformance report, regenerated by npm run conformance on every CI run.
Country status
| Country | B2B issuing | Formats | Conformo |
|---|---|---|---|
| Belgium | Mandatory 2026-01-01 | peppol-bis-3.0 | Library |
| France | Mandatory 2026-09-01 | cii, ubl-2.1, factur-x | Library Web app |
| Germany | Planned 2027-01-01 | xrechnung, zugferd, peppol-bis-3.0 | Library Web app |
| Italy | Mandatory 2019-01-01 | fatturapa | Not yet |
| Netherlands | No mandate | peppol-bis-3.0, ubl-2.1, other | Library |
| Poland | Mandatory 2026-02-01 | peppol-bis-3.0, ksef-fa | Library |
| Spain | Planned | facturae | Not yet |
From packages/compliance-data: every fact has an official source, last verified 2025-08-14. Not legal advice.