Payout status change notification

Sent to the notification URL when it was provided at payout creation; otherwise to the webhook URL configured in Fuzebox.

TypeDescription
payout_processingPayout submitted for execution at the provider (status PROCESSING)
payout_completedPayout sent (status COMPLETED)
payout_failedPayout failed or was returned by the provider (status FAILED, see failureReason)
payout_cancelledPayout 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.

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 payout notification.

Value in"payout_processing""payout_completed""payout_failed""payout_cancelled"

Request Body

application/json
  1. body
id*string

Identifier of the payout.

Formatuuid
walletId*string

Identifier of the wallet the payout is debited from.

Formatuuid
status*PayoutStatusEnum

Payout status.

Value in"PENDING""PROCESSING""ON_HOLD""COMPLETED""FAILED""CANCELLED"
type*"CRYPTO"

Payout type, inferred from currency.

Value in"CRYPTO"
payoutReference*string

Unique reference for the payout — merchant-supplied or Volt-generated.

Lengthlength <= 18
internalReference*|

Internal identifier of the payout in the partner's system.

debited*|

The wallet leg. This field is null until the payout executes, then carries the settled debited amount.

paid*

The on-chain leg, populated from the request at creation.

rate*|

Settled conversion rate as an exact decimal string: 1 unit of the debited currency equals rate units of the paid currency. This field is null until the payout executes.

beneficiary*||

The counterparty identity held against the payout.

crypto*

The on-chain destination. Present for crypto payouts.

transaction*|

On-chain evidence for the payout. Present for crypto payouts. This field is null until the on-chain transaction is known.

failureReason*|

This field is null unless status is FAILED.

Value in"REJECTED_BY_PROVIDER""INSUFFICIENT_FUNDS""INVALID_ADDRESS""WALLET_NOT_FOUND""WALLET_MERCHANT_MISMATCH""COMPLIANCE_REJECTED""RETURNED""INTERNAL_ERROR"
createdAt*string

Date of payout creation.

Formatdate-time
updatedAt*|

Date of payout's last update.

Formatdate-time

Response Body

OK

application/json
  1. response
Example Requests
POST/Payout
Request Body
application/json
{  "id": "7f3b9d1e-5a2c-4e6f-b8d0-a4c6e8f0b2d4",  "walletId": "6a4f0c9e-2d1b-4c8a-9f3e-b7d2a1c4e5f6",  "status": "PROCESSING",  "type": "CRYPTO",  "payoutReference": "K7KDN3PA84MRV2XQZ9",  "internalReference": "TREASURY-09",  "debited": null,  "paid": {    "amount": "150.000000",    "currency": "USDC"  },  "rate": null,  "beneficiary": {    "type": "INDIVIDUAL",    "firstName": "Jane",    "lastName": "Doe",    "country": "DE"  },  "crypto": {    "address": "0x71C7656EC7ab88b098defB751B7401B5f6d8976F",    "network": "ETHEREUM",    "tag": null  },  "transaction": null,  "failureReason": null,  "createdAt": "2026-09-02T10:12:03+00:00",  "updatedAt": "2026-09-02T10:12:45+00:00"}
Header Parameters
{  "Content-Type": "application/json",  "User-Agent": "Volt/2.0",  "X-Volt-Timed": 0,  "X-Volt-Signed": "string",  "X-Volt-Type": "payout_processing"}