Accounting Software
HubSpot Xero Integration: Setup and Accounting Controls
Configure a HubSpot Xero integration by assigning source ownership, cleaning contacts and items, mapping fields, limiting the initial sync, testing invoice and payment behavior, and reconciling exceptions.
A HubSpot Xero integration can connect customer, product, invoice, and payment information, but it should not turn the CRM into a second uncontrolled ledger. Decide which system owns each field and transaction, clean the source records, restrict the first sync, and reconcile a representative sample before enabling a broad two-way flow.
Current HubSpot documentation for its Xero Data Sync app describes one-way or bidirectional synchronization for contacts, Xero items and HubSpot products, invoices, and payments applied to invoices. Capabilities, eligible subscriptions, currencies, tax behavior, field mappings, and timing can change. Confirm the current official app listing and setup guide when implementing.
Define the operating boundary first
| Record | Recommended ownership question | Control evidence |
|---|---|---|
| Contact | Where is legal billing identity approved? | Matched names, emails, addresses, tax details, and Xero contact IDs |
| Product or item | Where are sellable descriptions, codes, accounts, and tax treatment maintained? | Approved item mapping and inactive-item rules |
| Invoice | Which system creates, approves, edits, voids, and numbers it? | Source identifier, approver, totals, status, and Xero invoice link |
| Payment | Where is the bank receipt recorded and reconciled? | Payment date, amount, invoice application, deposit, and bank reconciliation |
| Tax rate | Which system maintains the accounting tax code? | Current Xero rate, mapped line result, and return reconciliation |
Sales may own pipeline facts in HubSpot while accounting owns posted transactions and reconciliations in Xero. Write that division at the property level. “Two-way” is a transport setting, not a substitute for ownership.
Choose the specific Xero integration with HubSpot
The HubSpot marketplace can contain apps built by HubSpot, Xero, and third parties. This guide focuses on the Xero Data Sync app built by HubSpot. Confirm the builder, listing, support owner, shared objects, permissions, data access, and current subscription requirements before installation. A similarly named connector may use a different workflow.
Use a third-party automation or custom API only when the documented native objects and mappings cannot meet a specific requirement. A custom path adds responsibility for authentication, least-privilege scopes, rate limits, retries, idempotency, error monitoring, security, and change management.
Prepare both systems before connecting
Export or report the current contacts, items, open invoices, payments, credits, currencies, and tax rates. Identify duplicates, blank identifiers, reused email addresses, inconsistent item codes, inactive records, and old test data. Preserve record counts and accounting control totals.
In Xero, complete bank reconciliations through a known date and resolve material draft or duplicated transactions. In HubSpot, review lifecycle stages, customer fields, invoice sources, product library, associations, workflows, and users. Freeze unnecessary bulk edits during the initial sync window.
Create a mapping workbook with source field, target field, direction, format, allowed values, conflict winner, blank-value behavior, transformation, owner, and test result. Include contact name structure, company relationships, addresses, currencies, product codes, quantities, tax, discounts, dates, invoice status, and payment status.
Install with controlled permissions
HubSpot currently requires a Super Admin or a user with App Marketplace permissions to connect the app. Use an individual company-controlled administrator, enable multifactor authentication, and review the Xero authorization screen before accepting access. Do not use a departing employee’s login as the permanent integration owner.
For custom applications, Xero documents granular OAuth scopes for contacts, invoices, payments, bank transactions, settings, reports, attachments, and other resources. Request only what the application needs. Store credentials securely, document renewal and revocation, and test what happens if the authorizing user or connection changes.
Configure contacts before dependent records
HubSpot recommends configuring syncs in dependency order because Xero needs the invoice’s contact and products to exist before the invoice can sync. Start with contacts. Choose one-way or two-way behavior, select the conflict winner, inspect every default mapping, and add only justified custom mappings.
Contact matching deserves a controlled pilot. HubSpot and Xero can model people and organizations differently. Test a company with several contacts, a sole proprietor, two contacts sharing a domain, a customer and supplier represented by one Xero contact, and a contact without an email address. Confirm which record matches, which record is created, and whether associations remain meaningful.
Limit the initial outbound population with explicit filters. Do not sync every marketing lead into the accounting contact list. A practical boundary might require an approved customer flag, a qualifying invoice state, or a post-cutover create or modification date. Record why each filter exists.
Configure products and Xero items
Next, choose the direction between Xero items and HubSpot products. Review name, item code, description, price, currency, sales account, tax treatment, and active status. The visible product name is rarely a safe unique key by itself.
Test an ordinary service, a taxable item, a nontaxable item, a retired item, and a description-only invoice line. Confirm whether accounting accounts and tax rates come from Xero configuration rather than unreviewed CRM data. Prevent sales users from creating variants that post to the wrong revenue or tax category.
Configure invoice and payment sync last
Current HubSpot guidance permits Xero-to-HubSpot, HubSpot-to-Xero, or bidirectional invoice sync under the available configuration. It also states that HubSpot-created invoices need to be edited in HubSpot to avoid a sync failure, while Xero-created invoices can be edited in Xero. That ownership difference must be part of the staff procedure.
HubSpot currently applies outbound protections: only invoices whose source is HubSpot, invoices in Open rather than Draft state, and invoices created or modified after the sync begins are sent from HubSpot to Xero. Verify those live rules before relying on them, and test a draft, open invoice, edit, void, credit, partial payment, full payment, overpayment, and failed payment.
A payment-sync status does not prove that cash is reconciled. Trace the Xero payment to the correct invoice, bank or clearing account, deposit, date, and bank statement. Keep the bank reconciliation in Xero as the accounting control.
Test taxes, currencies, and fees explicitly
HubSpot’s current setup guide says Xero tax rates are imported into HubSpot when outbound or bidirectional invoice sync is configured. It also notes that tax rates created in HubSpot do not sync to Xero and later Xero tax-rate changes do not update HubSpot automatically without a configuration refresh or support action. Configure and approve rates in Xero first.
The same current guide lists a limited set of supported currencies and warns that HubSpot credit-card fees do not sync to Xero invoices, which can require manual reconciliation. Do not assume every currency, tax jurisdiction, inclusive-tax method, withholding rule, discount, fee, or rounding outcome is supported. Build a test for each one the business uses.
Illustrative pilot
Assume a consulting company wants a HubSpot to Xero integration when a deal becomes ready for billing. It has 8,000 HubSpot contacts but only 420 customers in Xero. The team does not turn on an unrestricted contact sync.
It cleans 25 pilot customers, maps approved billing fields, and filters outbound contacts to a billing-approved status created after the cutoff. Xero owns item codes, revenue accounts, and tax rates. HubSpot creates an open invoice only after finance approval; Xero remains the place for accounting review and bank reconciliation.
The pilot sends ten invoices containing ordinary services, discounts, tax, multiple lines, and two currencies. Accounting compares customer identity, invoice number, dates, line descriptions, quantities, tax, subtotal, total, status, and Xero account assignment. It applies two test payments and traces both to the bank reconciliation. One duplicate contact is corrected before the filter expands.
Monitor sync health and reconcile exceptions
HubSpot’s CRM sync area reports records in sync, failing, and excluded, plus configuration timestamps. Review each category after the initial sync and on a recurring schedule. Assign an owner and resolution time for failures. Keep evidence of the original record, error, correction, and successful resync.
Timing is not necessarily immediate in both directions. Current Xero integration guidance describes HubSpot-to-Xero changes detected within minutes and Xero-to-HubSpot changes checked at intervals, with an on-demand sync option. Avoid duplicate manual entries while waiting for the documented cycle.
At month-end, reconcile Xero independently. Compare the invoice register, receivable aging, customer balances, payments, credits, tax liability, clearing accounts, and bank deposits with supporting records. HubSpot pipeline and invoice views can support operations, but they do not replace the Xero close.
Common integration failures
- Syncing every HubSpot lead into Xero without a customer-approval boundary.
- Using names rather than stable identifiers to assume contacts or items match.
- Turning on invoices before contacts and products are successfully mapped.
- Allowing both systems to edit the same invoice without a source-ownership rule.
- Assuming a synced payment is reconciled cash.
- Ignoring unsupported currency, tax, fee, credit, or edit behavior.
- Leaving failed and excluded records unowned.
Decision rule
Expand the HubSpot integration with Xero only when a limited pilot produces the correct contacts, products, invoices, payments, tax treatment, associations, and accounting entries; duplicates are controlled; exceptions have owners; and Xero reconciliations remain complete. If any material field or transaction lacks a stable owner and test, keep that flow one-way or manual.
Continue with the Accounting Software and Tools hub, compare a WooCommerce Xero integration, and review broader Xero integrations.
Educational information only. Tax, payroll, and compliance rules change and may vary by jurisdiction. Confirm the current requirements for your facts with the appropriate agency or a qualified professional.
For help reconciling connected bookkeeping workflows, review Steady’s accounting-system support.
Frequently asked questions
What does the HubSpot Xero integration sync?
The current HubSpot-built Data Sync app documents contacts, Xero items and HubSpot products, invoices, and payments applied to invoices. Confirm the current marketplace listing because supported objects and plan requirements can change.
Can HubSpot create Xero invoices?
The current connector supports an outbound or bidirectional invoice configuration under documented conditions. Test source, status, dates, products, tax, currency, edits, and payment handling before live use.
Should contact sync be two-way?
Only when both systems have clear field ownership, reliable matching, duplicate controls, and a tested conflict rule. Otherwise, use a filtered one-way sync.
Where should invoices be edited?
Follow the invoice's source ownership. Current HubSpot guidance says HubSpot-created invoices should be edited in HubSpot to avoid sync failure, while Xero-created invoices can be edited in Xero.
Does the integration reconcile payments?
No. It can share payment information, but accounting must still trace receipts and deposits and complete the bank reconciliation in Xero.
How should a failed sync be handled?
Review the individual record and exact error, correct the source data or mapping, resync, verify the target result, and retain the resolution in an owned exception log.
Turn this guide into action