# QuickBooks Desktop — Accounting API: gotchas

> Canonical URL: https://developers.apideck.com/apis/accounting/quickbooks-desktop/gotchas

## GET /accounting/tax-rates

QuickBooks Desktop does not expose a reliable cross-page total record count. Getting `total_count` requires a separate COUNT query — an extra API call that is not currently implemented. `meta.total_count` will not appear.

## GET /accounting/bills

QuickBooks Desktop does not expose a reliable cross-page total record count. Getting `total_count` requires a separate COUNT query — an extra API call that is not currently implemented. `meta.total_count` will not appear.

## POST /accounting/bills

On create, bill expense lines map from `line_items[]` (`ledger_account` → expense account, `total_amount`, `description`). On update, QuickBooks Desktop cannot modify line items — only header fields (supplier, `bill_date`, `due_date`, `bill_number`, terms, memo) change. Recreate the bill to change lines.

## GET /accounting/invoices

QuickBooks Desktop does not expose a reliable cross-page total record count. Getting `total_count` requires a separate COUNT query — an extra API call that is not currently implemented. `meta.total_count` will not appear.

## POST /accounting/invoices

On create, QuickBooks Desktop only honors `customer`, `invoice_date`, `number`, `reference` (memo), and `line_items`. Header fields such as `due_date`, `terms`, `po_number`, `customer_memo`, billing/shipping address, currency, and tracking category are ignored at create time — set them with a follow-up update. Each line item must include an `item` (QBD rejects invoices whose lines have no item). On update, line items cannot be modified — only header fields (customer, dates, ref number, memo) change; resend line edits by voiding and recreating.

## GET /accounting/ledger-accounts

QuickBooks Desktop does not expose a reliable cross-page total record count. Getting `total_count` requires a separate COUNT query — an extra API call that is not currently implemented. `meta.total_count` will not appear.

## GET /accounting/invoice-items

QuickBooks Desktop does not expose a reliable cross-page total record count. Getting `total_count` requires a separate COUNT query — an extra API call that is not currently implemented. `meta.total_count` will not appear.

## GET /accounting/credit-notes

QuickBooks Desktop does not expose a reliable cross-page total record count. Getting `total_count` requires a separate COUNT query — an extra API call that is not currently implemented. `meta.total_count` will not appear.

## POST /accounting/credit-notes

On update, QuickBooks Desktop cannot modify credit-note line items, the AR account, or class — only customer, `date_issued`, `number`, and `note` (memo) change. Recreate the credit note to change lines.

## GET /accounting/customers

QuickBooks Desktop does not expose a reliable cross-page total record count. Getting `total_count` requires a separate COUNT query — an extra API call that is not currently implemented. `meta.total_count` will not appear.

## GET /accounting/suppliers

QuickBooks Desktop does not expose a reliable cross-page total record count. Getting `total_count` requires a separate COUNT query — an extra API call that is not currently implemented. `meta.total_count` will not appear.

## POST /accounting/suppliers

On create, QuickBooks Desktop only honors `company_name`, `first_name`, `last_name`, `email`, the primary `phone`, and the first address (line1/line2/city/state/postal_code/country). Fields such as `title` (salutation), `middle_name`, `fax`, `supplier_category`, `terms`, `tax_number`, `display_id` (account number), and `notes` are ignored at create time — set them with a follow-up update, which supports the full field set.

## GET /accounting/payments

QuickBooks Desktop does not expose a reliable cross-page total record count. Getting `total_count` requires a separate COUNT query — an extra API call that is not currently implemented. `meta.total_count` will not appear.

## POST /accounting/payments

QuickBooks Desktop applies a payment to invoices via `allocations[]` — each `allocations[].id` is the target invoice's transaction id and `allocations[].amount` the amount applied. Without `allocations`, the payment is created unapplied. On update, QBD cannot change the applied invoices, payment method, or deposit/AR account — only customer, `transaction_date`, `reference`, `total_amount`, and `note` are updatable; recreate the payment to change allocations.

## GET /accounting/journal-entries

QuickBooks Desktop does not expose a reliable cross-page total record count. Getting `total_count` requires a separate COUNT query — an extra API call that is not currently implemented. `meta.total_count` will not appear.

## GET /accounting/purchase-orders

QuickBooks Desktop does not expose a reliable cross-page total record count. Getting `total_count` requires a separate COUNT query — an extra API call that is not currently implemented. `meta.total_count` will not appear.

## POST /accounting/purchase-orders

On update, QuickBooks Desktop cannot modify purchase-order line items — only header fields (supplier, `issued_date`, `po_number`, memo, `expected_arrival_date`, class) change. Recreate the PO to change lines. Per-line `customer` is not supported on QBD purchase-order lines.

## GET /accounting/bill-payments

QuickBooks Desktop does not expose a reliable cross-page total record count. Getting `total_count` requires a separate COUNT query — an extra API call that is not currently implemented. `meta.total_count` will not appear.


[API reference](https://developers.apideck.com/apis/accounting/reference.md) · [Coverage matrix](https://developers.apideck.com/apis/accounting/coverage)
