Create a Deposit Address
Create a Deposit Address. Requires deposit addresses to be enabled for your
project and the customer to be provisioned with the banking provider. The
address starts pending and becomes active once the inbound on-chain
address is assigned.
A destination the project is not permitted to deliver to is rejected with
403 destinationRailNotAllowed before any address is provisioned: the
project’s outgoing-rail allow-list denies the bank rail, or the routes
table has no permitted/enabled route for the requested crypto network. The
error body carries details: { network } — the denied bank rail (e.g.
wire) or crypto network (e.g. polygon). (Not modeled as a typed error
arm here so the other 403 codes on this operation — e.g.
vendorConfigMissing, ereborConfigMissing — keep their shape.)
Authorizations
Token from POST /auth/token
Headers
Required on POST and PUT requests. Use a unique value per logical mutation attempt, for example a UUID.
Body
Create a Deposit Address: the expected inbound asset/network pair plus the bank destination that receives the converted funds.
Owning customer (cus_… or legacy public id).
Asset of the inbound crypto the DA expects. "usdc" | "usdt" (lowercase).
Network of the inbound crypto the DA expects. A closed allowlist —
ethereum | base | solana. Any other value (arbitrum, optimism,
polygon, ink, sui, …) is rejected with expectedSourceNetworkUnsupported.
Side-shaped destination. Fiat: bankUs / bankIban / bankCanada registered External Account (cryptoToFiatAccount). Crypto: walletOms (OMS wallet) or walletExternal (registered ExternalAccount) delivers crypto onward (cryptoToCrypto; routes-table gated to ethereum/base/solana). The server validates details (asset/network/accountHolder) against the resolved EA/wallet.
- US bank account
- IBAN bank account
- Canadian bank account
- OMS wallet
- External wallet (registered)
Registered crypto return destination (v0.11-8), for operations-triggered returns of stranded inbound deposits.
When true, OMS absorbs the on-chain gas cost for the destination
delivery. Only true is currently supported. Ignored for non-crypto
destinations (no on-chain leg).
Partner display label.
Free-form key-value pairs stored on the resource and echoed back on reads.
Response
The request has succeeded and a new resource has been created as a result.
A reusable crypto deposit configuration. Senders deposit the expected asset/network to the assigned on-chain address; OMS converts and delivers the funds to the configured bank destination automatically, creating a transaction per inbound deposit.
Deposit Address ID (da_ prefix).
^[a-z]+_([0-9a-hjkmnp-tv-z]{26}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$Resource type discriminator. Always "depositAddress".
depositAddress Public customer id (cst_...). Named customerId to match VA's naming convention.
^[a-z]+_([0-9a-hjkmnp-tv-z]{26}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$Current lifecycle status of the deposit address.
pending, active, frozen, closed, failed, inactiveActionRequired Human-readable explanation of the current status.
Asset of the inbound crypto the DA expects.
Network of the inbound crypto the DA expects.
Null in the 201 until DEPOSIT_ACCOUNT.OPEN populates the Erebor-owned inlet address.
V0.10: unified destination shape (payoutOrigin now lives inside TransactionDestination).
- OMS wallet
- External wallet
- Fiat wallet
- US bank account
- IBAN bank account
- Canadian bank account
- Card
- Cash
Registered crypto return destination (v0.11-8), echoed when set.
Set when status = failed; closed enum identifying the failure category.
provisioningTimeout, systemError, ereborRejected, intlBankAccountCreateRejected, noMatchingNetwork, blockchainAddressInUse, bankAccountInUse Derived from the destination type: cryptoToFiatAccount for a bank
destination, or cryptoToCrypto for a crypto-wallet destination.
cryptoToCrypto, cryptoToCash, cryptoToFiatAccount, cashToCrypto, fiatAccountToCrypto, fiatAccountToFiatAccount Whether OMS absorbs the on-chain gas cost for the destination delivery.
Persisted from the create/update request (currently only true is
accepted).
Partner display label.
Free-form key-value pairs supplied at creation or update.
When the deposit address was created.
When the deposit address was last updated.