Create a wallet
Creates a wallet for a customer. Polymorphic on type: fiat and custodial are implemented — embedded is accepted by the request discriminator but rejected with 501 walletTypeNotSupported. Pass an Idempotency-Key header to safely retry without provisioning duplicates; a replay returns the same response, including the same operation Location.
A fiat create requires the project to be configured for fiat wallets at “Erebor Bank, N.A.” (403 ereborConfigMissing), the fiat-wallet book-transfer rail enabled for the project (403 destinationRailNotAllowed), and the customer registered with that bank (400 ereborCustomerNotMapped); the wallet starts preallocated and becomes active once the bank opens the backing account. The wallet.provisioned webhook fires when the wallet is first recorded and carries preallocated, so it does not signal activation — re-read GET /wallets/{id} for that. A custodial create requires the project and the customer to be enrolled with the custody provider (422 projectMissingCoinmeId, 422 providerUserAccountNotFound) and an asset/network pair that provider supports (422 unsupportedAsset); it returns 201 with the wallet when the wallet already exists or the provider confirms it synchronously, and 202 with a Location header pointing at the wallet-provisioning operation — poll GET /wallets/operations/{operationId} — when confirmation arrives asynchronously. A durable provider rejection is 422 walletProvisioningRejected.
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
- Option 1
- Option 2
- Option 3
Create a custodial crypto wallet. Not yet implemented — returns 501.
Owning customer (cst_ 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})$Type discriminator.
custodial Custodial crypto wallet create request details.
Response
The request has succeeded and a new resource has been created as a result.
- Option 1
- Option 2
The custodial variant — one crypto asset on one network, held on the customer's behalf by the custody provider, currently "Coinme Inc.". details.address is the on-chain deposit address and is omitted until the provider reports one.
Wallet ID (TypeID; wlt_fiat_ for fiat wallets).
^[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 "wallet".
wallet The OMS customer that owns this record (cst_ 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})$Current wire status.
preallocated, active, suspended The legal entity holding this wallet's assets, derived from wallet type and asset: custodial → "Coinme Inc."; fiat (usd) → "Erebor Bank, N.A.". New providers may be added, so treat the string as free-form rather than a fixed set.
true when the wallet supports every network in its family and all assets on them; false when restricted to a single asset (fiat, custodial).
Server-generated wallet name. Custodial wallets use their on-chain address; fiat wallets use USD balance (<wallet id>). Distinct from the optional partner-supplied label.
Type discriminator.
custodial Custodial crypto wallet details — one asset on one network, held by the custody provider on the customer's behalf.
Display-safe summary of the owning customer (customer.id equals customerId). Returned on list and detail responses.