Peppol & UBL Invoice Viewer

Open a Peppol BIS Billing 3.0 or UBL 2.1 invoice and read it as a tree and as tables instead of raw XML. Load one invoice, or a ZIP with hundreds, and see which fields, tax categories and totals the files really contain.

  • Your files never leave your browser
  • Free, no account needed to start
  • Nothing to install
Invoice lines of a Peppol invoice shown as a grid in the Nodeflip tree view, sorted by line ID, with the XPath of the selected LineExtensionAmount shown above

Your files never leave your browser

Invoices are customer data: names, addresses, bank accounts, prices and what was bought. Many online XML viewers want you to paste or upload them.

Nodeflip reads, parses and analyzes your files with code that runs in your own browser. The files are not uploaded to a server, so there is no copy of them anywhere else to secure, delete or explain to a customer. That makes it usable when you are not allowed to paste customer data into an AI service or upload it to an online tool.

What the app does send: anonymous usage statistics (file type and file size, never file names or content) and error reports. More about local processing.

One invoice, or every invoice in the archive

A Peppol invoice in the Nodeflip tree view with the supplier party, tax total and monetary totals expanded and the invoice lines shown as a grid

Read a single invoice without counting angle brackets

The tree view shows the invoice as a hierarchy you can expand level by level. Repeating elements such as invoice lines are shown as a grid that you can sort and filter. Click any node to get its XPath, ready to paste into a mapping or a support ticket.

  • Tree, grid and source view of the same file
  • Sort and filter invoice lines as a table
  • Copy the XPath of any element or attribute
  • Compare two invoices side by side
Nodeflip Data Analysis of a ZIP with Peppol documents: four detected structures, and 17 invoices filtered to the 7 with tax category K, intra-community supply

Hundreds of invoices: what is actually in them?

Load a ZIP and Data Analysis groups the files by structure, so invoices, credit notes and documents wrapped in an SBDH envelope end up in separate groups. For every field you see how many files contain it and which values occur. Click a value, for example tax category K or one supplier, and everything else is filtered to the matching files.

  • See how many of the files contain BuyerReference or an order reference
  • List every currency, tax category and endpoint scheme in use
  • Min, max, average and sum of amounts, updated as you filter
  • Export exactly the files that match your filter

What is inside a Peppol BIS Billing 3.0 invoice

Peppol BIS Billing 3.0 is a set of rules on top of the European standard EN 16931, written in the UBL 2.1 XML syntax. In practice that means two document types, Invoice and CreditNote, where basic values use the cbc: prefix and groups of values use cac:. The prefixes themselves are not fixed. Some senders write ns2:ID or use a default namespace, and it is still the same element.

The first two elements tell you what you have. A BIS Billing 3.0 document carries this CustomizationID:

<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>

Where the values you are looking for live

You wantPath in the invoiceEN 16931 term
Invoice number, datecbc:ID, cbc:IssueDateBT-1, BT-2
Invoice or credit notecbc:InvoiceTypeCode (380 invoice, 381 credit note)BT-3
Currencycbc:DocumentCurrencyCodeBT-5
Buyer reference, order numbercbc:BuyerReference, cac:OrderReference/cbc:IDBT-10, BT-13
Seller name and VAT numbercac:AccountingSupplierParty/cac:Party/cac:PartyLegalEntity/cbc:RegistrationName, .../cac:PartyTaxScheme/cbc:CompanyIDBT-27, BT-31
Peppol addresses.../cac:Party/cbc:EndpointID with @schemeID, for seller and buyerBT-34, BT-49
Bank account and payment referencecac:PaymentMeans/cac:PayeeFinancialAccount/cbc:ID, cac:PaymentMeans/cbc:PaymentIDBT-84, BT-83
VAT per categorycac:TaxTotal/cac:TaxSubtotal with cbc:TaxableAmount, cbc:TaxAmount, cac:TaxCategory/cbc:ID and cbc:PercentBT-116 to BT-119
Totalscac:LegalMonetaryTotal: cbc:LineExtensionAmount, cbc:TaxExclusiveAmount, cbc:TaxInclusiveAmount, cbc:PayableAmountBT-106, BT-109, BT-112, BT-115
Linescac:InvoiceLine: cbc:InvoicedQuantity with @unitCode, cbc:LineExtensionAmount, cac:Item/cbc:Name, cac:Price/cbc:PriceAmountBT-129 to BT-131, BT-153, BT-146

Things that trip people up

  • Credit notes are a different document. The root element is CreditNote, the lines are cac:CreditNoteLine with cbc:CreditedQuantity, and the type code is in cbc:CreditNoteTypeCode. A mapping written for Invoice finds nothing in them.
  • The envelope. Files taken straight from an access point are often wrapped in a StandardBusinessDocument (SBDH), with the invoice one level down. Files exported from an ERP system usually are not.
  • The reference the buyer needs. Peppol requires a buyer reference or an order reference (rule PEPPOL-EN16931-R003). Which of the two a given buyer wants is a common reason for rejected invoices.
  • Tax categories with 0 %. S is standard rated. AE (reverse charge), K (intra-community supply), G (export), Z and E all have no VAT amount but mean different things, and most of them need an exemption reason.
  • Unit codes. @unitCode uses UN/ECE Recommendation 20, so a piece is C62 or EA and an hour is HUR, not the unit text from the ERP system.
  • Embedded attachments. A PDF copy can sit base64-encoded in cac:AdditionalDocumentReference, which is why some invoices are several megabytes.

Nodeflip is a viewer and an analysis tool. It does not validate an invoice against the Peppol rules. Use it to see what the files contain and how they differ, and a validator to decide whether a file is compliant.

How to open Peppol invoices in Nodeflip

  1. Load the file

    Open Nodeflip and drag the .xml invoice onto the Files menu, or click LOAD. A ZIP with many invoices is loaded the same way.

  2. Read it in the tree view

    Click the file. Expand the parts you need, such as AccountingSupplierParty or TaxTotal. The invoice lines are shown as a grid.

  3. Copy the path you need

    Click a node and its XPath is shown at the top of the window. Copy it into your mapping, your test or your question to the sender.

  4. Analyze many invoices at once

    Open Data Analysis, select the ZIP and run the analysis. Each detected structure gets its own button, with the number of files in it.

  5. Filter by clicking values

    Click a currency, a tax category or a supplier to keep only the matching invoices. Counts and aggregates follow the filter, and the matching files can be exported.

No invoice at hand? Open one sample invoice in Nodeflip · open 24 sample invoices and credit notes, already analyzed

Open an invoice in Nodeflip

Questions and answers

Does Nodeflip validate invoices against the Peppol rules?

No. Nodeflip shows and analyzes the content of the files. It does not run the EN 16931 or Peppol validation rules, so use a validator when you need to know whether an invoice is compliant.

Are my invoices uploaded?

No. The files are read and analyzed in your browser and are not uploaded to a server. The app sends anonymous usage statistics (file type and file size, never file names or content) and error reports.

Can I open UBL documents that are not Peppol?

Yes. Nodeflip opens any well-formed XML, so UBL orders, despatch advices and national UBL variants work the same way, as do invoices in other XML syntaxes.

Can I see an invoice the way it looks on paper?

No. Nodeflip shows the data as a tree, as grids and as source, which is what you need when you build or debug an integration. It does not render a printable invoice layout.

What happens with invoices that have different namespace prefixes?

They open like any other file. The prefix is only a label chosen by the sending system, and the element names and the structure are the same.

Is it free?

Yes, Nodeflip is free to use. Without registering you can have two files loaded at a time and work with ZIP archives of up to 25 files. Beyond that you need to register, which is also free.

Got an invoice you need to understand?

Open it in your browser and find the field you are looking for.

Open an invoice in Nodeflip