Guides
Accounting integrations
Sync customers, invoices, payments and refunds to Sage, Xero, QuickBooks Online or Zoho Books, or export CSV for Sage Pastel.
On this page
Overview#
CentraPoint can keep your accounting system up to date automatically: customers, invoices, completed payments and refunds are pushed to it as they happen, so you don't have to capture them twice. Desktop packages without an online API can use a CSV export instead.
What syncs#
| CentraPoint | In your accounting system | Notes |
|---|---|---|
| Customers | Contacts / customers | Created on demand when an invoice or payment needs them; matched to existing contacts (for example by email) before creating. |
| Invoices | Sales / tax invoices | Line items, VAT and totals, posted to your mapped sales account and VAT rates. Updates are pushed until the invoice is paid or locked. |
| Completed payments | Customer payments / receipts | Deposited into your mapped bank or clearing account and allocated to the invoice when the payment was for one. Only complete payments sync. |
| Refunds | Credit notes / refunds | Processed refunds, linked to the original payment or invoice where the system supports it. |
| Gateway fees | Expense entries | Only when you map a gateway fees expense account; otherwise fees are skipped. |
You can switch off invoice sync or payment/refund sync per connection.
Supported systems#
| System | Connection | Regions |
|---|---|---|
| Sage Business Cloud Accounting (South Africa) | Username and password of a Sage user | South Africa, Botswana, Namibia, Eswatini, Lesotho |
| Xero | Sign in with Xero (OAuth) | South Africa, UK, Australia, New Zealand, US, Canada, Ireland, Singapore |
| QuickBooks Online | Sign in with Intuit (OAuth) | Including South Africa, Kenya, Nigeria |
| Zoho Books | Sign in with Zoho (OAuth) | All Zoho data centres; South African organisations use the .com data centre |
| Sage Business Cloud Accounting | Sign in with Sage (OAuth, API v3.1) | UK, Ireland, US, Canada, France, Spain, Germany. Not South Africa: use the South Africa edition above. |
| Sage Pastel / Sage 50 (file export) | CSV download | Any package with a CSV import |
Online connectors appear in the dashboard only when the platform has them enabled.
Setting up#
- In the dashboard go to Settings → Accounting, choose your system and click Connect.
- Authorise: for Xero, QuickBooks Online, Zoho Books and Sage (international) you sign in with the vendor and approve access. For Sage Business Cloud Accounting (South Africa), enter the email and password of a Sage user. Use a dedicated Sage user for the integration (for example
[email protected]) with access to that company only, so a person changing their password doesn't stop syncing. Credentials are stored encrypted. - Choose the organisation (company or business) CentraPoint should sync to.
- Map accounts:
- Deposit payments into: the bank or clearing account where gateway settlements land.
- Sales account for invoice lines.
- VAT rate for taxable lines and rate for zero-rated / no-VAT lines.
- Gateway fees expense (optional): leave empty to skip fees.
- Set Only sync records from (the sync-from date) and choose whether to sync invoices, payments and refunds.
- Click Import history to queue existing records since the sync-from date (default: the last 30 days). Draft invoices are not included in the import.
When records sync#
- New and changed invoices, completed payments and processed refunds are queued automatically for every connected system.
- The queue is processed every 5 minutes. Sync now on the connection processes it immediately.
- Customers are synced as needed before the invoice or payment that references them.
- Each connection has a sync log showing every job, its status and the last error.
Errors, retries and reconnecting#
- Temporary errors (timeouts, rate limits, outages) are retried with backoff after 1, 5, 15 and 60 minutes, 4 hours and 12 hours (7 attempts in total).
- Permanent errors (for example a record the accounting system refuses) mark the job failed straight away. Fix the cause, then click Retry in the sync log.
- No duplicates on retries: before creating anything CentraPoint looks for the record it created earlier (by reference, document number or email), and uses idempotency keys where the system supports them. It also remembers the ID of everything it created, so later changes update the same record.
- Authorisation expired: when access is revoked or expires (for example after a long period of inactivity, or the Sage user's password changed), the connection shows Reconnect. Queued jobs are kept and resume after you reconnect.
- Disconnecting a system cancels its pending jobs.
Notes per system#
Sage Business Cloud Accounting (South Africa)#
- Cancelled invoices can't be cancelled through Sage's API. The sync job fails with a message; capture a customer return (credit note) in Sage instead.
- Sage has no draft tax invoices, so draft invoices sync as issued tax invoices.
- Sage's customer record has no customer code field, so customers are matched by email, then by name.
- There is no Sage sandbox; test with a Sage trial company.
Sage Business Cloud Accounting (international)#
- Sage posts invoices when they are created, so draft invoices sync as issued.
- Invoices with payments allocated can't be edited; later edits in CentraPoint are not pushed.
Xero#
- Draft invoices stay drafts in Xero; once an invoice is approved in Xero it is not moved back to draft.
- Paid or voided invoices can't be edited; payments sync separately.
- Income and fee accounts need an account code in Xero to be selectable.
QuickBooks Online#
- QuickBooks Online has no draft invoices, so draft invoices sync as normal invoices.
- Foreign-currency invoices need multicurrency enabled in QuickBooks.
- Refunds are recorded as refund receipts without a separate VAT reversal; check with your accountant whether you prefer a credit memo with VAT.
Zoho Books#
- Refunds are booked at the gross amount without reversing VAT; check with your accountant.
- New contacts use your organisation's base currency.
Sage Pastel / Sage 50 CSV export#
For Sage Pastel Partner, Sage 50cloud Pastel or any package with a CSV import, choose a date range under Settings → Accounting → Sage Pastel / Sage 50 / CSV export and click Download export. You get a zip file with customers.csv, invoices.csv (one row per invoice line) and receipts.csv. Map the columns in your package's import utility and test with your tax types and GL accounts before importing into live books.
Referral links API#
If you build software for your own customers, you can show them tracked sign-up links for the accounting systems CentraPoint partners with (for example "Don't have Xero? Sign up").
/api/v1/accounting/referral-linksRequires an API key on any plan that includes the REST API. The Business-plan accounting sync is not required, because signing up for an accounting system doesn't depend on it. Responses carry the usual rate-limit headers.
| Field | Type | Description |
|---|---|---|
connectorrequired | string | Connector type, e.g. xero, quickbooks, zoho_books, sage_one_za. |
namerequired | string | Display name of the accounting system. |
programrequired | string | Name of the partner programme. |
urlrequired | string | Signed CentraPoint redirect (/r/accounting/<connector>?s=…). It records the click for your organisation and forwards to the vendor's sign-up page. It works without a CentraPoint login, so you can show it to anyone. Use it unchanged: altering it breaks the signature. |
Only active partner programmes are returned, so the list can be empty.
curl -X GET "https://app.centrapoint.co.za/api/v1/accounting/referral-links" \
-H "Authorization: Bearer $CENTRAPOINT_API_KEY"{
"data": [
{
"connector": "xero",
"name": "Xero",
"program": "Xero App Partner",
"url": "https://app.centrapoint.co.za/r/accounting/xero?s=cpQ2VudHJhUG9pbnQx.bG9uZy1zaWduYXR1cmUx"
},
{
"connector": "zoho_books",
"name": "Zoho Books",
"program": "Zoho Affiliate",
"url": "https://app.centrapoint.co.za/r/accounting/zoho_books?s=cpQ2VudHJhUG9pbnQx.c2Vjb25kLXNpZ25hdHVyZQ"
}
]
}| Status | error | When |
|---|---|---|
| 401 | unauthorized | Missing, malformed, unknown or revoked API key. |
| 403 | plan_restricted | Plan does not include the REST API. |
| 429 | rate_limited | Rate limit exceeded. Honour Retry-After. |
| 500 | internal_error | Unexpected server error. Retry with backoff. |
For platform operators#
Online connectors use OAuth apps registered once by the platform operator. When registering an app with a vendor, use the redirect URI {APP_URL}/api/accounting/<type>/callback, for example https://app.centrapoint.co.za/api/accounting/xero/callback.