{
"event": "user.payment_status_update",
"data": {
"subpayroll_id": "9876543210",
"claim_id": null,
"user_id": "1234567890",
"company_id": "2693034771782348",
"status": "released",
"payment": {
"subpayroll_id": "9876543210",
"receiver_user_id": "1234567890",
"received": true,
"received_at": "2026-11-10T16:02:11+00:00",
"released": true,
"released_at": "2026-11-10T18:30:45+00:00",
"fulfilled": false,
"fulfilled_at": null,
"outputs": [
{
"input_currency": "USD",
"output_currency": "BTC",
"volume_input_in_input_currency": 500,
"volume_output_in_output_currency": 0.005,
"fees": 2.5,
"spread": 0,
"tx_hash": null
}
]
}
}
}Webhooks
Payment status update
Sent when a payment changes status. Two things trigger it, so you can receive the same status more than once for a payment:
- A payroll status change sends one event per payment in the payroll.
statusis the payroll status:created,received,processing,fulfilled, orcanceled. - A payment status change sends one event for that payment.
statusisreleased,processing(a release was reversed), orfulfilled.
Handle events idempotently, keyed on subpayroll_id and status. For a recipient you created, payment.outputs includes only the payouts to distributions you created for them.
WEBHOOK
userPaymentStatusUpdate
{
"event": "user.payment_status_update",
"data": {
"subpayroll_id": "9876543210",
"claim_id": null,
"user_id": "1234567890",
"company_id": "2693034771782348",
"status": "released",
"payment": {
"subpayroll_id": "9876543210",
"receiver_user_id": "1234567890",
"received": true,
"received_at": "2026-11-10T16:02:11+00:00",
"released": true,
"released_at": "2026-11-10T18:30:45+00:00",
"fulfilled": false,
"fulfilled_at": null,
"outputs": [
{
"input_currency": "USD",
"output_currency": "BTC",
"volume_input_in_input_currency": 500,
"volume_output_in_output_currency": 0.005,
"fees": 2.5,
"spread": 0,
"tx_hash": null
}
]
}
}
}