One virtual account perDocumentation Index
Fetch the complete documentation index at: https://docs.calmtreasury.xyz/llms.txt
Use this file to discover all available pages before exploring further.
(app_id, wallet). The destination is always the
cookie-bound wallet on the chain you pick at create time; the destination
currency is hardcoded usdc.
POST /v1/wallets/:address/virtual-account
Provision the virtual account.
Body
Source (fiat) currency. One of
"usd", "gbp", "eur".Destination EVM chain. One of
"arbitrum", "base", "ethereum",
"hyper_evm".Response
Bridge’s virtual account id. Persisted on the customer row.
Echoed from the request.
"activated" | "deactivated".payment_rail— echoedchaincurrency— always"usdc"address— cookie-bound wallet
Currency-varying. USD:
bank_account_number, bank_routing_number,
payment_rails. GBP: sort_code, account_number. EUR: iban, bic.
Shape passes through from Bridge — show every key with a non-empty value.Constraints
| Error | When |
|---|---|
customer_not_registered (404) | No row yet — call POST /v1/wallets/:address first. |
kyc_required (409) | Bridge customer status is not active. |
already_has_virtual_account (409) | One VA per customer at v1. |
validation_error (400) | Bad currency or chain. |
GET /v1/wallets/:address/virtual-account
Fetch the existing VA (proxied from Bridge).
customer_not_registered, virtual_account_not_provisioned
(404, before any VA exists), wallet_token_mismatch, bridge_error.