Overview
After dispatching a bulk resend job via Resend Payout Webhooks (Bulk) ,
use this endpoint to monitor its progress. Job state is available for 24 hours after completion.
Path Parameters
Response
Current status of the job. Value Description processingJob is running — transactions are being queued completedJob finished successfully failedJob encountered a fatal error and was aborted
ID of the merchant for which the resend was triggered. Example: 303
Start of the time range used in the original request. Example: "2026-03-24 08:00:00"
End of the time range used in the original request. Example: "2026-03-24 11:00:00"
Total number of payout transactions matched at the time of dispatch. Example: 87
Number of webhook notifications successfully enqueued so far. Example: 60
Number of webhook notifications that failed to be enqueued. Example: 1
ISO 8601 timestamp of when the job started. Example: "2026-03-24T08:05:00+00:00"
ISO 8601 timestamp of the last state update. Example: "2026-03-24T08:07:32+00:00"
Present only when status is failed. Describes the fatal error that caused the job to abort. Example: "Connection refused"
200 (processing)
200 (completed)
200 (failed)
404
403
{
"status" : "processing" ,
"merchant_id" : 303 ,
"start_time" : "2026-03-24 08:00:00" ,
"end_time" : "2026-03-24 11:00:00" ,
"total" : 87 ,
"queued" : 60 ,
"failed" : 0 ,
"started_at" : "2026-03-24T08:05:00+00:00" ,
"updated_at" : "2026-03-24T08:07:32+00:00"
}
Code Examples
curl -X GET "https://api.wepayments.com/v2/payout/notifications/resend/a3f1bc2e4d8f0a1b2c3d4e5f6a7b8c9d" \
-H "Authorization: Bearer YOUR_API_KEY"
Polling the Job
Job state is updated in real-time as the job processes each chunk of 200 transactions. A simple polling pattern:
async function waitForJob ( jobId , intervalMs = 3000 ) {
while ( true ) {
const res = await fetch (
`https://api.wepayments.com/v2/payout/notifications/resend/ ${ jobId } ` ,
{ headers: { 'Authorization' : 'Bearer YOUR_API_KEY' } }
);
const job = await res . json ();
console . log ( `[ ${ job . status } ] queued: ${ job . queued } / ${ job . total } , failed: ${ job . failed } ` );
if ( job . status === 'completed' || job . status === 'failed' ) {
return job ;
}
await new Promise ( resolve => setTimeout ( resolve , intervalMs ));
}
}
Job state is stored for 24 hours . After that, the endpoint will return 404.
Resend Webhooks (Bulk) Dispatch a new bulk resend job
Payout Webhook Understand the webhook payload structure