Automated invoice data extraction
Tavnit reads supplier invoices in any layout and returns vendor, invoice number, dates, tax, totals and every line item as typed fields. No per-vendor template to build. Nothing posts to your ledger until a reviewer approves it, and every approval is recorded.
Why this is painful
Accounts payable is the classic version of this problem: the same eight fields, re-typed from a hundred different layouts, every month. Each supplier formats differently, some send scans, some send photos of scans, and the ones who change their template do it without warning.
Template-based tools handle the first problem badly — you configure a layout per vendor, and every new supplier is a setup task. The moment a vendor redesigns their invoice, the template silently breaks and the errors flow downstream into your ledger.
What to extract
| Field | Why it needs care |
|---|---|
| Vendor name and address | Often differs from the trading name you have on file — a lookup Cleaner can match it to your supplier list. |
| Invoice number | Typed as text, not a number. Leading zeros and prefixes matter and get destroyed by numeric parsing. |
| Issue and due dates | Formats vary by country. A date Cleaner normalises DD/MM and MM/DD to one output format. |
| Line items | A repeating table: description, quantity, unit price, amount. The part most tools either skip or flatten. |
| Subtotal, tax, discount, total | Worth extracting all four so the arithmetic can be checked rather than trusted. |
| Currency | A currency Cleaner can convert to your reporting currency at the same time. |
| PO number | Where present, this is what lets you match the invoice to a purchase order automatically. |
What makes invoice processing hard
Line items are where extraction usually fails
Header fields are easy. A table that runs across a page break, has merged cells, or mixes descriptions across two lines is where most tools return something plausible and wrong. Table fields in a flow handle repeating rows as rows, so a five-line invoice returns five records rather than one blob of text.
A wrong total looks exactly like a right one
There is no visual difference between a correctly read €1,240.00 and a misread €1,240.00 that was actually €1,249.00. This is the argument for conditional review: a Cleaner rule can check that line items sum to the subtotal and route only the failures to a human, so you are not reviewing everything to catch the few that matter.
Multiple invoices arrive in one PDF
A supplier statement or a scanned batch often contains several invoices in a single file. A Splitter separates them first, so each becomes its own run with its own extracted record instead of one merged mess.
How the pipeline handles it
- Email Integration — Suppliers already email invoices. Auto-forward the AP inbox and every attachment is processed without anyone opening the app.
- Splitters — Separates batched or stapled scans into individual invoices before extraction.
- Cleaners — Normalises dates, converts currency, matches vendors against your supplier list, and flags arithmetic that does not add up.
- Human in the Loop — Holds a run for approval — every invoice, or only the ones a rule flagged — with an append-only record of who approved what.
- Webhooks — Pushes the approved record straight into your accounting system the moment it clears review.
Common questions
- Does it handle scanned and photographed invoices?
- Yes. Scans, photos and image-based PDFs all go through OCR before extraction. Quality still matters — a sharp scan extracts more reliably than a phone photo at an angle — which is why review exists for the marginal cases.
- Do I need to set up a template per supplier?
- No. You define the fields you want once, and the same flow reads invoices from any supplier in any layout. Adding a new vendor requires no configuration.
- Can it extract line items, not just totals?
- Yes. Line items are defined as table fields, so a repeating table returns one record per row with description, quantity, unit price and amount typed separately.
- How does it handle different currencies?
- Currency is extracted as its own field, and a Cleaner can convert amounts to your reporting currency during processing so downstream systems receive one consistent unit.
Other document types
Try it on one document
Build a flow, send a real invoice processing through it, and see what comes back. Free credits to start.
Start free