TTallystick

Convert ZUGFeRD to CSV

The same extraction as the Excel page, flattened for systems that only speak CSV. The embedded XML is read out of the PDF and written as plain rows.

Drop your invoice files here
or choose them from your computer. Several files at once is fine.
XRechnung · ZUGFeRD · Factur-X · UBL · CII · Peppol · FatturaPA · Facturae · KSeF FA · X12 · EDIFACT · OFX · IIF · CSV
Files stay in your browser, nothing is uploaded No account, no daily limit No file at hand?
0 files uploaded, ever Test corpus comes from the official XRechnung, ZUGFeRD, Peppol and OASIS test suites.
Export Totals not checked Format
Invoice
Seller and buyer
Line items
#Description QtyUnit Unit priceVAT %Net amount
Tax breakdown and totals
CategoryRateTaxable baseVAT amount
Payment and references

What flattening a hybrid invoice means

A ZUGFeRD invoice is a tree: one header, many lines, several tax rates. CSV is a rectangle. The compromise here is one row per line item with the header repeated, which is what import masks expect, plus a separate tax export so the VAT rows are not squeezed into the same shape and mangled.

What you get out

Every field below is read from the file itself. Nothing is inferred, and a field the invoice does not carry is left empty rather than filled in with a plausible guess.

  • One row per line item, header fields repeated for each
  • The tax breakdown as its own export, one row per VAT rate
  • Amounts written exactly as stated, no locale conversion
  • The document profile, so you can tell a short file from a broken one

Questions

Which file do I drop, the PDF or the XML?

Either. If you have the PDF, drop the PDF and the attachment is read out of it. If your supplier sent the XML separately, that works too.

Can I choose the columns?

Not yet. The export uses a fixed layout so the same file always lands in the same shape. Saved column layouts are on the paid side of the roadmap.

Does the PDF get uploaded to read the attachment?

No. The PDF is opened in your browser and the attachment is found there. Nothing is sent, which is also why it still works with your network cable pulled out.