Monitor Your Payout Results
Payout events to subscribe#
Event | When it fires | What you usually do |
---|
payout.created | A payout object is generated | Record the new payout in your system |
payout.paid | Funds are expected to be available in the beneficiary account | Mark payout successful |
payout.failed | Bank rejects or returns the payout | Mark payout failed |
payout.canceled | WooshPay cancel the payout before it is sent | Mark payout canceled |
Create your payout webhook endpoint#
{
"url": "https://your_callback_address.com",
"description": "Payout status notifications",
"enabled_events": [
"payout.created",
"payout.paid",
"payout.failed",
"payout.canceled"
]
}
{
"id": "we_1953668074666196992",
"object": "webhook_endpoint",
"created": 1754625741000,
"livemode": true,
"description": "Payout status notifications",
"secret": "whsec_5B7ztykeFchpyupxbTLmZdQiNabRRqjg",
"status": "enabled",
"url": "https://your_callback_address.com",
"enabled_events": [
"payout.canceled",
"payout.created",
"payout.failed",
"payout.paid"
]
}
Register one endpoint per environment (Test, Live).
The response contains a secret
; store it if you plan to verify signatures.
What you’ll receive#
payout.created (example)#
{
"id": "evt_1953671389605003264",
"object": "event",
"created": 1754626531398,
"data": {
"object": {
"id": "po_1953671380213956608",
"object": "payout",
"created": 1754626530000,
"status": "in_transit",
"beneficiary_data": {
"id": "bf_1953671305744089088",
"object": "beneficiary",
......
},
"payment_amount": 7000,
"payment_currency": "USD",
"source_amount": 10000,
"source_currency": "USD"
}
},
"type": "payout.created"
}
payout.paid (example)#
{
"id": "evt_1705940809180720002",
"type": "payout.paid",
"created": 17027155624825,
"data": {
"object": {
"id": "po_1953671380213956608",
"object": "payout",
"created": 1754626530000,
"status": "paid",
"beneficiary_data": {
"id": "bf_1953671305744089088",
"object": "beneficiary",
......
},
"payment_amount": 7000,
"payment_currency": "XXX",
"source_amount": 10000,
"source_currency": "XXX"
}
},
"type": "payout.paid"
}
payout.failed (example)#
{
"id": "evt_1953671356344172544",
"object": "event",
"created": 1754626523468,
"livemode": false,
"data": {
"object": {
"id": "po_1953671350849634304",
"object": "payout",
"created": 1754626523000,
"livemode": false,
"status": "failed",
"failure_code": "unknown_errors",
"failure_message": "Your Balance is insufficient or not exist.",
"beneficiary_data": {
"id": "bf_1953671305744089088",
"object": "beneficiary",
......
},
"payment_amount": 7000,
"payment_currency": "XXX",
"source_amount": 10000,
"source_currency": "XXX"
}
},
"type": "payout.failed"
}
Handling tips#
1.
Respond with 2xx quickly
Your endpoint must quickly return a successful status code (2xx) prior to any complex logic that could cause a timeout.
2.
One-click simulations in the Dashboard
Switch to Test mode at dashboard.wooshpay.com → Payout. Here you can trigger “success / fail ” scenarios and inspect the exact webhook payloads before going live. Deploy the endpoint, subscribe to the payout events, and you’ll receive real-time notifications whenever a payout is created, paid, failed, canceledModified at 2025-08-08 05:54:49