Quickstart
Provision an address, receive a deposit, and pay out — the whole flow in four calls.
1. Create a user#
Register your end user and provision a deposit address on each chain you want. This is idempotent on your own external_ref — calling it again returns the same user and the same addresses.
curl -X POST https://api.hbridge.cc/v1/users \
-H "Authorization: Bearer hbridge_sk_..." \
-H "Content-Type: application/json" \
-d '{ "external_ref": "user_42", "chains": ["ETH"] }'{
"id": "6a44c5fce075c013e82172ff",
"external_ref": "user_42",
"addresses": [
{ "chain": "ETH", "address": "0x6535...ce36" }
]
}Show that address to your user — anything they send to it is credited to user_42.
2. Receive a deposit#
When the user sends funds, Hbridge detects the transaction and notifies your webhook endpoint — first deposit.pending, then deposit.confirmed once it reaches finality. No polling required.
{
"type": "deposit.confirmed",
"id": "evt_9f2c...",
"user": { "id": "6a44...", "external_ref": "user_42" },
"chain": "ETH",
"token": "USDC",
"amount": "2",
"txid": "0x3646...98f9a",
"created_at": "2026-07-02T10:07:00.000Z"
}Always verify the signature and dedupe on the event id. Prefer a pull model? Poll GET /v1/deposits instead.
3. Check your balance#
Final, not-yet-paid-out deposits accumulate into your collectable balance, grouped by (chain, token) and shown net of the Hbridge fee.
curl https://api.hbridge.cc/v1/balances \
-H "Authorization: Bearer hbridge_sk_..."{
"fee_bps": 50,
"balances": [
{ "chain": "ETH", "token": "USDC", "gross": "2", "fee": "0.01", "net": "1.99", "depositCount": 1 }
]
}net is what you can pay out. See Balances & fees for how the fee is applied.
4. Request a payout#
Register your whitelisted payout address once per chain, then request a payout of a (chain, token) balance. Payouts are asynchronous: you get a 202 with a pending settlement, then a payout.completed webhook when it settles on-chain.
curl -X PUT https://api.hbridge.cc/v1/payout-address \
-H "Authorization: Bearer hbridge_sk_..." \
-H "Content-Type: application/json" \
-d '{ "chain": "ETH", "address": "0xfCd9...17B6" }'curl -X POST https://api.hbridge.cc/v1/payouts \
-H "Authorization: Bearer hbridge_sk_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 3f8c1e5a-..." \
-d '{ "chain": "ETH", "token": "USDC" }'{ "id": "6c98...", "status": "pending", "gross": "2", "fee": "0.01", "net": "1.99", "txid": null }Track it via GET /v1/payouts/:id or the payout.completed / payout.failedwebhooks. That's the full loop — see the API reference for every option.