Before you start
403s rather than anything you can fix in code.
1. Open the account
Three fields are required:name, type, and currency.
code or reason. Tier denials report reason and carry no code at all, which is the one place the error contract varies.
A 201 returns the account:
transferReadyisfalse. The account exists and is active, but nothing outside Sakawave can pay it yet. That is the next step.tagwas minted for you. Two letters and ten digits, the last a check digit. It is public and unique across Sakawave: another business can pay this account by tag alone.balanceis the string"0", in minor units. Never do arithmetic onbalanceFormatted.
2. Issue a funding destination
{"chain": "BASE_MAINNET"}.
201 returns the destination:
202 means the provider accepted the request and is still working. There is no body. Poll GET /v1/accounts/{accountId}/details until the detail appears, or wait for the account.detail.created webhook.
3. Confirm it is payable
GET on a single account is the only read that includes details. You are looking for two things: transferReady is now true, and details has at least one entry. Publish that entry’s accountNumber to whoever will be funding the account.
If it failed
Next
- Currencies and funding rails — what you may hold, and how it is funded
- Use cases — customer wallets, reconciliation, and the
202path - Make a transfer