Guides
Export AI spend to QuickBooks Online
Connect QuickBooks Online by signing in with Intuit, choose the accounts once, then close each month in one click as a journal entry or a bill.
The same monthly close as Xero, into QuickBooks Online. One difference matters: QuickBooks has no draft journal entries or draft bills, so the document is created for review in QuickBooks, and the console says so.
#1. Connect
Connect on the QuickBooks card sends you to Intuit to pick the company and approve the com.intuit.quickbooks.accounting scope. Intuit returns the company id (realmId), which every call uses. Access tokens last an hour; refresh tokens rotate, and Immiscible always seals the newest and refreshes one at a time.
#2. Choose the accounts once
- Post as: a journal entry (debit the expense account, credit a liability) or a bill from a vendor you pick.
- A line per: team, or cost centre.
- Accounts and vendors are picked from your live lists (
select * from Account,select * from Vendor). - Currency: the company’s home currency (
CurrencyPrefs.HomeCurrency), converted from USD at the European Central Bank’s rate, month end or the month’s average, exactly as for Xero; or, for a bill, USD as recorded (a USD vendor and multi-currency on).
#3. Close a month
Idempotent, three ways over, as for Xero: one row per month; a lookup for a JournalEntry or Bill whose DocNumber is IMM-YYYY-MM; and Intuit’s requestid on every create, so a request sent twice creates one document. Calls use minorversion=75. Retries and the accounting_export ledger record are as for Xero.
#For the operator: register the Intuit app once
- At developer.intuit.com, My Hub, App dashboard, create an app with the QuickBooks Online Accounting scope.
- Settings, Redirect URIs: add
https://<your PUBLIC_URL host>/connect/quickbooks/callbackunder Production (https only, no IP addresses). Development keys may usehttp://localhost. - Keys and credentials: copy the client id and secret into
INTUIT_CLIENT_IDandINTUIT_CLIENT_SECRET. Production keys appear once Intuit approves the production key questionnaire. To test with development keys against sandbox companies, setINTUIT_ENVIRONMENT=sandbox.
Sources: OAuth 2.0, discovery document, JournalEntry, Bill, requestid, minor versions, redirect URIs.