Xero IntegrationsHow-To

How to Sync WooCommerce with Xero Automatically

Learn how to sync WooCommerce with Xero step by step. Compare the best plugins, set up inventory sync, handle EU VAT and multi-currency orders, and troubleshoot common problems.

Updated 10 min read
How to Sync WooCommerce with Xero Automatically

Key Takeaway

Learn how to sync WooCommerce with Xero step by step. Compare the best plugins, set up inventory sync, handle EU VAT and multi-currency orders, and troubleshoot common problems.

Why Sync WooCommerce with Xero?

If you run a WooCommerce store and use Xero for accounting, you already know the pain of manual data entry. Every order placed on your site needs to become an invoice in Xero. Every payment needs to be reconciled. Every refund, shipping charge, and tax line needs to land in the right account.

Doing this by hand is slow, error-prone, and completely unsustainable as your order volume grows. A single missed invoice can throw off your VAT return. A miskeyed amount can take hours to trace. And the time your bookkeeper spends re-typing order data is time they are not spending on cash flow analysis or financial planning.

When you sync WooCommerce with Xero automatically, you eliminate all of that. Orders flow into Xero as invoices. Payments are applied and reconciled. Inventory levels stay in step. Tax rates are mapped correctly. And your books are always up to date without anyone touching a spreadsheet.

This guide walks you through everything you need to set up a reliable WooCommerce Xero integration: which plugin to choose, how to connect the two platforms, how to handle inventory sync, custom fields, EU VAT, multi-currency orders, and the most common problems you will encounter along the way.

Choosing the Right WooCommerce Xero Plugin

There are several ways to connect WooCommerce to Xero, and the right choice depends on your order volume, feature requirements, and budget. Unlike most comparison articles you will find online, we have no plugin of our own to sell here -- so this is a genuinely neutral look at the main options.

Plugin Comparison Table

PluginPriceInventory SyncCustom FieldsMulti-CurrencyBest For
WooCommerce Xero (official)EUR 93/yearNo (orders only)NoYes (with Xero plan)Basic order-to-invoice sync
MyWorks SyncFree -- $69/moYes, two-way (5--60 min)Yes (line item + order meta)YesFeature-rich, growing stores
Xeroom$97--$197/yearYes, two-way (real-time)Limited (Premium only)YesWordPress-native, no monthly fees
AmakaFree (60 orders/mo) -- paidNoNoLimitedBudget-conscious, low volume
Link My Books$17/moVia summary reportingNoYesEcommerce-focused bookkeeping
Zapier$19.99/moNoManual field mappingYesSimple automations, no-code

A note on the official extension: The WooCommerce Xero extension has a 2.5-star rating from 17 reviews on the WooCommerce Marketplace. The main complaints are that it creates a new contact in Xero for every single order (leading to thousands of duplicate contacts), it cannot map multiple payment gateways to different Xero bank accounts, and it offers no inventory sync or custom field support. It works for very basic order-to-invoice sync, but most growing stores will outgrow it quickly.

Which Plugin Should You Choose?

Here is a quick decision guide based on common scenarios:

  • Small store, basic needs, tight budget: Start with Amaka's free tier (up to 60 orders per month) or the official WooCommerce Xero extension if you just need invoices in Xero and can live with duplicate contacts.
  • Growing store, inventory sync needed: MyWorks Sync or Xeroom. MyWorks offers the most features and two-way inventory sync at 5--60 minute intervals. Xeroom provides real-time two-way sync with no monthly fees -- a good fit if you prefer a one-off annual licence.
  • Custom field requirements: MyWorks is the only plugin with proper support for syncing WooCommerce order meta and line item meta to Xero fields. If custom fields are critical, this is your best option.
  • Multi-channel seller (WooCommerce + Shopify + Amazon): Link My Books or Webgility handle multiple sales channels in a single integration.
  • No-code, simple automation: Zapier connects WooCommerce to Xero without any plugin installation, but it lacks depth for inventory, custom fields, or complex tax mapping.

How to Connect WooCommerce to Xero (Step-by-Step)

The general process for setting up your xero WooCommerce sync is similar across most plugins. Below is a step-by-step walkthrough using the most common approach. Where specific plugins differ, we have noted it.

Step 1 -- Install and Activate the Plugin

Log in to your WordPress admin dashboard. Navigate to Plugins > Add New. Search for your chosen plugin (e.g., "MyWorks Sync for WooCommerce and Xero") or upload the plugin ZIP file if you purchased it directly. Click Install Now, then Activate.

Check the plugin's requirements before installing. The official WooCommerce extension requires PHP 7.4+, WordPress 6.7+, and WooCommerce 10.3+. Xeroom does not support PHP 8, which can be a problem on newer hosting environments. MyWorks and Amaka have fewer restrictions.

Step 2 -- Create a Xero App (OAuth Connection)

Most plugins require you to create an OAuth application in Xero's developer portal. Go to developer.xero.com and sign in with your Xero account. Navigate to My Apps > New App.

  • Set the app name (e.g., "WooCommerce Sync").
  • Select Web app as the integration type.
  • Enter your company URL.
  • Set the redirect URI -- your plugin's settings page will tell you the exact URL to use.

Once created, copy the Client ID and Client Secret. You will paste these into your plugin's settings in the next step. Note that Xero allows a maximum of 25 OAuth connections per app and 2 apps per organisation.

Some plugins (Amaka, Link My Books) handle this step for you through their own hosted connection flow, so you may not need to create a Xero app manually.

Step 3 -- Connect WooCommerce to Xero

Go to the plugin's settings page in your WordPress admin. Paste your Xero Client ID and Client Secret into the appropriate fields. Click Sign in with Xero (or equivalent). You will be redirected to Xero's authorisation page -- select your Xero organisation and grant access.

Once authorised, your plugin will confirm the connection. If the connection fails, check that your redirect URI matches exactly (including trailing slashes), that your server has a valid SSL certificate, and that cURL is enabled on your hosting.

Step 4 -- Configure Sync Settings

This is where you tell the plugin how to map your WooCommerce data to Xero. Key settings to configure:

  • Revenue account: Which Xero account should sales revenue post to (e.g., 200 -- Sales).
  • Shipping account: Where shipping charges are coded.
  • Payment gateway fees: If supported, where Stripe/PayPal processing fees are recorded as expenses.
  • Tax rate mapping: Map each WooCommerce tax rate to the corresponding Xero tax type (e.g., Standard 23%, Reduced 13.5%).
  • Sync direction: One-way (WooCommerce to Xero) or two-way (if inventory sync is needed).
  • Sync trigger: Which WooCommerce order status triggers the sync -- typically "processing" or "completed". Choose carefully: syncing on "processing" means invoices appear in Xero as soon as payment is received, while "completed" waits until you have fulfilled the order.
  • Invoice format: Individual invoices per order, or daily/weekly summary invoices.

Streamline Your Financial Operations

Join hundreds of businesses already saving time with FinTask. Get a personalised demo today.

Step 5 -- Run a Test Sync and Verify

Place a test order on your WooCommerce store (or use an existing recent order). Trigger the sync manually from the plugin's dashboard if available, or wait for the automatic sync to run.

Then check Xero:

  • Has the invoice appeared under Sales > Invoices?
  • Are the line items, quantities, and amounts correct?
  • Is the tax rate correct and mapped to the right Xero tax type?
  • Has the payment been applied (if applicable)?
  • Is the contact correct -- or has a duplicate been created?

If everything checks out, your WooCommerce Xero integration is live. Run a few more test orders covering different scenarios (different tax rates, multi-currency if applicable, refunds) before relying on it for your live bookkeeping.

WooCommerce Xero Inventory Sync: Two-Way vs. One-Way

WooCommerce Xero inventory sync is one of the most requested features -- and one of the most misunderstood. Not every plugin supports it, and the ones that do handle it differently.

One-way sync (WooCommerce to Xero) means that when an order is placed in WooCommerce, stock levels in Xero are updated to reflect the sale. This is the most common setup and the simplest to manage. However, if you adjust stock in Xero (e.g., after receiving new inventory from a supplier), those changes will not flow back to WooCommerce.

Two-way sync keeps stock levels aligned in both directions. If you receive stock in Xero, your WooCommerce product quantities update automatically. If an order is placed in WooCommerce, Xero reflects the reduction. This is essential if Xero is your source of truth for inventory.

Here is how the main plugins handle inventory:

PluginDirectionFrequencyProduct Variations
Official WooCommerce XeroNo inventory syncN/AN/A
MyWorks SyncTwo-wayEvery 5--60 minutesSupported
XeroomTwo-wayReal-timeSupported
AmakaNo inventory syncN/AN/A
Link My BooksSummary reporting onlyDailyLimited

Important: Inventory sync relies on matching SKUs between WooCommerce and Xero. If your SKUs do not match exactly, stock levels will not update correctly. Before enabling inventory sync, audit your SKUs on both platforms and resolve any mismatches. Pay special attention to product variations -- each variation needs its own unique SKU in both systems.

If you sell across multiple channels (WooCommerce plus a physical shop or marketplace), two-way sync prevents overselling. If WooCommerce is your only sales channel and you manage stock there, one-way sync (or no inventory sync with manual Xero updates) may be sufficient.

How to Sync WooCommerce Custom Order Fields with Xero

Many WooCommerce stores collect additional data at checkout or on product pages that goes beyond standard order fields. These custom order fields -- also called order meta -- include things like purchase order numbers, delivery instructions, gift messages, personalisation options, or custom product configurations.

If you need this data to appear on your Xero invoices (for example, a customer's PO number in the invoice reference field), you need a plugin that supports custom field mapping. Here is the current state of support:

  • MyWorks Sync: The strongest option for custom fields. You can map WooCommerce order meta and line item meta to Xero invoice fields, including the Reference field (order-level) and Line Item Description (line-level). This covers fields added by plugins like WooCommerce Checkout Field Editor, Advanced Custom Fields, and YITH Product Add-Ons.
  • Xeroom Premium: Limited support for some order meta fields in the Premium tier ($197/year).
  • Zapier: Can map specific WooCommerce webhook fields to Xero invoice fields, but requires technical setup and ongoing maintenance.
  • Official extension, Amaka, Link My Books: No custom field mapping at all.

Workaround for unsupported plugins: If your current plugin does not support custom fields, you can use the WooCommerce REST API to send order data via a webhook to an automation tool like Zapier, Make, or n8n. The automation tool then pushes the relevant custom fields to Xero via the Xero API. This requires some technical setup but is a reliable solution for edge cases.

Tip: Map customer PO numbers to Xero's Reference field and product personalisation details to the Line Item Description. These are the two most useful target fields for custom data and they appear clearly on invoices and reports.

Handling VAT and Multi-Currency

If you run a WooCommerce store from Ireland or anywhere in the EU, VAT and multi-currency handling are not optional extras -- they are essential. This is an area where most WooCommerce Xero guides fall short, because they are written from a US perspective where sales tax is simpler.

VAT Rate Mapping

Your Xero sync plugin needs to map every WooCommerce tax rate to the correct Xero tax type. For an Irish business, this typically means:

  • Standard rate (23%) -- most goods and services
  • Reduced rate (13.5%) -- certain construction, energy, and hospitality services
  • Second reduced rate (9%) -- newspapers, sporting facilities
  • Zero rate (0%) -- exports, certain food and drink, children's clothing

If you sell to consumers in other EU countries, the EU One Stop Shop (OSS) scheme requires you to charge VAT at the customer's country rate for B2C sales. The WooCommerce EU VAT Compliance plugin handles this at checkout -- applying the correct rate based on the buyer's location. Your Xero sync plugin then needs to pass that rate through accurately. Not all plugins handle this well, so test thoroughly with orders from different EU countries.

For B2B sales within the EU, where the buyer provides a valid VAT number, you should zero-rate the sale and apply the reverse charge mechanism. Use the EU VAT Number Validation plugin to verify VAT numbers against the VIES database at checkout before the order syncs to Xero.

For imports under EUR 150, the Import One Stop Shop (IOSS) scheme applies. If you are registered for IOSS, ensure your invoices include your IOSS number and that the correct VAT treatment is reflected in Xero.

Multi-Currency Orders

A common scenario for Irish and EU stores: your base currency is EUR, but you sell to UK customers in GBP. Multi-currency support in Xero requires a Xero Standard or Premium plan -- the Starter plan does not include it.

Before syncing multi-currency orders, add all relevant currencies in Xero Settings > Currencies. If a currency is not enabled in Xero before an order syncs, the sync will fail or default to your base currency.

The FX rate problem: When a customer pays in GBP via Stripe or PayPal, the payment gateway applies its own exchange rate at the moment of the transaction. When the order syncs to Xero, Xero may apply a different exchange rate (its daily mid-market rate). This discrepancy creates small, unexplained foreign exchange gains or losses in your profit and loss report.

The best approach is to use a plugin that captures and passes the gateway's actual exchange rate to Xero (MyWorks and Link My Books both support this). If your plugin does not pass the actual rate, you will need to accept minor FX variances and reconcile them monthly -- typically by posting a single FX adjustment journal in Xero.

Common Problems and How to Fix Them

Even with the best plugin, you will likely encounter some of these issues. Here are the most common problems when syncing WooCommerce with Xero, and how to resolve them:

Duplicate contacts in Xero: The official WooCommerce Xero extension creates a new contact for every order, even from the same customer. This is the single biggest complaint in its reviews. MyWorks and Xeroom both match incoming orders to existing Xero contacts by email address, preventing duplicates. If you have already accumulated duplicates, use Xero's Contacts > Merge feature to consolidate them.

Stripe and PayPal fees not tracked: The official extension does not sync payment gateway processing fees to Xero. This means your revenue in Xero shows the gross amount, not the net amount after fees. Link My Books and MyWorks both track gateway fees as a separate expense line item, which gives you accurate net revenue reporting. If your plugin does not support this, create a monthly journal entry in Xero to record total gateway fees from your Stripe/PayPal dashboard.

Orders not appearing in Xero: Check these in order: (1) Is your OAuth connection still active? Xero tokens can expire, and some plugins require manual reconnection. (2) Does the order status match your sync trigger? If you sync on "completed" but the order is still "processing", it will not appear. (3) Have you hit Xero's API rate limit? Xero allows approximately 5,000 API calls per day per app -- high-volume stores during sales events can exceed this.

Sync failures and connection drops: Ensure your server has a valid SSL certificate and that cURL is enabled. Check your PHP error logs for timeout errors -- large batch syncs on shared hosting can time out. If you are on shared hosting and experience regular timeouts, consider upgrading to managed WordPress hosting with higher resource limits.

Inventory out of sync: Confirm that sync direction is set correctly in your plugin settings. Verify that SKUs match exactly between WooCommerce and Xero (including case sensitivity). Check the sync interval -- if your plugin syncs every 60 minutes, stock levels can be up to an hour behind. For high-velocity products, reduce the interval or switch to a plugin with real-time sync (Xeroom).

Partial refunds not syncing: Not all plugins handle partial refunds correctly. Some only support full refund credit notes. If you process partial refunds frequently, test this scenario specifically during setup and check that the credit note in Xero matches the WooCommerce refund amount.

Automate Your Entire WooCommerce Accounting Workflow

Getting your WooCommerce store to sync with Xero automatically is a significant step forward -- but it is just one piece of a complete accounting automation workflow. Once your orders, invoices, and inventory are flowing into Xero, the next steps are automating bank reconciliation, supplier invoice processing, expense tracking, and financial reporting.

FinTask helps ecommerce businesses automate their entire Xero workflow, from order capture to month-end close. If you are already investing in better WooCommerce-Xero integration, it is worth looking at what else you can automate.

Explore our Xero Integrations hub to see how FinTask connects your entire accounting stack. If you also sell on Shopify, read our Shopify Xero integration guide for a similar walkthrough. And for a broader look at automating Xero beyond ecommerce, see our guide to Xero automation.

Ready to streamline your accounting? Book a free demo and we will show you how FinTask fits into your WooCommerce workflow.

Frequently Asked Questions

Can WooCommerce integrate with Xero?

Yes. WooCommerce can integrate with Xero through several plugins and third-party tools. The most common options are the official WooCommerce Xero extension, MyWorks Sync, Xeroom, Amaka, Link My Books, and Zapier. Each offers different levels of functionality -- from basic order-to-invoice sync to full two-way inventory, custom field mapping, and multi-currency support.

How do I connect WooCommerce to Xero?

Install a WooCommerce Xero sync plugin on your WordPress site, create an OAuth application in the Xero developer portal, and authorise the connection from your plugin's settings page. Once connected, configure your account mapping, tax rates, sync trigger (order status), and sync frequency. Place a test order to verify that invoices appear correctly in Xero before relying on the integration for live bookkeeping.

What is the best WooCommerce Xero plugin?

It depends on your needs. MyWorks Sync is the most feature-rich option, with two-way inventory sync, custom field mapping, and 24/7 support. Xeroom is a strong choice if you prefer annual pricing with no monthly fees and need real-time inventory sync. Amaka offers a free tier for stores processing up to 60 orders per month. The official WooCommerce Xero extension is the most basic option and has a 2.5-star rating due to issues with duplicate contacts and limited features.

Does the WooCommerce Xero sync handle inventory?

Not all plugins support inventory sync. The official WooCommerce Xero extension only syncs order and invoice data -- it does not sync stock levels. MyWorks Sync offers two-way inventory sync at intervals of 5 to 60 minutes. Xeroom provides two-way real-time inventory sync. If keeping stock levels aligned between WooCommerce and Xero is important to your business, choose a plugin that explicitly supports inventory sync and ensure your SKUs match across both platforms.

How do I sync custom order fields from WooCommerce to Xero?

MyWorks Sync is the best option for syncing custom order fields. It supports mapping WooCommerce order meta (such as PO numbers or delivery instructions) and line item meta (such as personalisation options) to Xero invoice fields like Reference and Line Item Description. If your plugin does not support custom fields natively, you can use a WooCommerce REST API webhook combined with Zapier, Make, or n8n to push custom field data to Xero via the Xero API.

Can Xero handle multi-currency WooCommerce orders?

Yes, but you need a Xero Standard or Premium plan -- the Starter plan does not include multi-currency support. Before syncing, add all relevant currencies in Xero Settings under Currencies. Be aware that exchange rate discrepancies between your payment gateway (Stripe, PayPal) and Xero can create small FX gains or losses. Use a plugin that passes the gateway's actual exchange rate to Xero, or reconcile FX variances monthly.

How do I handle EU VAT when syncing WooCommerce with Xero?

Map each WooCommerce tax rate to the corresponding Xero tax type (e.g., 23% standard, 13.5% reduced for Ireland). For B2C sales to other EU countries under the One Stop Shop (OSS) scheme, use the WooCommerce EU VAT Compliance plugin to apply the correct country rate at checkout, and ensure your sync plugin passes that rate accurately to Xero. For B2B EU sales with valid VAT numbers, apply the reverse charge mechanism and zero-rate the invoice. Validate customer VAT numbers at checkout using the VIES database.

How do I reconcile WooCommerce payments in Xero?

Once your sync plugin creates invoices and applies payments in Xero, reconciliation happens through Xero's bank feed. Match incoming Stripe or PayPal payouts against the corresponding invoices. The main challenge is that payment gateway payouts are net of processing fees, while invoices may show gross amounts. Use a plugin like Link My Books or MyWorks that tracks gateway fees as separate expense line items, so your bank feed reconciliation matches correctly.

Ready to Automate Your Accounting?

See how FinTask can save your team hours every week with AI-powered automation. Book a free consultation to get started.

Reza Shahrokhi, ACA - Chartered Accountant and FinTask Founder

Written by Reza Shahrokhi ACA

Chartered Accountant (Chartered Accountants Ireland) • Founder of FinTask • 8+ years in finance & automation

Reza is a Chartered Accountant and the founder of FinTask. He specialises in helping growing businesses automate accounts payable, invoice processing, and financial reconciliation using AI-powered tools integrated with Xero and QuickBooks.

More about the author