Why
We only operate US Airwallex Global Accounts, and a US Global Account accepts only USD (sandbox: country_code: US with EUR/GBP/HKD/SGD over LOCAL or SWIFT → 400 ensure currency is one of [USD]). The deposit-cash picker still offered EUR/GBP/HKD/SGD, which either failed at Airwallex or hit per-country quota (NO_MORE_VBA_ALLOWED).
What
-
BE
airwallex/constants/currency-country.ts: USD-only allow-listisDepositCurrencyEnabled. Country/transfer-method maps unchanged; re-enable a currency by adding it to the list. -
BE
getDepositCurrenciesreturns only enabled currencies (the FE picker is driven by it, so old app builds get USD only too). -
BE
getOrCreateDepositAccountreturns 400<CODE> deposits are not available. Please deposit in USD.for a disabled currency — after the early return for existing ACTIVE/PROCESSING rows, before the KYC gate, any DB write and any Airwallex call. - FE deposit cash amount/account forms show a 400's server message instead of the generic "try again" (amount form: no retry button).
KYC country is intentionally not restricted: a user from any country gets the same US USD account; senders abroad pay in USD over SWIFT.
Notes
- Staging users with an ACTIVE non-USD account (a few HKD) can no longer reach its details from the picker; incoming deposits still credit. Prod has none.
- Release: BE first (staging auto-deploy), FE change via OTA.
Tests
-
yarn jest src/modules/airwallex169/169;pnpm jest src/components/deposit110/110; mutation-checked. - Opus review gate: PASS after 2 rounds (round 1 SHOULD-FIX on FE 400 handling fixed; hard-coded "USD" hint kept by design).