How to Connect WooCommerce to Xero: Step-by-Step Integration Guide (2026)

If you run a WooCommerce store and do your books in Xero, you have probably spent an evening copying orders into invoices by hand. It works for ten orders a month. At a hundred it eats your weekend, and at a thousand it produces mistakes your accountant has to clean up.

The fix is a direct integration: every WooCommerce order becomes a Xero invoice, every payment is recorded against it, and your bank feed reconciles with one click. This guide walks through the setup with the official WooCommerce Xero extension, the settings that matter, and the errors you will most likely hit.

Short version: install the WooCommerce Xero extension, connect it to your Xero organisation, map four account codes (sales, shipping, discounts, payments), make sure your WooCommerce tax rates match Xero, and choose when invoices are sent. Most stores are syncing within 30 minutes.

What the integration actually does

  • Creates an invoice in Xero for each order, with line items, quantities, prices, tax, shipping and discounts.
  • Creates or matches the customer as a Xero contact, so sales history builds up per customer.
  • Records the payment against the invoice once the order is paid, into the bank account you choose.
  • Leaves reconciliation to Xero. When the money lands in your bank feed, Xero suggests the match and you approve it.

It does not replace your accountant, run payroll, or sync stock levels in both directions. It removes the manual data entry between your store and your books.

Before you start

  1. A Xero organisation with admin or advisor access.
  2. Your chart of accounts open in another tab. You will need the account codes for sales revenue, shipping income, discounts, and the bank account payments go into.
  3. WooCommerce taxes configured. If you charge GST or VAT, your WooCommerce tax rates need to line up with the tax rates in Xero. More on that below.
  4. A staging site, ideally. Connect a staging copy to the Xero Demo Company first and run a few test orders before touching live books.

Step 1: Install the extension

Download the WooCommerce Xero zip, then in WordPress go to Plugins, Add New, Upload Plugin. Install and activate. A new Xero screen appears under the WooCommerce menu.

Step 2: Connect to your Xero organisation

On the WooCommerce Xero settings screen, start the connection and sign in to Xero. Depending on the extension version, you either authorise directly through a Sign in with Xero button, or you first create an app at developer.xero.com and paste its Client ID and Client Secret into the settings, using the redirect URL the extension shows you. Either way, you finish on Xero's consent screen, pick the organisation, and approve.

If you manage several Xero organisations, double check you picked the right one. Invoices sent to the wrong organisation have to be voided by hand.

Step 3: Map your account codes

This is the step that decides whether your books come out clean. Each field takes the code of an account in your Xero chart of accounts.

Setting What goes there Typical choice
Sales account Revenue from products Your main sales account, often 200 in Xero's default chart
Shipping account Shipping charged to customers A separate shipping income account, so you can see delivery revenue on its own
Discount account Coupon and discount amounts A discounts account, or your sales account if you prefer net figures
Fees account WooCommerce fees added to orders Other revenue
Payment account Where payments are recorded The bank or clearing account your gateway pays into
Rounding account Cent differences from tax rounding A rounding or general expenses account

The payment account catch: Xero only accepts payments into accounts that have "Enable payments to this account" ticked. Bank accounts allow it by default. If you use a clearing account for PayPal or Stripe, open it in Xero's chart of accounts and tick that box, or every payment sync will fail.

Use a clearing account per gateway if you can. PayPal and Stripe pay out in batches with fees taken off. Recording each order payment into a "PayPal clearing" account, then reconciling the batch payout against it, keeps the bank feed clean and makes the gateway fees visible.

Step 4: Get tax right (GST, VAT, sales tax)

Most failed syncs are tax mismatches. The rule is simple: the tax WooCommerce calculates on an order has to map to a valid tax rate in Xero.

  • Prices entered inclusive or exclusive of tax? Match the setting in WooCommerce (Settings, Tax, Prices entered with tax) to how you think about prices. Australian and UK stores usually enter prices including GST or VAT.
  • Tax switched off in WooCommerce but registered for GST in Xero? Invoices will arrive with no tax, and your BAS or VAT return will be wrong. If you are registered, turn on WooCommerce taxes and set up the rate properly.
  • Shipping tax. In most GST and VAT systems shipping is taxable when the goods are. Make sure your shipping method has the right tax status in WooCommerce.
  • Rounding. Line-by-line tax rounding can leave invoices a cent off from the order total. That is what the rounding account is for. Set it once and forget it.

If you are unsure whether you should be charging tax at all, ask your accountant before going live. Fixing a quarter of wrong tax treatment is far more work than setting it up correctly.

Step 5: Choose when invoices and payments are sent

  • Send invoices on order creation gives you a complete record of every order, including unpaid and failed ones, which you may then need to void.
  • Send invoices on order completion keeps Xero clean: only fulfilled orders become invoices. This suits most physical product stores.
  • Send payments when the order is paid marks the invoice paid automatically, ready for reconciliation.
  • Manual lets you push selected orders yourself, useful while testing.

Also set an invoice prefix, for example WC- or a short store code. It stops order numbers colliding with invoices you create directly in Xero, and anyone looking at the books can tell where each invoice came from.

Step 6: Test with real orders

  1. Place a test order with one product, shipping, and a coupon.
  2. Complete it in WooCommerce.
  3. Check Xero: one invoice, correct contact, line items, tax, shipping on its own line, discount applied, total matching the order to the cent.
  4. Check the payment landed in the account you mapped.
  5. Refund the order and see how your setup handles it. Many stores record refunds as credit notes manually in Xero, so decide on a process now.

Common errors and how to fix them

Account code is not a valid code

An account code in the settings does not exist in Xero, or it was archived. Copy the code exactly from Xero's chart of accounts, and check you are connected to the right organisation.

Payments can only be made to accounts with payments enabled

The payment account is not set to accept payments. In Xero, edit that account and tick Enable payments to this account.

The tax rate does not match or tax is missing on invoices

WooCommerce is calculating tax that does not map to a Xero tax rate, or WooCommerce taxes are switched off. Line up your WooCommerce tax setup with the rates in Xero, then resend a test order.

Invoice totals are a cent off

Tax rounding differences. Set a rounding account in the extension settings so the difference posts there instead of failing the sync.

Duplicate contacts in Xero

Customers who check out with slightly different names or emails create separate contacts. Merge them in Xero when they appear. If guest checkout is common in your store, expect some of this.

The connection stopped working

Xero connections can be revoked, for example when the Xero user who authorised them loses access or the organisation changes. Reconnect from the WooCommerce Xero settings screen and resend any orders that failed while it was down.

Alternatives to the official extension

  • Zapier or Make. Fine for very low volume or simple setups, but you end up building and maintaining the mapping yourself, and per-task pricing grows with order volume.
  • Third-party sync services in the Xero App Store. Some offer daily summary invoices instead of one invoice per order, which suits very high volume stores. They usually charge a monthly fee.
  • CSV export and import. Free, manual, and error-prone. Workable only for a handful of orders a month.

For most WooCommerce stores, one invoice per order through the official extension is the cleanest audit trail and the least ongoing work.

Other plugins that help with accounting

Wrapping up

Connecting WooCommerce to Xero is a half-hour job if you prepare your account codes and tax settings first. Test with a couple of orders, compare the invoice to the order line by line, and then let it run. Your accountant will notice the difference at the next quarter end.