1. Build the pickers your other calls depend on
Three pickers, three calls, all cacheable.jurisdiction and address.country on a customer from the country list, and the currency field on an account from the capability-filtered currency list. Both refusals — an unserviceable jurisdiction, a currency closed for issuance — then become impossible to reach from your UI.
The country list is what Sakawave will onboard. It is not the list of places you can pay. For payouts, ask for routes.
2. Drive a payout form from field descriptors
This is the single most valuable thing in the service. A route tells you exactly what to collect, so you never have to hardcode a country’s banking fields.fields when creating a payment detail, alongside the route’s id:
institutionDirectoryEnabledmeans Sakawave resolves the institution code to a canonical name. Submit the code fromoptions; do not ask the user to type a bank name.minimumAmountandmaximumAmountare in minor units and are per route. Validate against the route the user actually selected, not against a global constant.
3. Precheck before you attempt
A cross-currency payout reads four switches and a corridor. Checking them yourself turns a mid-flow409 into a disabled button.
409 fx_corridor_unavailable regardless of what your precheck said.
4. Keep the cache honest
Reference data emits no events, so a stale cache is silent until it causes a failure. Two mechanisms, both cheap: Scheduled refresh. Once an hour for currencies and routes, once a day for countries. Compare against what you held and log the difference — a route disappearing is worth knowing about before a customer meets it.409 currency_capability_unavailable or 409 fx_corridor_unavailable comes back, refresh before retrying anything. The error is the authority; the cache never is.
What you cannot ask this service
- Whether you may use a currency. Capability is platform-wide. Your verification, international access, and tier are checked by accounts, and they fail with
403, not409. - Which FX pairs are wired. There is no corridor listing for conversion.
- Which provider handles a route. The corridors endpoint withholds it deliberately; the routes endpoint currently returns
providerandserviceCode, but they are internal detail and may be withdrawn — do not branch on them. - Live rates. Quotes come from FX quotes.