An invoice reader that extracts the invoice lines and checks them.
Invoices, receipts, and the other documents a finance team retypes are unstructured data. The invoice reader turns them into structured line items, checks them against your rules, and hands them on. We built it for our own work first. It runs as a few small cloud functions, so it fits into Google Cloud or Azure.
Supplier invoices arrive as PDFs and photos. Somebody reads each one and types the lines into the accounting system, or a document service does it per page at a price that adds up.
The services that read documents charge per page. A language model charges per token. One invoice takes a few thousand tokens, most of them the fixed instructions, and costs about a tenth of a krone. The open question is whether the output can be trusted.
Trust is the real question, so the reader checks its own output and keeps the source: every line item points back to the page it came from.
What it does, step by step
1. Read
Acts alone
Comes in
A PDF or a photo of an invoice, a receipt, a statement, a contract page.
The reader
Sends the document to the Gemini API with a fixed output format: supplier, invoice number, dates, currency, each line with description, quantity, unit price, VAT rate, totals. The raw file is kept unchanged.
The people
Nobody retypes a line.
Sign-off
"Acts alone". The reader only reads; it changes nothing.
Traceable
Every field records the page and the region it was read from.
2. Check
Asks first
Comes in
The structured line items.
The reader
Checks that the lines add up to the totals, that the VAT rates are valid, that the supplier is known, that the currency and dates make sense. A document that fails a check is flagged with the reason.
The people
The bookkeeper reviews the flagged documents, not the pile.
Sign-off
"Asks first" on a flag. A document that passes every check goes straight on.
Traceable
Each check records what it compared and what it found.
3. Hand on
The operator signs off
Comes in
Checked line items.
The reader
Writes them where you want them: the import format your accounting system reads, for approval there, or the warehouse, where they are stored with the rest of your data.
The people
The bookkeeper approves a batch inside the accounting system.
Sign-off
"The operator signs off" before anything is posted.
Traceable
The import file and the warehouse rows both point back to the document.
4. Deploy in your cloud
The operator signs off
Comes in
Your tech stack: Google Cloud, Azure, or both.
The reader
The builder agent is an AI agent that builds and maintains the data pipelines and knowledge workers for you. It deploys each step in your own project as a small function or job. The steps run as Cloud Run functions or Azure Functions and use that cloud's own scheduler, storage, and secret store.
The people
The operator is the person at your company who checks and signs off the knowledge workers' work. Every change to the cloud is reviewed by your IT, in-house or your IT partner, and the operator approves each one.
Sign-off
"The operator signs off" on every deployment.
Traceable
Every deployment has a plan that was shown first and an entry with an id.
The parts
The parts are small and independent, and each one deploys into the stack you already have. They already run in our own work; we adjust them and deploy them in your cloud.
The reader
Gemini API, a Cloud Run function or an Azure Function
The checks
the same function, your rules as configuration
The writer
your accounting system's import format, or BigQuery or Fabric
The runner
Cloud Scheduler and Workflows, or an Azure timer trigger
The storage
Cloud Storage or Azure Blob Storage, raw files kept unchanged
The MCP server
Cloud Run or Azure Container Apps, with sign-in, so people can ask questions of the data
The builder agent
Claude Code, in your repository, with the project's own guardrails
How we count the cost
Every cost figure on this page shows how we calculated it and the date we read it.
The reader ran on 491 supplier invoices in production in the week of 19 to 25 October 2026. The client whose invoices they were is not named.
Cost per invoice = the Gemini API spend for that week, read from the spend dashboard, divided by the invoices. That week also included our own test runs, so the figure is rounded up to about DKK 0.10; the true production cost is lower.
For comparison, Google's Document AI invoice parser costs USD 0.10 per invoice of up to ten pages, and Microsoft's Azure Document Intelligence prebuilt invoice model costs USD 10 per 1,000 pages, both read on 25 October 2026.
Prices change, so every price on this page shows the date it was read.
The tech choices, and why
The choices are ours and we would make them again. Each has one reason.
A language model with a fixed output format, not a per-page document service
The model returns the structure we need, and the checks decide whether to trust it.
Unchanged raw files
They are the evidence: a questioned line item points back to its page.
Checks as a separate step with named rules
A failed check can be explained, and you can change the rules yourselves.
Small functions instead of one application
Each function deploys, scales, and costs on its own, and runs in Google Cloud or Azure alike.
The builder agent and the repository stay with you
You can maintain it without us; you are not locked in.
What it would cost you per month
Move the slider to your invoice volume. The reader's price is the measured figure from this page; the others are the list prices, read on the dates shown.
500
The invoice reader
DKK 50per month
About DKK 0.10 per invoice: 491 production invoices, 19 to 25 October 2026, the week's API spend divided by the invoices, rounded up.
Google Document AI, invoice parser
DKK 335per month
USD 0.10 per invoice of up to ten pages, read 25 October 2026, at the ECB rate of 23 October.
Microsoft Azure Document Intelligence, prebuilt invoice
DKK 34per month
USD 10 per 1,000 pages, one page per invoice assumed, read 25 October 2026, at the ECB rate of 23 October.
One page per invoice for the per-page services; a two-page invoice doubles their price and not the reader's.
Prices change, so every price on this page shows the date it was read.
Running cost only: the per-page services need no setup; the reader needs setting up in your cloud.
Before and after
Every invoice line was typed by hand, or read by a service priced per page.
The reader extracts the lines; the bookkeeper approves a batch and reviews the flags.
When a line was questioned, someone had to find the PDF.
Every line points to its page.
Each new document type needed a new project.
A new type gets a new output format and a new check, and both deploy as the same small functions.
Before you could start, you had to build the pipelines.
The parts already run; you pay for adjusting and deploying them.
Where it runs
We name each product so you can see whether the reader fits the stack you already have.
Google Cloud
Gemini API
Cloud Run functions
Cloud Scheduler
Cloud Storage
BigQuery
Microsoft
Azure Functions
Azure Blob Storage
Fabric
AI tools and connections
Claude Code
Model Context Protocol
Product and company names are trademarks of their respective owners, used to identify the products referred to. No endorsement or partnership is implied. Google Cloud, Cloud Run, Gemini, and Document AI are trademarks of Google LLC. Azure, Azure Functions, and Fabric are trademarks of the Microsoft group of companies.
Case written 24 October 2026, from the tool as built; technology references checked the same day.
This is our own tool, run on real invoices in production. Its cost per invoice is measured, every price on this page is dated, and the monthly figures multiply those prices by the volume you choose.
If your finance team retypes invoice lines, or pays per page to avoid it, let's talk.