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.

TypeDescription
channel_payment_detectedDeposit seen on-chain, awaiting confirmation and crediting (status PROCESSING)
channel_payment_completedDeposit credited to the wallet (status COMPLETED)
channel_payment_cancelledDeposit 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.

Header Parameters

Content-Type*string

Content type.

Default"application/json"
User-Agent*string

User agent.

Default"Volt/2.0"
X-Volt-Timed*integer

Timestamp of notification generation.

X-Volt-Signed*string

Notification signature.

X-Volt-Type*string

Type of channel payment notification.

Value in"channel_payment_detected""channel_payment_completed""channel_payment_cancelled"

Request Body

application/json
  1. 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*string

Identifier of the channel payment.

Formatuuid
channelId*string

Identifier of the channel the deposit arrived on.

Formatuuid
status*ChannelPaymentStatusEnum

Channel payment status. On-chain progress is carried by the transaction timestamps, not by the status.

ValueMeaning
PROCESSINGDetected on-chain, awaiting confirmation and crediting.
ON_HOLDHeld for review.
COMPLETEDCredited to the wallet; terminal.
CANCELLEDCancelled or rejected; terminal.
Value in"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*string

Date of payment creation.

Formatdate-time
updatedAt*|

Date of payment's last update.

Formatdate-time

Response Body

OK

application/json
  1. response
Example Requests
POST/Channel payment
Request Body
application/json
{  "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"}
Header Parameters
{  "Content-Type": "application/json",  "User-Agent": "Volt/2.0",  "X-Volt-Timed": 0,  "X-Volt-Signed": "string",  "X-Volt-Type": "channel_payment_detected"}