Accounting Integration
Connect VetLoop to your accounting package and let invoices, payments, and credit notes flow automatically — no more double-entry.
Overview
VetLoop supports three accounting integrations. Each syncs issued invoices, recorded payments, and credit notes from VetLoop into your accounting package as the source of truth.
| Package | Connection method | Plan required |
|---|---|---|
| Xero | OAuth 2.0 — no passwords shared | Professional+ |
| QuickBooks Online | OAuth 2.0 — no passwords shared | Professional+ |
| Sage Pastel Partner / Sage 50 | Local export file + scheduled import | Professional+ |
Only one accounting integration can be active at a time. To switch integrations, disconnect the current one first.
Connecting Xero
- Go to Settings → Integrations → AccountingTap Connect Xero. VetLoop opens a browser window to Xero's authorisation page.
- Log in to Xero and authoriseSelect the Xero organisation you want to connect and tap Allow access. You'll be redirected back to VetLoop.
- Map your accountsVetLoop will show a mapping screen — match your VetLoop income categories to Xero account codes. See Account mapping below.
- Choose sync modeAuto-sync pushes each invoice/payment to Xero as soon as it is finalised. Manual sync lets you review and push batches.
- Test the connectionTap Test & Sync. VetLoop sends a test invoice to Xero's draft state. Verify it appears in Xero, then delete the test entry.
Connecting QuickBooks Online
The process is identical to Xero. Go to Settings → Integrations → Accounting → Connect QuickBooks. You will be redirected to Intuit's authorisation page. After granting access, complete account mapping (QuickBooks uses account names rather than codes).
QuickBooks Online does not support multi-currency in the same way as Xero. VetLoop will sync all amounts in ZAR by default. If your QBO company is set to a different base currency, contact support before connecting.
Connecting Sage Pastel
Pastel uses a file-based integration because it runs as a local Windows application without a cloud API:
- Go to Settings → Integrations → Accounting → Sage PastelDownload the VetLoop Pastel Import Template — an XML schema file.
- Install the import definition in PastelIn Sage Pastel, go to File → Import → Setup and import the schema file provided by VetLoop.
- Schedule exportsSet a daily export schedule in VetLoop. VetLoop saves a dated export file to a shared network folder of your choice.
- Run the Pastel importIn Pastel run the scheduled import or trigger it manually from File → Import → Run. Pastel picks up the latest export file.
What Syncs Automatically
| VetLoop event | Accounting entry created |
|---|---|
| Invoice sent to client | Accounts Receivable invoice |
| Payment recorded | Payment allocated to invoice |
| Credit note issued | Credit note / adjustment |
| Sales receipt finalised | Sales receipt (immediate payment) |
| Invoice voided | Void / reversal entry |
Stock purchases and payroll journal entries are not automatically synced — these are best entered directly in your accounting package from supplier invoices and payslip summaries.
Account Mapping
Account mapping tells VetLoop which income account in your accounting package each VetLoop category should post to. For example:
- Consultations → 4000 Veterinary Fees
- Medications → 4100 Dispensary Sales
- Food & products → 4200 Retail Sales
If a category is not mapped, the sync will use the Default Income Account you specify during setup. Unmapped categories appear in yellow on the Mapping screen as a reminder.
Disconnecting an Integration
Go to Settings → Integrations → Accounting → [your package] → Disconnect. This revokes VetLoop's OAuth token. Previously synced transactions remain in your accounting package — disconnecting does not delete them. You can reconnect the same package or a different one at any time.
Troubleshooting Sync Errors
- "Account not found" — a VetLoop category has no mapping. Open account mapping and fill in the missing account.
- "Duplicate document number" — an invoice was manually entered in your accounting package before VetLoop synced it. Delete the manual entry or void and re-issue the VetLoop invoice with a new number.
- OAuth token expired — Xero and QBO tokens expire after 60 days if VetLoop is not used. Reconnect via Settings → Integrations → Reconnect.
- Sync has not run — check the VetLoop server (or master device) is online. Auto-sync only runs when the server is reachable.
Full sync error logs are available under Settings → Integrations → Sync Log. Each entry shows the document number, error code, and timestamp.