For WooCommerce Xero integration, most stores should start with a plugin, not custom code. A per-order plugin like MyWorks or Woo's own Xero extension ($109 a year), or a payout-summary app like Link My Books or Amaka, covers a single-currency WooCommerce store with normal VAT or sales tax for somewhere between nothing and a few hundred dollars a year. A custom Xero sync only pays off when your money doesn't move the way those tools expect: marketplace commissions and vendor payouts, more than one Xero organisation, odd tax rules, or documents your accountant needs that no plugin creates.
I'm Mohit Goyal. I build WooCommerce stores and WCFM multivendor marketplaces where orders sync to Xero, and I write custom WooCommerce plugins that fire when an order is placed, paid or refunded. So I've seen it from the plugin side and the custom side. Below is how the options compare, where each one tends to break, and how I'd decide.
What are the options for a WooCommerce Xero integration?
WooCommerce and Xero don't talk to each other by default, so you pick one of four approaches: a WordPress plugin, an external summary app, an iPaaS tool like Zapier, or a custom sync.
- WordPress plugins that push each order to Xero as an invoice, like Woo's official extension, MyWorks or Invoice Sync for Xero.
- External apps that post summaries matched to your Stripe or PayPal payouts, like Link My Books and Amaka.
- iPaaS tools such as Zapier or Make, where you build the flow yourself.
- A custom sync: a plugin written for your store that calls the Xero API directly.
| Option | How sales land in Xero | Entry price (vendor listing) | Best fit |
|---|---|---|---|
| Xero for WooCommerce (by Woo) | One invoice per order, payments applied | $109 a year | Simple single-currency stores |
| MyWorks Sync for Xero | Per order, with payments, fees and inventory | Free Launch plan, paid from $19/month billed yearly | Stores that want control inside WP admin |
| Invoice Sync for Xero (Azuxies) | Invoice per order with tax, contacts and payments | $69 a year | Tight budgets, per-order invoices |
| Link My Books | Summaries matched to bank deposits | Priced by monthly order volume (Link My Books pricing) | Accountant-led, multichannel sellers |
| Amaka | Daily summary, per order on paid plans | Free plan, Premium $18/month billed yearly | Low order volumes |
| Zapier | Whatever your Zap builds | Paid Zapier plan, since Xero is a Premium app | One simple, one-way flow |
| Custom sync | Whatever you and your accountant design | Build cost plus upkeep | Marketplaces, multi-org, edge cases |
Look at the order limits, not just the headline price. MyWorks' paid tiers scale with order volume, Link My Books charges by orders per month, and Amaka's free plan has a monthly order cap.
- Invoice Sync for Xero69$
- Xero for WooCommerce109$
- Amaka Premium216$
- MyWorks (cheapest paid)228$
These numbers are tiny next to what a bookkeeper charges. Where the wrong tool costs you is month-end, when someone spends hours chasing totals that won't reconcile.
Should each order be an invoice, or should you sync payout summaries?
B2B WooCommerce stores usually want one Xero invoice per order. B2C stores with lots of small orders usually want one summary per day or per payout. Settle this before you compare tools, and ask your accountant, not the plugin vendor.
Per-order sync creates an invoice and a contact in Xero for every order. That suits B2B, where customers expect proper invoices and your team looks orders up by customer name. The catch: Xero fills up with one-off contacts, and some Xero plans cap invoices. The US Early plan, for example, is limited to 20 invoices and quotes a month, which a busy store can blow through in a day.
Summary sync posts one entry per day or per payout, with sales, tax, shipping, refunds and gateway fees split out. Link My Books is built around this. It posts bank-matched entries, so each Stripe or PayPal deposit reconciles in one click. Many accountants prefer this for B2C stores.
If you go per-order, check the tool handles gateway fees too. Stripe pays out the order total minus its fee, and something has to record that gap. MyWorks lists transaction fees among the data it syncs.
How do WooCommerce refunds sync to Xero?
A WooCommerce refund should usually reach Xero as a credit note allocated against the original invoice (or a negative line in the summary), with the money leaving the right clearing account. This is the bit most syncs get wrong without anyone noticing for weeks.
Test every one of these before you go live. They each fail differently:
- A full refund on a paid order
- A partial refund of one line item
- A shipping-only refund
- A refund issued in the Stripe dashboard instead of WooCommerce
- An order edited or cancelled after it has already synced
Do the testing in a Xero demo company, not your live books. Azuxies points out that you can connect a free demo company from Xero's developer site and test for free. If refunds come through wrong, check that refunds issued in the Stripe dashboard also appear in WooCommerce. I cover the Stripe side in WooCommerce Stripe payments failing.
How should WooCommerce tax rates map to Xero?
Every tax rate in WooCommerce needs a matching rate in Xero, and the plugin has to know which goes with which. For a UK store that's standard, reduced, zero-rated and exempt, plus however shipping is taxed. Sell into the EU or across US states and the list gets long quickly.
Most of the trouble comes from three places:
- Inclusive vs exclusive prices. If WooCommerce stores prices including VAT and the Xero invoice lines are set to exclusive, every total will be off.
- Rounding. WooCommerce can round tax on the subtotal while Xero works it out per line. You end up with penny differences that pile up over a VAT quarter.
- Coupons and fees. A discount has to reduce the taxable amount on the right lines. It shouldn't turn up as an untaxed negative line.
Ask any vendor exactly how they deal with each of these. Then place a real test order that mixes tax rates and check it yourself.
What about multi-currency WooCommerce stores?
You need a Xero plan that supports multi-currency, and a sync that sends each order's currency code. On Xero's US pricing, multi-currency is only on the Established plan, at $90 a month. UK plan names and tiers differ, so check Xero's UK pricing for the UK plan that includes multi-currency. Without the currency code, Xero records a euro or dollar sale as if it were sterling, with the wrong amount.
Even with both in place, your payout lands in your home currency at the payment processor's rate, so you'll get exchange gains and losses. A decent setup records those properly instead of leaving small balances nobody can explain. MyWorks lists multicurrency support as a feature. Whatever you pick, push a real foreign-currency order through it. I built currency switching on WooCommerce for the Wow Vastra boutique, and the store side needs just as much testing as the books.
Why do marketplaces break off-the-shelf Xero plugins?
Off-the-shelf Xero plugins book the whole WooCommerce order as your sales. In a marketplace, most of that money belongs to vendors, and only the commission is your revenue. This is the case I've worked on myself. On a WCFM marketplace, one order can contain products from three vendors. A standard plugin sees one customer and one total, and books the lot as your income. Your actual revenue is the commission, plus any vendor membership fees.
Getting marketplace books right usually means:
- Recording commission as income and the vendor share as money owed
- Raising bills or journal entries for vendor payouts, then marking them paid
- Tagging lines with a Xero tracking category per vendor, so you can report on each one
- Handling refunds that claw back both the vendor share and your commission
I don't know of a plugin that does this out of the box, and I'm not surprised, because it all depends on your commission rules. So on a marketplace, treat the Xero sync as part of the build and plan it with your accountant from day one. Don't bolt a plugin on after launch. I cover the wider build in how to build a multivendor marketplace on WooCommerce.
When is a custom Xero sync worth paying for?
Pay for a custom WooCommerce Xero sync when you run a marketplace, use more than one Xero organisation, have unusual tax or reporting needs, or are still fixing the books by hand after trying plugins. For a standard single-currency store, don't.
Custom makes sense when:
- You run a marketplace, or split revenue with partners or locations
- Orders need to go to different Xero organisations, say by country or brand
- Your accountant needs a specific setup: tracking categories, particular accounts, or documents no plugin produces
- You've tried two plugins and someone still fixes the books by hand every month
If a $109 or $228-a-year plugin already handles your store, custom code just gets you the same result for more money.
A custom sync you can actually rely on needs a few pieces. It listens for WooCommerce's paid, refunded and cancelled order events. It sends data to Xero through a background queue with retries, so a Xero outage doesn't lose orders. It saves the Xero invoice ID on each order so nothing syncs twice. It refreshes Xero's OAuth tokens on its own. And it gives you an admin log and a "resync" button. My delivery radius and PrintNode receipt printing plugins for Whitfield Service Station work the same way: an order event triggers a call to an outside API, and if that call fails, someone has to find out.
Budget for upkeep, not just the build. Xero's API changes, and so does WooCommerce. I go through what drives the price in how much a custom WordPress plugin costs.
Is Zapier or Make good enough for WooCommerce to Xero?
For one simple, one-way flow, like a Xero invoice for each new WooCommerce order, yes. For refunds, tax mapping and retries at volume, no. Zapier has a ready template to create Xero invoices for new WooCommerce orders, and Woo documents the Zapier setup. But refunds, per-line tax, gateway fees and retries each add another branch to the Zap, and you pay per task. Once you're past a few hundred orders a month, a dedicated plugin is usually cheaper and a lot less fiddly.
What should you ask before choosing a Xero integration?
Find out how the tool posts sales, handles refunds and tax, deals with currencies, recovers when Xero is down, and what it'll cost as you grow. Specifically:
- Does it create an invoice per order or a summary per payout, and which does my accountant want?
- How does it handle partial refunds, and refunds made in Stripe?
- How does it map tax rates, inclusive pricing and rounding?
- Does it support multi-currency, and which Xero plan do I need?
- What happens when Xero is down? Are there retries, logs and alerts?
- What will it cost at my order volume next year, not just today?
What's the next step?
If you run a standard WooCommerce store, pick the Xero tool that matches how your accountant wants the books, and test refunds and tax in a Xero demo company before you switch it on. If you run a marketplace, sell in several currencies or keep fixing the books by hand, send me your order flow and your accountant's requirements. I'll tell you straight whether a plugin will do the job or a custom sync is worth it.



