The native HubSpot Xero integration is HubSpot's own app, Data sync by HubSpot. It syncs contacts, products, invoices and payments between the two, one way or both ways, and it imports your Xero tax rates so GST lands on the right lines. It doesn't sync deals or companies, and invoices made in HubSpot have to be edited in HubSpot.

If you bill from HubSpot and your invoicing is simple, start with the native app. If you need deals to become Xero invoices on your own rules, tracking categories, more than one Xero organisation or a third system in the loop, look at a marketplace connector or a custom sync.

The short version: try the native app first if your sales team creates the invoices and finance is happy to leave them alone in Xero. Pick a connector if you need more mapping control but your process is standard. Build a custom sync when the rules are yours and nobody's app quite fits them.

What the native HubSpot Xero integration does

HubSpot's help article on the Xero data sync was last updated on 29 September 2026. It lists four things you can sync, and you pick a direction for each one.

DataDirections availableWhat to know
ContactsOne way or two wayXero needs contact names to be unique. An invoice fails if its contact's email doesn't match the customer in Xero.
Products and itemsOne way or two wayChanging a product's SKU in HubSpot after it's on a synced invoice stops that invoice syncing.
InvoicesXero to HubSpot, or two wayDraft invoices don't go to Xero. They have to be Open.
PaymentsXero to HubSpot, or two wayOnly payments created after you connect the app sync to HubSpot.
Tax ratesImported from XeroBrought into HubSpot's tax library when you set up outbound or two-way invoice sync.
Deals and companiesNot listedA deal doesn't become a Xero invoice on its own.

Most syncs have a conflict setting for which app wins when it isn't clear which record is newer, and filters to limit what syncs. HubSpot says changes from HubSpot reach Xero within a few minutes, and changes from Xero are picked up every 30 minutes. There's a Sync now button if you can't wait.

HubSpot is clear about who this is for. It says the two-way invoice sync "is most useful for small businesses who are looking to run their billing from HubSpot", including converting deals or quotes into invoices inside HubSpot. So the native app works best when HubSpot is where invoices start.

Source: HubSpot Knowledge Base, Connect HubSpot and Xero (Data Sync).

Where the native HubSpot Xero integration stops

  • Edits have to happen where the invoice was made. HubSpot says invoices created in HubSpot must be edited in HubSpot, "otherwise the invoice will fail to sync". If your bookkeeper fixes line items in Xero out of habit, the sync breaks on that invoice.
  • No deal sync. Deals and companies aren't in the list. If your pipeline is in deals and you want a stage change to raise an invoice, you need HubSpot's own invoicing in the middle, or something else.
  • Custom fields need a paid tier. You need at least Data Hub Starter to create custom field mappings. HubSpot gives PO number as an example of a field that needs one.
  • Payments only sync from the day you connect. Payments made before that won't appear in HubSpot.
  • Card fees don't carry over. If you turn on credit card fees in HubSpot payments, the fee won't sync to the Xero invoice, which can leave you reconciling by hand.
  • Two-factor has to be on for everyone. In replies to reviews on the Xero App Store, HubSpot explains that 2FA has to be required for every user in the HubSpot portal before the connection works.

On the Xero App Store, Data sync by HubSpot had a rating of 2.1 out of 5 from 7 reviews when we checked on 12 October 2026. That's a small sample, and the two most recent one-star reviews shown were both about the 2FA connection error.

Source: Data sync by HubSpot on the Xero App Store (AU).

GST, AUD and other Australian details

Here's what matters for an Australian business.

Currency. AUD is supported. HubSpot lists six currencies for the integration: USD, CAD, EUR, GBP, AUD and NZD. If you invoice in anything else, the native app won't cover it.

GST rates come from Xero. When you turn on outbound or two-way invoice sync, your Xero tax rates are imported into HubSpot and applied per line item. HubSpot recommends setting up your tax rates in Xero first. Tax rates you create in HubSpot won't go to Xero. New rates you add in Xero later won't show up in HubSpot on their own either. You have to re-save the invoice sync settings to trigger a fresh import.

Automated sales tax won't sync. Invoices that use HubSpot's automated sales tax feature don't sync to Xero. Use the imported Xero rates instead.

More than one Xero organisation. HubSpot says it doesn't support importing taxes for multi-tenant Xero accounts. If you run several entities, check this before you commit.

Tax codes in a custom build. If you go custom, every line needs a Xero tax type. Xero's API documentation lists the Australian codes, including OUTPUT, EXEMPTOUTPUT and BASEXCLUDED. Each invoice also has a line amount type: Exclusive, Inclusive or NoTax. Decide once whether HubSpot prices are stored with or without GST, then use the same setting on every invoice. Get your accountant to sign off on which tax type each product uses. That's their call to make.

Source: Xero Developer, Accounting API types and codes.

When the native app or a marketplace connector is enough

The native app is a good fit when most of these are true:

  • Sales or account managers create invoices in HubSpot.
  • Finance is happy to approve and reconcile in Xero, without editing HubSpot invoices there.
  • You have one Xero organisation and you bill in AUD.
  • The default field mappings cover what you need, or you're on Data Hub Starter or above for custom ones.
  • What sales really wants is to see invoice and payment status on the contact record.

If it's close but not quite there, look at the connectors. Xero's "Connect Xero and HubSpot" collection lists a handful of apps. Invoice Stack, Inbound Accounts, SyncQ and Cloudify all describe themselves as linking HubSpot and Xero for invoicing. Inbound Accounts mentions creating invoices automatically from HubSpot plus custom options, and SyncQ talks about customisable mapping. PSOHub covers project invoicing with timesheets. ScaleXP and SyncHub are more about finance reporting.

Those are the vendors' own descriptions, so test against your real invoices first. A connector suits a common process where you'd rather have a supported product than own the logic.

Source: Xero App Store, Connect Xero and HubSpot.

When a custom HubSpot Xero sync makes sense

A custom sync is code or a workflow you own, calling the HubSpot and Xero APIs directly. We build ours in n8n. It's worth it when the rules are specific to your business, for example:

  • A deal stage should raise the invoice, and finance wants it waiting as a draft to approve.
  • One deal becomes more than one invoice, like a deposit and a balance.
  • Invoices need Xero tracking categories, such as office, region or division. HubSpot's help article doesn't mention tracking categories, so if your reports depend on them, test before you rely on the native app.
  • A payment in Xero should move the deal, set a property or create a task for the account manager.
  • A third system is involved, such as a job management tool, Stripe or an industry platform.
  • You want a log of every record that synced, and an alert with a link when one fails.

In n8n, the Xero node can create, get and update contacts and invoices. The HubSpot node covers deals, contacts and companies. For anything those nodes don't do, n8n's docs point you to the HTTP Request node, which can use the same saved credentials. Sources: n8n Xero node and n8n HubSpot node.

Xero's API has limits a custom build has to respect. Per Xero organisation, it's 5 calls in progress at once, 60 calls a minute and 5,000 calls a day for apps above the starter tier (1,000 a day on starter). Go over and you get an HTTP 429 with a Retry-After header. Each Xero organisation can also connect a maximum of five uncertified apps, which matters if you already have a few custom connections. A history import needs batching, and Xero lets you create several invoices in one request.

Source: Xero Developer, OAuth 2.0 API limits.

Xero also sends webhooks for contact and invoice events (create and update), plus credit notes and a few others. There's no separate payment event in that list, so a sync that cares about payments usually watches for invoice updates and checks whether the status has changed to PAID. Source: Xero API webhooks.

The trade-off is ownership. A custom sync does exactly what you need, and you own it outright. It also needs an owner, alerts and a runbook. If you go this way, run it through something like our n8n production checklist before it touches live invoices.

What to sync between HubSpot and Xero

Before any tool decision, write down which system owns each kind of data. A lot of sync problems come from two systems both thinking they're in charge of the same field. This is the map we'd start from for a HubSpot and Xero setup.

DataUsual source of truthDirectionWatch out for
Contacts and companiesHubSpot for leads, Xero for billing detailsHubSpot to Xero when the first invoice is raisedMatch on email or a stored ID. Xero contact names must be unique.
Products and itemsXero, because it holds account codes and taxXero to HubSpotSKU changes on live invoices.
Deals to invoicesHubSpot deal, Xero invoiceHubSpot to Xero on a set stageNever raise the same invoice twice. Store the Xero invoice ID on the deal.
Line items and GSTXero tax ratesApplied when the invoice is builtPick Exclusive or Inclusive once and stick to it.
Payments back to dealsXeroXero to HubSpotPart payments. Decide what a deposit does to the deal stage.
Credit notes and refundsXeroXero to HubSpot, read onlyShow them to sales. Don't let HubSpot create them.

Two rules save a lot of pain. First, every record carries the other system's ID once it's linked, so matching never depends on a name. Second, money only moves one way. Invoices are raised in one place, and payments are recorded in Xero. Our guide to connecting your CRM to everything covers the same idea across other tools.

Decision table: native app, connector or custom sync

Your situationBest starting pointWhy
Sales raises invoices in HubSpot, finance only approves in XeroNative appThis is what HubSpot designed it for.
You only want invoice and payment status on HubSpot contactsNative app, one way to HubSpotNo invoices are created from HubSpot, so the editing rule doesn't bite.
You need a PO number or other custom field on invoicesNative app on Data Hub Starter or above, or a connectorCustom mappings need that tier.
Finance edits invoices in Xero after they're raisedConnector or customNative HubSpot invoices fail to sync if edited in Xero.
Deal stage should create a draft invoice in XeroConnector or customDeals aren't part of the native sync.
Tracking categories, several Xero organisations or a third systemCustomThese sit outside what the native app documents.
You need an audit log and alerts for every failed recordCustomYou decide what gets logged and who gets told.

Worked example: a custom HubSpot Xero sync in n8n

Here's a made-up but typical example. A services business has two offices, Brisbane and Sydney. Sales runs on HubSpot deals. Finance lives in Xero and wants every invoice tagged with the office as a tracking category. They raise a deposit invoice when a deal is won and a balance invoice when the work is signed off. Finance often tweaks invoice wording in Xero before sending.

The native app struggles here. Deals don't sync, HubSpot invoices can't be edited in Xero, and tracking categories aren't in HubSpot's documentation. Here's how a custom sync would run in n8n:

  1. Find won deals. On a schedule, n8n asks HubSpot for recently modified deals and keeps the ones that moved to Closed won.
  2. Check for a stored invoice ID. If the deal already has a Xero deposit invoice ID, stop. That one check is what makes the workflow safe to re-run.
  3. Find or create the Xero contact. Match on the stored Xero contact ID, then on email. If the name exists with a different email, stop and alert instead of guessing.
  4. Build the deposit invoice. Line items come from the deal. Prices in HubSpot are stored without GST, so the invoice uses the Exclusive line amount type, with the tax type finance chose for each product. The office property on the deal sets the tracking category. The deal ID goes in the invoice reference.
  5. Create it as a draft. Finance edits the wording if they want and approves it in Xero. Nothing breaks, because the invoice lives in Xero.
  6. Write back to HubSpot. The Xero invoice ID and a link go onto the deal, so sales can see it.
  7. Watch for payment. When Xero reports an invoice update and the status is PAID, n8n sets "Deposit paid" on the deal and creates a task for the account manager to book the kick-off.
  8. Repeat for the balance. When the deal moves to a "Work signed off" stage, the same steps raise the balance invoice, checking its own stored ID.
  9. Alert on failure. Anything that can't be matched or written sends an alert with the deal link and the reason.

None of the nine steps is clever. Most of the work is in the boring parts: stored IDs, one owner per field, drafts for anything involving money, and a clear alert when a record doesn't fit.

What we've built, and what we haven't

Our closest public case study is a two-way HubSpot sync for an Australian mortgage brokerage. It connects their loan-origination system and HubSpot on n8n. New contacts, deals and stage changes flow across on their own. It runs around 412 syncs a week and replaced roughly 11 hours a week of manual data entry. You can read it here: CRM sync for a mortgage brokerage.

To be clear, that build had no Xero in it. We mention it because the hard parts of a HubSpot Xero sync are the same ones we solved there: matching records, deciding which system wins for each field, mapping fields once, and running unattended without double entries.

What drives the cost of a HubSpot Xero integration

It depends on the job. These are the things that move it:

  • Which option you pick. The native app or a connector is mostly setup and testing. A custom sync is a build.
  • Objects and directions. Contacts one way is small. Deals to invoices with payments back is bigger.
  • Your rules. Deposits, split invoices, tracking categories and approvals each add logic and tests.
  • History and data quality. Importing and cleaning old records, duplicate contacts and messy product names all add work.
  • Monitoring. Alerts, logs and a runbook are what keep the sync trustworthy.

Tool subscriptions, like HubSpot tiers or a connector, are paid by you directly to the provider. For how we scope and price automation work in general, see our guide to AI automation costs.

Getting started

Start small. Fill in the source-of-truth table above for your own business, then turn on the native app one way, Xero to HubSpot, so sales can see invoice and payment status. You'll find out quickly whether you need HubSpot invoicing, a connector or a custom sync. For invoicing automation more broadly, see how to automate invoicing in Australia.

Our CRM integration service covers HubSpot and Xero syncs from scoping to handover. It's built in your own accounts wherever possible, and it's yours once it's paid for.

Not sure which option fits? Show us how a deal turns into an invoice today. We'll tell you whether the native app will do, or give you a fixed scope for a custom sync. Book a short call.