Electronic Invoice API
Valideer en maak e-facturen via een interface
Dezelfde regels als de validator in de browser, voor uw software: stuur een factuur, ontvang het resultaat als JSON, maak e-facturen van uw gegevens. Het abonnement Free kost niets en bevat 50 aanroepen per maand.
Wat de API omvat: de API maakt en valideert XRechnung, ZUGFeRD en Factur-X (EN 16931). Validatie via de API en MCP omvat ook meer Europese formaten, zie ondersteunde formaten. De API verstuurt geen facturen. De API is uitsluitend bedoeld voor bedrijven.
Handleidingen met voorbeelden: XRechnung, ZUGFeRD, validatie, DATEV-export, integratie met Claude, ChatGPT, Copilot en uw eigen agenten, documentatie van de MCP-server.
Wat de API kan
| Functie | Beschrijving |
|---|---|
| Valideren | UBL, CII en ZUGFeRD/Factur-X PDF tegen EN 16931 en XRechnung 3.0 plus meer Europese formaten (zie ondersteunde formaten): oordeel, bevindingen met regel-ID, locatie en een korte toelichting. PDF's worden gecontroleerd als PDF/A-3-containers, de ingebedde XML als elke andere factuur. |
| Aanmaken | XRechnung (UBL, CII), ZUGFeRD en Factur-X als PDF/A-3 op basis van een JSON-factuur. Elk bestand wordt via hetzelfde controlepad gevalideerd voordat het wordt teruggegeven; bij fouten krijgt u de bevindingen in plaats van een bestand. |
| Visualiseren | XRechnung- of ZUGFeRD-XML als leesbare PDF of HTML, zodat ontvangers facturen kunnen lezen en archiveren. |
| Converteren | Converteren tussen UBL en CII, XRechnung naar ZUGFeRD PDF. |
| Extraheren | Factuurgegevens als JSON, CSV en als DATEV-boekingsbatch voor inkomende facturen. |
| Batch | Veel bestanden in één ZIP valideren (tot 200 bestanden, 5 MiB per bestand, 50 MiB in totaal). Resultaat per bestand, dubbele factuurnummers binnen de batch worden gevonden, en het samenvattingsrapport komt als JSON, CSV of PDF. Vanaf het abonnement Starter. Elk gecontroleerd bestand telt als één aanroep, en per account loopt één batch tegelijk. |
| Plausibiliteit | Meer dan het formaat: verplichte gegevens volgens § 14 lid 4 van de Duitse btw-wet (UStG), rekenfouten, kortingspercentage bij contante betaling (Skonto) en vervaldatum, dubbele factuurnummers binnen een batch, vorm van het btw-id (geen controle bij het Duitse Federale Centrale Belastingkantoor (BZSt) of VIES). |
Ondersteunde formaten
Geldt voor validatie via de API en de MCP-server. De validator in de browser controleert nog steeds alleen XRechnung en ZUGFeRD, en daar verlaat het bestand nooit uw apparaat.
| Land | Formaat | Wat wordt gecontroleerd |
|---|---|---|
| Duitsland | XRechnung 3.0 (UBL, CII) | EN 16931-regels en de XRechnung-CIUS |
| EU | EN 16931 (UBL, CII) | EN 16931-regels |
| Duitsland, Frankrijk | ZUGFeRD / Factur-X 1.09.2 (MINIMUM, BASIC WL, BASIC, EN 16931, EXTENDED) | Regels per profiel, plus een PDF/A-3-controle van de container |
| Europa | Peppol BIS Billing 3.0.21 (UBL Invoice and CreditNote) | Regels van het bestandsformaat. Geen verzending of ontvangst via het Peppol-netwerk. |
| Nederland | NLCIUS (SI-UBL 2.0.3.13, NLCIUS-CII 1.0.3.13) | Nationale regels |
| Roemenië | CIUS-RO 1.0.1 | Nationale regels |
| Frankrijk | Franse CIUS-regels (FNFE France_RFE 1.4.0.04), met country=FR, incl. EXTENDED-CTC-FR | Nationale regels |
| Overige EU-landen | Overige EN 16931-CIUS, bijvoorbeeld Kroatië, Portugal | Alleen de kernregels van EN 16931. Het resultaat is hoogstens "waarschuwingen", met de vermelding dat nationale regels niet zijn gecontroleerd. |
| Italië | FatturaPA (XSD 1.2.3) | Alleen het officiële schema. Verdere controles worden uitgevoerd door de autoriteit (SdI). |
| Polen | KSeF FA(3) | Alleen het officiële schema, zonder bovengrenzen voor herhalingen. Verdere controles worden uitgevoerd door de autoriteit (KSeF). |
Genereren en converteren blijven beperkt tot XRechnung, ZUGFeRD en EN 16931. De API controleert het Peppol BIS-bestandsformaat; de API verstuurt geen facturen.
Onze eigen tests (31 oktober 2026): 223 van 223 testgevallen (officiële KoSIT-testgevallen en onze eigen foutgevallen) gaven het verwachte resultaat; 35 van 35 gegenereerde facturen (alle btw-categorieën, vijf formaten) doorstaan de onafhankelijke kruiscontrole met de KoSIT-validator, Mustang en veraPDF. Dit is een test tegen steekproeven, niet een certificering.
Privacy: hoe de API is opgebouwd
- Alleen in het geheugen: Facturen worden verwerkt en niet opgeslagen. De container draait met een alleen-lezen bestandssysteem, en tijdelijke bestanden staan in het geheugen.
- Geen inhoud in logboeken: Elke aanvraag levert één logregel op met aanvraag-ID, tijd, duur, omvang en resultaat. Geen factuurinhoud, geen IP-adressen in de applicatielogboeken.
- Verwerkingsservers in Duitsland: De inhoudelijke verwerking draait op servers van Hetzner Online GmbH in Duitsland (datacenter Neurenberg). Bij gebruik van de MCP-server wordt de aanvraag eerst in het geheugen verwerkt in een Cloudflare Worker op mcp.electronic-invoice.app; Cloudflare kan hiervoor datacenters buiten de EU gebruiken.
- Upstream-gateway: Sleutelcontroles en quota worden afgehandeld door een Cloudflare Worker. Deze ziet aanvragen in het geheugen omdat hij ze doorstuurt, en slaat geen inhoud op. In de console wordt de API-sleutel alleen als hash opgeslagen; voor OAuth-verbindingen met de MCP-server wordt deze daarnaast versleuteld opgeslagen met AES-256-GCM. De OAuth-verbindingsgegevens worden bewaard in Durable Objects met een EU-locatievereiste. De aanroeptellers worden opgeslagen. Cloudflare kan aanvragen ook via datacenters buiten de EU routeren; de details staan in de verwerkingsovereenkomst.
- Gegevensverwerking: De verwerkingsovereenkomst (DPA) is van toepassing.
- Geen gebruik voor eigen doeleinden: Wij gebruiken factuurgegevens niet voor eigen doeleinden, in het bijzonder niet voor advertenties, productverbetering, analyse of het trainen van AI-modellen.
- Facturering: Vaste maandelijkse abonnementen via Stripe. Stripe krijgt noch de factuurinhoud noch het aantal van uw aanroepen te zien.
Abonnementen
| Abonnement | Prijs per maand | Inbegrepen aanroepen | Aanroepen per minuut | Gelijktijdig | Daarboven |
|---|---|---|---|---|---|
| Free | 0 EUR | 50 | ongeveer 10 | 2 | Harde limiet: verdere aanroepen worden geweigerd |
| Starter | 19 EUR | 2.000 | ongeveer 60 | 4 | Verdere aanroepen worden geweigerd (429) tot de factureringsperiode eindigt of u naar een hoger abonnement overstapt |
| Business | 49 EUR | 10.000 | ongeveer 300 | 6 | Verdere aanroepen worden geweigerd (429) tot de factureringsperiode eindigt of u naar een hoger abonnement overstapt |
| Pro | 149 EUR | 50.000 | ongeveer 1.000 | 8 | Verdere aanroepen worden geweigerd (429) tot de factureringsperiode eindigt of u naar een hoger abonnement overstapt |
Vaste maandprijzen, geen verbruiksafhankelijke facturering. Er wordt geen btw in rekening gebracht op grond van § 19 van de Duitse btw-wet (UStG) (kleine ondernemer). De API is uitsluitend bedoeld voor bedrijven; de voorwaarden zijn van toepassing. Naar de console
Limieten en grote volumes
Wat telt: Antwoorden met 200, 400, 422 en 504 tellen als één aanroep; bij batches telt elk gecontroleerd bestand. 401, 403, 404, 405, 411, 413, 429, 500, 502, 503 en /v1/health tellen niet.
Limiet per minuut: De waarden zijn bij benadering en gelden per Cloudflare-locatie. Daarboven antwoordt de API met 429 rate_limited. Gelijktijdig betekent lopende en wachtende aanroepen van één account. Daarboven antwoordt de API onmiddellijk met 429 too_many_concurrent.
Veel facturen: Veel XML-bestanden horen in /v1/validate/batch (vanaf Starter). Stuur slechts enkele aanvragen tegelijk. PDF-generatie duurt een paar seconden; probeer bij 503 opnieuw na Retry-After. 429 rate_limited, too_many_concurrent en batch_in_progress geven daar ook de wachttijd in seconden.
Omvang en formaat: Een aanvraag mag maximaal 10 MiB zijn (10.485.760 bytes), een batch maximaal 50 MiB. Met het Content-Type wordt soepel omgegaan: alleen multipart/form-data wordt apart gelezen, anders detecteert de API het formaat aan de inhoud.
Codevoorbeelden
Voorbeelden laden ...
Referentie
Referentie laden ...
Juridische teksten zijn beschikbaar in het Duits en Engels: privacybeleid, API-voorwaarden en colofon. Alleen de Duitse versie is juridisch bindend.