CounterpartyPayoutReturned
Fired when a payout ends without delivering funds. This covers every terminal failure — returned, reversed, cancelled, denied, and failed — so read status to see which occurred rather than relying on the topic name.
returnCode and returnReason are populated when the receiving bank returned the payment (for example R01, insufficient funds) and are null for the other failures. See ACH Return Codes for every code. The payout amount is available on the counterparty balance again.
The included payload mirrors the payout resource — payoutId, counterpartyId, amount (in cents), currency, status, description, and effectiveDate — so you can act on the event without re-reading the payouts API.
Payload
Example payload
{
"attributes": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"userId": "123e4567-e89b-12d3-a456-426614174000",
"walletId": "123e4567-e89b-12d3-a456-426614174000"
},
"included": [
{
"attributes": {
"payoutId": "po_a1b2c3d4e5",
"counterpartyId": "123e4567-e89b-12d3-a456-426614174000",
"merchantId": "123e4567-e89b-12d3-a456-426614174000",
"amount": 5000,
"currency": "USD",
"status": "Sent",
"description": "Payout to Acme Vendor",
"effectiveDate": "2026-08-28",
"returnCode": "R01",
"returnReason": "Insufficient Funds"
}
}
]
}Response
Return a 200 status to indicate that the data was received successfully
Changes
Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.