Sapilon becomes publicly available on 1 December 2026: 42 days to go. The core goes open source the same day →

QuickBooks Online integration

In short

Read and create customers, invoices and payments, run reports. Connect it on the Integrations page; your app then calls QuickBooks Online through Sapilon without ever holding an Intuit credential.

Lets your app query the connected QuickBooks Online company, create customers, invoices and payments, and run reports such as profit and loss.

Connecting

On the Integrations page choose Connect on QuickBooks Online, sign in to Intuit and allow access. Under Advanced you can use your own Intuit OAuth app instead of Sapilon’s.

  • The app needs the QuickBooks Company ID: QuickBooks → Settings → Account and settings → Billing & subscription. Keep it in the app’s settings.
  • Sapilon’s own Intuit app is being registered. Until it is, Advanced → Bring your own OAuth app connects today.

What your app can do

Only these requests are available; anything else is refused.

  • GET /*/query
  • GET /*/companyinfo/*
  • POST /*/customer
  • GET /*/customer/*
  • POST /*/invoice
  • GET /*/invoice/*
  • POST /*/invoice/*/send
  • POST /*/payment
  • GET /*/reports/*

How the agent uses it

Use integrations.request('quickbooks', …); paths are relative to https://quickbooks.api.intuit.com/v3/company.

Every path starts with the Company ID (realm id). Add query: { minorversion: '75' }.

  • GET /{realm}/query — Example: { method: 'GET', path: '/9130350/query', query: { query: "select * from Invoice where Balance > '0' maxresults 50", minorversion: '75' } }.
  • GET /{realm}/companyinfo/{realm}.
  • POST /{realm}/customer, GET /{realm}/customer/{id} — body: { DisplayName: 'Acme BV', PrimaryEmailAddr: { Address: 'ap@acme.com' } }.
  • POST /{realm}/invoice — body: { CustomerRef: { value: '58' }, Line: [{ Amount: 250, DetailType: 'SalesItemLineDetail', SalesItemLineDetail: { ItemRef: { value: '1' } } }] }. An update is a POST with Id and SyncToken. GET /{realm}/invoice/{id}, POST /{realm}/invoice/{id}/send.
  • POST /{realm}/payment.
  • GET /{realm}/reports/{name} — ProfitAndLoss, BalanceSheet, AgedReceivables; query: { start_date, end_date }.

Deleting and voiding are not allowed.

More from Intuit: https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/account

Last updated .

Was this page helpful?