UBL invoice viewer
Open UBL 2.1 invoice XML files in your browser and see what’s inside.
Files are parsed locally — nothing leaves your device.
What is UBL?
UBL (Universal Business Language) is an open standard from OASIS for structured business documents in XML. The most common version in production today is UBL 2.1, published in 2013. It defines how invoices, orders, despatch advices, credit notes and dozens of other document types should be expressed as machine-readable XML.
UBL is not a network or a delivery mechanism. It’s just the document format. How invoices get from sender to recipient (Peppol, FTP, email, API) is a separate question.
This viewer handles UBL 2.1 invoices and credit notes, including the major customizations layered on top of UBL — Peppol BIS Billing 3.0, EN 16931 compliance, and similar profiles.
UBL vs Peppol — what’s the difference?
This is the most common point of confusion. The short version:
- UBL is the document format. The XML schema.
- Peppol is a network that uses UBL as its document format.
Every Peppol BIS Billing 3.0 invoice is a UBL 2.1 invoice. But not every UBL invoice is Peppol-compliant — UBL allows much more flexibility, while Peppol BIS layers strict rules on top of it (which fields are required, which code lists are allowed, how parties identify themselves).
If you’ve received an XML invoice and aren’t sure which one it is, just open it here. The viewer detects the Peppol customization marker automatically and shows the appropriate format label.
When you might need this
- You’re integrating with a system that produces UBL and want to check the output is structurally correct
- You received a UBL invoice from a non-Peppol channel (direct API, email attachment, EDI gateway) and want to see the contents
- You’re working with countries that mandate UBL outside the Peppol framework — Singapore, Saudi Arabia, Colombia, and others have adopted UBL-based e-invoicing without using the Peppol network
- You’re writing a UBL parser and want a reference rendering to compare against
- You’re a finance analyst trying to understand what data a vendor’s system is actually sending
What the viewer shows
Everything that matters on a typical UBL invoice:
- Invoice or credit note number, issue date, due date, tax point date
- Supplier and customer details — names, addresses, VAT numbers, registration numbers, contact information
- All line items with quantities, units, unit prices, and VAT rates
- Subtotal, VAT breakdown by rate, and final payable amount
- Payment details — IBAN, BIC, payment reference, payment terms note
- Additional document references and embedded attachments
- The customization ID and profile ID (so you can tell which UBL variant the file claims to be)
- The raw XML for direct inspection
The viewer is namespace-agnostic — it works whether the XML uses the standard cbc: and cac: prefixes or any other namespace prefixes a generator might have chosen.
Is it safe to view invoices here?
Yes. The XML is parsed in JavaScript running locally in your browser. There’s no upload, no server processing, no logging of file contents. If you want to verify, open your browser’s developer tools, switch to the Network tab, and load a file — you’ll see no outbound request carrying the file data.
This is the safer option when you’re working with invoices that contain commercially sensitive information: prices, customer identities, bank details, contract terms.
Frequently asked questions
Which UBL version does this support?
UBL 2.1 is the primary target, since that’s what virtually all current production systems use. UBL 2.0 files generally work too — the schema is largely compatible at the field level. UBL 2.3 and 2.4 introduce some additional fields but the core invoice structure is unchanged, so those files also open correctly. Older UBL 1.x is not supported.
Does this validate the file against the UBL schema?
No. This is a viewer, not a validator. It will display whatever fields it finds, but it won’t tell you if the file violates the UBL XSD or business rules. For schema validation, use a dedicated XSD validator or your integration platform’s validation feature.
Can I open Peppol BIS files here too?
Yes. Peppol BIS Billing 3.0 is UBL 2.1 with extra constraints, so it opens fine in this viewer. We also have a dedicated Peppol invoice viewer page with content tailored to Peppol-specific questions, but the underlying tool is the same.
What about CII or ZUGFeRD?
Not supported. CII (Cross Industry Invoice, UN/CEFACT) and ZUGFeRD (a hybrid PDF/A containing CII XML) use a completely different schema from UBL. Adding CII support would essentially mean writing a second parser — it’s on the roadmap but not implemented yet.
Can I extract data from these files programmatically?
This tool is for viewing, not programmatic extraction. If you need to parse UBL in code, mature libraries exist for most languages: phive and ubl-csharp are well-maintained options for Java and .NET respectively. For a managed service that ingests UBL invoices and exports to accounting software, see Verifical.
Does it work offline?
Once the page has loaded, yes — the parsing and rendering happen entirely client-side. If you lose internet after opening the page, dropping a file in still works. You’d just lose the Google Fonts styling on a fresh page load.
Related tools
- Peppol invoice viewer: same tool with Peppol-specific context and FAQ
- ISDOC viewer: same tool with content for the Czech ISDOC format
About this tool
This viewer is built and maintained by Verifical — a document exchange platform for accountants and their business clients. It’s free to use, has no signup, and exists because we needed something we could recommend to our own users without reservations about privacy.
If your business receives structured invoices regularly and you find yourself opening files like this often, our main platform handles the whole flow automatically: receiving, extracting, archiving, and exporting to accounting software.
Speed up all processes!
Ready to send documents the easy way?
Ask your accountant about Verifical, or sign up and invite them to join.
