Every time a customer places an order in your WooCommerce store, someone has to get it into Xero. If that someone is you — copying line items, looking up contacts, checking tax amounts — Invoice Sync for Xero gives that time back.
The plugin connects your store directly to Xero over a secure OAuth2 connection. Orders become invoices automatically, with the right contact, exact tax amounts, correct line items, and the proper invoice date. Nothing is rounded, estimated, or approximated — the numbers in Xero match WooCommerce exactly.
What gets synced to Xero
Every invoice created by the plugin includes:
- Customer contact — matched by email address to an existing Xero contact, or created automatically. No duplicate contacts.
- Product line items — every item in the order, with quantities, unit prices, and account codes resolved per product category
- Shipping — as its own line item, with a separate tax type if needed
- Fees — payment surcharges, handling fees, and any other WooCommerce fee items
- Tax amounts — taken directly from WooCommerce, not recalculated by Xero. The invoice total always matches the order total.
- Invoice date — set to the original WooCommerce order date, not today’s date
- Currency — the WooCommerce order currency is passed to Xero, supporting multi-currency organisations
- Payment record — optionally marks the Xero invoice as paid when the WooCommerce order is paid, against a bank or clearing account of your choice
Built for how real stores operate
- Automatic sync — invoices are created when orders reach Processing or Completed status. No action needed.
- Immediate sync — optionally create invoices the moment an order is placed, before payment is confirmed. Useful for BACS, bank transfer, and offline payment methods.
- Manual send — push any order to Xero at any time using the Order Actions dropdown on the order edit screen. Works even with automatic sync disabled, and is perfect for backfilling older orders.
- Failed sync safety — if a sync fails for any reason, the error is recorded as an order note. The customer’s checkout is never interrupted.
- Contact updates — keep customer phone numbers and addresses in Xero current automatically on each order, or disable this to preserve manually managed contact data.
- Per-category accounts (Beta) — assign different product categories to different Xero revenue accounts. Categories without a mapping fall back to your default sales account.
- SKU to item code (Beta) — send WooCommerce product SKUs to Xero as item codes on invoice lines for untracked inventory matching.
Tax that actually matches
Getting tax right between WooCommerce and Xero is notoriously difficult with other plugins. Invoice Sync takes a different approach: it reads the exact tax amounts WooCommerce calculated for each line item and passes those figures directly to Xero. Xero receives a tax amount, not a tax rate — so it never recalculates, never rounds differently, and never produces an «Includes adjustments to tax» warning on your invoices.
The Xero tax type you configure (e.g. GST on Income, Tax on Sales) tells Xero how to categorise the tax for your P&L and tax return — it does not affect the invoice total.
Getting started
Setup takes around 10 minutes:
- Create a free OAuth2 app at developer.xero.com to get your Client ID and Client Secret.
- Go to WooCommerce → Settings → Xero Invoice Sync, enter your credentials, and click Connect to Xero.
- On the Mapping tab, select your Sales Account Code and Tax Type.
- Save. Done.
For a full step-by-step walkthrough with screenshots — including how to create your Xero app, a tax type reference table by region, and guidance on WooCommerce tax configuration — see the complete documentation.
Compatible with
- WooCommerce 6.0 and later
- WooCommerce Subscriptions — each renewal order syncs automatically
- WooCommerce High Performance Order Storage (HPOS)
- Multi-currency Xero organisations
- All Xero regions (AU, NZ, UK, US, and others)
Requirements
- An active Xero subscription — or a free Xero developer account with a demo company for testing
- Your WordPress site accessible over HTTPS
- WooCommerce tax rates configured (required for correct tax amounts to flow to Xero)