Connecting QuickBooks Online

Last updated: September 5, 2026

Stackpack supports a read-only integration with QuickBooks Online (QBO) that pulls vendor spend transactions into Stackpack. This builds your vendor list automatically and keeps each vendor's spend history current. Stackpack never writes to your QuickBooks company.

For what Stackpack keeps from your accounting system, and what it does not, see What Stackpack stores from your accounting system.

Authentication

Stackpack connects through Intuit's OAuth 2.0 flow and requests only the QuickBooks Online Accounting scope. You sign in to Intuit, choose the company to share, and authorize Stackpack. No QuickBooks credentials are stored by Stackpack; Intuit issues Stackpack a token scoped to that company.

Requirements

  • A QuickBooks Online user with Admin access to the company (Primary Admin or Company Admin). Only admins can authorize third-party apps in QuickBooks.
  • Each QuickBooks company is a separate profile in Stackpack. Connect once per company.

Caveats

  • Intuit tokens lapse after 100 days without use. Stackpack syncs daily, which keeps the token alive. But if syncing is paused for that long, or the authorizing user is removed from the company, the profile must be reconnected.
  • Stackpack currently operates in USD. Amounts are read as recorded on each QuickBooks transaction and are not converted, so companies with non-USD transactions will see those amounts summed as-is. Multi-currency support is on our roadmap.
  • Stackpack reads the QuickBooks "Location" tracking field, which QuickBooks may label Location, Department, Division, Store, Territory, and so on depending on your company settings. Stackpack stores it as Department.
  • Stackpack can populate Departments from QuickBooks in two ways, each enabled by a switch on your account: import QuickBooks Locations directly as Departments, or use QuickBooks Classes to populate Departments. Either or both can be turned on; ask your Stackpack contact to enable them.

Connecting

During onboarding

  1. On the "Sync with QuickBooks" step, click Connect to QuickBooks.
  2. Sign in to Intuit, select the company, and click Connect.
  3. You are returned to Stackpack and the first sync starts immediately.

From Company Settings

  1. Go to Company Settings → Integrations → QuickBooks Online and click Connect (or Add profile if a profile already exists).
  2. Enter a name for the profile. This is how the connection appears in Stackpack.
  3. Click Connect, sign in to Intuit, select the company, and authorize.

Reconnecting re-runs the Intuit authorization for an existing profile and restores syncing without changing any synced data. Use it when Stackpack reports the profile needs attention.

Disconnecting revokes Stackpack's token with Intuit and removes the profile. You can disconnect from Stackpack (Disconnect on the profile) or from QuickBooks (Apps → My Apps → Stackpack → Disconnect). Either path stops syncing.

Sync schedule and window

  • The first sync runs when you connect. After that, Stackpack syncs automatically once a day.
  • Stackpack retains spend for the current calendar year plus the two prior calendar years. (During January through March, one additional prior year is retained so year-over-year comparisons remain available.)
  • Each sync re-reads the months since the previous sync, and the prior quarter is fully refreshed at the start of each new quarter. Late payments, edits, voids, and credits are therefore picked up and applied to the month of the original transaction date.

What Stackpack reads from QuickBooks

Reference lists (active records only): Vendors, Chart of Accounts, Classes, Locations, and Products & Services (Items). Items are used only to resolve the account behind item-based expense lines.

Transactions, filtered by transaction date. Stackpack records one entry per transaction line, so a bill split across three accounts produces three entries.

QuickBooks transaction Included when Recorded as Sign
Bill The bill has been at least partially paid. Fully unpaid bills are skipped until a payment posts. Bill Positive
Expense, Check, Credit Card Expense (QuickBooks "Purchase" transactions paid by Cash, Check, or Credit Card) The payee is a Vendor. Purchases payable to a Customer or Employee are skipped. Expense Positive; a Credit Card Credit (refund) is negative
Vendor Credit Always Vendor Credit Negative (offsets prior spend)
Journal Entry The line's Name is a Vendor Journal Entry (Debit or Credit) Positive; tracked separately as accrual spend

Bill Payments are intentionally not read. Spend is attributed on the bill's date, and reading the payment as well would double count it. Invoices, Deposits, Transfers, Purchase Orders, and Estimates are not vendor spend and are not read.

Line-level exclusions. A line is skipped when any of the following is true:

  • It has no transaction date.
  • It has no vendor.
  • Its amount is zero.
  • Its account is not classified as Expense or Liability in QuickBooks (Asset, Equity, and Revenue accounts are excluded). This applies to Bills, Expenses, and Vendor Credits; Journal Entries are taken as posted.
  • Its account is on the profile's excluded GL account list, if your Stackpack administrator has configured one.

Fields captured per transaction line

Field QuickBooks source
Transaction ID QuickBooks transaction ID and line ID
Date Transaction date (TxnDate), not the payment date
Amount Line amount as recorded on the transaction (no currency conversion; see the USD caveat above). Negative for Vendor Credits and Credit Card Credits.
Currency Transaction currency
Type Bill, Expense, Vendor Credit, or Journal Entry (Debit or Credit)
Accrual Set for Journal Entry lines only
Memo Memo (private note), Ref no., and line Description, joined with |
Account category The account's Account Type (for example Expense, Cost of Goods Sold, Credit Card, Accounts Payable)
Account ID and name The account on the line. For item-based lines, the item's Expense account (or its Inventory Asset account for inventory items). Expenses with no line account fall back to the payment account on the transaction.
Class ID and name Class on the line
Department ID and name QuickBooks Location on the transaction (on the line for Journal Entries)
Location ID and name Not populated for QuickBooks
Vendor ID and name Vendor and its Display Name

How transactions become vendor spend

Stackpack groups the captured lines by vendor, matching on the QuickBooks Vendor ID. If a vendor is referenced by name only, Stackpack matches by Display Name. Within each vendor, lines are grouped by the calendar month of their transaction date. Each vendor then carries a monthly spend time series, one bucket per month, with:

Monthly spend field Derived from
Year and month The transaction date's calendar month
Amount Sum of Bill, Expense, and Vendor Credit line amounts for that month. Credits reduce the total.
Transaction count Number of Bill, Expense, and Vendor Credit lines in that month
Accrual amount Sum of Journal Entry debits to the vendor, offset by Journal Entry credits

Alongside the time series, each vendor records the accounts its transactions posted to (each with a line count), the earliest month with spend in the retained window, and the most recent month with spend. When the Location or Class department switch is enabled, the vendor also records the Locations or Classes it posted to, and Stackpack keeps a per-department monthly spend series keyed on the Location name, falling back to the Class name when no Location is set.

Spend views in Stackpack use Amount by default. If accrual-based spend is enabled for your company, vendors that have Journal Entry activity show Amount + Accrual amount, and vendors without any Journal Entry activity continue to show Amount.

Monthly buckets older than the retention window are dropped on each sync. Buckets inside the window are replaced by the latest sync, so corrections in QuickBooks flow through rather than accumulate.

Frequently asked questions

Q: What does the QuickBooks Online integration involve, and what information does Stackpack pull from QuickBooks Online?

A QuickBooks admin authorizes Stackpack through Intuit's sign-in. From then on Stackpack reads, once a day, the vendor-spend transactions in your company: paid Bills, Expenses and Checks paid to vendors, Credit Card charges and credits, Vendor Credits, and Journal Entry lines that name a vendor. It also reads your Vendors, Chart of Accounts, Classes, Locations, and Products & Services to label those transactions. Stackpack keeps the current year plus two prior years and never writes to QuickBooks.

Q: Which specific data points or fields are required for the integration?

Each transaction line needs a transaction date, a Vendor, a non-zero amount, and a posting account classified as Expense or Liability. Lines missing any of these are skipped. Everything else (Class, Location, Memo, Ref no., Description, Item) is optional and enriches the vendor record when present. For Journal Entries, the line's Name field must be set to a Vendor for Stackpack to attribute it.

Q: Are there any data or configuration prerequisites we should validate before starting the trial?

  • The person connecting has Admin access (Primary Admin or Company Admin) to the QuickBooks company.
  • Vendor spend is recorded against Vendor records, not Customers or Employees, and vendor names are consistent (one Vendor record per supplier avoids split spend).
  • Bills you want counted have at least one payment posted; fully unpaid bills are held back.
  • Expense-type accounts are classified as Expense or Liability in the Chart of Accounts. Spend posted to Asset, Equity, or Revenue accounts is not read.
  • If you want Departments in Stackpack, Location tracking or Class tracking is turned on in QuickBooks and used on transactions, and you have asked Stackpack to enable the matching switch.
  • Your books are in USD. Non-USD transactions are summed without conversion.

Q: Why is a vendor's spend lower in Stackpack than in QuickBooks?

The usual causes are unpaid bills (excluded until paid), Vendor Credits and Credit Card Credits (netted against spend), transactions posted to Asset, Equity, or Revenue accounts, and Expenses recorded against a Customer or Employee rather than a Vendor. Spend is also dated by the bill or expense date, not the payment date, so a payment made this month for last month's bill appears in last month.

Q: Why does spend appear in a different month than the payment?

Stackpack attributes spend to the transaction date of the Bill, Expense, or Credit, which is when the cost was incurred. Bill Payments are not read separately, which avoids double counting.

Q: Do I have to reconnect periodically?

Not while syncing runs daily. Intuit tokens lapse after 100 days without use, so a profile that has been paused for that long, or whose authorizing user left the company, will need a Reconnect from Company Settings.

Q: We have several QuickBooks companies. How do we connect them all?

Connect each company as its own profile from Company Settings → Integrations → QuickBooks Online → Add profile. Vendors with the same name across companies are kept distinct by their QuickBooks IDs.

Q: Can we exclude certain accounts, such as payroll or taxes?

Yes. Your Stackpack administrator can set an excluded GL account list per profile, by account name or account ID. Lines posted to those accounts are skipped on the next sync.

Q: We use Classes for departments, not Locations. Will that work?

Yes. Stackpack has a switch to populate Departments from QuickBooks Classes, and a separate switch to import Locations directly. Ask your Stackpack contact to enable the one that matches your setup.