Available to persons and companies, with different limits: company
accounts can create unlimited segregated wallets; person accounts
can hold 1 per network+asset pair (a second one responds
422 wallet_limit_reached).Two products, two routes: deposit wallets live under
/v1/crypto/wallets
and segregated wallets under /v1/segregated-wallets. Every wallet
response carries a type discriminator (deposit / segregated) so you
can always tell them apart.Supported pairs
Native
eth can be sent from any wallet on an eth chain (it is the
network gas). On Bitcoin there is no separate gas: the network fee is
deducted from the wallet’s balance on every send.
1. Create a wallet
201:
custody field reflects the key custody regime:
Under
client custody the platform syncs the wallet’s complete on-chain
activity — including movements signed outside — and flags them as external,
so your records and statement stay complete.
Under cbpay custody the wallet’s accounting is guaranteed: the
statement shows its lifetime reconciliation (lifetime_in −
lifetime_out = computed_balance) and each send’s detail
(GET /v1/segregated-wallets/{walletID}/sends/{sendID}) includes funding_sources:
the FIFO attribution of which deposits funded that send, with tx_id,
origin address and per-tranche amount.
The Idempotency-Key (or idempotency_key in the body) makes retries safe:
a repeat returns the SAME wallet with idempotency_hit: true and never
creates a second one. Creating a wallet may charge the wallet_creation fee
(fixed; 0 = free, the default).
2. Import an external wallet
Bring in a wallet you already control by providing its private key. The key travels encrypted in transit to the custodian and is never stored or logged in the platform.201 with the same shape as create (origin: "imported"). Charges
the wallet_import fee.
3. Check balance, deposits and transactions
The balance comes live from the blockchain and includes network gas (so you can see if the wallet is short on TRX/ETH to send).wallet_deposit_received webhook — without touching your
ledger, because the balance is already in the wallet.
4. Send crypto from the wallet
The send leaves from the wallet itself (real source address), signed by the custodian.idempotency_key is required.
202 (the send is asynchronous; the final state arrives by
webhook):
422 insufficient_gas with the required
minimum — charging nothing.
The send may charge the wallet_send fee (from your account’s settlement
balance in the ledger; the wallet’s on-chain funds are never touched),
refunded if the custodian rejects the send.
A replay with the same idempotency_key → 200 with the original send and
idempotency_hit: true — never re-sent. On an ambiguous failure
(timeout/network) the send stays pending: retry with the same key; the
dedupe guarantees it is not duplicated.
Check the history:
5. Export the private key
Retrieve the wallet’s private key. It is shared custody: after export, the wallet remains fully operational in CBPay (it can receive and send), but you also control the funds with the key.200:
6. Auto-forward
Automatically forward everything that arrives at the wallet to an address of yours (useful to consolidate into cold storage). Since it redirects future funds, it requires verification and OTP.Send statuses
Product errors
Related webhooks
Example payloads are on the webhooks page.
FAQ
How do they differ from the crypto product wallets?
How do they differ from the crypto product wallets?
In the crypto product, deposits credit your USDT/USDC
virtual ledger balance and withdrawals leave from a hot wallet — CBPay
custodies and consolidates the funds. With segregated wallets the balance
lives on-chain in each wallet, sends leave from that same address, and you
can export the key. None of its balance goes through the ledger or gets
swept to treasury.
Why did my send fail with insufficient_gas?
Why did my send fail with insufficient_gas?
Sending on-chain requires gas IN the wallet (TRX on TRON, ETH on Ethereum).
Unlike the crypto product, here the gas is on you. Fund the wallet address
with a bit of the native coin and retry.
GET .../balance shows the
available gas and the required minimum.Does the wallet stop working after exporting the key?
Does the wallet stop working after exporting the key?
No. It is shared custody: the wallet stays operational in CBPay (receives and
sends normally) and is flagged
exported. You now also hold the key, so
keep it safe.Can treasury move my segregated wallets' balance?
Can treasury move my segregated wallets' balance?
Never. These wallets are created exempt from the treasury sweep: their
on-chain balance is exclusively yours. It only moves when you send or when
you configure auto-forward.
How many wallets can I create?
How many wallets can I create?
Company accounts have no limit: this is typical for segregating per
client, project or business unit, using
label to tell them apart.
Person accounts can hold 1 segregated wallet per network+asset pair (a
second one responds 422 wallet_limit_reached).