QuickBooks Invoice Processing Automation
Map a supplier invoice to a human-gated draft Bill. Never payment.
— Craig Major
Direct answer
A supplier invoice is not a QuickBooks Online Invoice. Invoice is accounts receivable. A supplier PDF maps to a human-gated draft Bill. A person confirms vendor and Canadian TaxCodeRef. Retries reuse Intuit requestid. This path never creates BillPayment, Payment, or a bank write. Labelled-text fixtures do not measure OCR. This draft did not sign in to Intuit.
Use this page for QBO entity mapping. Start with Invoice Processing Automation for the shared control plane, n8n Invoice Automation for orchestration, or Accounts Payable Automation for the AP foundation.
Who this is for
Controllers and operations leads who already use QuickBooks Online and need supplier invoices to become reviewed draft Bills. Prerequisites: one QBO realm, a named reviewer, and a policy that payment stays outside automation.
Invoice versus Bill
Intuit's Invoice entity is a customer receivable. Bill is a vendor payable you intend to pay later. Expense or Cheque can record a pay-now supplier cost. Creating a customer Invoice from a supplier PDF is the wrong object.
Flowgrammer's handoff stops at a draft Bill after a person approves. Optional later teaching can mention Expense. It still does not automate BillPayment or Payment.
Worked example
Cedar and Quay Fabrication Ltd receives Ridgemont INV-TP-2401. The field map copies vendor Ridgemont Industrial Supply Co, DocNumber INV-TP-2401, date 2026-09-08, currency CAD, and line amounts into a Bill payload. TaxCodeRef is left blank until Avery Chen pastes a real Canadian code from that realm. requestid is unique for the realm and stays under 50 characters on a non-batch write.
Avery Chen confirms Invoice is not the target, confirms the vendor match, and approves. One draft Bill. If INV-TP-2405 times out after the first write, the retry sends the same requestid. No second Bill. No BillPayment.
Those names are fictional. This page does not claim Flowgrammer ran a Canada sandbox.
Workflow
- Classify. Supplier document. Target entity is Bill, not Invoice.
- Extract. Use labelled text in the test pack, or a later extractor. Not an OCR accuracy claim.
- Duplicate keys. SHA-256 of source bytes plus vendor plus invoice number. QBO DocNumber alone is not enough.
- Vendor match. Ambiguity is
human_stop. Do not silent-create a vendor in this teaching path. - Tax. Canadian companies need real TaxCodeRef values. Do not hardcode US NON or TAX.
- Human approve. Person confirms entity, vendor, tax, and whether a retry may reuse requestid.
- Draft Bill. Create a Bill. Attach the PDF later if you use Attachable. Download URLs are temporary. Do not invent a TTL.
- requestid. Unique per realm. Non-batch maximum 50 characters. Batch requestid maximum 36. Reconfirm on publish day.
- Payment wall. BillPayment, Payment, bank, refund, and auto-post stay blocked.
Decision table
| Condition | Automatic | Review | Human-only |
|---|---|---|---|
| Clean supplier invoice, unique keys | Map fields | Approve draft Bill | Confirm vendor and TaxCodeRef |
| Customer Invoice requested for a supplier PDF | Block | None | Retrain the map |
| Vendor name matches more than one record | Stop | Person picks | No silent create |
| Tax code unknown | Stop | Person pastes TaxCodeRef | No US NON/TAX default for Canada |
| Duplicate source or vendor plus invoice number | Stop | None | Override policy |
| Destination timeout | Retry same requestid | Confirm one Bill | Do not post a second |
| Payment object requested | Block | None | Person pays in QBO later |
Human gates
A person confirms Invoice versus Bill. A person confirms vendor match. A person pastes TaxCodeRef when tax is ambiguous. A person decides whether a retry may reuse requestid. A person never authorizes BillPayment from this workflow.
Failure paths
- Wrong entity: customer Invoice from a supplier PDF
- Ambiguous vendor: human_stop
- Missing TaxCodeRef for a Canadian realm
- Duplicate DocNumber plus matching vendor
- Sandbox company mixed with production realm
- requestid reused across realms or longer than the documented max
- Payment, bank, or auto-post attempted
- Claiming a Canada sandbox run that did not happen
Test cases
Map the five labelled-text invoice cases to Bill outcomes. They do not measure OCR.
| Case | Input | Expected | Acceptance |
|---|---|---|---|
| Clean INV-TP-2401 | Unique supplier invoice | One draft Bill after approve | Entity is Bill |
| Duplicate | Same bytes | No Bill | Duplicate key recorded |
| Missing number | Blank invoice number | No Bill | Exception |
| Conflicting total | Arithmetic mismatch | No Bill | Exception |
| Timeout INV-TP-2405 | First response lost | Same requestid, one Bill | No BillPayment |
Sandbox and limits
Prior official Intuit notes, treated as publish-day sensitive:
- Sandbox: maximum 10 companies. Plus can include Canada. Advanced was US-only in the prior note.
- Sandbox about 500 requests per minute.
- Production throttle notes from 8 September 2026: 500 per minute per realm, 10 concurrent in one second, 40 batch per minute, maximum 30 payloads per batch.
Re-open Intuit's sandbox and throttling pages before any live publish. This draft did not execute a sandbox write. Do not claim Canada data residency as a Flowgrammer guarantee.
Cost and measurement
Intuit app fees and QBO subscription prices change. Cite the buyer's current Intuit invoice. Do not invent CAD prices or partner-halo claims.
Asset instructions
Download QuickBooks Invoice Field Map. Open Cover. Read Invoice is not Bill. Fill FieldMap and DuplicateKeys. Leave TaxCodeRef blank until a person pastes a real code. The ZIP is Flowgrammer-QuickBooks-Invoice-Field-Map-v0.1.0.zip.
A status register is still Invoice Tracker.
Next step
If vendor, tax, and realm are named, book a fit call for an AI Automation Systems Invoice Intake-to-Accounting System. If they are not, start with an AI Success Audit. Use Book a fit call when you are ready.
Sources
- Bill entity, Intuit Developer, accessed 9 September 2026
- Invoice entity, Intuit Developer, accessed 9 September 2026
- What is RequestId and its usage, Intuit Developer Help, accessed 9 September 2026
- Basic ID and field definitions, Intuit Developer, accessed 9 September 2026
- API call limits and throttling, Intuit Developer Help, accessed 9 September 2026
- Manage your sandboxes, Intuit Developer, accessed 9 September 2026
- Sandbox FAQs, Intuit Developer, accessed 9 September 2026
- Invoice Processing Automation
- Invoice Processing Test Pack