How do I reconcile Airwallex cross-border settlements across currencies?
Airwallex settles like-for-like: money received in a currency stays in a balance held in that currency, rather than auto-converting to one home currency. Reconciliation must match a transaction's settlement currency, not assume every payout lands in a single reporting currency — a mismatch here looks like a missing payout, not a currency problem.
Part of the finance integrations guide.
| Symptom | A payout amount doesn't match the invoice amount, even though the invoice was paid in full |
|---|---|
| Root cause | The payout settled in a different currency than the one reconciliation assumed |
| What Airwallex's own docs say | Airwallex Accounts provide "like-for-like settlement for multiple currencies" |
| Related product | Transactional FX — interbank FX rates for currency conversion when it's actually needed |
| Where to check | Each transaction's settlement currency field, not just its amount |
Why a payout can be "correct" and still not match
Airwallex's Accounts product is built around holding multi-currency balances rather than forcing every payment into one reporting currency. Its documentation describes this explicitly as like-for-like settlement for multiple currencies: a payment received in EUR settles into a EUR-denominated balance, a payment received in GBP settles into a GBP balance, and so on. Nothing about that is a bug — it's the product working as designed. The problem shows up when a reconciliation process assumes every payout arrives in a single currency (the business's home currency, say USD) and doesn't check the settlement currency field before comparing amounts.
Where actual currency conversion happens instead
When conversion is genuinely needed — moving funds from a EUR balance to pay a USD-denominated expense, for example — that's a distinct, deliberate action through Airwallex's Transactional FX product, which exposes interbank FX rates for exactly that purpose. It doesn't happen implicitly as part of receiving a cross-border payment. That separation is what makes a currency mismatch diagnosable: if a transaction's settlement currency matches what was invoiced, no conversion should be expected anywhere in the flow; if it doesn't, the FX conversion (and its rate, and its own transaction record) has to be found and reconciled as its own event, not folded into the original payout.
How to reconcile it correctly
Match on settlement currency first, amount second. An invoice issued in EUR should be reconciled against a EUR settlement for the EUR amount — if the business's books are kept in USD, that's a separate GL-side conversion at the accounting system's own rate, not something to expect Airwallex's payout amount to already reflect. If an FX conversion did happen deliberately (funds moved between currency balances), its own transaction record and rate need to be pulled in as a second leg of the reconciliation, not merged into the original payout's numbers.
Next step
Map the finance workflow with the most exposure and prove the automation path.
Bring the invoice, contract, payment reconciliation, or customer finance workflow you have to defend at audit. Loopfour can map the trigger, controls, integrations, and approval loop.
Worked example
A EUR invoice, a EUR payout, and a USD-denominated books that don't 'tie' at first glance
A customer in Germany pays a €5,000 invoice. Airwallex settles it like-for-like into the business's EUR-denominated balance — the payout record shows €5,000, settlement currency EUR. If the reconciliation process is only looking for a USD amount close to the invoice's USD-equivalent value at invoice time, €5,000 doesn't match anything and looks like a missing or short payout. It isn't: the payout is complete and correct in its own currency. The GL conversion to USD (at whatever rate the accounting system applies on the books-close date) is a separate step downstream of reconciliation, not something the Airwallex payout record itself needs to account for.
Frequently Asked Questions
Sources
Related
Integration
How do I reconcile Stripe payouts across multiple currencies in NetSuite?
Reconcile each currency's payouts separately, against a bank account held in that currency, rather than converting to base currency up front. Stripe settles each currency independently, and NetSuite needs the transaction-currency amount preserved so its own revaluation, not a manual conversion, produces the base-currency gain or loss.
Read moreTopic
Integrations
Every finance automation vendor publishes an integrations page: a grid of logos, a claim of "seamless" connectivity, and not much else. That page answers a marketing question — does this vendor touch…
Read moreDiagnostic
What breaks when Airwallex webhooks arrive out of order during payout reconciliation?
Airwallex does not guarantee webhook delivery in the order events were generated. A deposit.settled event can arrive before the deposit.pending event that should precede it, so reconciliation logic that assumes sequential arrival can build a match against incomplete state. Order by each event's created_at timestamp and deduplicate by its id, not by arrival order.
Read moreHow-to
How do I set up Airwallex webhook-driven reconciliation?
Register a notification URL with Airwallex and choose which event types to receive, over HTTPS with your server allow-listing Airwallex's webhook IPs. Verify every request's HMAC signature before trusting it, and handle events idempotently by tracking each event's id — Airwallex retries failed deliveries and doesn't guarantee order, so your reconciliation logic has to tolerate both.
Read more