Your OCR Read the Invoice Perfectly. The VAT on It Was Wrong.
Here's an invoice that lands in a finance inbox a hundred times a day.
A Maltese consultancy bills a French company for €9,000 of services. The PDF is clean. Supplier in Malta, customer in France with a valid VAT ID printed at the top, €9,000 net, €1,800 VAT, €10,800 total. You run it through Mindee and every field comes back perfect — supplier, customer, line items, tax amount, the lot. Confidence scores are sky-high. The data is exactly what's on the page.
And the VAT is wrong.
Not "the OCR misread a digit" wrong. The number itself shouldn't be there. This is an intra-EU B2B supply of services, both parties VAT-registered. Under the place-of-supply rules, it's reverse-charged: the supplier invoices at 0% and the French customer self-accounts for the VAT on its own return. That €1,800 line is a mistake the supplier made. The invoice is internally tidy and externally incorrect.
Extraction is the eyes, not the brain
This is the part worth sitting with, because it's not a knock on the OCR at all. Document AI did its job exactly right. It read what was on the page with high accuracy, which is genuinely hard and genuinely valuable. Tools like Mindee turn a PDF into clean structured fields, and that's the foundation everything else stands on.
But extraction answers one question: what does this document say? It was never designed to answer the second question: should it say that? Those are different jobs. One is vision. The other is tax law — and specifically the cross-border VAT rules that decide whether a given supply is standard-rated, zero-rated, exempt, or reverse-charged based on who the parties are, where they sit, what's being supplied, and whether VAT IDs check out.
No amount of OCR accuracy gets you there, because the error isn't in the reading. It's in the document. A perfect extraction of a wrong invoice is a perfectly captured wrong number, posted straight into your books with full confidence.
What the brain looks like
So you pair them. Mindee reads the invoice. OpenAccountants checks whether the tax on it is actually correct for the jurisdictions involved.
When the extracted fields come through — Maltese supplier, French business customer, both with VAT IDs, VAT charged — OA loads the verified Malta place-of-supply rules and the intra-EU B2B treatment, and flags it:
⚠ VAT charged on an intra-EU B2B supply.
Expected treatment: reverse charge (supplier 0%, customer self-accounts).
Rule: MT VAT place-of-supply, B2B general rule (Art. 44 PVD).
Verified by: Michael Cutajar, CPA (Malta).
That last line is the whole point. The rule OA applied wasn't scraped off a forum or hallucinated by a model that sounds confident. It was signed off by a named, licensed accountant who is accountable for it. When your system flags a supplier's €1,800 VAT line as wrong, "a CPA in Malta verified this rule" is the difference between a flag your team trusts and a flag they mute by Friday.
And it's the same shape in every direction. A French supplier billing a German business, a Spanish freelancer invoicing an Irish company, a UK firm post-Brexit getting the new treatment wrong — these are all the same class of error, and they all live in rules that change and vary by country. OA carries the verified place-of-supply logic across 190+ jurisdictions, so the check travels with the invoice instead of living in one reviewer's head.
Why this matters more as you automate
When a human bookkeeper eyeballed every invoice, a wrong VAT line had a chance of getting caught. The senior who'd seen a thousand intra-EU invoices would frown at it. As you push extraction-to-ledger automation — straight-through posting, AI agents reconciling on their own — that human frown disappears from the loop. The pipeline gets faster and the silent-error rate goes up, because nothing in a pure extraction stack is looking for "this invoice is wrong," only "did we read it right."
That's the gap a correctness layer fills. Extraction tells you what the document says. A verified-rules check tells you whether to believe it. You want both, and you especially want both the moment a human stops reviewing each one.
We built a small reference integration so you can see it end to end: feed an invoice through the OCR, watch OA catch the reverse-charge error, and trace the flag back to the rule and the accountant who signed it. It's open source — openaccountants/mindee-vat-demo. Clone it, run it on your own messy invoices, and connect the OpenAccountants MCP at openaccountants.com to give your pipeline the second pair of eyes that actually knows the law.