Payouts
Pay your collected net balance to your whitelisted address. Payouts are asynchronous: Hbridge sweeps funds into your treasury, then sends the net to your payout address.
Set payout address#
Do this once per chain before your first payout. The address must be whitelisted in the custody layer, otherwise payouts will stay pending and eventually fail.
Register (or update) your payout destination for a chain. The address must be whitelisted in the custody layer before payouts can complete.
| Field | Type | Required | Description |
|---|---|---|---|
| chain | string | yes | Chain code, e.g. ETH. |
| address | string | yes | Your receiving address on that chain. |
PUT /v1/payout-address
{
"chain": "ETH",
"address": "0xfCd9C810F83f7E3255Eb4F41ff9A6310146117B6"
}{ "chain": "ETH", "address": "0xfCd9...17B6" }Request payout#
Kick off a payout of a (chain, token) balance. It returns immediately with a pending settlement; the funds settle on-chain asynchronously. Always send an Idempotency-Keyso a retry can't pay out twice.
Request a payout of the net balance for a (chain, token). Returns 202 with a pending settlement; track it via the sections below or the payout.completed / payout.failed webhooks. An unsupported pair returns 422 unsupported_token; a business/custody failure returns 422 payout_failed.
| Field | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key | string | no | Safely retry a payout request: a repeat with the same key returns the original settlement instead of creating a second one. |
| Field | Type | Required | Description |
|---|---|---|---|
| chain | string | yes | Chain code, e.g. ETH. |
| token | string | yes | Token symbol, e.g. USDC. |
| sweep_first | boolean | no | Force an on-demand sweep before sending (usually implicit). |
POST /v1/payouts
Idempotency-Key: 3f8c1e5a-...
{
"chain": "ETH",
"token": "USDC"
}{
"id": "6c98...",
"status": "pending",
"gross": "2",
"fee": "0.01",
"net": "1.99",
"txid": null
}List payouts#
List your payouts (settlements), newest first. Paginated.
| Field | Type | Required | Description |
|---|---|---|---|
| limit | number | no | Page size, 1–200, default 50. |
| cursor | string | no | Previous response's next_cursor for the next page. |
{
"payouts": [
{
"id": "6c98...",
"status": "completed",
"chain": "ETH",
"token": "USDC",
"gross": "2",
"fee": "0.01",
"net": "1.99",
"txid": "0x98acc127...",
"error": null,
"created_at": "2026-07-02T10:10:00.000Z"
}
],
"next_cursor": "6c98...",
"has_more": true
}Get payout#
Fetch a single payout's status. Statuses progress pending → sweeping → swept → paying → completed (or failed).
| Field | Type | Required | Description |
|---|---|---|---|
| id | string | yes | The payout (settlement) id. |
{
"id": "6c98...",
"status": "completed",
"chain": "ETH",
"token": "USDC",
"gross": "2",
"fee": "0.01",
"net": "1.99",
"txid": "0x98acc127...",
"error": null
}