Cleo Pay integrates with QuickBooks Online (QBO) to keep your accounting records in sync. When connected, Cleo Pay can import your QBO vendors as connections, sync bills as payables, and record payments back to QBO automatically.
What syncs between Cleo Pay and QBO:
- Vendors — QBO vendors are imported as Cleo Pay connections
- Bills — QBO bills appear as payables in Cleo Pay
- Bank accounts — your Cleo Pay funding sources can be mapped to QBO bank accounts
- Payments — payments initiated in Cleo Pay are recorded in QBO as bill payments
Connect QuickBooks Online
Initiate the OAuth connection
Call the connect endpoint to get a QBO OAuth authorization URL:curl -X POST https://api.cleo-pay.com/api/businesses/biz_abc123/integrations/accounting/connect \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"provider": "quickbooks"
}'
The response includes an authUrl. Redirect your user to this URL to start the QBO OAuth flow. Authorize in QuickBooks Online
The user logs into their QuickBooks account and grants Cleo Pay permission to access their data. QuickBooks redirects them back to Cleo Pay after authorization.
Handle the callback
Cleo Pay automatically handles the OAuth callback at GET /api/businesses/{businessId}/integrations/accounting/callback. After a successful callback, the integration is active.Confirm the connection is live by checking the integration status:curl https://api.cleo-pay.com/api/businesses/biz_abc123/integrations/accounting/status \
-H "Authorization: Bearer YOUR_TOKEN"
A status of connected confirms the integration is active. Run the initial sync
Trigger a full sync to import all your QBO vendors, bills, and bank accounts into Cleo Pay:curl -X POST https://api.cleo-pay.com/api/businesses/biz_abc123/integrations/accounting/acctint_abc123/sync \
-H "Authorization: Bearer YOUR_TOKEN"
The initial sync may take a few minutes depending on the size of your QBO account.
Map connections to QBO vendors
After syncing, map your Cleo Pay connections to their corresponding QBO vendors. This ensures payments are recorded against the correct vendor in QBO.
Get the vendor reconciliation report to see which Cleo Pay connections are already mapped and which still need mapping:
curl https://api.cleo-pay.com/api/businesses/biz_abc123/integrations/accounting/acctint_abc123/vendors/reconciliation \
-H "Authorization: Bearer YOUR_TOKEN"
Create a vendor mapping:
curl -X POST https://api.cleo-pay.com/api/businesses/biz_abc123/integrations/accounting/acctint_abc123/vendors/mappings \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"connectionId": "conn_vendor123",
"qboVendorId": "qbo_vendor_456"
}'
Remove a vendor mapping:
curl -X DELETE https://api.cleo-pay.com/api/businesses/biz_abc123/integrations/accounting/acctint_abc123/vendors/mappings \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"connectionIds": ["conn_vendor123"]
}'
Map bank accounts to QBO accounts
Map each Cleo Pay funding source to its corresponding QBO bank account so payments are posted to the correct ledger account.
Get the bank account reconciliation report:
curl https://api.cleo-pay.com/api/businesses/biz_abc123/integrations/accounting/acctint_abc123/bank-accounts/reconciliation \
-H "Authorization: Bearer YOUR_TOKEN"
Create a bank account mapping:
curl -X POST https://api.cleo-pay.com/api/businesses/biz_abc123/integrations/accounting/acctint_abc123/bank-accounts/mappings \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"fundingSourceId": "fs_abc123",
"qboBankAccountId": "qbo_bank_789"
}'
Trigger a manual sync
Cleo Pay syncs automatically on a schedule, but you can trigger an immediate sync at any time. Sync all entity types at once:
curl -X POST https://api.cleo-pay.com/api/businesses/biz_abc123/integrations/accounting/acctint_abc123/sync-all-entities \
-H "Authorization: Bearer YOUR_TOKEN"
Or sync a specific entity type (for example, only vendors or only bills):
curl -X POST https://api.cleo-pay.com/api/businesses/biz_abc123/integrations/accounting/acctint_abc123/sync/vendors \
-H "Authorization: Bearer YOUR_TOKEN"
Check sync status
Monitor the progress of a running sync or review sync history:
curl https://api.cleo-pay.com/api/businesses/biz_abc123/integrations/accounting/acctint_abc123/sync/status \
-H "Authorization: Bearer YOUR_TOKEN"
The response includes the current sync state, the last completed sync timestamp, and any errors from recent sync attempts.
Disconnect QuickBooks Online
To remove the QBO integration from your business:
curl -X DELETE https://api.cleo-pay.com/api/businesses/biz_abc123/integrations/accounting/disconnect \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"accountingIntegrationId": "acctint_abc123"
}'
Disconnecting QBO stops all future syncs. Existing data in Cleo Pay is not deleted, but no new data will be imported or exported until you reconnect.