QuickBooks
The QuickBooks connector imports invoice and payment data from QuickBooks Online, giving you revenue numbers to pair with your marketing and experiment data. If your business uses QuickBooks for invoicing, this is how Apex attributes revenue back to the marketing channels that generated the customer.
Authentication
QuickBooks uses OAuth 2.0 through Intuit's platform.
Click Connect on the Integrations page
Find the QuickBooks card and click Connect.
Authorize with Intuit
You'll be redirected to Intuit's authorization page. Sign in to your QuickBooks account and select the company to connect.
Verify the connection
Apex validates the connection by fetching your company info. If successful, the QuickBooks card shows a green "Connected" badge.
Info
QuickBooks automatically detects whether you're using a sandbox or production account based on your app credentials. Sandbox connections are labeled accordingly.
Data Synced
Each daily sync fetches paid invoices, payments, and credit memos in the configured date range:
| Data | Description |
|---|---|
| Paid invoices | Invoices with a zero balance (fully paid). Books date is TxnDate. |
| Payments | Used to date when the invoice was paid (Payment.TxnDate) so conversions APIs see a fresh purchase on Net-15 / Net-30 |
| Customer email | From the invoice BillEmail field |
| QBO customer id | From CustomerRef, so later invoices can match without repeating the email |
| Credit memos | Negative revenue on the matched Client |
Apex does not create QuickBooks customers or invoices. Unpaid and partially paid invoices are ignored. This is cash when Balance = 0, not accrual revenue recognition.
How Apex Uses This Data
- Revenue attribution — Match invoice payments to contacts via customer email. When a QuickBooks customer's billing email matches a contact captured by the tracking snippet, Apex attributes that revenue to the original marketing channel.
- LTV calculation — Aggregate payments per customer to build lifetime value metrics.
- Unit economics — Combine with Google Ads, Meta Ads, or LinkedIn Ads spend to calculate CAC, ROAS, and payback period using real invoice data.
- Funnel completion — Invoice payments serve as the revenue stage in conversion funnels.
Tip
The first paid invoice should use the same billing email as the website form. After that, Apex can match on the QuickBooks customer id. Invoices with neither email nor customer id are skipped.
Configuration
| Parameter | Type | Description |
|---|---|---|
access_tokenrequired | string | OAuth access token (set automatically during the connection flow). |
realmIdrequired | string | QuickBooks company ID (captured automatically from the OAuth callback). |
sandbox | boolean | Whether this is a QuickBooks sandbox account. Detected automatically. |
Environment Variables
| Variable | Description |
|---|---|
QUICKBOOKS_CLIENT_ID | Your Intuit OAuth app's client ID |
QUICKBOOKS_CLIENT_SECRET | Your Intuit OAuth app's client secret |
Troubleshooting
| Issue | Cause | Fix |
|---|---|---|
| "Authorization failed" | OAuth credentials are invalid or expired | Disconnect and reconnect the integration |
| No invoices returned | No fully paid invoices in the date range | Expand the sync date range or verify invoices are marked as paid in QuickBooks |
| Revenue not matching contacts | Billing emails don't match contact emails | Ensure your QuickBooks invoices use the same email addresses captured in your forms |
| Sandbox data appearing | Using sandbox credentials | Switch to production QuickBooks credentials for live data |
Next Steps
- Connect Stripe for subscription and payment data alongside invoicing
- Connect HubSpot to pair invoice revenue with CRM deal stages
- View unit economics to see CAC, LTV, and ROAS with your QuickBooks data