Overview
An alternative to Xero (BE-41) for hubs whose accountants use QuickBooks Online — North America and South Africa are common markets where QBO dominates. Provides the same auto-sync for invoices and payments.
Context
- Same architecture pattern as BE-41 (Xero) — OAuth 2.0, token storage, cron sync
- Package:
node-quickbooks or quickbooks-js npm package
InvoicesModule and PaymentsModule as data sources
Tasks
Files to Modify / Create
- New:
backend/src/integrations/quickbooks/ (module, entity, controller, service)
backend/src/app.module.ts
Overview
An alternative to Xero (BE-41) for hubs whose accountants use QuickBooks Online — North America and South Africa are common markets where QBO dominates. Provides the same auto-sync for invoices and payments.
Context
node-quickbooksorquickbooks-jsnpm packageInvoicesModuleandPaymentsModuleas data sourcesTasks
QuickBooksConnectionentity:id,accessToken(encrypted),refreshToken(encrypted),realmId(QuickBooks company ID),connectedAt,expiresAtGET /integrations/quickbooks/connect— initiate QuickBooks OAuth 2.0 flow (admin only)GET /integrations/quickbooks/callback— exchange code for tokens; store inQuickBooksConnectionDELETE /integrations/quickbooks— disconnect (admin only)GET /integrations/quickbooks/status— returns connection statusPAIDevent: create matching QuickBooks InvoiceSUCCESSevent: create QuickBooks Payment recordQUICKBOOKS_CLIENT_ID,QUICKBOOKS_CLIENT_SECRET,QUICKBOOKS_ENVIRONMENT(sandbox/production) inConfigServiceFiles to Modify / Create
backend/src/integrations/quickbooks/(module, entity, controller, service)backend/src/app.module.ts