HubSpot Xero integration that turns closed deals into invoices
The HubSpot Xero integration from Adapters turns a closed-won HubSpot deal into a Xero invoice, matches the HubSpot company to a Xero contact, and writes the invoice and payment status back onto the deal, so sales and finance stop rekeying the same order. Setup is no-code.
No credit card required.
Field mapping auto-plugged · tap a port to rewire
Plug a source port into
Transform on this cable
JSON in
JSON out
5 sample records ready
Last updated September 2026
What running HubSpot to Xero by hand costs you
- Finance rekeys every closed-won deal from HubSpot into Xero, which is slow and error-prone.
- A deal marked won in HubSpot gives sales no view of whether the customer has actually paid.
- Company and contact records drift between the CRM and the accounting ledger over time.
The field mapping, out of the box
These cables are pre-wired when you pick the pair. Rewire any of them, or add your own, in the same visual data mapping tool you use for every adapter.
Input / HUBSPOT
Output / XERO
Transforms included
A deal that reaches your chosen closed-won stage creates a Xero invoice; the HubSpot company matches or creates a Xero contact by name and domain, deal amount casts to a Xero line total, and Xero payment status writes back to a HubSpot property so the deal shows paid or outstanding.
HubSpot to Xero in depth
Two allocations decide this integration and they are shaped very differently: HubSpot meters a large daily budget with a short burst window, while Xero enforces a hard 5,000 calls per day per organization. Read from developers.hubspot.com and Xero developer documentation, current as of 30 August 2026.
HubSpot private app limits, burst and daily
A private app gets 100 requests per 10 seconds on Free and Starter and 190 per 10 seconds on Professional and Enterprise. Daily, per account, the allocation is 250,000, 625,000 and 1,000,000 across those tiers. A public OAuth app is metered differently at 110 requests per 10 seconds per installing account. The burst window is what you code against, because ten seconds is short enough that a naive loop breaches it long before the daily figure matters.
HubSpot documents two different Professional figures
Worth knowing before you build a capacity model on it. HubSpot changelog material has stated 650,000 for the Professional daily allocation while the API guidelines table states 625,000. We publish the table figure and flag the discrepancy rather than silently choosing one, because a plan built on the higher number has no margin if the lower one is enforced. Design to the smaller figure and the question stops mattering.
The CRM Search API has its own much smaller limit
This is the limit that surprises teams, because it is nowhere near the headline numbers. CRM Search is capped at 5 requests per second, returns 200 records per page, and refuses to return more than 10,000 results for any single query. An integration that finds Xero-eligible deals by searching will hit all three. Partition the search by date range or owner so no single query can exceed 10,000 results, rather than paging deeper and finding the wall at record 10,001.
Xero is the tighter end by a wide margin
Xero allows 5 concurrent calls, 60 per minute and 5,000 per day per connected organization. Against HubSpot Professional at 625,000 calls a day, the Xero side is smaller by two orders of magnitude, so every design decision should be made from the Xero end backwards. Read broadly from HubSpot, batch aggressively, and write to Xero as few times as the accounting outcome allows.
Batch on both sides, but know what batching does not fix
HubSpot batch endpoints accept 100 records per request, which is the single most effective change you can make to a HubSpot read loop. One caveat that costs real time: partial upserts are not supported when using email as the idProperty for contacts, so a batch upsert keyed on email behaves differently from one keyed on the record id. Decide the key deliberately rather than discovering the difference in production data.
Map the deal to the invoice, not the contact to the customer
The instinct is to sync contacts into Xero as customers, and it produces a contact list full of people who never buy anything. The useful direction is a closed-won deal becoming a Xero invoice, with the associated company becoming the Xero contact. That keeps the ledger populated with entities that have financial history, and it means the sync fires on a state change you can detect rather than on every edit anyone makes in the CRM.
Webhooks for the trigger, polling for the truth
HubSpot allows 1,000 webhook subscriptions per app and webhooks do not consume the API allocation, which makes them the right way to learn that a deal closed. They are not a system of record: deliveries can be missed or reordered. Use the webhook to trigger the work and a periodic reconciliation pass to catch anything the webhook did not deliver, which costs a handful of the 5,000 daily Xero calls and removes a whole class of missing invoices.
Where this sits in a wider stack
The full HubSpot allocation table and the failures teams conflate as one 429 are on HubSpot integration tools. If the accounting destination is QuickBooks rather than Xero, the concurrency ceiling behaves differently and is documented on QuickBooks integration tools.
How it goes live
Three steps, minutes end to end, covered by flat data integration pricing from $49 a month.
STEP 01
Pick the pair
Connect HubSpot and Xero with scoped credentials. About a minute each.
STEP 02
Confirm the mapping
The cables above are pre-wired. Adjust any field, preview the transform on sample records, done.
STEP 03
Schedule the sync
Hourly down to every minute, with retries, alerting, and a full log on every run.
HubSpot to Xero sync: common questions
Does HubSpot integrate with Xero?
There is a HubSpot and Xero connection, but what most teams want goes further than the basic app: a closed won HubSpot deal creating a correctly coded Xero invoice with line items, tax and the right contact. A connector maps deal properties and line items to Xero invoice fields and matches the contact on email or an external ID.
How do I create a Xero invoice from a HubSpot deal?
Trigger on the deal reaching closed won, then map deal line items to Xero invoice line items, the associated company to a Xero contact, and the deal owner or pipeline to a tracking category. Store the Xero invoice ID back on the HubSpot deal so a re-run updates the existing invoice instead of creating a duplicate.
How do you avoid duplicate contacts between HubSpot and Xero?
Match on a stable key and write the result back. Email works as a first pass but breaks when someone uses a different address for billing. The reliable pattern is to store the Xero contact ID as a HubSpot property on first sync and match on that afterwards, falling back to email only for records that have never synced.
Should payment status flow from Xero back into HubSpot?
It usually should. Sales asking finance whether an invoice was paid is one of the most common internal delays. Writing the Xero invoice status and paid date back onto the HubSpot deal or company record gives account managers the answer without a Xero login, and it is a much smaller build than a full two way sync.
How does the HubSpot to Xero sync work?
The HubSpot Xero integration from Adapters turns a closed-won HubSpot deal into a Xero invoice, matches the HubSpot company to a Xero contact, and writes the invoice and payment status back onto the deal, so sales and finance stop rekeying the same order. Setup is no-code.
Is there a prebuilt HubSpot connector for Xero?
Yes. This HubSpot to Xero connector ships prebuilt: the field mapping is wired the moment you pick the pair, transforms are included, and you can try it against sample records in the live demo. No code or engineering sprint required.
How much does the HubSpot Xero integration cost?
Pricing is flat and monthly: Starter at $49, Growth at $149, Scale at $399. Every plan includes this pair, visual field mapping, and per-record logs. There are no per-task or per-row fees, so the bill stays the same as volume grows.
How often can Adapters sync HubSpot to Xero?
Hourly on Starter, every 5 minutes on Growth, and down to every minute on Scale. Failed records retry automatically with backoff, and alerting plus a full per-record log come standard on every run.
Do I need to write code to connect HubSpot and Xero?
No. Fields are auto-mapped the moment you pick the pair, and you can rewire any mapping visually before the first sync. A deal that reaches your chosen closed-won stage creates a Xero invoice; the HubSpot company matches or creates a Xero contact by name and domain, deal amount casts to a Xero line total, and Xero payment status writes back to a HubSpot property so the deal shows paid or outstanding.
More pairs from the API connector library
Browse the full api connector library, or request a pair you do not see.
HubSpot and Xero, finally in agreement
Map the pair once and let it sync on schedule. Flat price from $49 a month, no per-task fees.
No credit card required.