Stablecoin API v1.0.6 โ Release Notes
๐ Stablecoin API Update v1.0.6 is now live! ๐
This release adds six preview off-ramp currencies in Production โ ๐น๐ฟ TZS, ๐ XOF (West Africa), ๐ XAF (Central Africa) and ๐ณ๐ต NPR, alongside the ๐ฟ๐ฒ ZMW and ๐บ๐ฌ UGX schemas โ and clarifies the USD international wire field rules.
โจ What's New
- ๐น๐ฟ TZS (Tanzanian Shilling) โ preview, mobile money & bank account rails
- ๐ XOF (West African CFA Franc) โ preview, mobile money in ๐ง๐ฏ BJ, ๐ง๐ซ BF, ๐จ๐ฎ CI, ๐ธ๐ณ SN; bank transfers in CI & SN
- ๐ XAF (Central African CFA Franc) โ preview, mobile money in ๐จ๐ฒ CM, ๐ฌ๐ฆ GA, ๐จ๐ฌ CG; bank transfers in CM only
- ๐ณ๐ต NPR (Nepalese Rupee) โ preview, fixed-field bank account
- ๐ฟ๐ฒ๐บ๐ฌ ZMW & UGX request/response schemas now documented (still preview)
- ๐บ๐ธ USD international wire โ
account_number/ibanmutual exclusivity now documented - ๐
transfer_methodnow returned on USD remote bank account responses - ๐
completion_redirect_urlon the Plaid bank link request
โ ๏ธ New Currencies Are Preview โ Available in Production
TZS, XOF, XAF, NPR, ZMW and UGX are live in both Sandbox and Production. The request and response schemas documented below are stable, so you can integrate against them now.
These are preview corridors, which means they are enabled per merchant rather than on by default. Please talk to your Bakkt contact to have them switched on for your account, and to agree limits before you send production traffic.
All currency schemas below are available on both the user and corporate remote bank account endpoints:
POST /stablecoin/user/bank-account/remote
POST /stablecoin/corporate/{corporate_uuid}/bank-account/remote
๐น๐ฟ Tanzanian Shilling (TZS) โ Preview
TZS off-ramps use the same mobile-wallet / bank-account rail model as KES, GHS, ZMW and UGX, on both the user and corporate endpoints.
| Rail | is_mobile_wallet | Required fields |
|---|---|---|
| Mobile wallet | true (default) | currency + recipient_phone_number |
| Bank account | false | currency + is_mobile_wallet + account_number + swift_code |
The mobile money phone number is given in country calling code format without the leading plus.
Example โ mobile wallet
{
"account_details": {
"currency": "TZS",
"is_mobile_wallet": true,
"recipient_phone_number": "255754123456"
}
}Example โ bank account
{
"account_details": {
"currency": "TZS",
"is_mobile_wallet": false,
"account_number": "0150123456700",
"swift_code": "CORUTZTZXXX"
}
}Supported mobile money operators include Vodacom M-Pesa, Airtel and Tigo. Retrieve the live list with GET /stablecoin/banks?currency=TZS.
๐ West African CFA Franc (XOF) โ Preview
XOF is shared by the eight WAEMU countries, so coverage differs by country rather than by currency. The recipient's country is derived from the account details โ you do not pass it separately.
| Country | Code | Mobile money | Bank account |
|---|---|---|---|
| Benin | BJ | โ | |
| Burkina Faso | BF | โ | |
| Cรดte d'Ivoire | CI | โ | โ |
| Senegal | SN | โ | โ |
Guinea-Bissau, Mali, Niger and Togo use XOF but are not currently supported.
Rails
| Rail | is_mobile_wallet | Required fields |
|---|---|---|
| Mobile wallet | true (default) | currency + recipient_phone_number |
| Bank account | false | currency + is_mobile_wallet + account_number |
- Mobile wallet โ the country comes from the dialling code of
recipient_phone_number, which must be in international format with a leading plus and resolve to BJ (+229), BF (+226), CI (+225) or SN (+221). - Bank account โ the country comes from
account_number, which is either a 24-character WAEMU RIB or the equivalent 28-character IBAN, and must resolve to CI or SN.swift_codeandbank_nameare optional and only used to help resolve the bank when the account number is ambiguous.
โ ๏ธ XOF has no minor unit, so payout amounts must be whole numbers.
Example โ mobile wallet
{
"account_details": {
"currency": "XOF",
"is_mobile_wallet": true,
"recipient_phone_number": "+221771234567"
}
}Example โ bank account
{
"account_details": {
"currency": "XOF",
"is_mobile_wallet": false,
"account_number": "CI93CI0080111301134291200589",
"swift_code": "ECOCCIAB",
"bank_name": "Ecobank"
}
}Supported mobile money operators include MTN, Moov, Orange and Wave. Retrieve the live list with GET /stablecoin/banks?currency=XOF.
๐ Central African CFA Franc (XAF) โ Preview
XAF is also shared by several countries, but unlike XOF the recipient's country is required and cannot be inferred from the currency.
| Country | Code | Mobile money | Bank account |
|---|---|---|---|
| Cameroon | CM | โ | โ |
| Gabon | GA | โ | |
| Republic of the Congo | CG | โ |
Rails
| Rail | is_mobile_wallet | Required fields |
|---|---|---|
| Mobile wallet | true (default) | currency + country + recipient_phone_number |
| Bank account | false | currency + country + is_mobile_wallet + account_number + bank_code |
- Mobile wallet โ available in
CM,GAandCG. Supplyrecipient_phone_numberincluding the country dialling code. - Bank account โ available in Cameroon only, so
countrymust beCM. Account numbers are the 23-digit Cameroon RIB (5-digit bank code, 5-digit branch code, 11-digit account number and a 2-digit key).swift_codeis optional, since many Central African banks do not publish one.
Example โ mobile wallet
{
"account_details": {
"currency": "XAF",
"country": "CM",
"is_mobile_wallet": true,
"recipient_phone_number": "237651234567"
}
}Example โ bank account
{
"account_details": {
"currency": "XAF",
"country": "CM",
"is_mobile_wallet": false,
"account_number": "10005000112345678901234",
"bank_code": "85526075",
"swift_code": "ECOCCMCX"
}
}Supported mobile money operators include MTN, Orange, Moov and Airtel. Retrieve the live list with GET /stablecoin/banks?currency=XAF.
๐ฟ๐ฒ๐บ๐ฌ ZMW & UGX Schemas Now Documented โ Still Preview
ZMW and UGX were announced as preview currencies in v1.0.5 and remain preview, available in Production to merchants who have been enabled for them โ as described in v1.0.5. Their full request and response schemas are now published in the API reference, alongside:
account_detailsvariants for both the mobile wallet and bank account rails- Inclusion in the exchange rate, fee estimate and fee override currency enums
GET /stablecoin/banks?currency=ZMW/?currency=UGXfor the supported bank and mobile money operator listRTGSdocumented as the supportedpayment_methodfor ZMW and UGX onGET /feesandGET /onramp/indicative
| Currency | Mobile money operators |
|---|---|
| ZMW | MTN, Airtel, Zamtel |
| UGX | MTN, Airtel, Tigo |
๐ณ๐ต Nepalese Rupee (NPR) โ Preview
NPR is available as a preview off-ramp currency and uses the fixed-field bank account shape.
Required fields
currency, account_number, swift_code, bank_name, recipient_relationship, remittance_purpose
Example
{
"account_details": {
"currency": "NPR",
"account_number": "0123456789012",
"swift_code": "NBOCNPKA",
"bank_name": "NEPAL BANK LIMITED",
"recipient_relationship": "Self",
"remittance_purpose": "Gift"
}
}๐บ๐ธ USD International Wire โ Mutual Exclusivity Clarified
The INT_WIRE rules are now stated explicitly: provide swift_code plus exactly one of account_number or iban โ the two are mutually exclusive โ and routing_number must not be provided.
To reflect this, account_number has been dropped from the schema-level required list on the USD โ International Wire (Account Number) variant, since requiring it there conflicted with the IBAN alternative.
| Schema-level required fields | |
|---|---|
| Before | currency + transfer_method + swift_code + account_number |
| After | currency + transfer_method + swift_code |
โ ๏ธ This is a documentation correction, not a relaxation โ you must still supply one of account_number or iban. Existing payloads continue to work unchanged.
๐ Remote Bank Account Response Changes
transfer_method returned for USD accounts
transfer_method returned for USD accountsUSD remote bank account responses now include transfer_method, echoing the payment rail the account was registered with (ACH, WIRE, INT_WIRE or INSTANT_PAYMENT). It is null for accounts created before the rail was persisted.
Removed response fields
Two deprecated fields that were never populated have been removed from remote bank account responses:
| Field | Where |
|---|---|
beneficiary_bank_address | Top level of the remote bank account response |
customer_details | The INR, MXN, ARS, BRL, COP, JPY, CAD and "other remittance currencies" account_details variants |
This is a documentation correction โ the API never returned values for these fields, so there is no behaviour change. The unused recipient_bank_address โ beneficiary_bank_address request field mapping has been removed alongside it.
๐ข Corporate Bakkt Account Closure โ Now in the API Reference
The corporate Bakkt bank account closure endpoint announced in v1.0.5 is now documented in the API reference:
POST /stablecoin/corporate/{corporate_uuid}/bank-account/bakkt/{account_uuid}/close
๐ Plaid Bank Link โ completion_redirect_url
completion_redirect_urlPUT /stablecoin/user/linked-bank-account/link now accepts an optional completion_redirect_url. When provided, this HTTPS URL is where the user is redirected after completing Plaid Hosted Link, replacing the merchant Plaid redirect URL or the default for that session.
{
"currency": "USD",
"completion_redirect_url": "https://your-app.example.com/bank-link/complete"
}๐ Documentation Fixes
- ๐ณ๐ฌ The NGN
bank_codeexample has been corrected fromNBPto a valid 3-digit code (058). - ๐ฆ Common mobile money operators are now listed per currency in the supported assets guide, with a pointer to
GET /stablecoin/banks?currency=โฆfor the live, authoritative list.
๐ Let us know if you need help enabling the new preview corridors or integrating these updates!
