Skip to main content
Cleo Pay integrates with QuickBooks Online (QBO) to keep your accounting records in sync with your payment activity. Once connected, you can sync vendors, bank accounts, and invoices between the two systems.

Supported entity types for sync

Entity typeDescription
vendorsSync Cleo Pay connections as QBO vendors.
bankAccountsMap Cleo Pay bank accounts to QBO bank accounts.
invoicesSync Cleo Pay payables as QBO bills or invoices.

List accounting integrations

GET /api/businesses/{businessId}/integrations/accounting Returns all accounting integrations connected to the business.

Path parameters

businessId
string
required
The ID of the business.
curl --request GET \
  --url https://api.cleo-pay.com/api/businesses/biz_abc123/integrations/accounting \
  --header "Authorization: Bearer <token>"

Connect to QuickBooks Online

POST /api/businesses/{businessId}/integrations/accounting/connect Initiates the OAuth 2.0 flow to connect a QuickBooks Online account. Returns an authorization URL that you redirect the user to.

Path parameters

businessId
string
required
The ID of the business.

Request body

redirectUri
string
required
The URI Intuit should redirect to after the user authorizes access.
curl --request POST \
  --url https://api.cleo-pay.com/api/businesses/biz_abc123/integrations/accounting/connect \
  --header "Authorization: Bearer <token>" \
  --header "Content-Type: application/json" \
  --data '{ "redirectUri": "https://app.yourcompany.com/integrations/callback" }'
The response contains an authorizationUrl. Redirect the user to this URL to complete the OAuth flow.

Get integration status

GET /api/businesses/{businessId}/integrations/accounting/status Returns the current connection status of the accounting integration.

Path parameters

businessId
string
required
The ID of the business.
curl --request GET \
  --url https://api.cleo-pay.com/api/businesses/biz_abc123/integrations/accounting/status \
  --header "Authorization: Bearer <token>"

Disconnect QuickBooks Online

DELETE /api/businesses/{businessId}/integrations/accounting/disconnect Disconnects the QuickBooks Online integration. Existing synced data is not deleted from QBO, but future sync operations stop.

Path parameters

businessId
string
required
The ID of the business.
curl --request DELETE \
  --url https://api.cleo-pay.com/api/businesses/biz_abc123/integrations/accounting/disconnect \
  --header "Authorization: Bearer <token>"

Get sync status

GET /api/businesses/{businessId}/integrations/accounting/{accountingIntegrationId}/sync/status Returns the status of the most recent sync operation.

Path parameters

businessId
string
required
The ID of the business.
accountingIntegrationId
string
required
The ID of the accounting integration.
curl --request GET \
  --url https://api.cleo-pay.com/api/businesses/biz_abc123/integrations/accounting/acct_int_001/sync/status \
  --header "Authorization: Bearer <token>"

Trigger a full sync

POST /api/businesses/{businessId}/integrations/accounting/{accountingIntegrationId}/sync Triggers a full sync of all supported entity types between Cleo Pay and QuickBooks Online.

Path parameters

businessId
string
required
The ID of the business.
accountingIntegrationId
string
required
The ID of the accounting integration.
curl --request POST \
  --url https://api.cleo-pay.com/api/businesses/biz_abc123/integrations/accounting/acct_int_001/sync \
  --header "Authorization: Bearer <token>"

Sync a specific entity type

POST /api/businesses/{businessId}/integrations/accounting/{accountingIntegrationId}/sync/{entityType} Triggers a sync for a single entity type.

Path parameters

businessId
string
required
The ID of the business.
accountingIntegrationId
string
required
The ID of the accounting integration.
entityType
string
required
The entity type to sync. Accepted values: vendors, bankAccounts, invoices.
curl --request POST \
  --url https://api.cleo-pay.com/api/businesses/biz_abc123/integrations/accounting/acct_int_001/sync/invoices \
  --header "Authorization: Bearer <token>"

Get mapped invoice fields

GET /api/businesses/{businessId}/integrations/accounting/{accountingIntegrationId}/invoice-fields Returns the field mappings configured between Cleo Pay payable fields and QuickBooks Online bill fields.

Path parameters

businessId
string
required
The ID of the business.
accountingIntegrationId
string
required
The ID of the accounting integration.
curl --request GET \
  --url https://api.cleo-pay.com/api/businesses/biz_abc123/integrations/accounting/acct_int_001/invoice-fields \
  --header "Authorization: Bearer <token>"

Map a connection to a vendor

POST /api/businesses/{businessId}/integrations/accounting/{accountingIntegrationId}/vendors/mappings Creates a mapping between a Cleo Pay connection and a QuickBooks Online vendor.

Path parameters

businessId
string
required
The ID of the business.
accountingIntegrationId
string
required
The ID of the accounting integration.

Request body

connectionId
string
required
The Cleo Pay connection ID to map.
qboVendorId
string
required
The QuickBooks Online vendor ID to map to.
curl --request POST \
  --url https://api.cleo-pay.com/api/businesses/biz_abc123/integrations/accounting/acct_int_001/vendors/mappings \
  --header "Authorization: Bearer <token>" \
  --header "Content-Type: application/json" \
  --data '{
    "connectionId": "conn_def456",
    "qboVendorId": "qbo-vendor-789"
  }'

Map a bank account

POST /api/businesses/{businessId}/integrations/accounting/{accountingIntegrationId}/bank-accounts/mappings Creates a mapping between a Cleo Pay bank account (funding source) and a QuickBooks Online bank account.

Path parameters

businessId
string
required
The ID of the business.
accountingIntegrationId
string
required
The ID of the accounting integration.

Request body

fundingSourceId
string
required
The Cleo Pay funding source (bank account) ID.
qboBankAccountId
string
required
The QuickBooks Online bank account ID.
curl --request POST \
  --url https://api.cleo-pay.com/api/businesses/biz_abc123/integrations/accounting/acct_int_001/bank-accounts/mappings \
  --header "Authorization: Bearer <token>" \
  --header "Content-Type: application/json" \
  --data '{
    "fundingSourceId": "fs_xyz789",
    "qboBankAccountId": "qbo-bank-101"
  }'