Channel payment status change notification
Sent to the notification URL when it was provided at related channel creation; otherwise to the webhook URL configured in Fuzebox.
| Type | Description |
|---|---|
channel_payment_detected | Deposit seen on-chain, awaiting confirmation and crediting (status PROCESSING) |
channel_payment_completed | Deposit credited to the wallet (status COMPLETED) |
channel_payment_cancelled | Deposit cancelled or rejected (status CANCELLED) |
channel_payment_detected is not guaranteed: when a deposit reaches its final state before the detection could be announced (for example, the confirmation arrived first), only the terminal webhook is sent. Treat channel_payment_completed and channel_payment_cancelled as the source of truth, and do not rely on receiving channel_payment_detected beforehand.
Content-Type*stringContent type.
"application/json"User-Agent*stringUser agent.
"Volt/2.0"X-Volt-Timed*integerTimestamp of notification generation.
X-Volt-Signed*stringNotification signature.
X-Volt-Type*stringType of channel payment notification.
"channel_payment_detected""channel_payment_completed""channel_payment_cancelled"application/json- body
An incoming on-chain deposit received on a channel and converted into the channel's crediting wallet. The transaction object carries the on-chain evidence; credited and rate are null until the conversion settles. This object is also the payload of the channel payment webhooks.
id*stringIdentifier of the channel payment.
uuidchannelId*stringIdentifier of the channel the deposit arrived on.
uuidstatus*ChannelPaymentStatusEnumChannel payment status. On-chain progress is carried by the transaction timestamps, not by the status.
| Value | Meaning |
|---|---|
PROCESSING | Detected on-chain, awaiting confirmation and crediting. |
ON_HOLD | Held for review. |
COMPLETED | Credited to the wallet; terminal. |
CANCELLED | Cancelled or rejected; terminal. |
"PROCESSING""ON_HOLD""COMPLETED""CANCELLED"risk*|Risk screening of the deposit's on-chain source (provider AML / blockchain analytics). Informational only — crediting is not gated on it. This field is null until reported; the terminal webhook carries the final value.
endUser*The channel's end user the deposit is attributed to, your correlation key. Only the reference is repeated here; read the channel for the full identity.
transaction*On-chain evidence. The timestamps are the state: confirmedAt null means detected but not yet confirmed.
paid*|What arrived on-chain, in the channel's pay currency.
credited*|What was credited to the wallet after conversion. This field is null until the conversion settles.
rate*|Settled conversion rate as an exact decimal string: 1 unit of the paid currency equals rate units of the credited currency (credited ≈ paid × rate, subject to rounding). This field is null until the conversion settles.
createdAt*stringDate of payment creation.
date-timeupdatedAt*|Date of payment's last update.
date-timeOK
application/json- response
{ "id": "7f3b9d1e-5a2c-4e6f-b8d0-a4c6e8f0b2d4", "channelId": "9c2e6b4a-8f1d-4c3a-b5e7-d0a2c4e6f8b1", "status": "PROCESSING", "risk": null, "endUser": { "reference": "user-8841" }, "transaction": { "hash": "0xdef4567890abcdef4567890abcdef4567890abcd", "detectedAt": "2026-08-25T11:00:00+00:00", "confirmedAt": null }, "paid": null, "credited": null, "rate": null, "createdAt": "2026-08-25T11:00:00+00:00", "updatedAt": "2026-08-25T11:00:00+00:00"}{ "Content-Type": "application/json", "User-Agent": "Volt/2.0", "X-Volt-Timed": 0, "X-Volt-Signed": "string", "X-Volt-Type": "channel_payment_detected"}Download report GET
Download a generated report as a CSV attachment. Return `404` when the report does not exist, belongs to another customer, is still generating, has failed or has expired.
Payout status change notification Webhook
Sent to the notification URL when it was provided at payout creation; otherwise to the webhook URL configured in Fuzebox. | Type | Description | |-------|-------------| | `payout_processing` | Payout submitted for execution at the provider (`status` `PROCESSING`) | | `payout_completed` | Payout sent (`status` `COMPLETED`) | | `payout_failed` | Payout failed or was returned by the provider (`status` `FAILED`, see `failureReason`) | | `payout_cancelled` | Payout cancelled (`status` `CANCELLED`) | Each event is sent at most once, but `payout_processing` is **not guaranteed**: a payout that fails before it reaches the provider (for example, insufficient funds) goes straight to `payout_failed` without ever emitting `payout_processing`. Treat `payout_completed`, `payout_failed`, and `payout_cancelled` as the source of truth, and do not rely on receiving `payout_processing` beforehand. Delivery order is not guaranteed either, so do not rely on the order in which webhooks arrive: each payload is the payout's state at the moment it was sent, so a later-arriving webhook can validly describe an earlier moment than one you already received. Always take `status` from the payload itself rather than inferring it from arrival order.