Back to homepage

Production evidence · 2026-11-04

E-invoicing by API: real evidence with PDF, XML and validation report

Fakturai is a REST and MCP API that turns structured invoice data into ZUGFeRD/Factur-X PDFs (EN 16931) with embedded XML and validates every invoice against KoSIT and Mustang before delivery.

For software teams, SaaS providers with their own billing, agencies and integrators, and AI agents that generate e-invoices from existing data.

Start freeCheck an invoice for freeAPI docs

Free plan: 50 generated invoices per month. The validator works without an account.

No software of your own? Fakturai is not bookkeeping or invoice-writing software. If you have no software or developers of your own, use the free validator to check e-invoices you send or receive. Check an invoice for free

The evidence: a real invoice from production

On 2026-11-04 we generated an invoice through the public production API and checked the result with the public validator. All data is synthetic; the seller is a test account.

Generated
2026-11-04
Invoice no.
QA-0001
KoSIT
accept
PDF/A-3 (Mustang)
compliant
Hard failures
0
Advisories
6

The advisories come from XRechnung and Peppol rule sets (for example BR-DE-15 buyer reference). For a B2B invoice in the EN 16931 profile they are not a rejection reason; KoSIT accepts the invoice. Every advisory is listed in the report.

Downloads from this run

How it works in 3 steps

  1. 1

    Account and seller profile

    Sign up for free and enter your seller details once: name, address, VAT ID, bank details.

  2. 2

    API key

    Create an API key in the dashboard and store it in your application's secret store.

  3. 3

    Send JSON, receive a validated PDF

    Send invoice data as JSON to POST /api/v1/invoices. The response is a ZUGFeRD/Factur-X PDF that has already passed validation.

Request body of this run

This exact JSON body was sent to POST /api/v1/invoices. Seller and payment details come from the account's seller profile, not from the request.

{
  "invoice_date": "2026-11-04",
  "due_date": "2026-11-18",
  "currency": "EUR",
  "buyer": {
    "name": "Beispiel Kunde GmbH (synthetisch)",
    "address": {
      "line_one": "Musterweg 2",
      "postcode": "80331",
      "city": "München",
      "country": "DE"
    },
    "vat_id": "DE987654321",
    "contact_email": "ap@example.invalid"
  },
  "lines": [
    {
      "name": "Software-Abonnement Business, Oktober 2026",
      "quantity": "1",
      "unit": "C62",
      "unit_price": "249.00",
      "vat_rate": "19.00"
    }
  ],
  "service_period": {
    "start": "2026-10-01",
    "end": "2026-10-31"
  }
}
Download request JSON

Validation report for this invoice

Unmodified response of POST /api/validate for exactly the PDF linked above. The SHA-256 in the report matches the downloadable file.

{
  "validation_status": "passed",
  "is_validation_evidence": true,
  "validated_at": "2026-11-04T08:06:03Z",
  "endpoint": "POST https://fakturai.de/api/validate",
  "invoice_file": "/proof/production-2026-11-04/invoice.pdf",
  "invoice_sha256": "a037b43a582df879a18fe5fc77dee72ffa74043f6a68f8c387fcc0bf7f72c2d7",
  "request_file": "/proof/production-2026-11-04/request.json",
  "synthetic_data": true,
  "report": {
    "overall_pass": true,
    "kosit_result": "accept",
    "pdfa_compliant": true,
    "hard_failure_count": 0,
    "advisory_count": 6,
    "findings": [
      {
        "id": "PEPPOL-EN16931-R001",
        "message": "Business process MUST be provided.",
        "severity": "advisory"
      },
      {
        "id": "PEPPOL-EN16931-R020",
        "message": "Seller electronic address MUST be provided",
        "severity": "advisory"
      },
      {
        "id": "PEPPOL-EN16931-R010",
        "message": "Buyer electronic address MUST be provided",
        "severity": "advisory"
      },
      {
        "id": "BR-DE-15",
        "message": "Das Element \"Buyer reference\" (BT-10) muss übermittelt werden.",
        "severity": "advisory"
      },
      {
        "id": "BR-DE-21",
        "message": "Das Element \"Specification identifier\" (BT-24) soll syntaktisch der Kennung des Standards XRechnung entsprechen.",
        "severity": "advisory"
      },
      {
        "id": "BR-DE-2",
        "message": "Die Gruppe \"SELLER CONTACT\" (BG-6) muss übermittelt werden.",
        "severity": "advisory"
      }
    ]
  }
}
Download validation report

What this evidence covers

  • Covered: B2B invoices under EN 16931 as ZUGFeRD/Factur-X (CII), generated and validated in production.
  • XRechnung for public-sector buyers (B2G, with Leitweg-ID): not part of this evidence. An earlier local strict-B2G run was rejected, see below.

Technical format validation does not replace the issuer's responsibility for invoice content, tax treatment, or archival.

From example to integration

These pages show where the API fits your workflow.

Generate German e-invoices by APIGenerate ZUGFeRD by APIGenerate Factur-X by API

Earlier local engine run (2026-09-23)

Before the production launch we checked the engine locally with a synthetic EN 16931 B2B invoice. This run is B2B only and not evidence for the production API.

Mustang 2.23.1: valid, PDF/A compliant; KoSIT 1.6.2: accept in the EN16931 CII scenario. Six advisories, not warning-free. Strict-B2G rejected: BR-DE-15, BR-DE-21 and BR-DE-2 are hard failures. Not XRechnung/B2G proof.

Version discrepancy: loaded configuration 2026-02-04 / EN16931 1.3.15; version lock 2026-01-31 / 1.3.16. Acceptance against local rules, not a claim of the latest official version.

Files and SHA-256 provenance

Unmodified copies of the retained artifacts with synthetic placeholders. README in English.

Engine validation report (B2B)

Unmodified CLI output as JSON, not an API response. Applies only to the PDF/XML of this local run.

{
  "passed": true,
  "pdfa": true,
  "mustang": "valid",
  "kosit": "accept",
  "hard": [],
  "advisory": [
    "PEPPOL-EN16931-R001",
    "PEPPOL-EN16931-R020",
    "PEPPOL-EN16931-R010",
    "BR-DE-15",
    "BR-DE-21",
    "BR-DE-2"
  ]
}
Download engine JSON

Strict-B2G: rejected

Negative CLI validation of the same invoice with --strict-b2g (exit 1).

{
  "passed": false,
  "pdfa": true,
  "mustang": "valid",
  "kosit": "accept",
  "hard": [
    "BR-DE-15",
    "BR-DE-21",
    "BR-DE-2"
  ],
  "advisory": [
    "PEPPOL-EN16931-R001",
    "PEPPOL-EN16931-R020",
    "PEPPOL-EN16931-R010"
  ]
}
Download strict-B2G JSON
Technical format validation does not replace the issuer's responsibility for invoice content, tax treatment, or archival.