Skip to main content
Segregated wallets are on-chain wallets owned by your account: their balance is the on-chain balance of the address, not a virtual balance in the CBPay ledger. You can receive and send crypto directly from each wallet, import external wallets with their private key, and export the key whenever you want (shared custody). They are ideal for segregating funds per client, per project or per business unit, with full control of the keys.
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).
Don’t confuse them with the crypto product: there, deposits credit your USDT/USDC ledger balance and withdrawals leave from a hot wallet. With segregated wallets the balance lives on-chain in the wallet and sends leave from that same wallet. Gas (TRX on TRON, ETH on Ethereum) is on you: each wallet must hold gas to be able to send. On Bitcoin there is no gas: the network fee comes out of the wallet’s BTC balance.
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

Response 201:
The 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_inlifetime_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.
Response 201 with the same shape as create (origin: "imported"). Charges the wallet_import fee.
Import and export handle private key material: they require a signed-in user session with 2FA (API keys are not allowed) and OTP. If the chain/address pair already exists, the core responds core_rejected.

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).
When a confirmed deposit arrives, CBPay emits the 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.
Response 202 (the send is asynchronous; the final state arrives by webhook):
Before sending, CBPay verifies the wallet holds enough gas (TRON and Ethereum only; Bitcoin skips this check since the fee comes out of the amount); if not, it responds 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_key200 with the original send and idempotency_hit: truenever 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.
Response 200:
This is the most sensitive operation of the product. It requires a signed-in user session with 2FA (no API keys), a verified account, and a reason of at least 20 characters kept in the audit trail. Each export fires the wallet_key_exported webhook to your organization. Charges the wallet_export fee. Whoever holds the private key controls the funds: store it securely.

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

Example payloads are on the webhooks page.

FAQ

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.
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.
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.
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.
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).
Last modified on July 16, 2026