Back to Dashboard
How the Xero Sync Works
1. What the integration syncs
| CRM | Xero | Direction | |
|---|---|---|---|
| Clients (primary contact person + primary company, TRN) | ↔ | Contacts | Both ways |
| Services catalogue | → | Items | CRM → Xero only |
| Estimates (lines, VAT, validity) | ↔ | Quotes | Both ways |
| Invoices (lines, VAT, one continuous numbering) | ↔ | Invoices (sales) | Both ways |
| Invoice payments | ↔ | Payments (applied to the invoice) | Both ways |
| Credit notes | ↔ | Credit Notes (allocated to the invoice) | Both ways |
| Expenses (approved only) | ↔ | Bills (supplier auto-created) | Both ways |
2. Connecting Xero
- Create an app at developer.xero.com and copy the Client ID and Client Secret.
- Add this Redirect URI to the app:
https://crm.digitsonline.com/integrations/xero/oauth/callback - Paste the credentials in Settings, Save, then click Connect to Xero and approve — the organisation is captured automatically.
- Real-time (optional): in the Xero developer portal open Webhooks, tick
Contacts and Invoices, set the URL to
https://crm.digitsonline.com/api/integrations/xero/webhook, copy the Signing Key into Settings and Save, then click Xero's "Send intent to receive" — the endpoint rejects every delivery until the key is saved.
3. Exactly what maps where
- Clients → Contacts: the contact name is the client's primary company; the primary contact person becomes First/Last name with their email, phone and mobile; the primary company's address and TRN (as the Xero Tax Number) are carried over. Xero contact names are unique — an existing same-name contact is adopted, never duplicated, and the sync never renames a contact your accountant already has.
- Suppliers: an expense's "Purchased From" becomes an ordinary Xero contact used as the bill's supplier. Supplier-only contacts are not pulled back as CRM clients.
- Document lines: your CRM description, quantity and rate go on each line, posted to the organisation's sales account with amounts tax-exclusive and the VAT tax rate applied (auto-detected by rate, or forced via Settings → VAT Tax Type).
- One continuous numbering: CRM numbers push as the Xero invoice/quote/credit-note number, and documents created inside Xero are renumbered to the CRM's next sequential number on pull.
- Payments: a CRM payment is pushed as a Xero Payment applied to the invoice against your first bank account, so balances always match; Xero-recorded payments pull back and the CRM invoice recalculates paid/due and status (partial / paid) automatically.
- Credit notes: pushed as AUTHORISED credit notes and allocated to their original invoice when it is synced.
- Expenses → Bills: only approved expenses post, as ACCPAY bills on your first expense account.
4. Realtime & scheduling
- CRM → Xero: pushed the moment a sync runs — click a Sync button for instant, or the hourly automatic sync (enable in Settings; requires the server scheduler).
- Xero → CRM: with webhooks configured, contact and invoice/bill changes made inside Xero arrive within seconds. Xero webhooks only cover Contacts and Invoices — quotes, payments and credit notes changed inside Xero arrive on the next manual/hourly run.
- Change detection ensures re-running any sync is safe and never duplicates data.
5. When something fails
Every failed record's reason is recorded — click Details on a run in Recent Sync Activity, or open the
Results & Fix Guide page for step-by-step solutions
(missing sales/expense/bank account, duplicate contact names, locked or paid documents, expired connection, unlinked payments).