Webhooks
Payment job events
Envelope
{
"id": "<eventId>",
"type": "payment.job.completed",
"created": 1785400200000,
"data": { "object": { /* the job event object, shown below per event */ } }
}Events
payment.job.result_page
payment.job.result_page
{
"id": "payment-job:550e8400-e29b-41d4-a716-446655440000:result-page:1:v1",
"type": "payment.job.result_page",
"created": 1785400200000,
"data": {
"object": {
"object": "payment_job.result_page",
"jobId": "550e8400-e29b-41d4-a716-446655440000",
"apiRefNumber": "PAYROLL-JUL-2026",
"idempotencyKey": "payroll-jul-key-01",
"initiatedByUserId": "svc-user-1",
"status": "completed_partial",
"completedAt": 1785400200000,
"pageNumber": 1,
"pageSize": 250,
"pageCount": 1,
"totalRecords": 2,
"records": [
{
"transactionId": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
"transactionReference": "SAL-EMP-001",
"amount": {
"value": 5000000,
"currency": "INR"
},
"outcome": "accepted",
"rejectionCode": null,
"rejectionMessage": null
},
{
"transactionId": "6ba7b810-9dad-11d1-80b4-00c04fd430c9",
"transactionReference": "SAL-EMP-002",
"amount": null,
"outcome": "rejected",
"rejectionCode": "validation_error",
"rejectionMessage": "The payment row failed validation."
}
]
}
}
}Notes
One or more per job (ceil(totalRecords / 250)). Each record: transactionId, transactionReference, amount, outcome, rejectionCode, rejectionMessage. Collect pages by jobId + pageNumber; dedupe on the event id. Follow each transactionId into transaction.* events for lifecycle.
