POST /wallets, fund it, and withdraw with a quote and transaction. The difference is where the balance lives. A fiat wallet is an internal ledger balance with no network and no onchain address, and its ID uses the wlt_fiat_ prefix.
Before you start
Fiat wallets must be enabled for your project, along with the internal book-transfer rail they settle on, and the customer must be registered with the partner bank.POST /wallets returns 403 EreborConfigMissing or 403 destinationRailNotAllowed when the project is not set up, and 400 EreborCustomerNotMapped when the customer is not registered. Contact us to enable fiat wallets.
Create a fiat wallet
usd is the only supported asset; any other asset returns 422 UnsupportedAsset. A customer can hold a limited number of fiat wallets, and a create past that limit returns 409 FiatWalletLimitReached.
The wallet starts preallocated and becomes active once the partner bank opens the backing account. The wallet.provisioned webhook fires when the wallet is first recorded, while it is still preallocated, so it does not signal activation. Read GET /wallets/{id} to confirm the wallet is active before you use it.
Fund it
A fiat wallet is funded the same way OMS delivers to any destination: point a virtual account or a deposit address at it with awalletFiat destination.
- From a bank transfer: a virtual account with a
walletFiatdestination credits each inbound deposit to the wallet. - From crypto: a deposit address with a
walletFiatdestination converts inbound USDC or USDT and credits the USD.
network: bookTransfer. The wallet must belong to the same customer as the virtual account or deposit address.
Withdraw to a bank account
Withdraw the same way you would from a custodial wallet: create a quote with the fiat wallet as thesource, then execute it.
POST /quotes, then call POST /transactions with the returned quoteId. The destination can be any registered bank external account: bankUs, bankIban, or bankCanada. The transaction’s sourceToDestination is fiatAccountToFiatAccount.
Sending from a fiat wallet to a crypto destination is not supported in this release. A quote with a fiat wallet source and a crypto destination returns
CryptoOutNotSupported.Read the balance
GET /wallets/{id} accepts a wlt_fiat_ ID and returns the wallet with type: fiat. A fiat balance always renders as a decimal string with two places: "0.00" for a wallet that has never been funded, and a negative value such as "-25.00" if the wallet is overdrawn. To list a customer’s transactions on the wallet, call GET /transactions?walletId=wlt_fiat_....
Related
- Custodial wallets: OMS-held stablecoin balances
- Entities and relationships: how wallets, quotes, and transactions fit together
- Create a wallet: API reference for
POST /wallets