Why isn't my custom field showing up in the custom_fields endpoint for my QuickBooks Online connection?

Last updated: October 7, 2026

Symptom

An end customer has added a custom field in QuickBooks Online (QBO) and can see it on their invoices. When you call GET /accounting/custom_fields (or GET /accounting/invoices/custom_fields), some of their fields are returned and one or more are missing. Running another sync does not change anything.

Why this happens

Rutter reads custom fields from the QBO Preferences object. QBO only exposes a limited set of "legacy" custom field slots there, and a field only appears in the API if it holds one of those slots, per Intuit's developer documentation.

Intuit's rules for a field to get a slot:

  • It must be a text (string) field.

  • Only the first 3 qualifying sales form fields (and first 3 purchase form fields) get a slot.

  • It must be turned on for all five sales forms (Invoice, Estimate, Sales Receipt, Credit Memo, Refund Receipt). For purchase fields, all purchase forms.

  • Slot assignment is permanent. A field that was deactivated or renamed can still hold its slot.

Newer QBO accounts use a "Custom fields" page that does not map one to one onto these slots. A field can look correct in the QBO UI and still never be assigned a slot. Fields without a slot are not returned by Intuit's standard API, so Rutter cannot see them.

Rutter does not control slot assignment. Intuit's newer Custom Fields API, which defines fields outside the legacy slots, is a restricted API that Rutter's current Intuit access does not include.

How to check

  1. In QBO, open Settings > Custom fields (Intuit's guide to custom fields). Confirm the missing field is a text field and is ticked for every sales form.

  2. Turn on Include inactive and note any inactive fields. They can still hold one of the three slots, because Intuit keeps the mapping even when a field is deactivated.

  3. Count how many text fields are already mapped. If three are already returned by the API, the missing one has no slot to take.

  4. Call GET /accounting/custom_fields again after the steps below and compare.

What to try

  1. Re-save the field list. In QBO, open the custom fields page, make sure the missing field is active and ticked for all sales forms, and save. If there are inactive fields, reactivating them and saving has also triggered slot assignment for some accounts. This is not guaranteed, because Intuit does not document why it works.

  2. Wait and re-check. Slot assignment can lag behind the change. Check again after a few hours before concluding it failed.

  3. Run a sync. Syncing alone does not fix a missing slot, but once a slot exists a refresh will pick it up.

If it still does not appear

The field likely does not qualify for a slot under Intuit's rules. Options:

  • Replace it with a field that does qualify (text, all sales forms, within the first three).

  • Ask the end customer to contact Intuit developer support with their QBO realm ID and ask which field holds each custom field slot.

Contacting Rutter support

Include the connection ID, the name of the missing field, and a screenshot of the QBO custom fields page (with inactive fields shown). That lets us check the slot state quickly.