ml-connector
XeroWise

Xero and Wise integration

Xero handles your accounting and vendor management. Wise executes international payments and currency transfers. Connecting the two keeps your accounts payable ledger in sync with the actual payments made, and moves foreign supplier invoices from record to cash without manual handoffs. New vendor invoices in Xero map to Wise recipients and trigger transfers on your schedule. When Wise completes a transfer, the confirmation flows back to Xero to mark the payment as sent and reconcile the bank account.

How Xero works

Xero is a cloud accounting platform that exposes invoices, purchase orders, contacts, payments, accounts, and bank transactions through the Xero Accounting API. It uses OAuth2 with refresh tokens that expire every 60 days and requires a Xero-tenant-id header on each request to target the correct organization. Xero publishes webhooks for invoices, payments, and bank transactions (CREATE and UPDATE events), but webhooks contain only metadata and require a follow-up GET to fetch the full record. It also supports delta sync via If-Modified-Since headers for polling. Xero enforces strict rate limits: 5 concurrent calls and 60 per minute per tenant.

How Wise works

Wise is a global payments platform that exposes profiles, balances, recipients, transfers, and activity through the Wise Platform API. It authenticates via OAuth2 (with 12-hour token expiry and long-lived refresh tokens) or a personal API token with no expiry. Wise publishes webhooks for transfer state changes, payout failures, balance updates, and profile changes, with signatures verified by RSA-SHA256. Payment execution follows a 4-step sequence: create a quote, define a recipient, create a transfer order, and fund the payment. Recipients are immutable and quotes expire, so they must be refreshed if not funded within the deadline. Wise enforces rate limits of 100 requests per second and 1000 per minute for partner OAuth.

What moves between them

The primary flow runs from Xero to Wise. Vendor invoices and bills in Xero map to recipients in Wise, and approved payments in Xero trigger multi-step transfer creation in Wise: quotes for the currency conversion, recipients for the payee details, and transfer orders funded from Xero's account balance. Transfer confirmations and state changes flow back to Xero to update payment status and reconcile the bank account and cash flow statements. Balance updates from Wise also feed into Xero to keep multi-currency account balances aligned.

How ml-connector handles it

ml-connector stores both credential sets encrypted and manages the OAuth2 flow for each system independently: Xero tokens expire every 30 minutes and are refreshed automatically, while Wise tokens expire every 12 hours. On the Xero side, ml-connector subscribes to invoice and payment webhooks and polls bank transactions to catch changes that might not trigger webhooks. When a Xero invoice is marked for payment to an international supplier, ml-connector maps the vendor to a Wise recipient (creating it if necessary), generates a quote to lock in the exchange rate, creates the transfer order, and funds it from the configured Xero bank account. When Wise confirms the transfer state change via webhook, ml-connector updates the Xero payment record with the Wise transfer ID and marks it as sent. Wise quotes expire and recipients are immutable, so ml-connector monitors quote expiry and recreates quotes if a transfer is cancelled and refunded. The Xero-tenant-id header is included on every Xero call to target the correct organization. Every record carries a full audit trail and can be replayed if a downstream call fails.

A real-world example

A services firm with international contractors and overseas vendors uses Xero for accounting and Wise for international payments. Before the integration, the accounts payable team entered foreign vendor invoices into Xero, approved them, then manually created transfers in Wise, entered the Wise transfer reference back into Xero, and reconciled the bank account by hand at month-end. With Xero and Wise connected, invoices flow from Xero to Wise on approval, transfers execute automatically on a weekly schedule, and reconciliation happens without re-keying. The team redirects time from payment processing to vendor relationship management.

What you can do

  • Map Xero vendors to Wise recipients and create recipients automatically when new suppliers appear in Xero.
  • Execute multi-currency transfers from Xero invoices: generate a Wise quote, create a recipient, and fund the transfer on a schedule you control.
  • Reconcile Xero bank accounts with Wise transfer confirmations, automatically matching payments to transfers by reference ID.
  • Authenticate Xero with OAuth2 and Xero-tenant-id header, and Wise with OAuth2 or a long-lived personal API token.
  • Poll Xero bank transactions and subscribe to webhooks for invoices and payments, with retries and a full audit trail on every transfer.

Questions

How does ml-connector handle Xero and Wise authentication?
Xero uses OAuth2 with 30-minute token expiry and requires a Xero-tenant-id header on every request. Wise uses OAuth2 with 12-hour token expiry or a personal API token with no expiry. ml-connector manages token refresh independently for each system, so authorization stays valid for long-running payment schedules.
What happens when a Wise quote expires?
Wise quotes expire if not funded within the deadline. ml-connector monitors quote expiry and recreates a fresh quote with the current exchange rate before funding the transfer. If a transfer is cancelled and refunded, the original quote is no longer usable, so a new one is generated automatically.
How are Xero invoices matched to Wise recipients and transfers?
ml-connector maps Xero vendors to Wise recipients by name and creates new recipients in Wise when a Xero vendor has no existing match. When a Xero invoice is approved for payment, ml-connector looks up the recipient, generates a quote for the currency pair, creates the transfer order, and funds it. The Wise transfer ID is stored in Xero as a reference for reconciliation.

Related integrations

Connect Xero and Wise

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started