Job cost coding of vendor bills in QuickBooks
Read each vendor bill and suggest the job, account and class for every line in QuickBooks Online. A person approves or changes each suggestion. Only approved bills post.
| Bill line | Job | Status |
|---|---|---|
| Rebar, #5 | Sample Job 14 | Suggested |
| Form lumber | Sample Job 14 | Suggested |
| Crane, 1 day | Sample Job 14 | Person checks |
| Fuel surcharge | Unassigned | Needs job |
Class holds the cost code in this sample. Yours may use items instead.
{ "VendorRef": { "value": "56" },"Line": [{ "Amount": 412.50,"DetailType":"AccountBasedExpenseLineDetail","AccountBasedExpenseLineDetail": {"AccountRef": { "value": "78" },"CustomerRef": { "value": "14" },"ClassRef": { "value": "3000" },"BillableStatus": "NotBillable"} }] }
Job and class sit on the line, so one bill can split.
How it runs.
Job reports go wrong when bills are coded late or to the wrong job. QuickBooks has no cost code field on a bill line, so each company has to choose a workaround.
Vendor bill arrives
PDF or email, with PO or job references when the vendor gives them.
Your dataSuggest line coding
Job, account and class proposed from history and references. Weak matches stay blank.
AutomatedAP or PM approves
Staff confirm or change each line. Nothing posts without approval.
A personBill posted to QuickBooks
Approved lines post through Intuit's API after your admin authorizes the connection.
Automated
QuickBooks Online Accounting API / Bill entity / Customer and class lists / Vendor bill PDFs / Email inbox
The rules and limits.
- Job on the line
- CustomerRef sits on each expense line, account-based or item-based, so a single bill can be split across jobs.
- Class on the line
- ClassRef is on the line too. QuickBooks Online Plus or Advanced must have classes set to one per row, not one per transaction.
- No cost code field
- Intuit's schema has no cost code field on a bill line. The code has to live in a Class or Item, and coding has to follow your setup.
- Billable status
- BillableStatus accepts Billable, NotBillable or HasBeenBilled. Your accountant decides which applies to job costs you pass through.
- API cost
- Intuit's partner guide classes creating bills as a Core call, unmetered and uncharged. Reading accounts and reports is CorePlus and metered.
What a person does.
- Approve or change each line before the bill posts.
- Assign a job when the match is weak or missing.
- Decide the split when one line covers more than one job.
- Your accountant sets the cost code and class scheme.
Where we stand: we have not shipped this for QuickBooks. It uses the same pattern as our document extraction and review-queue work.
Common questions.
Does it work with QuickBooks Desktop?+
This page covers QuickBooks Online through Intuit's API. Desktop has a different SDK and connection, which we would scope separately.
Can it use a real cost code in QuickBooks?+
QuickBooks' bill line schema has no cost code field. The code has to live in something QuickBooks has, such as a Class or an Item. We would map to the one your company uses.
Does anything post without a person?+
No. Bills stay in a queue until someone approves them, and lines with weak matches stay blank. Posting uses Intuit's API, which your QuickBooks admin has to authorize.
Sources
- Intuit QuickBooks SDK schema (Finance.xsd)
- Intuit SDK: AccountBasedExpenseLineDetail
- Intuit: turn on class tracking
- Intuit App Partner Program Guide
General information, not legal, tax, or compliance advice. Rules change; confirm against the current source and your own advisers.

Bring us your version of this.
Intro calls are 30 minutes, free, and useful even if we never work together. We'll be honest about whether this is the right fit for your construction team.
