Skip to main content
Back to BlogSalesforce Guides

Salesforce Xero Integration: What to Sync, Which Direction, and What Breaks First

Avinash Vatsya· Salesforce Consultant, SaaSKool · 12+ years on the platform31 July 20268 min read

We published a guide to choosing a Salesforce to Xero integration earlier this year: the tools, the verified pricing, the edition trap. This is the companion piece, based on integration work we have recently delivered for clients: how to design the sync itself, whichever tool you pick, and the mistakes that surface in week two.

Start With the Question Nobody Asks

Before "how do we sync Salesforce and Xero", ask "what will anyone do differently once it is synced?" Every record type you sync should map to an action: sales sees an unpaid invoice and pauses the upsell; the closed-won deal becomes a draft invoice without re-keying; finance stops maintaining a shadow spreadsheet of who bought what. If a field has no action attached, syncing it is cost without benefit, and in our experience the best integrations sync less than the first workshop wished for.

The Five Design Decisions

1. What to Sync

The core set that covers most NZ businesses:

DataDirectionSource of truthWhy
Customers (Accounts and Contacts)Matched both ways, created from one sideDecided up front, usually SalesforceOne customer list, no re-keying
InvoicesSalesforce Opportunity creates draft in XeroXeroDeals become billing without copy-paste
Invoice status and paymentsXero to Salesforce, read-onlyXeroSales sees paid, unpaid, overdue on the record
Credit notesXero to Salesforce, read-onlyXeroThe full money picture, not just the good news

What we usually leave out: historical invoice line detail beyond a cutover date, the general ledger, bills and payroll. They swell the build and rarely change anyone's behaviour in Salesforce.

2. Direction and Source of Truth

The design rule that keeps integrations sane: each data type flows one way, from the system that owns it. Xero owns money truth; Salesforce owns relationship truth. When a deal closes, Salesforce initiates the invoice, then Xero owns it: edits, credits and payments happen there and flow back read-only.

Fully two-way sync of the same fields sounds like completeness and behaves like a hazard: two systems editing one record produces update loops and conflicts that no small business wants to referee. If someone insists on two-way, ask which concrete action requires it; the answer is usually a report, and a read-only feed serves reports fine.

3. Matching and Duplicates

The first real build task is deciding how a Salesforce Account and a Xero Contact are recognised as the same customer: which identifier wins, what happens when two candidates match, and who resolves the leftovers. Do a duplicate cleanup on both sides before the first sync run, not after, because integrations do not create duplicates so much as industrialise the ones you already have. Our data migration guide covers the cleanup discipline; it applies double here.

4. GST and the NZ Specifics

New Zealand GST is 15%, and Xero works it out from the tax rate and account code on each invoice line. So the integration's real job is mapping: every Salesforce product, service line or price book entry must land on the right Xero account code with the right tax treatment, including the edge cases (zero-rated exports, mixed supplies) if you have them. This is a half-day workshop with whoever does your accounts, and the single highest-value review your accountant will ever do for a software project. Get the mapping signed off in writing before go-live, because wrong GST treatment is not a bug, it is a filing problem.

5. Volume and API Limits

Xero publishes hard API limits: as at July 2026, each connected organisation gets 5 concurrent calls, 60 calls a minute, and 1,000 calls a day for apps on the starter tier (5,000 on higher tiers), with a 10,000 calls-per-minute ceiling across all of an app's tenants. Breach one and you get HTTP 429 plus a Retry-After header telling you when to resume. Xero's own guidance also notes the platform is designed for volumes up to about 5,000 sales invoices a month, and that contact lists beyond 10,000 can degrade performance.

Design implications, whatever tool you use: batch where the API allows (invoices can be created in batches, with about 50 records a practical ceiling per request), page reads at 100 records, queue work rather than firing on every keystroke, and honour Retry-After instead of hammering. A naive record-at-a-time sync design works in the demo and hits the wall on your first busy invoicing day.

What Breaks First: Patterns From Real Builds

  • Silent failures. The sync errors nobody sees until month end are worse than downtime. Route every failed sync to a place a human actually looks (a Salesforce record, a channel, an inbox with an owner), and make "zero unresolved sync errors" part of someone's week.
  • Renamed and retired products. Someone renames a product or archives an account code, and invoices quietly start failing or landing on the wrong code. Treat the mapping table as living configuration with an owner, not a launch artefact.
  • The duplicate you did not clean. One customer existing twice on either side splits their invoice history in two and erodes trust in every report. This is why the cleanup comes first.
  • Backfill ambitions. Loading years of history through a rate-limited API is slow and rarely worth it. Pick a cutover date, load a summary balance position, and let history live in Xero where it already is.

Testing and Go-Live

Test in a Salesforce sandbox against a non-production Xero organisation, never against the live books. Prove out one of each: customer created, customer matched (not duplicated), invoice raised from a closed-won deal, payment flowing back, an error handled visibly. Then run a reconciliation on day one, day seven and month end: count records and totals on both sides and make them agree before anyone relies on the numbers. It is unglamorous, and it is the difference between an integration people trust and one they quietly work around.

When a Custom Design Is Not the Answer

All of the above applies whether you configure a connector or build custom, but be honest about which you need. If your requirement is "see Xero invoices in Salesforce and stop re-keying", a connector such as Breadwinner or a small Zapier flow gets you there for far less than a build; the options and pricing guide compares them with verified numbers. Custom earns its keep when the mapping, matching or volume genuinely will not fit a packaged tool. And if Stripe handles your payments, design the payments and accounting flows together; the two decisions constrain each other.

Frequently Asked Questions

What data should sync between Salesforce and Xero? Less than most teams expect. The core set: customers matched between Salesforce Accounts and Xero Contacts, a closed-won Opportunity creating a draft invoice in Xero, and invoice status plus payments flowing back to Salesforce read-only. Sync the minimum your team will act on, not the whole ledger.

Should a Salesforce Xero integration be two-way? Rarely in full. The pattern that stays sane is one direction per data type with a single source of truth: Xero owns invoices and payments, Salesforce owns relationships and pipeline. Fully two-way sync of the same fields invites loops, conflicts and quiet data corruption, and is usually unnecessary.

What are Xero's API rate limits? As at July 2026, per connected Xero organisation: 5 concurrent calls, 60 calls per minute, and a daily cap of 1,000 calls for apps on Xero's starter tier or 5,000 on higher tiers, plus a 10,000 calls-per-minute limit across all of an app's tenants. Exceeding them returns HTTP 429 with a Retry-After header your integration must honour.

How is GST handled in a Salesforce Xero integration? New Zealand GST is 15%, and Xero calculates it from the tax rate and account code on each invoice line. The integration's job is mapping every Salesforce product or line item to the correct Xero account code and tax treatment, including edge cases like zero-rated exports. Have your accountant sign off the mapping before go-live.

How long does a Salesforce Xero integration take? Honest answer: a single Zapier or Make flow is hours of work; configuring a connector like Breadwinner is typically days; a designed custom sync is a proper project measured in weeks. The biggest variable is not code, it is the state of your data and how quickly decisions about mapping and ownership get made.


SaaSKool designs and builds Salesforce integrations for NZ and AU businesses, Xero included, and we will tell you honestly when a NZ$40 automation beats a build. Not sure if your org and data are ready? The health check is free.

Tags

salesforce xero integrationxerointegration designapi limitsgstnz

Ready to Transform Your Salesforce Experience?

Get a free Salesforce health check and discover how SaaSKool can help optimize your org.