m2pfintech
API LibraryWebhooks

Transaction Status Webhook

Webhook endpoint called by M2P on the partner system to deliver real-time transaction status updates. Partners must implement this endpoint to receive asynchronous payment completion notifications. The webhook is sent when a transaction reaches a final state (SUCCESS, FAILURE, or DEEMED). Partners should respond with HTTP 200 to acknowledge receipt. M2P retries up to 3 times with exponential backoff if the webhook delivery fails.

POST
/webhook/transaction/status

Request Body

application/json

txnId?string

Unique transaction identifier

rrn?string

Retrieval Reference Number from NPCI

txnStatus?string

Final transaction status

Value in"SUCCESS" | "FAILURE" | "DEEMED"
npciResponseCode?string

NPCI response code (00 for success)

amount?string

Transaction amount

payerVpa?string

Payer VPA

payeeVpa?string

Payee VPA

payeeName?string

Payee display name

txnDate?string

Transaction timestamp in ISO 8601 format

Formatdate-time
txnType?string

Transaction type

Value in"PAY" | "COLLECT"
remarks?string

Transaction remarks

debitCredit?string

Whether the notification is for a debit or credit

Value in"DEBIT" | "CREDIT"
profileId?string

Profile ID of the user

Response Body

application/json

curl -X POST "https://sandbox-upi-api.m2pfintech.com/webhook/transaction/status" \  -H "Content-Type: application/json" \  -d '{    "txnId": "TXN20260301123456ABCD",    "rrn": "603012345678",    "txnStatus": "SUCCESS",    "npciResponseCode": "00",    "amount": "250.00",    "payerVpa": "amit.patel@indie",    "payeeVpa": "merchant@upi",    "payeeName": "Coffee Shop",    "txnDate": "2026-03-01T14:30:00Z",    "txnType": "PAY",    "remarks": "Coffee payment",    "debitCredit": "DEBIT",    "profileId": "c82e4f19-7b3a-4d6e-9f01-ab3456789def"  }'
{
  "status": "OK"
}