What it costs to read 1,000 pages
For a small company, 1,000 pages a month is roughly 50 delivery notes and acts per working day. Below are pay-per-page rates with no monthly subscription, taken from the pricing pages of Google Document AI, Azure Document Intelligence and OpenAI on 3 November 2026. Hryvnia amounts use the National Bank of Ukraine rate for 3 November: UAH 45.5348 per dollar.
| Service and mode | What it returns | Price | 1,000 pages a month |
|---|---|---|---|
| Azure, Read | Page text | $1.50 per 1,000 pages | UAH 68 |
| Google, Enterprise Document OCR | Page text | $1.50 per 1,000 pages | up to UAH 68 |
| Azure, prebuilt models (invoice, receipt, contract) | Fields in a fixed schema | $10 per 1,000 pages | UAH 455 |
| Google, Form Parser | Key-value pairs, tables | $30 per 1,000 pages | UAH 1,366 |
| Google, Custom extractor | Your fields, trained on your documents | $30 per 1,000 pages | UAH 1,366 |
| Azure, Custom extraction | Your fields, trained on your documents | $30 per 1,000 pages | UAH 1,366 |
| OpenAI gpt-6-astra, batch (illustrative estimate) | Whatever the prompt asks for | $5 / $25 per 1M tokens | ≈UAH 1,246 |
| OpenAI gpt-6-astra, standard (illustrative estimate) | Whatever the prompt asks for | $10 / $50 per 1M tokens | ≈UAH 2,493 |
| Google, Invoice parser, one-page invoices | Invoice fields in a fixed schema | $0.10 per document of up to 10 pages | UAH 4,553 |
1,000 pages × rate × UAH 45.5348/$ (NBU rate for 03.11.2026). Rates checked on 3 November 2026 on the providers' pages. Excludes free tiers, file storage and the cost of building the integration.
How the rows that need explaining were calculated:
- OpenAI bills tokens, not pages. The images and vision guide caps gpt-6-astra at high detail at 2,500 patches of 32×32 pixels, multiplied by 1.2. An A4 scan at 200 dpi (1,654 × 2,339 pixels) is scaled down to that budget and costs 2,974 input tokens. We assumed 500 tokens of instructions and 400 tokens of output listing the fields; that gives $0.0547 a page at standard rates and $0.0274 in batch. If the model writes a longer answer or reasons for longer, the price goes up.
- There is no estimate for OpenAI's cheaper models. The pricing page on 3 November lists gpt-6.1-sol, gpt-6.1-terra and gpt-6-luna, but the vision guide gives no multiplier or patch budget for them. Their cost per page cannot be worked out from the documentation, only from a trial run on your own documents.
- Google's Invoice parser bills per document, not per page. One request covers up to 10 pages for $0.10. For one-page delivery notes that is 3.3 times more than Form Parser; for ten-page documents it is three times less.
- Free tiers. Azure gives 500 pages a month on a separate free tier. Google's table marks the first tier of Enterprise Document OCR, "0–1,000", as free, which is why that row says "up to UAH 68".
Even the most expensive option is UAH 4,553 a month. The main cost here is not the rate but the setup: someone has to connect the service to the accounting system and work through the first few hundred errors.
Text, fields or a language model
The 20-fold price gap between the first and fourth rows of the table is a gap in what you get back.
- Text only (Read, Enterprise Document OCR). The service returns the words and lines on the page. Working out who the supplier is, what the total is and where the item table sits is left to your own code. This fits when documents look the same, for example from three regular suppliers whose forms never change.
- Fields in a fixed schema (Azure prebuilt models, Google Invoice parser). The service finds the supplier, number, date, total and line items itself. The schemas are built around a typical invoice; whether they recognise a Ukrainian delivery note with its own fields is something to test on your samples before you connect anything.
- Your own fields (Custom extractor, Custom extraction). You show the service a few dozen labelled documents and it learns to find your fields. The most expensive per page, and the closest to what the accounting system needs.
- A language model (OpenAI). You send an image of the page with an instruction such as "return supplier, company code, date and line items as JSON". No training is needed, but results can vary between runs, and a total can be "read" wrongly without the model flagging any doubt. The services in points 2–3 return a confidence score for each field, which makes it easy to route a document to a person.
For connecting a service like this to a spreadsheet or accounting system without a developer, see the article on automation without a programmer.
What the law requires from a source document
Part 2 of Article 9 of Ukraine's Law "On Accounting and Financial Reporting" No. 996-XIV lists six mandatory details of a source document, on paper or electronic. The table shows what AI can do with each of them and what stays with a person.
| Detail under Article 9 | What AI can do | What a person decides |
|---|---|---|
| Name of the document (form) | Recognise documents and sort them by type | Whether this is the document that supports this particular transaction |
| Date of preparation | Read the date and compare it with the order and payment dates | Which reporting period the transaction belongs to: under Part 5, the one in which it took place |
| Name of the company on whose behalf it was prepared | Read the name and code, match them against the counterparty list | Whether this is the counterparty you have a contract with |
| Content and volume of the transaction, unit of measure | Read items, quantities and prices; match them to the order and recalculate totals | Whether the goods actually arrived and the service was actually provided |
| Positions and surnames of the people responsible for the transaction and its correct paperwork | Check that the fields are filled in and match surnames against the list of authorised people | Whether those people had the authority |
| Personal signature or other data identifying the person involved | Find the signature area and flag it if empty | Whether the signature is genuine; for an electronic document, whether the electronic signature has been verified |
Three more rules in the same article bear directly on automation:
- Acts for services, works and leases from 2026. Law No. 4791-IX added a paragraph: if a document states the date or period of the services, works or lease, missing positions, surnames and signature on the customer's or tenant's side is not a breach. The condition is that a written contract provides for this procedure and the transaction is recorded in the period it took place. The rule does not apply to transactions paid from public funds, leases of state or municipal property, construction contracts or charitable aid. So the "empty signature area" check for acts has to take the contract into account, not just the form.
- Minor defects are not grounds for refusing to recognise a transaction, provided the document still identifies the person involved and shows the date, the company name, and the content and volume of the transaction. A recognition error in a secondary field should not turn into sending the document back to the counterparty.
- Protection against unnoticed corrections. Under Part 7, a company takes measures so that entries in source documents and registers cannot be corrected without authorisation and without trace. For an AI process this means keeping the original scan or file, and logging every edit to recognised data with its author and time.
Recognised fields are not a source document in themselves. The basis for the books remains the delivery note or act they were read from. The last column of the table is what AI will not check at any price: it sees the document, not the warehouse and not the contract.
A process with human checkpoints
The recognition service sits between the mailbox (or scanner) and the accounting system. A person does not review every document, only those where something did not match.
- Is the service confident about every key field?Supplier, code, date, total, quantity. Set the confidence threshold yourself after the first 200 documents, once you see which values the service got wrong. No → the document goes to a person with the fields highlighted
- Is the counterparty in your list, with a valid contract?Match on the company code (EDRPOU) or individual tax number, not the name: the service can misread one letter of a name. No → a person finds out whose document it is
- Do items, quantities and the total match the order or invoice?Code recalculates "quantity × price" and the total, not the model. A one-kopiyka difference is still a difference. No → a person checks with the storekeeper or manager
- Does the document carry the responsible people's signatures?For paper, a flag that the signature area is filled; for an electronic document, verification of the electronic signature. No → for a services act, check whether the contract allows it without the customer's signature; otherwise the document goes back to the counterparty
A document that passes all four checks lands in the accounting system as a draft. The bookkeeper posts it. That way the decision to accept it into the books stays with a person, and manual work shrinks to the documents with mismatches.
An illustrative example for sizing the workload: with 1,000 pages a month and 15% failing the first check, a person handles 150 documents instead of 1,000. Only your own documents from the first month will show the real share.
Whose documents these are and where they may go
Delivery notes and acts are commercial information belonging to you and your counterparties, and the signatures and details of sole proprietors are also personal data. Before connecting a service, read its data processing agreement and find out where files are stored. The APIs in the table run under separate business terms, not the terms of a free chat app. General rules are in the article on what data you can give an AI assistant.
For an accounting firm keeping books for clients, source documents are someone else's data held under contract. What to do about that, and why they should not be pasted into a chat assistant, is covered in the article on AI for a law or accounting firm.
Our position
For a small company with a few hundred documents a month, start with Azure's prebuilt invoice model or Google's Form Parser and test them on 50 of your own delivery notes and acts. The price difference stays within a thousand hryvnias a month, and the difference in quality on Ukrainian forms only shows on your samples. Use a language model when your documents vary widely and there is nothing to train a service on. Recalculate every key field in code, match it against your counterparty list and the order, and leave posting the document to a person.
This position does not hold if most of your source documents already arrive electronically through an e-document exchange system. Then the data comes structured and with an electronic signature, and there is nothing to recognise: integrating the document exchange system with your accounting software is cheaper and more accurate than any scan recognition.
Checked on 3 November 2026 on the pricing pages of Google Document AI, Azure Document Intelligence and OpenAI, in OpenAI's images and vision guide, and against the NBU rate on bank.gov.ua. Article 9 of Law No. 996-XIV as amended on 01.04.2026 was checked against an archived copy of the zakon.rada.gov.ua page from 10.09.2026: on 3 November the site was not responding, and the law's record page on 18.10.2026 showed the same version. This is an overview of the rule, not accounting advice.
