ml-connector
Sage IntacctWise

Sage Intacct and Wise integration

Sage Intacct manages your accounts payable and general ledger. Wise moves money internationally. Connecting the two lets you fund cross-border AP bills directly from Intacct without switching systems or re-entering supplier details. Payment approval workflows stay in Intacct, execution moves to Wise, and status flows back for reconciliation. ml-connector handles the very different APIs on each side and keeps your audit trail complete.

How Sage Intacct works

Sage Intacct is a cloud-based ERP and accounting system that exposes vendors, AP bills, AP payments, GL accounts, dimensions, and vendor records through an XML gateway endpoint. All operations serialize through a single HTTPS POST to https://api.intacct.com/ia/xml/xmlgw.phtml with Content-Type: application/xml. Authentication is session-based using senderId, senderPassword, companyId, userId, and userPassword. An initial getAPISession call exchanges credentials for a sessionid that is cached for 50 minutes and automatically refreshed on the next operation. HTTP 200 responses may contain application-level errors in the XML body that must be parsed for errormessage tags. Intacct does not push webhooks, so all data flows are polling-driven or manual-run.

How Wise works

Wise is a global payments platform that exposes profiles, balances, transfers, and recipients via REST API over HTTPS with base URLs at https://api.wise.com (production) or https://api.sandbox.transferwise.tech (sandbox). Authentication uses OAuth 2.0 with authorization_code and client_credentials grants and 12-hour token expiry, or a long-lived Personal API Token as a Bearer token. Key entities include profiles, balances, balance statements, recipients, quotes, transfers, and activity logs. Wise supports push webhooks for transfersstate-change, transferspayout-failure, balancesupdate, and balancescredit, with signature verification via X-Signature-SHA256 header using RSA-SHA256 digest. Rate limits are 100 req/sec and 1000 req/min for partner OAuth or 900-1500 req/min for personal token accounts.

What moves between them

The main flow runs from Sage Intacct into Wise. Approved AP bills in Intacct are read on a schedule you control, and ml-connector routes matching payments to Wise for execution. Payment status returns via Wise webhooks or polling to update Intacct's audit trail with settlement confirmation. Vendor and recipient data is mapped in both directions so Intacct payee details align with Wise recipients and the payment route is correct on the first attempt.

How ml-connector handles it

ml-connector manages an Intacct session by calling getAPISession on first run and caching the sessionid for 50 minutes, refreshing on the next operation if expired. AP bill reads and write operations are serialized through Intacct's single XML gateway endpoint. On the Wise side, ml-connector obtains an OAuth2 bearer token, refreshes it before the 12-hour expiry, and presents it on every call. Transfers in Wise are idempotent via the customerTransactionId field, so a retry of a failed fund-payment call does not duplicate a transfer already created. Quote expiry is monitored so a fresh quote is obtained before the original expires and a transfer becomes unfundable. Sage Intacct's forbidden XML control characters are stripped before serialization. Wise rate limits trigger HTTP 429, so ml-connector backs off and retries. Payment receipts flow back to Intacct via Wise webhook events or polling to close the AP bill and create the reconciliation record.

A real-world example

A mid-sized import-export company runs Sage Intacct for accounting and payables. Vendors span multiple countries and invoice in local currencies. Before the integration, the AP team approved bills in Intacct, then switched to Wise to initiate cross-border payments, converting currencies manually and cross-checking vendor bank details in both systems. Duplicate entry and currency conversion errors were common, and month-end reconciliation required manual matching of Intacct closures to Wise confirmations. With Sage Intacct and Wise connected, approved AP bills in Intacct trigger payment execution in Wise with vendor details and currency conversion automatic. Payment confirmation flows back to Intacct and closes the payable immediately, eliminating duplicate entry and reducing reconciliation time.

What you can do

  • Read approved AP bills from Sage Intacct and route the matching payment amount to Wise for cross-border execution with currency conversion.
  • Map Intacct vendors to Wise recipients so payee details are correct and consistent across both systems.
  • Manage Intacct session authentication and caching, refreshing the session before it expires after 50 minutes.
  • Obtain and refresh Wise OAuth2 bearer tokens and handle idempotent transfer creation using the customerTransactionId field.
  • Receive Wise payment status via webhooks or polling and post the settlement confirmation back to Intacct's audit trail.

Questions

How does ml-connector handle Sage Intacct's session-based XML gateway and Wise's REST API?
ml-connector calls Intacct's getAPISession endpoint once, caches the sessionid for 50 minutes, and automatically refreshes it on the next operation if expired. All subsequent Intacct reads and writes serialize through the single XML gateway endpoint. On the Wise side, ml-connector obtains an OAuth2 bearer token, refreshes it before the 12-hour expiry, and presents it on every REST call.
What prevents duplicate payments if a Wise transfer request is retried?
Wise transfers are idempotent via the customerTransactionId field. ml-connector includes a unique identifier on each transfer creation request, so if a fund-payment call is retried after a timeout, Wise recognizes the existing transfer and does not create a duplicate.
How does the integration handle Wise quote expiry and currency conversion?
Wise quotes expire and must be refreshed before a transfer can be funded. ml-connector monitors quote age and obtains a fresh quote before the original expires. Currency conversion is handled by Wise at the time of quote creation, so the amount and rate lock at that moment and remain stable through funding.

Related integrations

Connect Sage Intacct and Wise

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

Get started