Xero runs the finances for a huge proportion of Australian and New Zealand businesses. HubSpot runs the customer relationships. And for a long time, those two systems have politely ignored each other - sitting in separate tabs, forcing someone to manually transfer data between them every time a deal closed or an invoice got paid.
That gap has a real cost. Your sales rep doesn't know the client is 45 days overdue when they call to upsell. Your finance team still can't see the deal history when they're chasing payment. Someone is entering the same contact information into two systems and getting it slightly wrong in at least one of them.
The good news: HubSpot has a native Xero integration that closes most of this gap without middleware, without a developer, and without a four-week implementation project. Here's how it actually works, and where it hits its limits.
The native connector is called Xero by HubSpot (Data Sync) - find it in the HubSpot App Marketplace. It syncs four types of data between the two platforms:
Contacts - bidirectional. Customer records sync between HubSpot and Xero in both directions, in real time. Update a contact's billing address in HubSpot, it flows to Xero. Add a new customer in Xero, they appear in HubSpot. Six currencies are supported natively: USD, CAD, EUR, GBP, AUD, and NZD - so ANZ businesses are covered without any workarounds.
Products/Items - syncs from Xero to HubSpot. Your Xero product catalogue (items) flows into HubSpot's product library, so you're building quotes and invoices from the same items your accounting team uses rather than maintaining two separate lists.
Invoices - bidirectional. Invoices can sync one-way (Xero to HubSpot) or both ways. The common setup: invoices created in HubSpot flow to Xero automatically. Invoices created directly in Xero also appear in HubSpot against the relevant contact record.
Payments - automatic when invoice sync is enabled. When a payment is applied to an invoice in Xero, it syncs back to HubSpot. Your sales rep can see on the contact record that the invoice has been paid - without calling finance to ask.
One genuinely useful bonus: when you install the integration, your Xero tax rates - including GST - are automatically imported into HubSpot's tax library. If you create invoices in HubSpot and push them to Xero, the tax handling is already configured.
This is the most practical thing in the whole guide, and most articles bury it or skip it entirely.
The setup order isn't optional. Xero requires a contact and products to exist before it will accept an invoice. If you try to sync invoices before the contact and product syncs are running, you'll get errors - and unpicking them isn't fun.
Do it in this sequence:
Step 1 - Install the connector. In HubSpot, click the Marketplace icon in the top navigation bar, search for Xero by HubSpot (Data Sync), and click Install. You'll be prompted to enter your Xero credentials. You need Super Admin or App Marketplace permissions in your HubSpot account to do this. If Xero has two-factor authentication enabled, complete that before starting - a known issue is the app flagging 2FA as incomplete even when it's active, so sorting this beforehand saves confusion.
Step 2 - Set up Contact sync. Configure the contact sync direction (bidirectional is usually what you want), review the default field mappings, and add any custom mappings you need. One ANZ-specific note here: Xero requires phone numbers in international format, meaning +61 for Australian numbers. If your HubSpot contacts have phone numbers stored in local format (e.g., 04xx xxx xxx), they won't map cleanly. Fix the formatting before you start the sync rather than after.
Set a filter now if you don't want every Xero contact in HubSpot. If you only want contacts associated with active invoices, configure that filter at this stage. It's easier to get right before the sync runs than to clean up after.
Step 3 - Set up Product sync. Set the direction to Xero → HubSpot (your accounting system is the source of truth for your product and service catalogue). Make sure the SKU field in HubSpot maps to the Item Code in Xero - this connection is what lets invoice line items attach correctly later.
Step 4 - Set up Invoice sync. Once contacts and products are syncing cleanly, turn on invoice sync. For most businesses starting out, begin with Xero to HubSpot (one direction) to validate the connection before enabling the full bidirectional flow. Set filters on the outbound sync (HubSpot to Xero) to ensure only finalised invoices push through - the recommended filter excludes draft invoices, so only non-draft invoices with a create date or last modified date from today forward will sync. This prevents half-built invoices from appearing in Xero.
Step 5 - Payment sync is automatic. Once invoice sync is running, payment sync activates automatically. You don't need to configure it separately.
A few specific gotchas worth knowing before you connect anything.
Credit card fee sync. If you've turned on credit card fees in your HubSpot payment settings, those fees won't sync to invoices in Xero - which means manual reconciliation. If you're using the Xero integration, turn the credit card fee setting off to keep reconciliation clean.
Multi-tenant Xero accounts aren't supported. If your business runs multiple Xero organisations under one umbrella account, the native connector can't handle that structure. This is relevant for some larger or group-structure ANZ businesses - if this is you, you'll need a custom integration approach.
Modifying invoices across platforms. Once an invoice is created in HubSpot and synced to Xero, you can't modify its line items or amounts in Xero. Make any changes directly in HubSpot. Conversely, if a Xero-created invoice is modified in Xero after it has synced to HubSpot, it can break the sync - the change needs to be reversed in Xero and made in HubSpot instead.
PO numbers need custom setup in Xero. PO Number isn't a default field on Xero invoices. If your clients use PO numbers, you'll need to add it as a custom field in Xero before it can map correctly.
Custom field mappings need Data Hub Starter. The basic connection works on any HubSpot plan. But if you want to map non-standard fields between the two platforms - linking a Xero reference number to a custom HubSpot deal property, for example - you'll need at least Data Hub Starter. Worth checking your current subscription before assuming this is available.
When the integration is running properly, here's what changes in practice.
A deal closes in HubSpot. The rep creates an invoice from the deal record using the line items already in the deal. The invoice syncs to Xero automatically - no manual data entry, no "can you send that over?" email to finance. The invoice goes to the client. The client pays. The payment is applied in Xero. It syncs back to HubSpot. The contact record shows the invoice as paid.
Now the rep who calls next week to check in can see the full picture before they dial. The account manager setting up a renewal conversation can see what the client is paying and when. The finance team isn't fielding "has that invoice been paid yet?" calls from sales.
That's the connected system. It's not complicated. It's just the data flowing in both directions so both teams are working from the same information rather than each other's reports of it.
The native Xero by HubSpot connector is the right starting point for most ANZ businesses. But there are situations where it hits real limits and a more custom approach makes sense.
If you need to trigger invoice creation in Xero automatically when a deal reaches a specific stage (rather than manually creating the invoice in HubSpot), the native connector doesn't handle that workflow - it syncs data, it doesn't trigger actions based on deal stage changes. You'd need HubSpot workflows combined with a custom integration or a middleware tool to achieve that.
If your Xero chart of accounts uses custom tracking categories that need to flow into HubSpot reporting, the standard field mappings won't cover it. Custom mapping needs Data Hub Starter as a minimum, and more complex mapping needs a custom integration build.
If you're running a multi-entity structure - multiple Xero organisations that all feed into one HubSpot portal - the native connector's single-organisation limitation becomes a real constraint.
These aren't reasons to avoid starting with the native connector. They're reasons to know what it does and doesn't do before you commit to workflows that depend on it.
Clean your contacts first.
The most common sync failure is a contact mismatch - a contact in HubSpot has a different email address to the corresponding customer in Xero. The sync can't match them, the invoice fails to associate correctly, and you end up with orphaned records in both systems.
Before you install the integration, export your HubSpot contacts and your Xero customer list and compare them. Align the email addresses, fix the formatting, remove duplicates. It takes an hour and it prevents the kind of post-connection cleanup that takes days.
If you want HubSpot and Xero connected properly, contact us. Let's map it out together.
Love a good HubSpot hack? Subscribe to our YouTube channel for deep-dives and HubSpot "how-to" guides. Follow us on Facebook to stay in the loop with the latest HubSpot updates.
Happy optimising!