Payment Webhook#
When a payment reaches a terminal status, Setu sends a POST request with a JSON body. Use the fields on this Indonesia page.Setu uses the webhookUrl from Create Payment when you sent one. Otherwise it uses the payment webhook URL in Merchant Dashboard → Settings.Verify Signature with Webhook Verification, then confirm the order with Fetch Payment Status before you update your records.Return HTTP 2xx. Setu treats the status code as acknowledgement and does not read the response body. A non-2xx response is sent again.| Header | Description |
|---|
| Content-Type | application/json |
| Signature | Standard Base64 of a signature made with Setu's private key |
| Timestamp | Unix time in seconds. It is part of the signature |
Body#
| Field | Description |
|---|
| transactionRef | Setu transaction reference. |
| merchantRef | Merchant reference for the transaction. |
| amount | Order amount. |
| paidAmount | Amount actually paid (use this field when reconciling account balance changes). |
| fee | Processing fee. |
| status | Order status. |
| Value | Meaning |
|---|
| Success | Success |
| Timeout | Timeout |
| Failed | Failed |
| Refund | Refund |
| Chargeback | Chargeback |
Example#
{
"transactionRef": "e50f5496-1316-4fa6-a206-98be03550c4d",
"merchantRef": "19e5b36d-c9d6-4cb4-8e4e-e6fe0e3a0cb5",
"amount": "20000.01",
"paidAmount": "20000.01",
"fee": "100.01",
"status": "Success"
}
Modified at 2026-10-08 20:03:30