Xero integrations work when every payout from Shopify, WooCommerce or PayPal matches the deposit in your Xero bank feed, and every invoice your CRM triggers lands on the right Xero contact exactly once. Getting data into Xero is easy. Getting it in so each bank reconciliation is a quick match instead of a manual hunt is the actual job.
The common failure: the store pushes every order into Xero as its own invoice, the bank feed shows one net payout two days later, and the bookkeeper matches hundreds of lines to one deposit by hand. This page covers posting models, store and payment connections, fees and refunds, CRM sync, reporting, and when a Xero App Store app is enough.
Benian builds the integration and the checks around it. Your accountant decides the posting policy and the chart of accounts, and nothing here is accounting or tax advice.
Why store sales and Xero rarely agree
Payouts arrive net of fees
Shopify Payments, PayPal and most card processors deposit the balance after fees and refunds. If Xero holds gross sales and the bank feed shows the net payout, the two never match without a fee line for each payout.
One deposit covers several days
A payout can bundle orders from three days plus a refund from last week. Matching by date fails, so the reconcile screen shows a deposit with no obvious partner.
Every order becomes a contact
Per-order posting with a new contact per buyer fills Xero with thousands of one-time customers. Searching contacts gets slow and duplicate names multiply.
Two pipes post the same money
A connector app creates sales entries while someone also codes the bank feed line as revenue. Sales double, and the fix happens in a rush at month end.
CRM and Xero disagree on the customer
Sales edits the billing address in Salesforce or Pipedrive, finance edits it in Xero, and the next invoice goes out with whichever version synced last.
Posting models: per order or daily summary
Every store to Xero integration picks one of two models, and the choice matters more than which tool does the posting.
Per order posting creates an invoice for each order, marked paid into a clearing account. You get line items, tax and the customer in Xero. The cost is volume: at a few hundred orders a day, Xero becomes an order database and API limits start to matter.
Summary posting creates one entry per day or per payout, split into sales, tax, shipping, discounts, fees and refunds. The ledger stays clean and each entry maps to a deposit. The cost is traceability: to find one order, you go back to the store.
A practical rule: post individually when customers pay on account, need Xero tax invoices or buy wholesale. Summarize when buyers pay at checkout. Many businesses run both.
Shopify to Xero integration, WooCommerce and PayPal
A Shopify to Xero integration and a WooCommerce Xero integration solve the same problem from different sources. Shopify exposes orders, refunds and Shopify Payments payouts with their fees, which makes payout level reconciliation possible. WooCommerce is a WordPress plugin, so a WordPress Xero integration means reading WooCommerce orders and pulling payout detail from the payment gateway, since WooCommerce does not hold the deposit.
A PayPal Xero integration has two parts. Xero can connect PayPal as a bank feed, which brings in the transactions. Coding them, with fees separated and each sale tied to an order, still needs bank rules your bookkeeper maintains or an integration that posts matching entries first.
Whatever the source, the build follows the money in this order:
- Pull the payout or settlement report, not just orders, so the integration knows what the bank will see.
- Post sales, tax and shipping to the accounts your accountant chose, through a clearing account per processor.
- Post the processor fee as an expense line on the same payout.
- Net refunds and adjustments that the processor deducted from that payout.
- Leave one transfer from clearing to the bank account equal to the deposit, so Xero offers it as a match.
Fees, refunds and clearing accounts
Each processor gets its own clearing account in Xero. Sales flow in, fees and refunds flow out, and payouts move the balance to the bank. When the clearing account sits at zero after the last payout, everything posted. When it does not, the leftover points at the missing entry.
Refunds need a decision before the build. A credit note against the original invoice keeps per order history. A negative line in the day's summary keeps the ledger simple. Chargebacks add a fee and sometimes a later reversal, so they need their own account and a person who reviews them. Multi-currency stores also need a rule for where exchange differences land; your accountant sets it and the integration applies it every time.
Xero CRM integrations: customers, quotes and invoices
Xero CRM integrations go wrong when both systems edit the same field. Decide, field by field, which system owns it. A common split: the CRM owns the deal, the contact person and the quoted lines. Xero owns the invoice number, payment status and balance owed.
A Xero to Salesforce integration typically creates a draft Xero invoice when an opportunity closes won, then writes the invoice number and payment status back to Salesforce. Sales sees who paid without a Xero login. Finance reviews drafts first, which catches wrong tax codes and missing purchase order numbers.
A Zoho CRM and Xero integration or a Xero Pipedrive integration follows the same pattern with a won deal or sales order as the trigger. A Xero Airtable integration does the same from a job status change in a base. The hard part is matching customers: store the Xero contact ID on the CRM record instead of matching by name, because Acme Inc and ACME, Inc. become two contacts and two ledgers.
Reporting from Xero into Google Sheets
A Xero Google Sheets integration is about reporting, not bookkeeping. It pulls invoices, payments and balances on a schedule into a sheet management already reads, such as cash collected this week by sales rep. Keep the sheet read only. Once people edit numbers there and expect them to flow back into Xero, you have built a second ledger.
Marketplace app or custom Xero integration
Start with the Xero App Store. Established connector apps exist for Shopify, WooCommerce, PayPal and most popular CRMs, and they are usually priced as a monthly subscription. If one supports your posting model, your processors and your currency setup, buy it and configure it with your bookkeeper. That is often less work than a custom build, ours included.
A custom integration earns its place when the app cannot do what you need: summaries for retail but invoices for trade orders, several stores into one Xero organisation with tracking categories per brand, a CRM field mapping the app lacks, or an alert when a clearing account does not return to zero.
When Benian builds one, it runs in an automation account your business owns, such as your own n8n instance, connected to Xero through an app authorization your team holds. You can see every run, and you keep the build if you stop working with us. Cost depends on the number of sources, the posting model, how many exception paths there are and how much history needs backfilling, so it is scoped after a look at your data.
Where a person stays in the loop, and what to measure
Automate the posting and route exceptions to a named person instead of guessing:
- A payout whose posted lines do not equal the deposit.
- A refund or dispute with no matching order.
- A CRM customer that matches several Xero contacts, or none.
- A failed run, noticed the same day rather than at month end.
When not to hire anyone for this
If you have one store, one processor, a few orders a day and a bookkeeper who reconciles weekly without complaint, an app or Xero's own bank rules are enough. If your posting policy is not settled, settle it with your accountant first; an integration built on an undecided policy posts the confusion faster.
Measure before and after: monthly hours on bank reconciliation, unreconciled lines at close, clearing account balances, duplicate contacts, and days from closed deal to sent invoice. If none of those moves, the integration was not the bottleneck.
How a Xero integration build runs
- Agree the posting policy. Your accountant confirms per order or summary posting, clearing accounts, refund treatment and tax codes. Benian turns that into a written mapping.
- Map sources and owners. List every store, processor and CRM, the fields each one sends, and which system owns each customer and invoice field.
- Build against a test organisation. Post a real week of payouts into a Xero demo or test organisation and check that every deposit reconciles before touching the live file.
- Backfill and cut over. Pick a cut-over date, switch off any old app posting the same data, backfill only what your accountant wants, and turn on exception alerts.