Free e-invoice structure check
Paste an e-invoice XML file (UBL or UN/CEFACT CII) or choose one from your computer. Your browser checks the structure and the arithmetic. The file stays on your device: it is not uploaded, not stored and not logged.
What this is, and is not. This is a basic pre-check: it finds missing mandatory fields, an unknown format or profile, and totals that do not add up. It is not a validation. It does not run the EN 16931 schematron, the XRechnung or CIUS-RO rule sets, code lists or any tax authority check, and it cannot tell you whether an authority will accept a file. To validate, use the official validators: the KoSIT validator for XRechnung, the ANAF validation service for CIUS-RO and Mustang for ZUGFeRD.
Free e-invoice structure check
Maximum 1 MB. A file with a DOCTYPE declaration is refused.
The file is read in your browser only.
Privacy: this page runs the check in your browser and sends no data to us. We do not store or log what you paste. Normal website access data are described in the privacy notice.
What the check looks at
- Format
- UBL 2.1 Invoice, UBL 2.1 CreditNote or UN/CEFACT CII CrossIndustryInvoice, and the profile identifier (BT-24): XRechnung, CIUS-RO, plain EN 16931, Peppol BIS, or an unknown profile.
- Mandatory fields
- Invoice number, date, type code, currency, seller and buyer name and country, a seller identifier, at least one line, a VAT breakdown and the document totals.
- Arithmetic
- Sum of lines, total without VAT, VAT total, total with VAT and amount due, recalculated to the cent.
- Profile hints
- For XRechnung: buyer reference (BT-10), payment instructions and seller contact. For CIUS-RO: county code on Romanian addresses.
Readiness checklist for your Stripe setup
Most failed e-invoices come from missing data, not from the file format. Before you export or automate, check these in Stripe:
- Your business name, address and country are complete in Stripe, with your VAT ID or tax number.
- Every business customer has a legal name, a complete address with country, and a tax ID (for example an EU VAT number) stored in the customer record.
- For Romania: county or sector on both addresses. For Germany: a buyer reference or routing ID (Leitweg-ID) for public-sector buyers. For Poland: the NIP of the seller and of Polish business customers.
- Tax rates and tax categories on every line are set (including reverse charge and zero-rated cases), because a file cannot be built without them.
- Invoice numbers run in an unbroken sequence per series, and you do not edit invoices after they are finalized.
- Invoices are in the currency your country's e-invoice scheme expects (for example RON for Romania). Check with your accountant.
Next steps
Read the guides for Germany, Romania and Poland, or join the waitlist for a Stripe app that generates, validates and archives these documents. Normbeleg is in development and tested in Stripe test mode only. Validators: KoSIT validator on GitHub.