close

XRechnung and ZUGFeRD via API, that recipients accept.

Generated from JSON and checked with the official KoSIT validator before you get the file. For your software, or for a single invoice in the browser.

Validate an invoice, right here

Free and without signing up, with the same KoSIT validator as the API. Every error with what it means and how to fix it.

No file chosen
Or paste XML

XML or PDF, up to 5 MB — or just drop a file here. No sign-up, no allowance to spend.

Your file is processed in memory on a server in the EU and discarded immediately. We never store invoice content.

No invoice at hand?

One click checks the file right here — downloading is optional.

  • ValidValid invoice (UBL)

    Passes validation cleanly. A good starting point for your own mapping.

    File
  • ValidValid invoice (CII)

    The same invoice in the second permitted syntax, UN/CEFACT CII.

    File
  • BR-DE-15Buyer reference missing

    Without BT-10 — for public-sector invoices this holds the Leitweg-ID.

    File

More samples and details on the validator page

One request, one validated invoice

A client for TypeScript, examples for PHP and Java, and any language that speaks HTTP. The server works out the totals.

import { generateInvoice } from '@normapi/client'

const { xml, rulesetVersion } = await generateInvoice({
  invoiceNumber: 'RE-2026-0815',
  issueDate: '2026-08-13',
  currency: 'EUR',
  buyerReference: '04011000-12345-03',
  seller: { name: 'Muster Software GmbH', vatId: 'DE123456789' /* … */ },
  buyer: { name: 'Beispiel Handel AG' /* … */ },
  lines: [
    { name: 'Software licence', quantity: 3, unitPrice: '199.00', vatRate: 19 },
  ],
}, { apiKey: process.env.NORMAPI_API_KEY })
200 XRechnung 3.0.2, accepted by the KoSIT validatorRuleset v2026-08-31

Every endpoint, and Java, in the documentation

Every format from the same JSON

XRechnung 3.0.2 in UBL or CII, ZUGFeRD 2 / Factur-X as PDF/A-3: as XRechnung for public authorities, by EN 16931 for businesses. The ZUGFeRD PDF on your own letterhead if you like, uploaded once in your account.

For example, case 01 of the sample library, a standard invoice at 19 %: the request, and the three files it becomes, as the KoSIT validator accepted them.

All 40 cases, 120 files, checked on 22 October 2026

Every finding explained

Instead of a Schematron expression, your team gets the meaning, the cause and the fix. For 303 rules, in English and German.

See all error codes

One finding from the response of POST /v1/validate
{
  "code": "BR-DE-15",
  "severity": "ERROR",
  "explanation": {
    "meaning": "Every XRechnung needs a buyer reference in BT-10 — for invoices to a German public authority that is the Leitweg-ID. …",
    "fix": "Put the Leitweg-ID or buyer reference supplied by your customer into BT-10 — cbc:BuyerReference in UBL, ram:BuyerReference in CII. …",
    "url": "https://normapi.com/en/errors#BR-DE-15"
  }
}

E-invoices in a chat with Claude and ChatGPT

As a connector in Claude and a plugin in ChatGPT, NormAPI checks an attached e-invoice, reads a received one and explains any rule, with no account. With your account, both create new ones too.

  • Check“Is this XRechnung valid?”no account
  • Read“Who issued this invoice?”no account
  • Explain“What does BR-DE-15 mean?”no account
  • Create“Create an e-invoice to …”account
Claude checks an attached XRechnung with NormAPI: one error, BR-DE-15, with its cause and fix

Who it is for

Everything runs against the same KoSIT rule set. Nothing is transmitted — no Peppol access point, no mail delivery, no archiving.

Software vendors and developers

Send invoice data as JSON, receive a valid XRechnung (UBL or CII) or ZUGFeRD document, conforming to EN 16931. Every response names the rule set it was checked against, in the X-Normapi-Ruleset header.

API documentation

Small businesses and freelancers

Fill in a form, download XRechnung or a ZUGFeRD PDF — no software of your own, no sign-up.

Create an invoice

Accounts payable

Open a received e-invoice in readable form and check it — with a plain list of what is wrong, not just Schematron codes.

View an invoiceValidate an invoice

IT project leads and procurement

The price at high volume, SLA, outages, rule-set updates and data processing — on one page, before you integrate.

Terms for companies

The deadlines

  1. Since 1 January, every company must be able to receive e-invoices.

    View an invoiceValidate an invoice

  2. Companies with more than €800,000 prior-year turnover must issue e-invoices.

    Generate by API

  3. The obligation extends to every other company; small businesses under § 19 UStG stay exempt.

    Create one in a form

Transition rules and exemptions in the guide

How do I know the generated invoice is valid?

Because it is checked before it leaves the API. Every generated document goes through the same KoSIT validator an uploaded file does — not a reimplementation, but KoSIT’s own tool against the official configuration. A 200 means it passed.

That this is not a given is something we measured rather than asserted. All three datasets are CC BY 4.0:

NormAPI at a glance

As of 5 November 2026 · all prices net per month

Formats
XRechnung 3.0.2 in UBL and CII, ZUGFeRD 2 / Factur-X as PDF/A-3 — generated from JSON. As XRechnung for public authorities, by EN 16931 for businesses.
Validation
KoSIT validator 1.6.3 with XRechnung configuration v2026-08-31. Every generated invoice is checked before it is returned. Validating invoices and reading incoming ones into JSON is free on every plan and does not count against the allowance.
Prices
50 invoices a month free · Starter €19 for 500 · Business €49 for 2,500 · Scale €149 for 10,000, then €0.02 per invoice · Volume €599 for 900,000 invoices a year, with an individual contract and an SLA. Paid yearly: two months free.
Availability
API 99.92%, website 99.98% since monitoring began on 14 August 2026 — measured from outside, every five minutes, by UptimeRobot.
Operations
Servers in Germany (Düsseldorf). Invoice content is processed in memory and not stored. A data processing agreement on every plan.
Not included
Sending by email or Peppol, and archiving: the file goes back to your software, and your delivery route takes over.

All pricesSLA, DPA and exitStatus

When the rules change

The XRechnung rule set is updated roughly twice a year. We email you when a new release lands and what it changes for your invoices. Nothing else — no marketing.

Unsubscribe any time with one click. Details in the privacy policy.

E-invoicing, done.

50 invoices a month free, no credit card. Then from €19 a month.