1. PayIn
Setu
  • Setu API documentation
  • Introduction
  • Signature & Code samples
  • Webhook Verification
  • India
    • PayIn
      • Payment Webhook
      • Payment Redirect
      • Create Payment
      • Fetch Payment Status
      • Initiate Refund
    • PayOut
      • Payout Webhook
      • Initiate Payout
      • Fetch Payout Status
  • Egypt
    • PayIn
      • Payment Webhook
      • Initiate Refund
      • Create Payment
      • Fetch Payment Status
    • PayOut
      • Payout Webhook
      • Initiate Payout
      • Fetch Payout Status
  • Nigeria
    • PayIn
      • Payment Webhook
      • Initiate Refund
        POST
      • Create Payment
        POST
      • Fetch Payment Status
        POST
    • PayOut
      • Payout Webhook
      • Initiate Payout
      • Fetch Payout Status
      • Bank Code
  • Indonesia
    • PayIn
      • Payment Webhook
      • Initiate Refund
      • Create Payment
      • Fetch Payment Status
    • PayOut
      • Payout Webhook
      • Initiate Payout
      • Fetch Payout Status
      • Bank Code
  • Account Balance
    POST
  • USDT Exchange Rate
    POST
  1. PayIn

Payment Webhook

Payment Webhook#

When a payment reaches a terminal status, Setu sends a POST request with a JSON body. Use the fields on this Nigeria 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.

Headers#

HeaderDescription
Content-Typeapplication/json
SignatureStandard Base64 of a signature made with Setu's private key
TimestampUnix time in seconds. It is part of the signature

Body#

FieldDescription
transactionRefSetu transaction reference.
merchantRefMerchant reference for the transaction.
amountOrder amount.
paidAmountAmount actually paid (use this field when reconciling account balance changes).
feeProcessing fee.
statusOrder status.
status values:
ValueMeaning
SuccessSuccess
TimeoutTimeout
FailedFailed
RefundRefund
ChargebackChargeback

Example#

{
  "transactionRef": "e50f5496-1316-4fa6-a206-98be03550c4d",
  "merchantRef": "19e5b36d-c9d6-4cb4-8e4e-e6fe0e3a0cb5",
  "amount": "100",
  "paidAmount": "100",
  "fee": "5.5",
  "status": "Success"
}
Modified at 2026-10-08 20:03:30
Previous
Fetch Payout Status
Next
Initiate Refund
Built with