Skip to content

Integration

QuickBooks Online + Bastle

What syncs from QuickBooks Online, what it makes possible, and how to connect it.

Beta

This connector works and can be connected today, with edge cases still being closed. Check the first month against the source before you rely on it.

What does the QuickBooks Online integration do?

The QuickBooks Online integration reads accounting actuals through the Accounting API v3, treating recurring invoices as subscriptions and paid invoices as charges. It exists to bring booked revenue alongside billing-system revenue, so a forecast can be built on what the books say rather than on what the payment processor reports.

What syncs

Bastle reads the following from QuickBooks Online and normalises it into the same entities every other source produces. Ingestion is read-only: nothing is created, changed or cancelled upstream.

  • Customers from the QuickBooks customer list.
  • Recurring invoice templates → subscriptions, with their cadence.
  • Paid invoices → charges, in integer cents.
  • Credit memos → refunds.
  • Change notifications from the QuickBooks webhook stream, filtered to the connected company.
  • Cadence: webhook-driven for changes; historical import run manually today.

Once connected

What QuickBooks Online data unlocks

Connecting a source is not the point; what you can answer afterwards is. These are the questions this data makes answerable.

Accounting actuals next to billing data

Invoiced revenue and processor revenue rarely match exactly. Holding both in one workspace makes the gap visible instead of leaving it to be discovered at close.

Invoice-billed customers in the same model

Companies that bill enterprise accounts by invoice and self-serve accounts by card usually have two disconnected revenue pictures. Both become sources feeding one set of metrics.

A base for FP&A work

Forecasting reads from the same normalised entities regardless of source, so an accounting-derived book can be modelled with the same scenarios as a card-billed one.

Setup

Connecting QuickBooks Online

The whole flow, start to first chart. No implementation call and no data engineer.

  1. Create an app in the Intuit developer portalIt provides the client id and secret used for the OAuth2 flow.
  2. Authorise Bastle against your companyCompleting the OAuth flow yields a realm id — your company id — and a refresh token, which is what Bastle stores.
  3. Enable webhooks on the Intuit appPoint them at /api/webhooks/quickbooks and copy the verifier token into Bastle. Deliveries for other companies are filtered out.
  4. Plan for refresh-token rotationIntuit rotates the refresh token roughly daily. Bastle surfaces the new token in its run log; the stored credential has to be updated, and doing that by hand is a real operational cost today.

Recurring invoices are the closest thing to a subscription

QuickBooks has no subscription object. What it has is recurring invoice templates, and those carry a cadence, an amount and a customer — enough to model recurring revenue. Bastle maps them onto subscriptions and treats paid invoices as charges. The approximation is honest but it is an approximation: a customer invoiced ad hoc every month without a recurring template will show as charges with no subscription behind them, and no MRR.

Refresh-token rotation is the rough edge

Intuit rotates refresh tokens on roughly a daily cycle, with a hundred-day outer lifetime. The connector cannot persist credentials itself, so when rotation happens it logs the new token and expects an operator to store it. Until that is automated, QuickBooks is the most operationally demanding connector Bastle has, and it is worth knowing before you connect rather than after a sync stops.

What this is not

Bastle does not post journal entries, create invoices, or reconcile accounts. It reads. QuickBooks remains the system of record for the books; Bastle is a second reader of them.

What "beta" means here

The connector is written and the inbound webhook route verifies signatures and writes normalised rows, so a connected account keeps up with changes as they happen. What is not self-serve yet is the historical backfill: the code that walks your provider's API from the beginning exists in the connector, but the scheduled runner that triggers it is still a stub, so first-time imports are run by hand with us. Expect to email someone once during setup, and expect that to stop being true.

Bastle is free while in beta, connectors included. There is no tier that unlocks a provider.

Related

Other sources

Companies billing through QuickBooks Online usually have at least one of these in the stack too.

QuickBooks Online and Bastle: common questions

Can QuickBooks replace a billing system as my data source?

For invoice-billed businesses it can, with a caveat: recurring revenue is derived from recurring invoice templates, so customers invoiced ad hoc will produce charges with no subscription and no MRR. Businesses billing by card are better served connecting the processor and using QuickBooks alongside it.

How often do I need to touch QuickBooks credentials?

More often than we would like. Intuit rotates the refresh token roughly every day and Bastle cannot store credentials from inside the connector, so the rotated token has to be updated manually. Automating this is the top priority for this connector.

Does Bastle write anything into QuickBooks?

No. The connector reads customers, invoices, recurring templates and credit memos. It never creates invoices, posts journal entries or modifies the books in any way.

Can I connect a QuickBooks sandbox company?

Yes. Setting the source environment to sandbox targets Intuit's sandbox API host, which is the sensible way to check the invoice mapping against your chart of accounts before connecting production.

Connect QuickBooks Online and see your own history.

Bastle backfills what QuickBooks Online will serve, then keeps current over webhooks — usually a couple of minutes before the first real chart. Free while in beta, no card required.