Product Icon

Invoice Sync for Xero for WooCommerce

Stop entering WooCommerce orders into Xero by hand. Invoice Sync creates accurate Xero invoices — tax, contacts, and payments automatically.
Choose a billing option
$69
Save 20%
$138 $110.40

Subscription includes

  • Product updates and improvements
  • Customer support
  • 30-day money-back guarantee

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 its own account code and tax type if configured
  • 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
  • Refund credit notes — optionally create a Xero credit note for each refund, matching the refunded items and linked to the original invoice

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 — assign different product categories to different Xero revenue accounts. Categories without a mapping fall back to your default sales account.
  • Shipping account code — assign shipping charges to a dedicated Xero revenue account, with automatic fallback to the default sales account when not configured.
  • SKU to item code — send WooCommerce product SKUs to Xero as item codes on invoice lines for untracked inventory matching.
  • Invoice PDF by email — optionally attach the Xero invoice PDF to customer order emails automatically, or send it on demand from the order screen.
  • Refunds that reconcile — refunding an order can create a matching Xero credit note, optionally allocated to the original invoice, so your sales, tax, and customer balances stay correct.

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.

Refunds that reconcile

Refunding an order shouldn’t leave your Xero books out of step. Turn on Create Credit Note on Refund and the plugin records each refund as a Xero credit note — the opposite of an invoice — that matches the refunded products, shipping, and fees and links back to the original invoice.

A credit note is the accounting record that the customer owes you less (or holds a credit with you). The money going back to the customer is handled by WooCommerce and your payment gateway; the credit note keeps your sales and tax correct in Xero.

  • Invoice still unpaid? Turn on Allocate Credit Note to Invoice and the credit note is applied straight away, reducing the amount owing.
  • Invoice already paid? Leave allocation off — Xero can’t apply a credit to a paid-off invoice, so the credit note is left as available credit on the customer, ready to apply to a future invoice or refund in Xero.

Credit notes reference the customer’s existing Xero contact and never overwrite their stored phone number or address, so refunds won’t disturb contact details you maintain in Xero. Every refund creates at most one credit note, so you can never double-credit, and the order note always confirms the outcome, with a link to the credit note in Xero.

Getting started

Setup takes around 10 minutes:

  1. Create a free OAuth2 app at developer.xero.com to get your Client ID and Client Secret.
  2. Go to WooCommerce → Settings → Xero Invoice Sync, enter your credentials, and click Connect to Xero.
  3. On the Mapping tab, select your Sales Account Code and Tax Type.
  4. 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 5.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)

Frequently asked questions

Do I need a paid Xero account?
Yes, you need an active Xero subscription. If you want to test the integration first, create a free account at developer.xero.com and connect it to a demo company — it's fully functional at no cost.
How long does setup take?
Around 10 minutes. You create a free OAuth2 app in the Xero Developer Portal, enter the Client ID and Client Secret into the plugin, click Connect, and you're done. Full step-by-step instructions with screenshots are in the documentation.
Will it create duplicate contacts in Xero?

The plugin helps prevent duplicates by searching Xero contacts by email address first. If a match exists, that contact is reused. If two customers share the same name, a unique name is generated automatically to meet Xero's uniqueness requirement.

Will it create duplicate invoices?
No. Each WooCommerce order can only produce one Xero invoice. The plugin checks before creating.
What order data is synced to Xero?
Each invoice includes the customer contact, all product line items, fees, shipping, tax amounts, invoice date (from the original order date), payment due date, and order currency. If payment recording is enabled, a payment record is also created when the order is paid.
Can I email the Xero invoice PDF to the customer?

Yes. Enable "Attach Invoice PDF to Emails" on the Behavior tab and the plugin attaches the Xero invoice PDF to customer order emails automatically. To send a single order on demand, use the "Send to Xero and email PDF" order action. If the PDF cannot be fetched, the email is still sent and an order note explains what happened.

Can I sync old or existing orders?
Yes. Open any order in WooCommerce admin, select "Send to Xero as Invoice" from the Order Actions dropdown, and click Update. This works regardless of the order's age or status.
Does it sync from Xero back to WooCommerce?
No. This is a one-way sync — WooCommerce to Xero only. No data is ever written back to WooCommerce from Xero.
Do I need to reconnect periodically?

Usually no. Access tokens are refreshed automatically in the background. You may need to reconnect if you manually revoke access in Xero or after prolonged inactivity, depending on Xero's current token policies.

Is HPOS (High Performance Order Storage) supported?
Yes. The plugin is fully compatible with WooCommerce High Performance Order Storage (Custom Order Tables).
Why does my Xero invoice show "Includes adjustments to tax"?
This means WooCommerce has no tax rates configured, so it returned $0.00 tax — but the Xero tax type you selected expects a taxable amount. Fix it by adding your tax rate under WooCommerce → Settings → Tax → Standard Rates. Full guidance is in the documentation.
What happens if invoice creation fails?
The error is recorded as an order note on the WooCommerce order, and logged to WooCommerce → Status → Logs → wc-xero. The customer's checkout is never affected.
Can I use different Xero accounts for different product categories?

Yes. The Category Account Mapping setting on the Mapping tab lets you assign each WooCommerce product category to a specific Xero revenue account. Unmapped categories fall back to your default Sales Account Code.

What does "Send SKU as Item Code" do?

When enabled, WooCommerce product SKUs are sent as item codes on Xero invoice lines. If your SKUs match Xero untracked inventory item codes, Xero auto-populates the Item field on the invoice. It is off by default and only affects new invoices after you enable it.

What happens in Xero when I refund an order?

Enable "Create Credit Note on Refund" and the plugin creates a Xero credit note matching the refunded products, shipping, and fees, linked to the original invoice and using the customer's existing Xero contact (their stored contact details are never overwritten). A credit note records that the customer owes you less (or has a credit). The actual money back to the customer is handled by WooCommerce and your payment gateway. Optional allocation applies the credit note to the invoice automatically, and the order note always confirms the outcome with a link to the credit note.

Should I turn on "Allocate Credit Note to Invoice"?

Turn it on when your Xero invoices are usually still unpaid at the time you refund — the credit note reduces the amount owing. Leave it off when your invoices are usually already paid (for example if you use "Create Payment on Paid"), because Xero cannot apply a credit to a paid-off invoice. In that case the credit note is still created and remains available to apply or refund in Xero.

Extension information

  • PHP version required: 7.4
  • Tested with WordPress: 7.1
  • Tested with WooCommerce: 10.7.0
  • Requires at least WordPress: 5.8
  • Requires at least WooCommerce: 5.0

Countries

  • Worldwide

Related Products

Price $279 annually
Rated 3.9 out of 5 stars
Price $79 annually
Rated 3.4 out of 5 stars
Price $59 annually
Rated 3.1 out of 5 stars
Price $109 annually
Rated 2.7 out of 5 stars
Price $49 annually
Rated 4.1 out of 5 stars
Price $109 annually
Rated 2 out of 5 stars
Price $109 annually
Rated 2.3 out of 5 stars
Price $39 annually
Rated 2.8 out of 5 stars
Price $109 annually
Rated 2.6 out of 5 stars
Use of your personal data
We and our partners process your personal data (such as browsing data, IP Addresses, cookie information, and other unique identifiers) based on your consent and/or our legitimate interest to optimize our website, marketing activities, and your user experience.