Permanent deposit addresses

POST /v1/deposit-addresses creates a permanent BSC address for one of your customers. It requires an API key and an Idempotency-Key header. The JSON body takes customerReference (required, 1 to 200 characters, unique per merchant and environment), and optional label, metadata (up to 20 string values) and webhookUrl. network defaults to BSC. A second call with the same customerReference returns the existing address with HTTP 200; a new address returns 201.

The address never expires. It accepts native BNB, USDT and USDC (BEP-20); each asset is credited separately in its own asset and is added to your withdrawable balance alongside invoice funds. Test keys use BSC testnet (chain 97), live keys BSC mainnet (chain 56). The address is a forwarder contract predicted with CREATE2 from your gas address in a separate index space, so it never collides with invoice addresses; nothing is deployed until funds are swept.

GET /v1/deposit-addresses lists addresses (filter with ?customerReference=). GET /v1/deposit-addresses/:id returns one address with its per-asset balances. GET /v1/deposit-addresses/:id/deposits lists its deposits with status confirming, confirmed, dust or reorged.

Dust: a deposit worth less than 0.5 USD (USDT and USDC at face value, BNB at the price when it is detected) is dust. Dust is recorded and credited, but no webhook is sent. 0.5 USD and above fires deposit.confirming when seen and deposit.confirmed after 15 confirmations. Payloads include depositAddressId, customerReference, asset, amount, txHash and confirmations.

BNB sent by a smart contract (an internal transaction) is detected by comparing the address balance at a confirmed block and is credited like a normal deposit with source internal and no txHash. This works on BSC testnet. Warning: on BSC mainnet, BNB sent through an internal transaction (for example from a smart contract or some exchange withdrawals) may currently not be detected automatically. Ask customers to send BNB as a normal transfer. If a deposit is missing, contact support or file a recovery request with the transaction hash. See Important warnings.

Create a permanent addressbash
curl -s https://zenvault.world/v1/deposit-addresses \
  -H "Authorization: Bearer cx_test_example" \
  -H "Idempotency-Key: customer_42" \
  -H "Content-Type: application/json" \
  -d '{"customerReference":"customer_42","label":"Alice"}'
Permanent deposit addresses