Tax categories on bills, expenses and invoices
Read the categories, ask for a suggestion, and read each record’s category. A suggestion is a draft: a person confirms it, in the console or the app.
Tax categories
The rules, in order
01
The categories
GET /v1/tax-categories (reports:read) lists the edition us-sch-c-2026: the lines of IRS Schedule C. Each has a code, a direction (expense for bills and expenses, income for issued invoices), a label and what belongs in it. A record stores the code beside its free-text category and the edition it belongs to.
| Code | Direction | Form line |
|---|---|---|
advertising | expense | Line 8 |
car_truck | expense | Line 9 |
commissions_fees | expense | Line 10 |
contract_labor | expense | Line 11 |
depletion | expense | Line 12 |
depreciation | expense | Line 13 |
employee_benefits | expense | Line 14 |
insurance | expense | Line 15 |
interest_mortgage | expense | Line 16a |
interest_other | expense | Line 16b |
legal_professional | expense | Line 17 |
office_expense | expense | Line 18 |
pension_profit_sharing | expense | Line 19 |
rent_vehicles_equipment | expense | Line 20a |
rent_property | expense | Line 20b |
repairs_maintenance | expense | Line 21 |
supplies | expense | Line 22 |
taxes_licenses | expense | Line 23 |
travel | expense | Line 24a |
meals | expense | Line 24b |
utilities | expense | Line 25 |
wages | expense | Line 26 |
home_office | expense | Line 30 |
other_expense | expense | Line 27a |
cost_of_goods | expense | Part III |
capital_asset | expense | — |
personal_not_deductible | expense | — |
income_goods | income | Line 1 |
income_services | income | Line 1 |
income_other | income | Line 6 |
income_interest | income | Line 6 |
not_income | income | — |
02
Asking for a suggestion
POST /v1/tax-categories/{bills|expenses|invoices}/suggest takes up to 25 recordIds and needs that kind’s write scope (bills:write, expenses:write or invoices:write). The answer is one result per record. The free answers come first and cost nothing: a default set on a vendor or customer, the person’s own earlier choices for the same payee, and for an invoice the rate basis of its lines. The model is asked only when none of those decides, and that uses AI credits; when the workspace has none, only those records are skipped.
A suggestion is a draft stored beside the record. It sets nothing, and its reason is returned inside the untrusted-data envelope.
03
Confirming
There is no REST route that sets a category: a person confirms in the console or the app. An assistant calls confirm_tax_category (POST /v1/actions/confirmTaxCategory, target: the suggestion), which is an action request. A person approves it, or it runs at once only under a rule the owner set for that kind.
04
Reading a record’s category
A bill, expense or invoice answer carries taxCategory, taxCategoryVersion and taxCategorySource (person or suggestion), and, while one waits, the read-only taxSuggestion.
05
The report
GET /v1/reports/tax-categories?from=&to= (reports:read) totals each category per currency over a period: bills (not draft, not void) and expenses by expense category, and issued invoices as gross receipts without the sales tax collected, with the uncategorised counted separately. The basis is what was invoiced.
A suggestion, not tax advice. Check your categories with your accountant.
Work records
Read the record type first, send each answer in the form its question takes, check before you move a record, and upload a document in three calls. Activating, issuing and delivering stay with a person.
Try it in your sandbox
A bmk_test_ key reaches only your sandbox workspace.