BillSight

Extract the numbers from invoice PDFs - and know when it isn't sure

BillSight reads the fields your books need - vendor, invoice number, dates, currency, subtotal, tax, total due, line items - from invoice PDFs and e-invoice XML, and hands you a clean Excel or CSV. It runs on your own computer. And when it is not sure about a value, it says so, instead of filling in a number that looks plausible.

Support Windows, Linux & macOS

BillSight reading a folder of invoices into a table

What It Reads

In: invoice PDFs that carry a text layer, and e-invoice XML. Out: Excel, CSV, line items, or UBL.

Invoice PDF Excel (XLSX) CSV UBL 2.1 out Factur-X ZUGFeRD UBL CII CFDI NF-e FatturaPA Facturae Line items Multi-currency

What it will not pretend to read: scans and photos. When a document has no text to read, BillSight says "this looks like a scan" and stops there - it does not invent numbers for you to check later. (OCR is not in this version.) An invoice that arrives as e-invoice XML - on its own or embedded in the PDF - is read exactly, so it needs no guessing at all.

Key Features

The fields your books need

Vendor, customer, invoice number, issue date, due date, currency, subtotal, tax, total due, invoice type code and PO number - plus the line items, when the document has them.

It says when it is guessing

Every value carries where it came from - the word it was read from, the line it was on, or the rule that produced it. The ones it is not sure about are tinted and marked please check, so you look at those, not at all of them.

E-invoice XML read exactly

Factur-X, ZUGFeRD, UBL, CII, CFDI, NF-e, FatturaPA and Facturae are read from the XML itself, and so is the XML embedded inside a PDF - no picture, no guessing.

Your suppliers, learned once

When one supplier's layout is read wrongly, fix the value in the table and save it as a rule for that supplier. The next invoice from them is read that way.

Checked before you export

Subtotal plus tax against the total, dates that cannot be right, invoice numbers that appear twice, fields a standard requires - all checked, and an export you can stop before it writes anything.

Everything stays on this computer

No upload, no cloud account, no network. Your invoices - and the copies BillSight keeps of the originals - are files on your own machine.

How It Works

1

Add Files... or Add Folder...

Drag in a single invoice, or point it at a folder and let it take the sub-folders too.

2

Check the reading

The table shows each field, where it was read from, and the line in the document it came from. A wrong value is fixed in the cell, not in the PDF.

3

Make Table... or Import to System...

Excel or CSV with the columns you choose, a saved template for your accounting system, the line items on their own, or a UBL e-invoice for the customer.

Extraction Example

From an invoice PDF to a row your spreadsheet can use

PDF → Excel
Extracted Fields
Original Invoice (PDF):
Northwind Supplies Ltd
14 Harbour Road, Bristol BS1 4TR, United Kingdom
Invoice number: INV-2026-0417  Date of issue: 17 April 2026
Due date: 17 May 2026  Currency: EUR
Subtotal   1,240.00
VAT (19%)   235.60
Total due   1,475.60

Exported Excel / CSV:
"vendor","invoice_number","issue_date","due_date","currency","subtotal","tax","total_due"
"Northwind Supplies Ltd","INV-2026-0417","2026-04-17","2026-05-17","EUR","1240.00","235.60","1475.60"

Note: amounts come out as plain numbers with a dot (1240.00) and the currency as an ISO code, so nothing has to be cleaned up before the spreadsheet or the accounting system sees it.

Fields BillSight extracts:
Vendor: name, address, tax ID
Customer: name, address
Invoice number, invoice type code, PO number
Issue date, due date
Currency, subtotal, tax, total due
Line items: description, quantity, unit price, amount

Note: every value keeps its Read from and Seen in the document columns, so a figure can always be traced back to the line it came from - and a value the reader is unsure of is marked instead of trusted.

Why the Numbers Hold Up

Nothing is invented

A field the document does not carry stays empty. A line-item list that does not add up to the stated subtotal is dropped rather than repaired. An amount or date that cannot be parsed is left blank - not guessed.

You can see the evidence

Each row shows the word or rule the value was read from, and the line it was read on. A reading you agree with can be accepted in one click and stops asking.

The originals are kept

Every invoice taken in is copied into a local archive, addressed by its own content hash. The same file arriving twice is stored once - and you can search the archive by invoice number, supplier or file name.

Frequently Asked Questions

Can BillSight read scanned invoices or photos?

No - and it will tell you so rather than guess. When a PDF has no text layer, BillSight reports it as "this looks like a scan" and reads nothing from it. OCR is not part of this version. Invoices that arrive as e-invoice XML are read exactly, from the text itself.

Are my invoices uploaded to a server?

No. BillSight is a desktop application that processes everything locally. Your invoices never leave your computer and no cloud account is required.

Which e-invoice formats are read?

Factur-X, ZUGFeRD, UBL, CII, CFDI, NF-e, FatturaPA and Facturae - and the XML embedded inside a PDF. An output in UBL 2.1 can be written as well, with line items.

What if a value is read wrongly?

Fix it in the table - the exported file uses the value you left there. If it is a supplier you deal with regularly, save the correction as a rule for that supplier and the next invoice from them is read that way.

What can I export?

Excel (XLSX), CSV or TSV with the columns you choose; the 11 standard columns your accounting system wants; the line items on their own; or a UBL 2.1 e-invoice. A column set can be saved as a template, so the next export is one click.

How many invoices can I extract at once?

There is no fixed limit. BillSight supports recursive folder scanning and can batch extract large numbers of invoices in a single run, with a progress bar you can stop.