Flowgrammer

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

  1. Classify. Supplier document. Target entity is Bill, not Invoice.
  2. Extract. Use labelled text in the test pack, or a later extractor. Not an OCR accuracy claim.
  3. Duplicate keys. SHA-256 of source bytes plus vendor plus invoice number. QBO DocNumber alone is not enough.
  4. Vendor match. Ambiguity is human_stop. Do not silent-create a vendor in this teaching path.
  5. Tax. Canadian companies need real TaxCodeRef values. Do not hardcode US NON or TAX.
  6. Human approve. Person confirms entity, vendor, tax, and whether a retry may reuse requestid.
  7. Draft Bill. Create a Bill. Attach the PDF later if you use Attachable. Download URLs are temporary. Do not invent a TTL.
  8. requestid. Unique per realm. Non-batch maximum 50 characters. Batch requestid maximum 36. Reconfirm on publish day.
  9. 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