Skip to content

UBL Invoice Preflight

This UBL validator provides a local preflight for common Invoice-2 fields, currency consistency and selected monetary totals. Open or paste a UBL invoice XML file to review invoice-line values and download diagnostics before running the authoritative checks required by your e-invoicing workflow. The implemented amount profile uses up to two decimal places. It is a basic structural and arithmetic check, not UBL XSD, EN 16931, Peppol or national Schematron validation, and it cannot certify legal or tax compliance.

UBL Invoice Preflight

Check common UBL invoice fields, currency consistency and selected line/payable totals locally before a full e-invoicing validation.

Maximum file size: 25 MB per file. You can also drag files here.

Supported scope and limitations

Supports a basic Invoice-2 namespace profile and amounts with up to two decimal places. This is not UBL XSD, EN 16931, Peppol or national Schematron validation. It does not audit tax rules or supplier/customer identities; use the relevant official validator for submission.

Examples contain invented demonstration data. Replace it before using any export.

Privacy: files are processed in your browser and are never uploaded.

What the UBL validator checks

UBL invoices organize business information into namespaced XML components. This UBL validator requires an Invoice root in the Invoice-2 namespace and looks for common fields including ID, IssueDate, DocumentCurrencyCode, AccountingSupplierParty, AccountingCustomerParty and LegalMonetaryTotal. It reports missing supported fields rather than supplying guessed business data.

The document currency must have a three-letter uppercase shape. Amounts with a currencyID attribute are compared with that document currency. The UBL validator also sums supported invoice-line extension amounts and compares that sum with the corresponding monetary total. Those checks can catch ordinary export mistakes before a more demanding rules engine reports a longer list of findings.

Run a local invoice preflight

  1. Select Choose file and open your .xml invoice, or paste the complete XML document.
  2. Select Process files for pasted content. The example control supplies a small structural demonstration.
  3. Read the invoice-line preview and field or total diagnostics.
  4. Download ubl-report.json to document the local findings and correct the source export.
  5. Run the revised invoice through the schema and profile validators required by its actual recipient.

A file is processed in the browser; this UBL validator does not send invoices to an access point, accounting API or AI explanation service. The downloaded report is a diagnostic document, not a corrected invoice or a legal submission. Treat it as sensitive if invoice IDs or line descriptions identify private commercial activity.

Worked example: line and payable totals

For one line with a LineExtensionAmount of 10.00, the supported line total is 10.00. Suppose TaxInclusiveAmount is 12.00, PrepaidAmount is absent and PayableRoundingAmount is absent. The expected payable amount for the selected check is 12.00.

If a 2.00 prepayment is present, the expected payable becomes 10.00. A payable field still showing 12.00 will be reported. The implemented equation is tax-inclusive total minus prepayment plus payable rounding. This example does not establish that the tax-inclusive amount itself was derived from the correct tax rate; that is a separate business-rule question.

A line amount marked currencyID="EUR" inside a document declaring USD is also reported. The UBL validator does not convert currencies or verify an exchange rate. Correct the source currency allocation deliberately instead of changing a label just to remove the warning.

UBL validator example result preview
Illustrative result from this tool using a fictional test file.

Basic fields are not full invoice validation

Presence is weaker than correctness. An empty supplier component may satisfy a basic presence check while failing the business information requirements of a real e-invoice profile. Likewise, checking that IssueDate exists is not a complete date-rule audit, and a three-letter currency shape is not a complete currency code-list check.

Peppol and national profiles impose identifiers, code lists, cardinality rules, tax relationships and other constraints beyond this implementation. Consult the OASIS UBL specification and, when applicable, the current Peppol BIS Billing rules. Use the official or recipient-approved rule pack appropriate to your submission.

Common input problems and next steps

Amounts should use a decimal point without grouping symbols or currency signs. The supported profile rejects more than two decimal places; that limitation is not a claim that every UBL decimal must use this precision. InvoiceLine totals and monetary totals must be present in the expected components. CreditNote documents and other UBL root types are outside this tool’s supported Invoice profile.

If the XML is malformed, resolve its syntax or re-export it before arithmetic checking can proceed. If another system receives CSV data before producing the invoice, compare source CSV versions to investigate changed amounts. CSV encoding conversion may address unreadable source text, but neither process replaces invoice validation. Keep the original export, review each finding and obtain appropriate accounting or tax advice for decisions beyond file formatting.

Common UBL validator errors and how to fix them

When the UBL validator cannot use a file, it stops with one clear message instead of producing a half-finished download. These are the problems people run into most often, with the fix for each:

  • Expected a UBL Invoice-2 XML document. The root is not Invoice in the UBL 2 namespace; credit notes and other documents are outside this check.
  • Missing invoice field ID, issue date, currency, supplier or customer is absent.
  • LineExtensionAmount total differs from line sum. The header total does not equal the sum of the invoice lines.
  • Payable total differs from tax-inclusive total minus prepayment plus rounding. Monetary totals do not add up.

Privacy: the UBL validator runs in your browser

UBL validator processing happens with JavaScript in a background worker on this page. Your file is not uploaded to a FileFix server, and the results you download are created in your browser’s memory. Bank and payment files contain account numbers and amounts, so keeping them off third-party servers matters. When you finish on a shared computer, clear the selection or close the tab.

Sources

Questions about this tool

Does this validate an invoice against Peppol?

No. It checks a limited local Invoice-2 profile. Peppol, EN 16931, XSD and national Schematron rules require the appropriate separate validator.

Does it calculate tax?

No. Selected line and payable relationships are compared, but tax rates, exemptions and tax legality are not audited.

Can I check a CreditNote file?

No. The implemented root profile is Invoice in the Invoice-2 namespace.

Why are three-decimal amounts rejected?

The current arithmetic implementation supports amounts with up to two decimal places. That is a tool limit, not a complete statement of UBL decimal capabilities.

Does an empty supplier element mean my invoice is complete?

No. Basic component presence does not prove that the required identity and business fields inside it are correct or complete.

Review the supported formats and limitations before using an output file. File processing happens in your browser.