How invoice intake automation separates extraction from review
Separate invoice extraction, deterministic checks and human acceptance with a field-and-exception matrix and downloadable review worksheet.
Guide by the Otomatzia editorial team · source content checked on

Which invoice inputs do these sources cover?
Invoice intake automation works when extraction, deterministic checks and human acceptance stay separate, each with its own output. A parser returns candidate values. Named rules pass or fail them. A person accepts the row against the source document before anything is exported. This guide gives you a field and exception matrix and an acceptance worksheet. They stop at that person, not at posting or payment.
Name what actually arrives before you choose anything else. Microsoft's invoice model page, rechecked October 28 2026 says inputs can include phone-captured images, scanned documents and digital PDFs. It says separately that the API returns structured JSON. The JSON is parser output, not an electronic invoice.
The page was rechecked October 28 2026. It says the model extracts key fields and line items from sales invoices, utility bills and purchase orders. The model currently supports invoices in 27 languages Microsoft's invoice model page. A utility bill or purchase order in the same mailbox is read as a document too. Your checks have to tell the types apart.
Peppol describes a different input. The May 2026 Peppol BIS Billing 3.0 document says it is a Core Invoice Usage Specification of EN 16931. It says compliant instance documents are compliant with the European Standard Peppol BIS Billing 3.0, May 2026 release. A Peppol invoice arrives structured: field-reading uncertainty does not apply to it, while business-rule checks still do.
Scanned paper is the input the forum question names. A participant in r/automation asked for OCR recommendations specifically for scanned invoices r/automation thread on OCR for invoices. No cited source tested the reader's own files. The draft workflow Tiger Media built, described below, processed no real invoice: its provider nodes never ran. Before you continue, have these items:
- One supplier invoice you are allowed to inspect, or a synthetic sample labeled as synthetic
- A named person who can compare extracted values with the source document
- A written decision for which failed checks block export

What each parser actually returns
A field list is a contract you accept or reject before anyone talks about automation. Treating a generic entity set, a line-item model and an eight-field prompt as one contract is the first mistake to avoid.
Header fields
Google Cloud states that its Invoice Parser can extract up to 46 generic entities. These include invoice number, supplier name, invoice amount, tax amount, invoice date and due date Google Document AI pretrained overview, October 2026. "Up to" is a ceiling, not a promise about any given invoice.
Microsoft gives Document Intelligence v4.0 the API version 2024-11-30 (GA) and the invoice model ID prebuilt-invoice Microsoft's invoice model page. Record the version and model ID beside each field, so a later change in a value's meaning can be traced to the model that produced it.
Line items
Microsoft says the invoice result includes invoice ID, ship to, bill to, customer, total and line items. It also returns recognized text, tables, cells, bounding boxes, confidence and references back to recognized lines and words Microsoft's invoice model page. Line items are a structure of their own. Use returned content, spans and bounding regions to trace extracted values where available. Inferred fields may have no source text; record missing grounding explicitly.
Because the same model reads purchase orders, record the document type beside the lines. Otherwise, a purchase order's lines can sit in an invoice column until a total fails to reconcile.
What the draft prompt asks for
At Tiger Media we built a draft n8n invoice-intake workflow that takes one supplier PDF at a time. It prepares a Gemini request for exactly eight fields: supplier name, supplier tax ID, invoice number, invoice date, currency, subtotal, VAT and total. Missing, unreadable or ambiguous values are requested as null. The model is told not to calculate or correct numbers. The draft has no line items at all.
Eight is not the right number; it is a decision. Null instead of a guess keeps a missing VAT figure visible. The prompt instructs the model not to calculate or correct numbers, but this run did not call the model. Each field you add is a field someone has to check against the source.

What to keep when line items are missing
When header fields extract and line items come back empty, that is a reported pattern, not a diagnosed one. A historical invoice2data issue shows that header extraction did not guarantee line extraction. The author extracted fields but not lines despite testing the regex separately. Contributors asked for the actual extracted text and debug output. A contributor later said the line regex did not match the supplied lines invoice2data issue on missing line data. The lesson is in what the contributors asked for.
What to keep from the parser
Microsoft's result returns recognized text, tables, cells, bounding boxes, confidence and references back to lines and words Microsoft's invoice model page. When lines are missing, those elements are the evidence, and reproducing the failure later under the same parser version may not be possible. Capture the record the first time:
- The source page the lines appear on, identified by page number
- The parser name and version that produced the response
- The fields and line structure you requested
- The line-item structure that actually came back, including an empty structure
- The extracted text or a whitespace sample for the line region, if the parser exposes it
- Parser diagnostics or debug output, if available
What this dossier does not contain
This guide retains no reproduction of a missing-line failure: no extracted-text sample, no whitespace sample and no parser debug output. It therefore does not diagnose a cause. The invoice2data issue shows a regex that did not match in one tool; it does not explain your case. Hand the capture record to whoever owns the parser, and do not write a cause into the worksheet before you have one.
What reports say a supplier layout change affects
Layout change has a reported effect and no measured one. One forum commenter reported substantial effort maintaining regex and custom scripts for invoice layouts, with maintenance problems when a vendor changed formatting r/automation thread on OCR for invoices. Salesforce's guide lists inconsistent invoice layouts, inaccurate existing vendor data and integration problems as implementation challenges Salesforce's invoice automation guide. That is the whole evidence base: one forum comment and one vendor article, with no controlled layout-change test behind either.
So this guide cannot price a layout change, and neither can a source that gives a figure without showing the test. What it gives you is a retest rule tied to the matrix. When a supplier's invoice looks different from the last accepted one, treat the next invoice as unverified whatever the confidence says. Run the full matrix, compare each field with the previous accepted row, and have the named reviewer sign it. If you are unsure which extraction methods already run across your processes, an audit of the current automation estate is a reasonable first step.
Checks that answer a different question than confidence
Confidence says how sure the model is about what it read. It does not say whether the page was readable or whether the invoice is valid. The matrix keeps those signals in separate rows, so a confident reading of a wrong total cannot pass as a check.
Image quality
For Enterprise Document OCR quality assessment, Google requires processOptions.ocrConfig.enableImageQualityScores to be true. It defines the quality score as a number from 0 to 1, where 1 means perfect quality. It returns detected defects sorted in descending order by confidence value Google Document AI response guide, October 2026. This answers whether the page was fit to read; a low score is a reason to request a better scan. It does not prove any value is right. A perfect page can still carry a wrong amount or a duplicate invoice number.
Field confidence
Microsoft's result returns confidence with bounding boxes and references back to recognized lines and words Microsoft's invoice model page. The AnalyzeDocument response documentation was rechecked October 28 2026. It says bounding regions identify the page number and polygon for an element Microsoft AnalyzeDocument response documentation.
Field confidence estimates whether the field prediction is correct. Word confidence concerns transcription. Neither establishes arithmetic correctness or transaction validity. A supplier who printed a wrong subtotal can still have that subtotal read with high confidence.
Business rules
Business rules are the deterministic layer. The May 2026 Peppol rules table exposes an identifier or error message and a flag for each rule. DE-R-001 is flagged as fatal. DE-R-T02, applicable when both supplier and customer are located in Germany, requires an external document location to contain an absolute URL with a valid scheme and is flagged as a warning Peppol rules table, May 2026 release.
Oracle's validation checks variances between ordered, received, consumed and invoiced quantities or amounts. It applies or releases holds, validates project and conversion rate information, and checks period status. It can place holds for insufficient funds and other budgetary control validation errors Oracle Financials 25D, How Invoices Are Validated.
A service-provider participant in the forum thread proposed checking line totals against the invoice total. They warned that connecting extraction to the destination application can become complex without a standard integration r/automation thread on OCR for invoices. None of these checks concern how the invoice was read.
At Tiger Media we built deterministic validation after extraction for exact response shape, required values and types, Israeli tax-ID checksum, valid non-future date, ILS currency, subtotal-plus-VAT arithmetic, VAT-rate drift and duplicate supplier-ID plus invoice-number pairs. Read that as one worked policy for one jurisdiction, not a default: your currency, tax identifiers and tolerance for drift are your decisions.
| Signal | Question answered | Source | What it does not prove |
|---|---|---|---|
| Image quality | Was the page fit to read? | Google's quality score and defect list | It does not prove that any value, or the transaction, is correct. |
| Field confidence | How likely is the model's field prediction to be correct, while word confidence concerns transcription? | Microsoft's confidence, bounding boxes and references | It proves neither arithmetic, plausibility nor supplier validity. |
| Business rules | Does the invoice agree with your rules and records? | Named rules with a severity, such as Peppol's fatal and warning flags or the draft's checksum and arithmetic checks | They do not prove that the reading was accurate, which is why they run after extraction rather than instead of it. |

What is retained beside each extracted value
A reviewer can only check a value against its source if the location travels with the value. This section covers what the response gives you and how the draft handled a failed response. It says nothing about where you store the original file, who may open it or how long you keep it: no cited source establishes that, and this guide will not invent it.
Structured response and source region
Google says the processing response is a Document object holding everything known about the processed document, including all structured information extracted Google Document AI response guide, October 2026. Microsoft's bounding regions give the page number and polygon for an element; page numbers are 1-indexed and the service currently returns 4-vertex quadrilaterals Microsoft AnalyzeDocument response documentation. Keep the whole response, and keep page and polygon beside the value they belong to: that pair is the worksheet's source region slot.
Failed response status
At Tiger Media the draft routes every detected problem to a visible needs_attention row with machine-readable flags, while a clean row is only ready_for_review. A blocked or incomplete model response is retained with the ai_incomplete flag instead of disappearing. A model that returns nothing still produces a row, and a row that failed loudly is better than an invoice that vanished.
Synthetic fixture rows
At Tiger Media we ran only the review Code-node logic in a disposable n8n 2.41.6 container with networking disabled. Four synthetic model replies produced the retained expected rows: a clean invoice, an arithmetic mismatch, a missing-date duplicate and an incomplete AI response. Those rows are labeled synthetic because the provider nodes did not run: no file was read, no model was called, no sheet was written. Mark your own fixture rows the same way.
- Keep the full structured response the parser returned, not a copy of selected fields.
- Record the page number and polygon beside each value when the response includes a bounding region.
- Retain an empty or failed model response as a needs_attention row with the ai_incomplete flag and the reason the shape check rejected it.
- Label every row produced from a synthetic reply as synthetic, apart from rows produced from a document.

What the reviewer sees when a value fails
The exception record is what a reviewer works from, and the gap between what the sources describe and what the draft retains is part of that record.
Slots the sources name
Jessica Wilson's article says exception routing should include the failed field or line, expected and observed values, supporting records, owner and required action Jessica Wilson's article on invoice intake and ERP handoff. Peppol's rules table supplies the failed rule and its severity as an identifier, a message and a fatal or warning flag Peppol rules table, May 2026 release. Microsoft's bounding regions supply the source region as a page number and polygon Microsoft AnalyzeDocument response documentation.
The worksheet record therefore holds: source page region, observed value, failed rule, severity, expected value, owner and recorded decision. Machines fill source page region, observed value, failed rule and severity. People fill expected value, owner and decision. The record should show when those are still empty.
Slots the draft retains
At Tiger Media the draft retains the status (needs_attention or ready_for_review), machine-readable flags naming each problem, including ai_incomplete for a blocked or incomplete model response, and the observed values the model returned. It does not fill expected value, owner or decision. No retained run filled them, and no destination system did either, because none was connected. The draft supplies document links, retained field values, status and problem flags. Source page regions, rule severities, expected values, owners and decisions require additional worksheet fields; the retained run did not populate them.

Acceptance states the sources do not share
The sources do not share one set of states, and this guide will not pretend they do. Peppol names outcomes for the customer, the draft names statuses for a review row, and the export boundary names a decision a person makes. The rows below draw no arrow from extraction to payment.
Peppol outcomes
In the Peppol invoice control flow, the customer processes a received invoice to one of 3 stated results. The customer fully approves it, posts it in the accounting system and passes it on to be paid. Alternatively, the customer completely rejects it and requests a credit note, or disputes parts and requests a credit note and a new invoice Peppol BIS Billing 3.0, May 2026 release. Peppol places invoice verification inside the buyer's internal business controls. These use the purchase order, contract, confirmed receipt of goods or services and delivery information. These are business results decided after verification.
Draft statuses
At Tiger Media a row is ready_for_review when every check passed and needs_attention when any check flagged a problem. A blocked or incomplete model response is a needs_attention row with the ai_incomplete flag. The acceptance boundary is human: approved_by stays empty until a person checks the row against the original PDF, and the workflow neither approves nor posts anything into accounting. Neither status means accepted, submitted or paid.
Export boundary
Oracle Financials 25D says an invoice must be validated before it can be paid or accounting entries created for it. Validation uses the Validate invoice action or the Validate Payables Invoices process Oracle Financials 25D, How Invoices Are Validated. That is a destination's own gate after export, and this guide did not execute it.
One third-party example shows the separation in the transcript-verified 01:06 to 01:15 excerpt. The presenter points to a validation state stored through one flow and a separate human approval flow in a Copilot Studio setup Wario Wario on YouTube, published December 15 2025, transcript reviewed October 22 2026. The excerpt supports only that; it does not validate this worksheet, a destination handoff or production performance. There is no retained evidence that the draft ever handed a row to a destination.
| State owner | States | What this guide executed |
|---|---|---|
| The Peppol standard defines buyer outcomes. | The buyer may approve and post the invoice and pass it on for payment, reject it with a request for a credit note, or dispute it with a request for a credit note and new invoice. | Nothing; this guide quotes the standard. |
| Tiger Media's unmerged workflow defines draft review-row statuses. | The draft uses ready_for_review and needs_attention, with ai_incomplete among its machine-readable flags. | Synthetic review logic only; provider nodes did not run. |
| Your worksheet and a named person define the export boundary. | The row is approved to export by a named person or held. | Nothing; the record stops at the person's decision. |
What must pass before data leaves review
The checks that must pass are the ones your written decision says block export. The sources give the categories; the thresholds are yours. The sequence ends at a person's acceptance to export, not at an accounting record or a payment.
Field and arithmetic checks
At Tiger Media the draft checks exact response shape, required values and types, an Israeli tax-ID checksum, a valid non-future date, ILS currency, subtotal-plus-VAT arithmetic, VAT-rate drift and duplicate supplier-ID plus invoice-number pairs. Each is deterministic: the same input gives the same verdict. Label verdicts the way Peppol's table does, with an identifier, a message and a fatal or warning flag Peppol rules table, May 2026 release, and decide in writing which rules block export. The Israeli tax-ID checksum and the ILS currency belong to this draft's jurisdiction. For another currency or tax regime, replace those two rows with that regime's own rules.
Reference checks
Reference checks compare the invoice with records outside it. Peppol lists the purchase order, contract, confirmed receipt of goods or services and delivery information among the information that may be used for verification Peppol BIS Billing 3.0, May 2026 release. Jessica Wilson's article separates extracted values from transaction validity. It names duplicate invoices, active suppliers, purchase-order ownership, receipts and configured tolerances before ERP creation Jessica Wilson's article on invoice intake and ERP handoff. Oracle checks variances between ordered, received, consumed and invoiced quantities or amounts Oracle Financials 25D, How Invoices Are Validated.
The draft performs a single reference check, the duplicate candidate, because it holds no purchasing records. If you hold them, add those rows with their own flag. If not, say so in the worksheet rather than leaving a row blank as if it passed.
The human gate
At Tiger Media approved_by stays empty until someone checks the extracted row against the original PDF, and the workflow neither approves nor posts anything into accounting. Every earlier check can pass on a reading that is wrong in a way no rule anticipated, so acceptance is a decision somebody owns by name. Oracle's validation before payment or accounting entries is a later and separate gate. The same boundary applies when a provider builds this for you: the guide on evidence and acceptance at provider handover covers what to ask for before sign-off.
- Confirm the response has the expected shape and every required field with the right type, or mark the row needs_attention.
- Recompute the arithmetic your matrix defines, such as subtotal plus VAT against total, and flag any mismatch with its severity.
- Check that the date is valid and not in the future, and check the tax identifier and currency against your jurisdiction's rules.
- Look up the supplier ID and invoice number pair against invoices already accepted and flag a duplicate candidate.
- Compare the invoice with the reference documents you hold, and record which references were unavailable.
- Have the named reviewer compare the row with the source document, record the decision and their name in approved_by, and stop there.
Where a destination rejection should be recorded
A destination can refuse what you export, and the worksheet needs a slot for that refusal before it happens. The draft never received such a rejection, because it never sent anything anywhere.
What to store
Jessica Wilson's article describes preserving ERP rejection responses Jessica Wilson's article on invoice intake and ERP handoff. Store the rejection as the destination returned it, with its time and the row it refers to, then assign it. Oracle shows the ownership pattern: some holds can be released manually. Others require correcting the exception by updating the invoice or purchase order and resubmitting validation Oracle Financials 25D, How Invoices Are Validated.
As worksheet slots: rejection text, affected row, owner of the correction, action taken, and the result on resubmission. Use the hold as a pattern for who resolves what. It is not evidence that anything in this guide posted to Oracle or any other system.
What was not run
There is no retained evidence that Tiger Media ran extraction against Drive or Gemini, wrote review rows to Google Sheets, processed a real invoice or published the playbook. The provider nodes did not run and the work remains an unmerged draft. The rejection slots above were designed from the sources, not filled from experience.
What the draft run proves
The draft run proves one narrow thing: the review logic produces the expected row for each of four synthetic model replies. At Tiger Media we ran only the review Code-node logic in a disposable n8n 2.41.6 container with networking disabled. The replies were a clean invoice, an arithmetic mismatch, a missing-date duplicate and an incomplete AI response.
It proves nothing else. No provider node ran, so no PDF was fetched and no model was called. No row was written to a sheet, no real invoice was processed, and the playbook was not published. There is no production benchmark, accuracy figure or throughput figure behind this guide. A matrix is only useful if you know which cells came from evidence and which from design.
Questions before any destination connection
Does an electronic invoice standard replace PDF extraction?
No, they cover different inputs. Peppol BIS Billing 3.0 is a Core Invoice Usage Specification of EN 16931 whose compliant documents are compliant with the European Standard Peppol BIS Billing 3.0, May 2026 release, and they arrive structured. Microsoft's model takes images, scans and digital PDFs and returns structured JSON Microsoft's invoice model page, which is not a Peppol invoice. Structured invoices skip extraction and still need the business-rule path.
What happens when a supplier changes its invoice layout?
The reports describe a maintenance burden, and no measurement of that burden exists. One forum commenter reported heavy regex and script maintenance when a vendor changed formatting r/automation thread on OCR for invoices, and there is no controlled test in this guide's sources. Treat that supplier's next invoice as unverified, run the full matrix, compare it with the last accepted row and have the reviewer sign it.
Why did headers extract while line items came back empty?
This guide cannot say. The only cited case is a historical invoice2data issue where a contributor found the line regex did not match the supplied lines invoice2data issue on missing line data, one cause in one tool. Capture the page, parser version, requested fields, returned structure, text sample and diagnostics, and hand them to the parser's owner.
Is approval to export the same as permission to pay?
No. In Peppol's wording the customer fully approves the invoice, posts it in the accounting system and passes it on to be paid. Alternatively, the customer completely rejects it and requests a credit note, or disputes parts and requests a credit note and a new invoice Peppol BIS Billing 3.0, May 2026 release. In the draft, approved_by records acceptance to export, and it stayed empty. Oracle's own validation before payment or accounting entries Oracle Financials 25D, How Invoices Are Validated was not run here.
Can this guide tell me how the workflow performs on real invoices?
No. Only synthetic review logic ran: four fixture replies with networking disabled, no provider calls, no sheet writes and no real invoice. The cited video supports only a validation state and a separate human approval flow in one Copilot Studio example, within the 01:06 to 01:15 excerpt; it is not a benchmark. Measure performance on your files with your reviewer.
What to apply before the next invoice batch
Carry these moves into the next batch of supplier invoices.
If you want this matrix applied to the invoices your team actually receives, request an automation review and describe your input types, your checks and who signs acceptance. The request reaches the Tiger Media team, not any listed provider.
- Name the input type for each supplier before choosing a method: image, scan or digital PDF as Microsoft's model accepts them, or a structured electronic invoice, which is not extracted at all Microsoft's invoice model page
- Keep extraction apart from checks: confidence and image quality record what the model saw; each business rule is a named check with a fatal or warning flag, in the shape of Peppol's table Peppol rules table, May 2026 release
- Fill the exception record for every failed value: source region, observed value, failed rule and severity, then the expected value, owner and decision only a person can supply
- Get a named human acceptance before export, in a slot like approved_by that stays empty until someone has compared the row with the source; a destination's own validation, such as Oracle's gate before payment or accounting entries Oracle Financials 25D, How Invoices Are Validated, is a later gate this guide does not run
- Remember what the draft proved: four synthetic replies through review logic, no provider nodes, no real invoice, no sheet writes and no destination handoff, so treat this guide as a worksheet to fill, not a test run for you
Scroll the table sideways to read every column.
| review_id | source_document | source_page_region | field | observed_value | field_confidence | failed_rule | severity | expected_value | reference_available | owner | decision | status | flags | approved_by | decision_at | destination_rejection | correction_owner | correction_action | resubmission_result |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| DEMO-001 | demo-invoice-a.pdf | page 1; polygon not captured | supplier_tax_id | 514321769 | tax_id_checksum | blocking | not_checked | needs_attention | tax_id_check_failed | ||||||||||
| DEMO-002 | demo-invoice-b.pdf | page 1; polygon not captured | total | 1030 | subtotal_plus_vat | blocking | 1003 | not_checked | finance_reviewer | needs_attention | total_mismatch | ||||||||
| DEMO-003 | demo-invoice-c.pdf | source region unavailable | invoice_date | required_value | blocking | not_checked | needs_attention | missing_invoice_date;possible_duplicate | |||||||||||
| DEMO-004 | demo-invoice-d.pdf | source region unavailable | model_response | response_shape | blocking | not_checked | needs_attention | ai_incomplete |
Sources to check next
- Microsoft's invoice model page, rechecked October 28 2026
- Peppol BIS Billing 3.0, May 2026 release
- r/automation thread on OCR for invoices
- Google Document AI pretrained overview, October 2026
- invoice2data issue on missing line data
- Salesforce's invoice automation guide
- Google Document AI response guide, October 2026
- Microsoft AnalyzeDocument response documentation
- Peppol rules table, May 2026 release
- Oracle Financials 25D, How Invoices Are Validated
- Jessica Wilson's article on invoice intake and ERP handoff
- Wario Wario on YouTube, published December 15 2025, transcript reviewed October 22 2026
Vendor features and prices change. Confirm details on the linked official pages before you rely on them.
What to read next
- Provider Evidence Requests: What to Verify at Handover
- Automation monitoring checklist: verify completed work
- Admin workflows: from incoming request to tracked task
- Google Sheets: work management features and setup