EU E-Invoice API

EU E-Invoice API

Validate, parse and generate EU e-invoices – XRechnung, ZUGFeRD / Factur-X, Peppol BIS, France, Romania, Croatia, Italy and Polish KSeF FA(3).

Stateless REST API for German XRechnung (UBL and CII), ZUGFeRD 2.x / Factur-X hybrid PDFs (all profiles from MINIMUM to EXTENDED and XRECHNUNG), Peppol BIS Billing 3.0 (UBL) and the Polish KSeF structure FA(3).

  • Validation uses the official KoSIT validator with the current XRechnung configuration, the FeRD ZUGFeRD/Factur-X rules, the OpenPeppol BIS Billing 3.0 rules, the French rules of FNFE-MPE, the Romanian CIUS-RO rules, the Croatian HR-CIUS rules of the Tax Administration, the official FA(3) XML schema of the Polish Ministry of Finance (schema check only), the FatturaPA XML schema and veraPDF for PDF/A-3. The rule-set versions in use are listed by GET /v1/formats and reported with every result.
  • France: for invoices of sellers in France (BT-40 = FR) in EN 16931 UBL/CII or Factur-X BASIC WL, EN 16931 and EXTENDED, the French rules BR-FR (FNFE-MPE France_RFE, FATAL variant) run in addition to the document's own rules; EXTENDED-CTC-FR is validated as a profile of its own (format fr-ctc). Factur-X MINIMUM and BASIC from a French seller get the warning PROFILE-NOT-FR. XRechnung and Peppol BIS documents are not affected.
  • Romania: CIUS-RO 1.0.1 (RO e-Factura) is validated with the official rules (validation artefacts 1.0.9) and generated as UBL (cius-ro-ubl). Romania publishes these rules for UBL only; CII with the CIUS-RO identifier is checked against EN 16931 and gets the info finding CIUS-RO-CII.
  • Croatia: the eRačun (HR-CIUS 2025 with the HR extension, Fiscalization 2.0) is validated with the Tax Administration's XML Schema and rules (HR-BR-*, version of 13 Mar 2026), parsed (issue time and operator in issueTime and seller.operator) and generated as UBL (hr-cius-ubl). HR-CIUS exists for UBL only: CII with the Croatian identifier is an error (HR-SYNTAX-NOT-UBL). An invoice between two Croatian parties without the HR identifier gets the warning PROFILE-NOT-HR. Fiscalization and delivery through an information intermediary are not performed (info HR-NOT-PERFORMED).
  • Slovakia (domestic B2B e-invoicing from 1 Jan 2027) uses plain Peppol BIS Billing 3.0 with electronic addresses in scheme 0245 (DIČ). For sellers in Slovakia three advisory warnings of this API are added (SK-ENDPOINT-SELLER, SK-ENDPOINT-BUYER, SK-BT8); they are not official rules and never change valid.
  • Italy: FatturaPA 1.2.3 (FPR12 for businesses, FPA12 for the public sector; syntax FATTURAPA) is validated against the official XML Schema and the SDI content controls that can be checked offline (findings SDI-00xxx, our implementation of Allegato A 1.9.1; registry, duplicate, signature and file-name controls are not performed, see the SDI-NOT-PERFORMED info). FatturaPA is not EN 16931: /v1/parse maps what the normalized model can carry and reports the rest as PARSE-UNMAPPED; of a batch file it returns the first invoice (PARSE-BATCH). /v1/generate?format=fatturapa-fpr12|fatturapa-fpa12 writes an unsigned FatturaPA (ordinary regime RF01) and rejects input FatturaPA cannot carry, such as withholding tax; public-sector invoices (FPA12) must be signed by the issuer before sending (warning FPA12-UNSIGNED). The suggested file name follows the SDI convention IT<VAT number>_<progressive>.xml.
  • KSeF FA(3) is not EN 16931: /v1/parse maps what the normalized model can carry and reports the rest as PARSE-UNMAPPED; /v1/generate?format=ksef-fa3 writes VAT invoices of a Polish seller (typeCode 380 or 389) and rejects input FA(3) cannot carry.
  • Privacy: documents are processed in memory only. Invoice content is never written to disk or logs.
  • Hosting: EU only.

Authentication. Send the API key from your subscription in the developer portal as Authorization: Bearer <key>. Plans, quotas and usage are shown in the portal.

Errors are RFC 9457 application/problem+json objects. detail says what to fix and requestId identifies the call for support. A document that can be read but is invalid is not an HTTP error: /v1/validate and /v1/parse answer 200 with valid: false and the findings.

Notation. xpath values use the prefixes rsm, ram, udt, qdt (CII), ubl, cn, cac, cbc, ext (UBL), fa (KSeF FA(3)), p (the FatturaPA root element; FatturaPA child elements have no namespace and no prefix) and ds (XML Signature).