Webhooks & Notifications
Real-time event notifications via Kafka and HTTP webhooks — complete reference with 18+ webhook types, SMS templates, and event payloads.
The UPI Notification System delivers real-time notifications to end users and partner systems based on events occurring across the UPI platform. Notifications are triggered for key user actions and system events related to Profile Management, Transactions, and Mandates.
Complete Event Coverage
The M2P UPI Notification System delivers real-time event notifications across SMS, Email, In-App Push, and HTTP Webhooks with support for 18+ webhook event types and 40+ SMS templates.
Architecture
Event Publishing
Events are published to Apache Kafka from the respective application modules under the following topics:
| Kafka Topic | Source Module | Description |
|---|---|---|
UPI_PROFILE | Profile Service | Events related to registration, VPA, accounts |
UPI_TRANSACTION | Transaction Service | Events related to payments, credits, debits |
UPI_MANDATE | Mandate Service | Events related to mandate lifecycle operations |
Event Consumption & Channel Resolution
Channel Resolution Logic
When an event is consumed from Kafka, the Notification Engine performs the following steps:
Parse the event payload — extract event type, program ID, and dynamic parameters.
Look up program configuration — check which notification channels are enabled for the program.
Resolve enabled channels — determine if SMS, Email, In-App, or Webhook is active.
Render template — substitute dynamic placeholders (e.g., $\{amount}, $\{payeeName}) into the channel-specific template.
Dispatch notification — send the rendered message via each enabled channel.
Supported Notification Channels
| Channel | Description |
|---|---|
| SMS | Transactional SMS sent to the user's registered mobile number |
| Email notification sent to the user's registered email address | |
| In-App | Push notification or in-app message rendered within the partner application |
| Webhook | HTTP callback posted to the partner's configured endpoint |
Channel availability is configurable per program. A program may enable any combination of the four channels.
SMS Notification Templates
Below are the SMS templates grouped by category. Dynamic placeholders (e.g., $\{amount}, $\{payeeName}) are resolved at runtime from the event payload.
Registration & Profile Events
| Sample SMS | Event | Description |
|---|---|---|
Hi, Your UPI registration for ABCD UPI handle has started. If it is not you, please report immediately to your bank. - ABD BANK | UPI_REGISTRATION | Sent when UPI registration is initiated for a user |
Dear Customer, you have successfully added your ABCD account $\{maskedAccNumber} with $\{app}. If it is not you, please contact your bank immediately. - ABD BANK | UPI_ADD_ACCOUNT | Sent when a bank account is successfully linked |
Congratulations !! Your UPI ID $\{vpa} has been successfully created. - ABD BANK | UPI_VPA_ADDED | Sent when a new VPA is successfully created |
Your UPI ID $\{vpa} linked to Mobile $\{mobileNo} has been de-registered on $\{date} at $\{time} - ABD BANK | UPI_VPA_REMOVED | Sent when a VPA is de-registered / removed |
Your UPI ID $\{vpa} linked to Mobile $\{mobileNo} has been blocked on $\{date} at $\{time} - ABD BANK | UPI_BLOCK_VPA | Sent when a VPA is blocked |
Dear Customer, you have successfully set your UPI PIN with the $\{app}. If it's not you, kindly contact your bank immediately - ABD BANK | UPI_PIN_SET | Sent when UPI PIN is successfully set |
OTP Events
| Sample SMS | Event | Description |
|---|---|---|
Dear Customer, your OTP to generate UPI PIN is $\{OTP}. If you haven't installed UPI App, call bank's helpline no. - ABD BANK | UPI_OTP | OTP sent for UPI PIN generation |
$\{OTP} is your OTP for ABCD UPI registration. Not you? Call 18602672626 - ABC Bank XBYUOM+GLL | UPI_GENERATE_OTP | OTP sent during UPI registration flow |
Transaction Events
| Sample SMS | Event | Description |
|---|---|---|
$\{payeeName} has requested INR $\{amount} on your ABCD App. On approving amount will be debited from your ABCD account. - ABD BANK | UPI_COLLECT_REQUEST | Collect request received by the payer |
$\{payeeName} has requested INR $\{amount} on your ABCD App. On approving amount will be debited from your ABCD account. - ABD BANK | UPI_COLLECT_REQUEST_V2 | Collect request received — v2 format |
$\{payeeName} has requested INR $\{amount} on ABCD. On approving, amount will be debited from your account. https://ABCiecug.page.link/2ukm - ABC Bank | UPI_COLLECT_REQUEST (variant) | Collect request with deep-link for approval |
Your ABCD account $\{payerMaskedAccountNumber} is debited with INR $\{amount} on $\{time} and credited to $\{payeeID} through UPI $\{rrn} - ABD BANK | UPI_DEBIT | Account debited for a UPI payment |
A/C $\{payerMaskedAccountNumber} debited by Rs $\{amount} towards $\{payeeID}. RRN:$\{rrn}. Avl Bal:$\{available_balance}. Not you? Call 18602677777 - ABC bank | UPI_DEBIT (variant) | Account debited — includes available balance |
You have received INR $\{amount} in your ABCD account $\{payeeMaskedAccountNumber} from $\{payerID} on $\{time}, $\{rrn} - ABD BANK | UPI_CREDIT | Account credited for a UPI payment |
A/C $\{payeeMaskedAccountNumber} credited by Rs $\{amount} from $\{payerID}. RRN:$\{rrn}. Avl Bal:$\{available_balance}. Not you? Call 18602677777 - ABC bank | UPI_CREDIT (variant) | Account credited — includes available balance |
Your ABCD account $\{payerMaskedAccountNumber} is credited with INR $\{amount} on $\{time} for reversal of UPI transaction $\{rrn} - ABD BANK | UPI_DEBIT_REVERSAL | Account credited due to a debit reversal |
Dear Customer, you have successfully initiated 1st transaction on $\{app}. If it is not you, please contact your bank - ABD BANK | UPI_FIRST_TRANSACTION | Sent after the user's first-ever UPI transaction |
Mandate — One-Time Events
| Sample SMS | Event | Description |
|---|---|---|
UPI Manadate is succesfully created towards $\{payeeName} for INR $\{amount} on $\{todayDate} - ABD BANK | UPI_MANDATE_ONETIME_CREATE_SUCCESS_PAYER | One-time mandate successfully created |
UPI Manadate registration has failed on $\{app} due to $\{errorDescription} - ABD BANK | UPI_MANDATE_ONETIME_CREATE_FAILURE_PAYER | One-time mandate creation failed |
UPI mandate is successfully revoked towards $\{payeeName} for INR $\{amount} - ABD BANK | UPI_MANDATE_ONETIME_REVOKE_SUCCESS_PAYER | One-time mandate successfully revoked |
UPI mandate revoke has failed towards $\{payeeName} due to $\{errorDescription} - ABD BANK | UPI_MANDATE_ONETIME_REVOKE_FAILURE_PAYER | One-time mandate revocation failed |
UPI mandate is successfully modified towards $\{payeeName} from INR $\{oldAmount} to INR $\{amount} - ABD BANK | UPI_MANDATE_ONETIME_UPDATE_SUCCESS_PAYER | One-time mandate amount successfully modified |
UPI mandate modification towards $\{payeeName} has failed due to $\{errorDescription} - ABD BANK | UPI_MANDATE_ONETIME_UPDATE_FAILURE_PAYER | One-time mandate modification failed |
Your account has been succesfully debited with INR $\{amount} on $\{todayDate} towards $\{payeeName} UPI Mandate - ABD BANK | UPI_ONETIME_MANDATE_EXECUTION | One-time mandate executed — account debited |
Your UPI ID $\{vpa} linked UPI Mandate for $\{payeeName} debit of INR $\{amount} is scheduled on $\{date}. Please ensure sufficient balance in your account - ABD BANK | UPI_MANDATE_PREDEBIT_NOTIFICATION | Pre-debit reminder for upcoming one-time mandate execution |
Mandate — AutoPay (Recurring) Events
| Sample SMS | Event | Description |
|---|---|---|
UPI AutoPay Manadate with $\{recurrencePattern} is succesfully created towards $\{payeeName} from $\{startDate} to $\{endDate} for INR $\{amount}, $\{umn} - ABD BANK | UPI_MANDATE_AUTOPAY_CREATE_SUCCESS_PAYER | Recurring AutoPay mandate successfully created |
UPI AutoPay Manadate registration has failed on $\{app} due to $\{errorDescription} - ABD BANK | UPI_MANDATE_AUTOPAY_CREATE_FAILURE_PAYER | Recurring AutoPay mandate creation failed |
UPI AutoPay mandate is successfully revoked towards $\{payeeName} for INR $\{amount}, $\{umn} - ABD BANK | UPI_MANDATE_AUTOPAY_REVOKE_SUCCESS_PAYER | Recurring AutoPay mandate successfully revoked |
UPI AutoPay mandate revoke has failed towards $\{payeeName} due to $\{errorDescription}, $\{umn} - ABD BANK | UPI_MANDATE_AUTOPAY_REVOKE_FAILURE_PAYER | Recurring AutoPay mandate revocation failed |
UPI AutoPay mandate is successfully modified towards $\{payeeName} from INR $\{oldAmount} to INR $\{amount}, $\{umn} - ABD BANK | UPI_MANDATE_AUTOPAY_UPDATE_SUCCESS_PAYER | Recurring AutoPay mandate amount modified |
UPI AutoPay mandate modification towards $\{payeeName} has failed due to $\{errorDescription}, $\{umn} - ABD BANK | UPI_MANDATE_AUTOPAY_UPDATE_FAILURE_PAYER | Recurring AutoPay mandate modification failed |
UPI AutoPay mandate set towards $\{payeeName} with INR $\{amount} is paused from $\{startDate} to $\{endDate}, $\{umn} - ABD BANK | UPI_MANDATE_AUTOPAY_PAUSE_SUCCESS_PAYER | Recurring AutoPay mandate successfully paused |
UPI AutoPay mandate pause has failed towards $\{payeeName} due to $\{errorDescription}, $\{umn} - ABD BANK | UPI_MANDATE_AUTOPAY_PAUSE_FAILURE_PAYER | Recurring AutoPay mandate pause failed |
UPI AutoPay mandate set towards $\{payeeName} with INR $\{amount} is successfully unpaused on $\{todayDate}, $\{umn} - ABD BANK | UPI_MANDATE_AUTOPAY_UNPAUSE_SUCCESS_PAYER | Recurring AutoPay mandate successfully unpaused |
UPI AutoPay mandate Unpause has failed towards $\{payeeName} due to $\{errorDescription}, $\{umn} - ABD BANK | UPI_MANDATE_AUTOPAY_UNPAUSE_FAILURE_PAYER | Recurring AutoPay mandate unpause failed |
Your account has been succesfully debited with INR $\{amount} on $\{todayDate} towards $\{payeeName} UPI Autopay, $\{umn} - ABD BANK | UPI_RECURRENCE_MANDATE_EXECUTION | Recurring AutoPay mandate executed — account debited |
$\{payeeName} has requested the creation of UPI Autopay Mandate for amount upto Rs. $\{amount} on ABCD. https://ABCiecug.page.link/4s3g - ABC Bank | UPI_RECURRENCE_MANDATE_REQUEST_PAYER | AutoPay mandate creation request received with deep-link |
UPI AutoPay for $\{payeeName} debit of INR $\{amount} is scheduled on $\{date}, $\{umn}. Please ensure sufficient balance in your account - ABD BANK | UPI_AUTOPAY_MANDATE_PREDEBIT_NOTIFICATION | Pre-debit reminder for upcoming AutoPay execution |
VPA Inactivity Events
| Sample SMS | Event | Description |
|---|---|---|
Transact now via your VPA $\{vpa} on ABC Bank app to avoid inactivation on $\{disablingDate} due to 365 days of inactivity - ABC Bank | THREE_SIXTY_DAYS_COMPLETED | Reminder sent at 360 days of VPA inactivity |
Transact now via your VPA $\{vpa} on ABC Bank app to avoid inactivation on $\{disablingDate} due to 365 days of inactivity - ABC Bank | THREE_SIXTY_FOUR_DAYS_COMPLETED | Reminder sent at 364 days of VPA inactivity |
Transact now via your VPA $\{vpa} on ABC Bank app to avoid inactivation on $\{disablingDate} due to 365 days of inactivity - ABC Bank | THREE_SIXTY_FIVE_DAYS_COMPLETED | Final reminder sent at 365 days of VPA inactivity |
Your UPI ID $\{vpa} is blocked due to 365 days of inactivity. Re-register on ABC Bank app to unblock your UPI Id. - ABC Bank | THREE_SIXTY_SIX_DAYS_COMPLETED | VPA blocked after exceeding 365 days of inactivity |
Educational / Awareness Events
| Sample SMS | Event | Description |
|---|---|---|
Dear Customer, never share your UPI PIN, CVV & OTP with anyone over call/SMS/Email even if claiming to be from Bank - ABD BANK | UPI_EDUCATIONAL_DONT_SHARE | Security awareness — do not share sensitive info |
Dear Customer, please note UPI PIN is used for authorization of a payment. UPI PIN will always be used for deduction of amount from your account - ABD BANK | UPI_EDUCATIONAL_PAYMENT | Educates user on the purpose of UPI PIN |
Dear Customer, please note that UPI PIN will always be used only on the app's UPI PIN page - ABD BANK | UPI_EDUCATIONAL_PIN | Educates user that UPI PIN is only entered in-app |
Dynamic Placeholders Reference
| Placeholder | Description |
|---|---|
$\{payeeName} | Name of the payment recipient / mandate beneficiary |
$\{payerID} | UPI ID (VPA) of the payer |
$\{payeeID} | UPI ID (VPA) of the payee |
$\{amount} | Transaction / mandate amount in INR |
$\{oldAmount} | Previous mandate amount before modification |
$\{time} | Timestamp of the transaction |
$\{date} | Date of the event |
$\{todayDate} | Current date |
$\{rrn} | Retrieval Reference Number for the transaction |
$\{umn} | Unique Mandate Number |
$\{vpa} | Virtual Payment Address (UPI ID) |
$\{mobileNo} | User's registered mobile number |
$\{maskedAccNumber} | Masked bank account number |
$\{payerMaskedAccountNumber} | Masked account number of the payer |
$\{payeeMaskedAccountNumber} | Masked account number of the payee |
$\{app} | Name of the partner application |
$\{recurrencePattern} | Mandate recurrence frequency (e.g., Monthly, Weekly) |
$\{startDate} | Mandate start date |
$\{endDate} | Mandate end date |
$\{disablingDate} | Date when VPA will be disabled due to inactivity |
$\{errorDescription} | Error reason for failed operations |
$\{OTP} | One-Time Password |
$\{available_balance} | Available account balance after transaction |
Webhook Notification Payloads
When the Webhook channel is enabled for a program, the Notification Engine posts the full event payload as a JSON POST request to the partner's registered callback URL. Below are sample payloads for each supported transaction type along with field descriptions.
Sample Data Notice
All sensitive data (account numbers, device IDs, credentials, etc.) in the samples below have been tampered/masked for documentation purposes.
UPI_FINAL_PAYMENT
Final payment confirmation posted after a UPI PAY transaction is completed successfully.
{
"payerDetails": {
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXX79930663" },
{ "name": "ACTYPE", "value": "PPIWALLET" },
{ "name": "IFSC", "value": "PPIW0XXXXXX" }
],
"addrType": "ACCOUNT"
},
"amount": { "curr": "INR", "value": "100.00" },
"code": "0000",
"seqNum": "1",
"name": "John Doe",
"addr": "7993XXXX34@topay",
"type": "PERSON",
"device": {
"tag": [
{ "name": "MOBILE", "value": "91799XXXXX34" },
{ "name": "GEOCODE", "value": "28.6139,77.2090" },
{ "name": "LOCATION", "value": "Delhi" },
{ "name": "TYPE", "value": "ANDROID" },
{ "name": "ID", "value": "A1B2XXXX" },
{ "name": "OS", "value": "Android 14" },
{ "name": "APP", "value": "com.sample.app" }
]
},
"creds": {
"cred": [
{
"data": { "code": "NPCI", "value": "XXXXXXXXXXXX", "ki": "20150822" },
"subType": "NA",
"type": "PRE_APPROVED"
}
]
},
"info": {
"identity": { "verifiedName": "John Doe", "id": "5023374", "type": "ACCOUNT" },
"rating": { "verifiedAddress": "TRUE" }
}
},
"headType": {
"ver": "2.0",
"msgId": "MFP1d67d91baf97442d9bc61e63c078XXXX",
"orgId": "188863",
"ts": "2026-03-31T11:55:36+05:30"
},
"payeeDetails": [
{
"ac": {
"detail": [
{ "name": "IFSC", "value": "PPIW0XXXXXX" },
{ "name": "ACTYPE", "value": "PPIWALLET" },
{ "name": "ACNUM", "value": "XXXXXXXX90417251" }
],
"addrType": "ACCOUNT"
},
"amount": { "curr": "INR", "value": "100.00" },
"code": "0000",
"seqNum": "1",
"name": "Jane Smith",
"addr": "9041XXXX32@topay",
"type": "PERSON"
}
],
"txn": {
"riskScores": {
"score": [{ "provider": "SAMPLEPE", "type": "TXNRISK", "value": "00030" }]
},
"note": "Payment for order",
"refCategory": "00",
"purpose": "00",
"custRef": "609071996211",
"id": "TXNVFQKNB7JP0KTW",
"refId": "899417160",
"refUrl": "https://sample-uat.example.in/upi",
"type": "PAY",
"initiationMode": "00",
"ts": "2026-03-31T11:55:36+05:30"
},
"transactionType": "UPI_FINAL_PAYMENT",
"payee_respCode": "00",
"profileId": "SAMPLEPE2014_7993066334",
"payerName": "Jane Smith",
"payer_respCode": "00",
"customer_name": "John Doe",
"channelCode": "SAMPLEPE",
"status": "SUCCESS"
}Field Descriptions:
| Field | Type | Description |
|---|---|---|
payerDetails | Object | Payer's account, identity, device, and credential details |
payerDetails.ac.detail | Array | Account details — ACNUM, ACTYPE, IFSC |
payerDetails.amount | Object | Transaction amount with currency |
payerDetails.code | String | Response code (0000 = success) |
payerDetails.name | String | Payer's verified name |
payerDetails.addr | String | Payer's VPA |
payerDetails.device.tag | Array | Device metadata — mobile, geocode, OS, app |
payerDetails.creds | Object | Credential block used for authorization |
payerDetails.info.identity | Object | Verified identity of the payer account |
headType | Object | Message header — version, message ID, org ID, timestamp |
payeeDetails | Array | List of payee(s) with account and amount details |
txn | Object | Transaction metadata |
txn.riskScores | Object | Risk score from the provider |
txn.note | String | Transaction remark / note |
txn.custRef | String | Customer reference number (RRN) |
txn.id | String | Unique transaction ID |
txn.type | String | Transaction type — PAY |
txn.initiationMode | String | Mode of initiation |
transactionType | String | Event type — UPI_FINAL_PAYMENT |
payee_respCode | String | Payee side response code |
payer_respCode | String | Payer side response code |
profileId | String | Unique profile identifier of the user |
payerName | String | Name of the payer |
customer_name | String | Customer display name |
channelCode | String | Partner channel identifier |
status | String | Final transaction status — SUCCESS / FAILURE |
UPI_CREDIT
Posted when the payee's account is credited for a UPI transaction.
{
"payerDetails": {
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXX79930663" },
{ "name": "ACTYPE", "value": "PPIWALLET" },
{ "name": "IFSC", "value": "PPIW0XXXXXX" }
],
"addrType": "ACCOUNT"
},
"amount": { "split": [], "curr": "INR", "value": "100.00" },
"code": "0000",
"seqNum": "1",
"name": "John Doe",
"addr": "7993XXXX34@topay",
"type": "PERSON",
"info": {
"identity": { "verifiedName": "John Doe", "id": "5023374", "type": "ACCOUNT" },
"rating": { "verifiedAddress": "TRUE", "value": "" }
}
},
"amount": 100.0,
"headType": {
"ver": "2.0",
"msgId": "a7gSLrXXX",
"orgId": "NPCI",
"ts": "2026-03-31T11:55:41+05:30"
},
"payeeDetails": [
{
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXX90417251" },
{ "name": "ACTYPE", "value": "PPIWALLET" },
{ "name": "IFSC", "value": "PPIW0XXXXXX" }
],
"addrType": "ACCOUNT"
},
"amount": { "split": [], "curr": "INR", "value": "100.00" },
"code": "0000",
"seqNum": "1",
"name": "Jane Smith",
"addr": "9041XXXX32@topay",
"type": "PERSON"
}
],
"payerID": "7993XXXX34@topay",
"txn": {
"riskScores": {
"score": [
{ "provider": "SAMPLEPE", "type": "TXNRISK", "value": "00030" },
{ "provider": "NPCI", "type": "TXNRISK", "value": "00000" }
]
},
"note": "Payment received",
"refCategory": "00",
"purpose": "00",
"custRef": "609071996211",
"subType": "PAY",
"id": "TXNVFQKNB7JP0KTW",
"refId": "899417160",
"refUrl": "https://sample-uat.example.in/upi",
"type": "CREDIT",
"initiationMode": "00",
"ts": "2026-03-31T11:55:36+05:30"
},
"rrn": 609071996211,
"transactionType": "UPI_CREDIT",
"dateTimeFormat": "31-03-2026 11:55:36",
"profileId": "SAMPLEPE2014_9041725132",
"isSensitive": true,
"payeeMaskedAccountNumber": "XXXXXXXXXXXXXXXX7251",
"time": "2026-03-31,11:55:36",
"customer_name": "John Doe",
"channelCode": "SAMPLEPE",
"status": "SUCCESS"
}Field Descriptions:
| Field | Type | Description |
|---|---|---|
payerDetails | Object | Payer's account and identity details |
amount | Number | Transaction amount as a numeric value |
headType | Object | Message header from NPCI |
payeeDetails | Array | Payee account and amount details |
payerID | String | VPA of the payer |
txn.type | String | CREDIT — indicates a credit leg |
txn.subType | String | Original transaction sub-type (PAY) |
txn.custRef | String | RRN — Retrieval Reference Number |
rrn | Number | RRN as a numeric value |
transactionType | String | UPI_CREDIT |
dateTimeFormat | String | Formatted date-time string |
profileId | String | Profile ID of the credited user |
isSensitive | Boolean | Flag indicating sensitive data is present |
payeeMaskedAccountNumber | String | Masked account number of the payee |
time | String | Transaction time |
customer_name | String | Customer name |
channelCode | String | Partner channel code |
status | String | SUCCESS / FAILURE |
UPI_DEBIT
Posted when the payer's account is debited for a UPI transaction.
{
"payerDetails": {
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXX79930663" },
{ "name": "ACTYPE", "value": "PPIWALLET" },
{ "name": "IFSC", "value": "PPIW0XXXXXX" }
],
"addrType": "ACCOUNT"
},
"amount": { "curr": "INR", "value": "100.00" },
"code": "0000",
"seqNum": "1",
"name": "John Doe",
"addr": "7993XXXX34@topay",
"type": "PERSON",
"device": {
"tag": [
{ "name": "MOBILE", "value": "91799XXXXX34" },
{ "name": "GEOCODE", "value": "28.6139,77.2090" },
{ "name": "LOCATION", "value": "Delhi" },
{ "name": "TYPE", "value": "ANDROID" },
{ "name": "ID", "value": "A1B2XXXX" },
{ "name": "OS", "value": "Android 14" },
{ "name": "APP", "value": "com.sample.app" }
]
},
"creds": {
"cred": [
{
"data": { "code": "NPCI", "value": "XXXXXXXXXXXX", "ki": "20150822" },
"subType": "NA",
"type": "PRE_APPROVED"
}
]
},
"info": {
"identity": { "verifiedName": "John Doe", "id": "5023374", "type": "ACCOUNT" },
"rating": { "verifiedAddress": "TRUE" }
}
},
"amount": 100.0,
"payerMaskedAccountNumber": "XXXXXXXXXXXXXXXX0663",
"headType": {
"ver": "2.0",
"msgId": "MFP1d67d91baf97442d9bc61e63c078XXXX",
"orgId": "188863",
"ts": "2026-03-31T11:55:36+05:30"
},
"payeeDetails": [
{
"amount": { "curr": "INR", "value": "100.00" },
"code": "0000",
"seqNum": "1",
"name": "Jane Smith",
"addr": "9041XXXX32@topay",
"type": "PERSON"
}
],
"txn": {
"riskScores": {
"score": [{ "provider": "SAMPLEPE", "type": "TXNRISK", "value": "00030" }]
},
"note": "Payment for order",
"refCategory": "00",
"purpose": "00",
"custRef": "609071996211",
"id": "TXNVFQKNB7JP0KTW",
"refId": "899417160",
"refUrl": "https://sample-uat.example.in/upi",
"type": "PAY",
"initiationMode": "00",
"ts": "2026-03-31T11:55:36+05:30"
},
"rrn": 609071996211,
"transactionType": "UPI_DEBIT",
"payeeName": "Jane Smith",
"dateTimeFormat": "31-03-2026 11:55:36",
"profileId": "SAMPLEPE2014_7993066334",
"isSensitive": true,
"time": "2026-03-31,11:55:36",
"payeeID": "9041XXXX32@topay",
"customer_name": "John Doe",
"channelCode": "SAMPLEPE",
"status": "REQUESTED"
}Field Descriptions:
| Field | Type | Description |
|---|---|---|
payerDetails | Object | Payer's full details including account, device, credentials |
amount | Number | Debit amount |
payerMaskedAccountNumber | String | Masked payer account number |
payeeDetails | Array | Payee details (account info may be absent for debit leg) |
txn.type | String | PAY — payment transaction |
txn.custRef | String | RRN |
rrn | Number | Retrieval Reference Number |
transactionType | String | UPI_DEBIT |
payeeName | String | Name of the payee |
payeeID | String | VPA of the payee |
profileId | String | Profile ID of the debited user |
isSensitive | Boolean | Sensitive data flag |
status | String | REQUESTED / SUCCESS / FAILURE |
UPI_DEBIT_REVERSAL
Posted when a previously debited amount is reversed back to the payer's account.
{
"payerDetails": {
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXXXXXXX0641" },
{ "name": "ACTYPE", "value": "PPIWALLET" },
{ "name": "IFSC", "value": "PPIW0XXXXXX" }
],
"addrType": "ACCOUNT"
},
"amount": { "curr": "INR", "value": "10.00" },
"code": "0000",
"seqNum": "1",
"name": "Sample User",
"addr": "86109XXXXX@sample",
"type": "PERSON",
"device": {
"tag": [
{ "name": "MOBILE", "value": "9186XXXXXXXX" },
{ "name": "GEOCODE", "value": "17.489,78.393" },
{ "name": "LOCATION", "value": "Hyderabad" },
{ "name": "TYPE", "value": "MOB" },
{ "name": "ID", "value": "2B3384XXXXXXXXXX" },
{ "name": "OS", "value": "ios" },
{ "name": "APP", "value": "com.sample.ios" }
]
},
"creds": {
"cred": [
{
"data": { "code": "NPCI", "value": "XXXXXXXXXXXX", "ki": "20150822" },
"subType": "NA",
"type": "PRE_APPROVED"
}
]
},
"info": {
"identity": { "verifiedName": "Sample User", "id": "9081854", "type": "ACCOUNT" },
"rating": { "verifiedAddress": "TRUE" }
}
},
"amount": 10.0,
"payerMaskedAccountNumber": "XXXXXXXXXXXXX0641",
"headType": {
"ver": "2.0",
"msgId": "LIV62e215790ae44ff5a611a9d822a0XXXX",
"orgId": "157272",
"ts": "2026-03-23T12:12:04+05:30"
},
"payeeDetails": [
{
"amount": { "curr": "INR", "value": "10.00" },
"code": "0000",
"seqNum": "1",
"name": "Payee User",
"addr": "payee94879.sample@handle",
"type": "PERSON"
}
],
"txn": {
"riskScores": {
"score": [{ "provider": "SAMPLE", "type": "TXNRISK", "value": "00030" }]
},
"note": "Pay Description",
"refCategory": "00",
"purpose": "00",
"custRef": "608249564960",
"id": "LIV8F9C6CF60CCC48B0B4CFD6770A73XXXX",
"refId": "106349354",
"refUrl": "https://sample-uat.example.in/upi",
"type": "PAY",
"initiationMode": "00",
"ts": "2026-03-23T12:12:04+05:30"
},
"rrn": 608249564960,
"transactionType": "UPI_DEBIT_REVERSAL",
"dateTimeFormat": "23-03-2026 12:12:04",
"profileId": "8de6753f-23a8-4a18-ab92-a708f4c1XXXX",
"isSensitive": true,
"time": "2026-03-23,12:12:04",
"customer_name": "Sample User",
"channelCode": "SAMPLEWALL",
"status": "FAILURE"
}Field Descriptions:
| Field | Type | Description |
|---|---|---|
payerDetails | Object | Original payer's account, device, and identity |
amount | Number | Reversal amount |
payerMaskedAccountNumber | String | Masked payer account number |
payeeDetails | Array | Original payee details |
txn.type | String | PAY — original transaction type |
txn.custRef | String | Original RRN |
rrn | Number | RRN of the original transaction |
transactionType | String | UPI_DEBIT_REVERSAL |
profileId | String | Profile of the user receiving reversal |
status | String | Status of the reversal (FAILURE / SUCCESS) |
UPI_COLLECT_REQUEST_INITIATE
Posted when a collect request is initiated towards a payer.
{
"payerDetails": {
"amount": { "curr": "INR", "value": "1.00" },
"code": "0000",
"seqNum": "1",
"name": "Payer Name",
"addr": "c17ffca2416544b7bd3adeb0b691XXXX@sample",
"type": "PERSON"
},
"amount": 1,
"headType": {
"ver": "2.0",
"msgId": "LIV323d3c11a5644d109ae5a729c8ecXXXX",
"orgId": "157272",
"ts": "2026-03-09T14:17:49+05:30"
},
"payeeDetails": [
{
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXXXXXXXXXX9379" },
{ "name": "ACTYPE", "value": "PPIWALLET" },
{ "name": "IFSC", "value": "PPIW0XXXXXX" }
],
"addrType": "ACCOUNT"
},
"amount": { "curr": "INR", "value": "1.00" },
"code": "4784",
"seqNum": "1",
"name": "Merchant Topup",
"merchant": {
"identifier": {
"onBoardingType": "BANK",
"subCode": "4784",
"mid": "MID001",
"merchantType": "LARGE",
"tid": "TID001",
"merchantGenre": "ONLINE",
"sid": "PANMERCHANT001"
},
"ownership": { "type": "PROPRIETARY" },
"verifiedMerchant": false,
"name": { "brand": "Merchant Topup" }
},
"addr": "merchant.autopay@sample",
"type": "ENTITY",
"device": {
"tag": [
{ "name": "MOBILE", "value": "9190XXXXXXXX" },
{ "name": "GEOCODE", "value": "1.235,5.678" },
{ "name": "LOCATION", "value": "Chennai" },
{ "name": "TYPE", "value": "MOB" },
{ "name": "ID", "value": "41b352cfXXXXXXXX" },
{ "name": "OS", "value": "android" },
{ "name": "APP", "value": "1.0.0" }
]
},
"info": {
"identity": { "verifiedName": "Merchant Topup", "id": "676530", "type": "ACCOUNT" },
"rating": { "verifiedAddress": "TRUE" }
}
}
],
"payerID": "c17ffca2416544b7bd3adeb0b691XXXX@sample",
"txn": {
"riskScores": {
"score": [{ "provider": "SAMPLE", "type": "TXNRISK", "value": "00030" }]
},
"note": "Mandate Execution Collect Request",
"refCategory": "00",
"purpose": "14",
"rules": {
"rule": [{ "name": "EXPIREAFTER", "value": "10" }]
},
"custRef": "606880649491",
"id": "LIV42870ada48854c7e8bfe51d7acabXXXX",
"refId": "948181743",
"refUrl": "https://sample-uat.example.in/upi",
"type": "COLLECT",
"initiationMode": "11",
"ts": "2026-03-09T14:17:49+05:30"
},
"transactionType": "UPI_COLLECT_REQUEST_INITIATE",
"profileId": "82d3b8d3-c39e-43a1-88a6-3da8d8a8XXXX",
"customer_name": "Payer Name",
"channelCode": "SAMPLEAUTOPAY",
"status": "REQUESTED"
}Field Descriptions:
| Field | Type | Description |
|---|---|---|
payerDetails | Object | Payer's basic info (account details may not be present for collect initiation) |
amount | Number | Collect request amount |
payeeDetails | Array | Payee / collector details including merchant info |
payeeDetails[].merchant | Object | Merchant identifier, ownership, and brand details |
payerID | String | VPA of the payer being collected from |
txn.type | String | COLLECT |
txn.purpose | String | Purpose code (14 = mandate execution) |
txn.rules | Object | Expiry rules for the collect request |
txn.initiationMode | String | 11 — mandate-initiated collect |
transactionType | String | UPI_COLLECT_REQUEST_INITIATE |
profileId | String | Profile ID of the payer |
status | String | REQUESTED |
UPI_RESP_COMPLAINT
Posted when a complaint response / status update is received from NPCI.
{
"payerDetails": {
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXXXXXXXXXXXXX" },
{ "name": "ACTYPE", "value": "PPIWALLET" },
{ "name": "IFSC", "value": "LIVQ0XXXXXX" }
],
"addrType": "ACCOUNT"
},
"amount": { "curr": "INR", "value": "1.00" },
"code": "0000",
"seqNum": "1",
"name": "Complainant Name",
"addr": "91139X@sample",
"type": "PERSON",
"device": {
"tag": [
{ "name": "MOBILE", "value": "91911XXXXXXXX" },
{ "name": "GEOCODE", "value": "90.00,135.00" },
{ "name": "LOCATION", "value": "none" },
{ "name": "TYPE", "value": "Handset" },
{ "name": "ID", "value": "1f23e9aeXXXXXXXX" },
{ "name": "OS", "value": "Android" },
{ "name": "APP", "value": "com.sample.app" }
]
},
"creds": {
"cred": [
{
"data": { "code": "NPCI", "value": "XXXXXXXXXXXX", "ki": "20150822" },
"subType": "NA",
"type": "PRE_APPROVED"
}
]
},
"info": {
"identity": { "verifiedName": "Complainant Name", "id": "6948493", "type": "ACCOUNT" },
"rating": { "verifiedAddress": "TRUE" }
}
},
"transactionType": "UPI_RESP_COMPLAINT",
"headType": {
"ver": "2.0",
"msgId": "9edcq9XXXX",
"prodType": "UPI",
"orgId": "NPCI",
"ts": "2026-01-31T13:56:19+05:30"
},
"payeeDetails": {
"ac": {
"detail": [
{ "name": "IFSC", "value": "AABC0XXXXXX" },
{ "name": "ACTYPE", "value": "SAVINGS" },
{ "name": "ACNUM", "value": "XXXXXXXXXXXXXXX2522" }
],
"addrType": "ACCOUNT"
},
"amount": { "curr": "INR", "value": "1.00" },
"code": "0000",
"seqNum": "1",
"name": "Beneficiary Name",
"addr": "beneficiary@handle",
"type": "PERSON"
},
"resp": {
"ref": [
{
"adjRefId": "P170511000033882XXXXX",
"adjCode": "103",
"adjAmt": "10.00",
"approvalNum": "651725",
"adjFlag": "TCC",
"type": "BENEFICIARY",
"addr": "beneficiary@handle",
"ifsc": "AABC0XXXXXX",
"accType": "SAVINGS",
"adjRemarks": "goods delivered"
}
],
"crn": "UPI23053146891",
"reqMsgId": "LIVaec3349f06aa4227aa3b6c9123aaXXXX"
},
"complaint": {
"currCycle": "N",
"reqAdjAmount": "1.00",
"orgSettRespCode": "RB",
"reqAdjFlag": "PBRB",
"reqAdjCode": "U010"
},
"profileId": "XXXXXXXXXXXXXXXXXXX",
"txn": {
"note": "COMPLAINT",
"orgTxnId": "LIV70fad6c595124282833a086867327XXX",
"refCategory": "168161481",
"purpose": "00",
"orgMsgId": "LIVaec3349f06aa4227aa3b6c9123aaXXXX",
"orgRrn": "315051516494",
"type": "STATUSUPDATE",
"custRef": "315160341742",
"subType": "REMITTER",
"id": "LIVe772285bd6b94f1aa7ab67fdbeaaXXXX",
"refId": "111648580",
"refUrl": "https://sample-uat.example.in/upi",
"initiationMode": "U1",
"orgTxnDate": "2023-05-30T17:48:13+05:30",
"ts": "2026-01-31T13:56:19+05:30"
}
}Field Descriptions:
| Field | Type | Description |
|---|---|---|
transactionType | String | UPI_RESP_COMPLAINT |
headType.prodType | String | Product type — UPI |
payeeDetails | Object | Beneficiary (payee) account details (not an array for complaint) |
resp | Object | Complaint response details |
resp.ref | Array | Adjustment references |
resp.ref[].adjRefId | String | Adjustment reference ID |
resp.ref[].adjCode | String | Adjustment code |
resp.ref[].adjAmt | String | Adjusted amount |
resp.ref[].adjFlag | String | Adjustment flag (e.g., TCC) |
resp.ref[].adjRemarks | String | Remarks for the adjustment |
resp.crn | String | Complaint Reference Number |
resp.reqMsgId | String | Original request message ID |
complaint | Object | Complaint metadata |
complaint.currCycle | String | Current cycle flag (Y/N) |
complaint.reqAdjAmount | String | Requested adjustment amount |
complaint.orgSettRespCode | String | Original settlement response code |
complaint.reqAdjFlag | String | Requested adjustment flag |
complaint.reqAdjCode | String | Requested adjustment code |
txn.orgTxnId | String | Original transaction ID being disputed |
txn.orgRrn | String | Original RRN |
txn.orgTxnDate | String | Original transaction date |
txn.type | String | STATUSUPDATE |
txn.subType | String | REMITTER — complainant side |
UPI_MANDATE_AUTOPAY_CREATE_REQUEST_PAYER
Posted when an AutoPay mandate creation request is received by the payer.
{
"payerDetails": {
"code": "0000",
"seqNum": "1",
"name": "Payer Name",
"addr": "8344XXXX00.sample@handle",
"type": "PERSON"
},
"transactionType": "UPI_MANDATE_AUTOPAY_CREATE_REQUEST_PAYER",
"payeeName": "Merchant Topup",
"amount": 2000.0,
"mandate": {
"recurrence": { "pattern": "ASPRESENTED" },
"amount": { "rule": "MAX", "value": "2000.00" },
"revokeable": "Y",
"name": "Recurring Mandate",
"blockFund": "N",
"validity": { "start": "18032026", "end": "18032041" },
"txnId": "LIV3132ba1f0a64434581dbb587XXXXXXXX",
"ts": "2026-03-18T21:41:20+05:30"
},
"headType": {
"ver": "2.0",
"msgId": "a6UazXXXX",
"orgId": "NPCI",
"ts": "2026-03-18T21:41:21+05:30"
},
"payeeDetails": [
{
"payee": [
{
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXXXXXXXXXX9379" },
{ "name": "ACTYPE", "value": "PPIWALLET" },
{ "name": "IFSC", "value": "PPIW0XXXXXX" }
],
"addrType": "ACCOUNT"
},
"code": "4784",
"seqNum": "1",
"name": "Merchant Topup",
"addr": "merchant.autopay@handle",
"type": "ENTITY",
"info": {
"identity": { "verifiedName": "XXXXXXXXXXXXXXXX9379", "id": "9178355", "type": "ACCOUNT" },
"rating": { "verifiedAddress": "TRUE", "value": "" }
}
}
]
}
],
"profileId": "45192a66-fc4f-49f5-b9ba-f136f63bXXXX",
"txn": {
"note": "Recurring Mandate",
"purpose": "14",
"rules": {
"rule": [{ "name": "EXPIREAFTER", "value": "5" }]
},
"custRef": "607747367160",
"id": "LIV3132ba1f0a64434581dbb587XXXXXXXX",
"refId": "423242707",
"refUrl": "https://sample-uat.example.in/upi",
"type": "CREATE",
"initiationMode": "00",
"initiatedBy": "PAYEE",
"ts": "2026-03-18T21:41:20+05:30"
},
"channelCode": "SAMPLEWALL"
}Field Descriptions:
| Field | Type | Description |
|---|---|---|
transactionType | String | UPI_MANDATE_AUTOPAY_CREATE_REQUEST_PAYER |
payeeName | String | Mandate beneficiary name |
amount | Number | Mandate maximum amount |
mandate | Object | Mandate configuration |
mandate.recurrence.pattern | String | Recurrence pattern — ASPRESENTED, MONTHLY, YEARLY, etc. |
mandate.amount.rule | String | Amount rule — MAX / EXACT |
mandate.revokeable | String | Whether the mandate can be revoked (Y/N) |
mandate.validity.start | String | Mandate start date (ddMMyyyy) |
mandate.validity.end | String | Mandate end date (ddMMyyyy) |
mandate.blockFund | String | Whether funds are blocked (Y/N) |
txn.type | String | CREATE |
txn.initiatedBy | String | PAYEE or PAYER |
txn.rules.rule | Array | Expiry rules |
UPI_MANDATE_AUTOPAY_CREATE_SUCCESS_PAYER
Posted when an AutoPay mandate is successfully created.
{
"payerDetails": {
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXX44474400" },
{ "name": "ACTYPE", "value": "PPIWALLET" },
{ "name": "IFSC", "value": "PPIW0XXXXXX" }
],
"addrType": "ACCOUNT"
},
"code": "0000",
"seqNum": "1",
"name": "Payer Name",
"addr": "8344XXXX00.sample@handle",
"type": "PERSON",
"device": {
"tag": [
{ "name": "MOBILE", "value": "9183XXXXXXXX" },
{ "name": "GEOCODE", "value": "13.064,80.215" },
{ "name": "LOCATION", "value": "Chennai" },
{ "name", "value": "MOB" },
{ "name": "ID", "value": "8bc0732bXXXXXXXX" },
{ "name": "OS", "value": "Android 16" },
{ "name": "APP", "value": "uat.sample.android" }
]
},
"creds": {
"cred": [
{
"data": { "code": "NPCI", "value": "XXXXXXXXXXXX", "ki": "20150822" },
"subType": "NA",
"type": "PRE_APPROVED"
}
]
},
"info": {
"identity": { "verifiedName": "XXXXXXXX44474400", "id": "1774886", "type": "ACCOUNT" },
"rating": { "verifiedAddress": "TRUE" }
}
},
"amount": 2000.0,
"mandate": {
"recurrence": { "pattern": "ASPRESENTED" },
"amount": { "rule": "MAX", "value": "2000.00" },
"revokeable": "Y",
"umn": "cccab48c122d4aed8eabecd4b018XXXX@handle",
"name": "Recurring Mandate",
"blockFund": "N",
"validity": { "start": "19032026", "end": "19032041" },
"txnId": "LIVcc97478abf7b4e3d8e50e8c4313cXXXX",
"ts": "2026-03-19T17:33:50+05:30"
},
"headType": {
"ver": "2.0",
"msgId": "a6VRjXXXX",
"orgId": "NPCI",
"ts": "2026-03-19T17:33:50+05:30"
},
"payeeDetails": [
{
"payee": [
{
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXXXXXXXXXX9379" },
{ "name": "ACTYPE", "value": "PPIWALLET" },
{ "name": "IFSC", "value": "PPIW0XXXXXX" }
],
"addrType": "ACCOUNT"
},
"code": "4784",
"seqNum": "1",
"name": "Merchant Topup",
"addr": "merchant.autopay@handle",
"type": "ENTITY",
"info": {
"identity": { "verifiedName": "XXXXXXXXXXXXXXXX9379", "id": "6413000", "type": "ACCOUNT" },
"rating": { "verifiedAddress": "TRUE", "value": "" }
}
}
]
}
],
"endDate": "19/03/41",
"txn": {
"note": "Recurring Mandate",
"purpose": "14",
"rules": {
"rule": [{ "name": "EXPIREAFTER", "value": "5" }]
},
"custRef": "607851666015",
"id": "LIVcc97478abf7b4e3d8e50e8c4313cXXXX",
"refId": "887245648",
"refUrl": "https://sample-uat.example.in/upi",
"type": "CREATE",
"initiationMode": "00",
"initiatedBy": "PAYEE",
"ts": "2026-03-19T17:33:50+05:30"
},
"todayDate": "19/03/26",
"transactionType": "UPI_MANDATE_AUTOPAY_CREATE_SUCCESS_PAYER",
"payeeName": "Merchant Topup",
"profileId": "45192a66-fc4f-49f5-b9ba-f136f63bXXXX",
"umn": "cccab48c122d4aed8eabecd4b018XXXX@handle",
"customer_name": "Payer Name",
"startDate": "19/03/26",
"channelCode": "SAMPLEWALL"
}Field Descriptions:
| Field | Type | Description |
|---|---|---|
transactionType | String | UPI_MANDATE_AUTOPAY_CREATE_SUCCESS_PAYER |
mandate.umn | String | Unique Mandate Number — assigned on successful creation |
endDate | String | Formatted mandate end date (dd/MM/yy) |
startDate | String | Formatted mandate start date (dd/MM/yy) |
todayDate | String | Current date (dd/MM/yy) |
payeeName | String | Mandate beneficiary name |
umn | String | UMN (top-level duplicate for convenience) |
customer_name | String | Payer's display name |
UPI_MANDATE_AUTOPAY_CREATE_FAILURE_PAYER
Posted when an AutoPay mandate creation fails.
{
"payerDetails": {
"code": "0000",
"seqNum": "1",
"name": "Payer Name",
"addr": "8344XXXX00.sample@handle",
"type": "PERSON"
},
"transactionType": "UPI_MANDATE_AUTOPAY_CREATE_FAILURE_PAYER",
"mandate": {
"recurrence": { "pattern": "ASPRESENTED" },
"amount": { "rule": "MAX", "value": "2000.00" },
"revokeable": "Y",
"name": "Recurring Mandate",
"blockFund": "N",
"validity": { "start": "18032026", "end": "18032041" },
"txnId": "LIV3132ba1f0a64434581dbb587XXXXXXXX",
"ts": "2026-03-18T21:41:20+05:30"
},
"errorDescription": "RESPAUTHMANDATE EXPIRED",
"headType": {
"ver": "2.0",
"msgId": "a6UazXXXX",
"orgId": "NPCI",
"ts": "2026-03-18T21:41:21+05:30"
},
"payeeDetails": [
{
"payee": [
{
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXXXXXXXXXX9379" },
{ "name": "ACTYPE", "value": "PPIWALLET" },
{ "name": "IFSC", "value": "PPIW0XXXXXX" }
],
"addrType": "ACCOUNT"
},
"code": "4784",
"seqNum": "1",
"name": "Merchant Topup",
"addr": "merchant.autopay@handle",
"type": "ENTITY",
"info": {
"identity": { "verifiedName": "XXXXXXXXXXXXXXXX9379", "id": "9178355", "type": "ACCOUNT" },
"rating": { "verifiedAddress": "TRUE", "value": "" }
}
}
]
}
],
"profileId": "45192a66-fc4f-49f5-b9ba-f136f63bXXXX",
"customer_name": "Payer Name",
"txn": {
"note": "Recurring Mandate",
"purpose": "14",
"rules": {
"rule": [{ "name": "EXPIREAFTER", "value": "5" }]
},
"custRef": "607747367160",
"id": "LIV3132ba1f0a64434581dbb587XXXXXXXX",
"refId": "423242707",
"refUrl": "https://sample-uat.example.in/upi",
"type": "CREATE",
"initiationMode": "00",
"initiatedBy": "PAYEE",
"ts": "2026-03-18T21:41:20+05:30"
},
"channelCode": "SAMPLEWALL"
}Field Descriptions:
| Field | Type | Description |
|---|---|---|
transactionType | String | UPI_MANDATE_AUTOPAY_CREATE_FAILURE_PAYER |
errorDescription | String | Reason for mandate creation failure |
mandate | Object | Mandate details that failed to create |
customer_name | String / Number | Customer name (may be numeric if name is unavailable) |
UPI_MANDATE_AUTOPAY_REVOKE_SUCCESS_PAYER
Posted when an AutoPay mandate is successfully revoked.
{
"payerDetails": {
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXXXX3d03ee" },
{ "name": "ACTYPE", "value": "PPIWALLET" },
{ "name": "IFSC", "value": "PPIW0XXXXXX" }
],
"addrType": "ACCOUNT"
},
"code": "0000",
"seqNum": "1",
"name": "Payer Name",
"addr": "payer@handle",
"type": "PERSON",
"device": {
"tag": [
{ "name": "MOBILE", "value": "9184XXXXXXXX" },
{ "name": "GEOCODE", "value": "19.1200,72.8702" },
{ "name": "LOCATION", "value": "Mumbai" },
{ "name": "TYPE", "value": "MOB" },
{ "name": "ID", "value": "a6e54ea2XXXXXXXX" },
{ "name": "OS", "value": "Android" },
{ "name": "APP", "value": "com.sample.uat" }
]
},
"creds": {
"cred": [
{
"data": { "code": "NPCI", "value": "XXXXXXXXXXXX", "ki": "20150822" },
"subType": "NA",
"type": "PRE_APPROVED"
}
]
},
"info": {
"identity": { "verifiedName": "XXXXXXXXXX3d03ee", "id": "7254909", "type": "ACCOUNT" },
"rating": { "verifiedAddress": "TRUE" }
}
},
"transactionType": "UPI_MANDATE_AUTOPAY_REVOKE_SUCCESS_PAYER",
"amount": 2,
"mandate": {
"recurrence": {
"pattern": "YEARLY",
"rule": { "type": "ON", "value": "5" }
},
"amount": { "rule": "MAX", "value": "2.00" },
"revokeable": "Y",
"umn": "d0632c8eb73d45f69689f19c635dXXXX@handle",
"name": "test",
"blockFund": "N",
"shareToPayee": "Y",
"validity": { "start": "05122025", "end": "05122026" },
"txnId": "MANDATEEFECB8930443441XXXXXX",
"ts": "2025-12-05T12:50:04+05:30"
},
"headType": {
"ver": "2.0",
"msgId": "ZKD88357844aa7546788cb19461f009XXXX",
"orgId": "188865",
"ts": "2025-12-05T12:50:04+05:30"
},
"payeeDetails": [
{
"payee": [
{
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXXXX7890" },
{ "name": "ACTYPE", "value": "CURRENT" },
{ "name": "IFSC", "value": "AABF00XXXXX" }
],
"addrType": "ACCOUNT"
},
"code": "8099",
"seqNum": "1",
"name": "Payee Entity",
"addr": "payee@handle2",
"type": "ENTITY"
}
]
}
],
"profileId": "d03ee44e-7258-4218-818b-76e1d590XXXX",
"txn": {
"note": "Mandate Revoke",
"purpose": "14",
"rules": {
"rule": [{ "name": "EXPIREAFTER", "value": "30" }]
},
"custRef": "533973780932",
"id": "MANDATEEFECB8930443441XXXXXX",
"refId": "165006458",
"refUrl": "https://sample-uat.example.in/upi",
"type": "CREATE",
"initiationMode": "12",
"initiatedBy": "PAYER",
"ts": "2025-12-05T12:50:04+05:30"
},
"channelCode": "SAMPLE"
}Field Descriptions:
| Field | Type | Description |
|---|---|---|
transactionType | String | UPI_MANDATE_AUTOPAY_REVOKE_SUCCESS_PAYER |
mandate.umn | String | Unique Mandate Number of the revoked mandate |
mandate.shareToPayee | String | Whether mandate details are shared with payee (Y/N) |
mandate.recurrence.rule | Object | Recurrence rule — type (ON/BEFORE/AFTER) and value (day) |
UPI_MANDATE_AUTOPAY_REVOKE_FAILURE_PAYER
Posted when an AutoPay mandate revocation fails.
{
"payerDetails": {
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXXXX3d03ee" },
{ "name": "ACTYPE", "value": "PPIWALLET" },
{ "name": "IFSC", "value": "PPIW0XXXXXX" }
],
"addrType": "ACCOUNT"
},
"code": "0000",
"seqNum": "1",
"name": "Payer Name",
"addr": "payer@handle",
"type": "PERSON",
"device": {
"tag": [
{ "name": "MOBILE", "value": "9184XXXXXXXX" },
{ "name": "GEOCODE", "value": "19.1200,72.8702" },
{ "name": "LOCATION", "value": "Mumbai" },
{ "name": "TYPE", "value": "MOB" },
{ "name": "ID", "value": "a6e54ea2XXXXXXXX" },
{ "name": "OS", "value": "Android" },
{ "name": "APP", "value": "com.sample.uat" }
]
},
"creds": {
"cred": [
{
"data": { "code": "NPCI", "value": "XXXXXXXXXXXX", "ki": "20150822" },
"subType": "NA",
"type": "PRE_APPROVED"
}
]
},
"info": {
"identity": { "verifiedName": "XXXXXXXXXX3d03ee", "id": "7254909", "type": "ACCOUNT" },
"rating": { "verifiedAddress": "TRUE" }
}
},
"transactionType": "UPI_MANDATE_AUTOPAY_REVOKE_FAILURE_PAYER",
"amount": 2,
"mandate": {
"recurrence": {
"pattern": "YEARLY",
"rule": { "type": "ON", "value": "5" }
},
"amount": { "rule": "MAX", "value": "2.00" },
"revokeable": "Y",
"umn": "d0632c8eb73d45f69689f19c635dXXXX@handle",
"name": "test",
"blockFund": "N",
"shareToPayee": "Y",
"validity": { "start": "05122025", "end": "05122026" },
"txnId": "MANDATEEFECB8930443441XXXXXX",
"ts": "2025-12-05T12:50:04+05:30"
},
"headType": {
"ver": "2.0",
"msgId": "ZKD88357844aa7546788cb19461f009XXXX",
"orgId": "188865",
"ts": "2025-12-05T12:50:04+05:30"
},
"payeeDetails": [
{
"payee": [
{
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXXXX7890" },
{ "name": "ACTYPE", "value": "CURRENT" },
{ "name": "IFSC", "value": "AABF00XXXXX" }
],
"addrType": "ACCOUNT"
},
"code": "8099",
"seqNum": "1",
"name": "Payee Entity",
"addr": "payee@handle2",
"type": "ENTITY"
}
]
}
],
"profileId": "d03ee44e-7258-4218-818b-76e1d590XXXX",
"txn": {
"note": "Mandate Revoke",
"purpose": "14",
"rules": {
"rule": [{ "name": "EXPIREAFTER", "value": "30" }]
},
"custRef": "533973780932",
"id": "MANDATEEFECB8930443441XXXXXX",
"refId": "165006458",
"refUrl": "https://sample-uat.example.in/upi",
"type": "CREATE",
"initiationMode": "12",
"initiatedBy": "PAYER",
"ts": "2025-12-05T12:50:04+05:30"
},
"channelCode": "SAMPLE"
}Field Descriptions:
| Field | Type | Description |
|---|---|---|
transactionType | String | UPI_MANDATE_AUTOPAY_REVOKE_FAILURE_PAYER |
mandate.umn | String | UMN of the mandate that failed to revoke |
errorDescription | String | Reason for revocation failure (may be absent if error is in response code) |
UPI_MANDATE_AUTOPAY_EXECUTION_SUCCESS_PAYER
Posted when a recurring mandate is successfully executed (account debited).
{
"payerDetails": {
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXXXXXXXXXX8179" },
{ "name": "ACTYPE", "value": "PPIWALLET" },
{ "name": "IFSC", "value": "PPIW0XXXXXX" }
],
"addrType": "ACCOUNT"
},
"code": "0000",
"seqNum": "1",
"name": "Payer Name",
"addr": "8344XXXX00.sample@handle",
"type": "PERSON",
"device": {
"tag": [
{ "name": "MOBILE", "value": "9189XXXXXXXX" },
{ "name": "GEOCODE", "value": "1.235,5.678" },
{ "name": "LOCATION", "value": "Chennai" },
{ "name": "TYPE", "value": "ANDROID" },
{ "name": "ID", "value": "9f444fc1XXXXXXXX" },
{ "name": "OS", "value": "android" },
{ "name": "APP", "value": "1.0.0" }
]
},
"creds": {
"cred": [
{
"data": { "code": "NPCI", "value": "XXXXXXXXXXXX", "ki": "20150822" },
"subType": "NA",
"type": "PRE_APPROVED"
}
]
},
"info": {
"identity": { "verifiedName": "XXXXXXXXXXXXXXXX8179", "id": "3624051", "type": "ACCOUNT" },
"rating": { "verifiedAddress": "TRUE" }
}
},
"app": "SAMPLE APP",
"mandate": {
"recurrence": { "pattern": "ASPRESENTED" },
"amount": { "rule": "MAX", "value": "10.00" },
"revokeable": "Y",
"umn": "1d3ee651b958492983da09621a72XXXX@handle",
"name": "Recurring Mandate",
"blockFund": "N",
"validity": { "start": "18032026", "end": "18032041" },
"txnId": "LIVbb2cd1c1300047c193677268f26aXXXX",
"ts": "2026-03-18T13:01:06+05:30"
},
"amount": 1.0,
"headType": {
"ver": "2.0",
"msgId": "a6U1A7XXX",
"orgId": "NPCI",
"ts": "2026-03-18T13:01:06+05:30"
},
"payeeDetails": [
{
"payee": [
{
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXXXXXXXXXX9379" },
{ "name": "ACTYPE", "value": "PPIWALLET" },
{ "name": "IFSC", "value": "PPIW0XXXXXX" }
],
"addrType": "ACCOUNT"
},
"code": "4784",
"seqNum": "1",
"name": "Merchant Topup",
"addr": "merchant.autopay@handle",
"type": "ENTITY",
"info": {
"identity": { "verifiedName": "XXXXXXXXXXXXXXXX9379", "id": "4691876", "type": "ACCOUNT" },
"rating": { "verifiedAddress": "TRUE", "value": "" }
}
}
]
}
],
"errorDescription": "XX",
"txn": {
"note": "Recurring Mandate",
"purpose": "14",
"rules": {
"rule": [{ "name": "EXPIREAFTER", "value": "5" }]
},
"custRef": "607765361421",
"id": "LIVbb2cd1c1300047c193677268f26aXXXX",
"refId": "603346453",
"refUrl": "https://sample-uat.example.in/upi",
"type": "CREATE",
"initiationMode": "00",
"initiatedBy": "PAYEE",
"ts": "2026-03-18T13:01:06+05:30"
},
"transactionType": "UPI_MANDATE_AUTOPAY_EXECUTION_SUCCESS_PAYER",
"payeeName": "Merchant Topup",
"profileId": "45192a66-fc4f-49f5-b9ba-f136f63bXXXX",
"umn": "1d3ee651b958492983da09621a72XXXX@handle",
"payerName": "Payer Name",
"customer_name": "Payer Name",
"channelCode": "SAMPLEWALL"
}Field Descriptions:
| Field | Type | Description |
|---|---|---|
transactionType | String | UPI_MANDATE_AUTOPAY_EXECUTION_SUCCESS_PAYER |
app | String | Application name where mandate was set up |
amount | Number | Execution amount (may differ from mandate max) |
mandate.amount.value | String | Maximum mandate amount |
umn | String | Unique Mandate Number |
payeeName | String | Mandate beneficiary name |
payerName | String | Payer name |
errorDescription | String | Error code placeholder (may contain non-error values) |
UPI_MANDATE_AUTOPAY_PAUSE_SUCCESS_PAYER
Posted when an AutoPay mandate is successfully paused.
{
"payerDetails": {
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXXXX3d03ee" },
{ "name": "ACTYPE", "value": "PPIWALLET" },
{ "name": "IFSC", "value": "PPIW0XXXXXX" }
],
"addrType": "ACCOUNT"
},
"code": "0000",
"seqNum": "1",
"name": "Payer Name",
"addr": "payer@handle",
"type": "PERSON",
"device": {
"tag": [
{ "name": "MOBILE", "value": "9184XXXXXXXX" },
{ "name": "GEOCODE", "value": "19.0760,72.8777" },
{ "name": "LOCATION", "value": "Mumbai" },
{ "name": "TYPE", "value": "MOB" },
{ "name": "ID", "value": "a6e54ea2XXXXXXXX" },
{ "name": "OS", "value": "Android" },
{ "name": "APP", "value": "XXXXXXXXXX" }
]
},
"creds": {
"cred": [
{
"data": { "code": "NPCI", "value": "XXXXXXXXXXXX", "ki": "20150822" },
"subType": "NA",
"type": "PRE_APPROVED"
}
]
},
"info": {
"identity": { "verifiedName": "XXXXXXXXXX3d03ee", "id": "5218820", "type": "ACCOUNT" },
"rating": { "verifiedAddress": "TRUE" }
}
},
"amount": 20,
"mandate": {
"recurrence": {
"pattern": "YEARLY",
"rule": { "type": "ON", "value": "18" }
},
"amount": { "rule": "MAX", "value": "20.00" },
"revokeable": "Y",
"umn": "1342852ca5c6468cb2d1175a1630XXXX@handle",
"name": "Monthly Subscription Payment",
"blockFund": "N",
"shareToPayee": "Y",
"validity": { "start": "18122025", "end": "18012026" },
"txnId": "MANDATE202B8ACEE4404547XXXXXX",
"ts": "2025-12-18T10:40:59+05:30"
},
"headType": {
"ver": "2.0",
"msgId": "ZKD55ddb30d314042e091957781009XXXX",
"orgId": "188865",
"ts": "2025-12-18T10:40:59+05:30"
},
"payeeDetails": [
{
"payee": [
{
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXXXX7890" },
{ "name": "ACTYPE", "value": "CURRENT" },
{ "name": "IFSC", "value": "AABF00XXXXX" }
],
"addrType": "ACCOUNT"
},
"code": "8299",
"seqNum": "1",
"name": "Services Pvt Ltd",
"addr": "payee@handle2",
"type": "ENTITY"
}
]
}
],
"endDate": "18/01/26",
"txn": {
"note": "Mandate Pause",
"purpose": "14",
"rules": {
"rule": [{ "name": "EXPIREAFTER", "value": "30" }]
},
"custRef": "535252582583",
"id": "MANDATE202B8ACEE4404547XXXXXX",
"refId": "425723639",
"refUrl": "https://sample-uat.example.in/upi",
"type": "CREATE",
"initiationMode": "12",
"initiatedBy": "PAYER",
"ts": "2025-12-18T10:40:59+05:30"
},
"todayDate": "14/02/26",
"transactionType": "UPI_MANDATE_AUTOPAY_PAUSE_SUCCESS_PAYER",
"payeeName": "Services Pvt Ltd",
"profileId": "d03ee44e-7258-4218-818b-76e1d590XXXX",
"umn": "1342852ca5c6468cb2d1175a1630XXXX@handle",
"startDate": "18/12/25",
"channelCode": "SAMPLE"
}Field Descriptions:
| Field | Type | Description |
|---|---|---|
transactionType | String | UPI_MANDATE_AUTOPAY_PAUSE_SUCCESS_PAYER |
startDate | String | Pause start date (formatted dd/MM/yy) |
endDate | String | Pause end date (formatted dd/MM/yy) |
todayDate | String | Date of pause action |
umn | String | Unique Mandate Number |
payeeName | String | Mandate beneficiary name |
UPI_MANDATE_AUTOPAY_UNPAUSE_SUCCESS_PAYER
Posted when an AutoPay mandate is successfully unpaused.
{
"payerDetails": {
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXXXX3d03ee" },
{ "name": "ACTYPE", "value": "PPIWALLET" },
{ "name": "IFSC", "value": "PPIW0XXXXXX" }
],
"addrType": "ACCOUNT"
},
"code": "0000",
"seqNum": "1",
"name": "Payer Name",
"addr": "payer@handle",
"type": "PERSON",
"device": {
"tag": [
{ "name": "MOBILE", "value": "9184XXXXXXXX" },
{ "name": "GEOCODE", "value": "19.0760,72.8777" },
{ "name": "LOCATION", "value": "Mumbai" },
{ "name": "TYPE", "value": "MOB" },
{ "name": "ID", "value": "a6e54ea2XXXXXXXX" },
{ "name": "OS", "value": "Android" },
{ "name": "APP", "value": "XXXXXXXXXX" }
]
},
"creds": {
"cred": [
{
"data": { "code": "NPCI", "value": "XXXXXXXXXXXX", "ki": "20150822" },
"subType": "NA",
"type": "PRE_APPROVED"
}
]
},
"info": {
"identity": { "verifiedName": "XXXXXXXXXX3d03ee", "id": "5218820", "type": "ACCOUNT" },
"rating": { "verifiedAddress": "TRUE" }
}
},
"amount": 20,
"mandate": {
"recurrence": {
"pattern": "YEARLY",
"rule": { "type": "ON", "value": "18" }
},
"amount": { "rule": "MAX", "value": "20.00" },
"revokeable": "Y",
"umn": "1342852ca5c6468cb2d1175a1630XXXX@handle",
"name": "Monthly Subscription Payment",
"blockFund": "N",
"shareToPayee": "Y",
"validity": { "start": "18122025", "end": "18012026" },
"txnId": "MANDATE202B8ACEE4404547XXXXXX",
"ts": "2025-12-18T10:40:59+05:30"
},
"headType": {
"ver": "2.0",
"msgId": "ZKD55ddb30d314042e091957781009XXXX",
"orgId": "188865",
"ts": "2025-12-18T10:40:59+05:30"
},
"payeeDetails": [
{
"payee": [
{
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXXXX7890" },
{ "name": "ACTYPE", "value": "CURRENT" },
{ "name": "IFSC", "value": "AABF00XXXXX" }
],
"addrType": "ACCOUNT"
},
"code": "8299",
"seqNum": "1",
"name": "Services Pvt Ltd",
"addr": "payee@handle2",
"type": "ENTITY"
}
]
}
],
"endDate": "18/01/26",
"txn": {
"note": "Mandate Unpause",
"purpose": "14",
"rules": {
"rule": [{ "name": "EXPIREAFTER", "value": "30" }]
},
"custRef": "535252582583",
"id": "MANDATE202B8ACEE4404547XXXXXX",
"refId": "425723639",
"refUrl": "https://sample-uat.example.in/upi",
"type": "CREATE",
"initiationMode": "12",
"initiatedBy": "PAYER",
"ts": "2025-12-18T10:40:59+05:30"
},
"todayDate": "14/02/26",
"transactionType": "UPI_MANDATE_AUTOPAY_UNPAUSE_SUCCESS_PAYER",
"payeeName": "Services Pvt Ltd",
"profileId": "d03ee44e-7258-4218-818b-76e1d590XXXX",
"umn": "1342852ca5c6468cb2d1175a1630XXXX@handle",
"startDate": "18/12/25",
"channelCode": "SAMPLE"
}Field Descriptions:
| Field | Type | Description |
|---|---|---|
transactionType | String | UPI_MANDATE_AUTOPAY_UNPAUSE_SUCCESS_PAYER |
todayDate | String | Date of unpause action |
umn | String | Unique Mandate Number |
payeeName | String | Mandate beneficiary name |
UPI_MANDATE_AUTOPAY_UNPAUSE_FAILURE_PAYER
Posted when an AutoPay mandate unpause fails.
{
"payerDetails": {
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXXXXXXXXX5878" },
{ "name": "ACTYPE", "value": "SAVINGS" },
{ "name": "IFSC", "value": "AABD00XXXXX" }
],
"addrType": "ACCOUNT"
},
"code": "0000",
"seqNum": "1",
"name": "Payer Name",
"addr": "8430XXXX30.sample@handle",
"type": "PERSON",
"device": {
"tag": [
{ "name": "MOBILE", "value": "9184XXXXXXXX" },
{ "name": "GEOCODE", "value": "28.645,77.339" },
{ "name": "LOCATION", "value": "Ghaziabad" },
{ "name": "TYPE", "value": "MOB" },
{ "name": "ID", "value": "29725f25XXXXXXXX" },
{ "name": "OS", "value": "Android 13" },
{ "name": "APP", "value": "sample.example" }
]
},
"creds": {
"cred": [
{
"data": { "code": "NPCI", "value": "XXXXXXXXXXXX", "ki": "20150822" },
"subType": "MPIN",
"type": "PIN"
}
]
},
"info": {
"identity": { "verifiedName": "XXXXXXXXXXXXXXX5878", "id": "1552406", "type": "ACCOUNT" },
"rating": { "verifiedAddress": "TRUE" }
}
},
"transactionType": "UPI_MANDATE_AUTOPAY_UNPAUSE_FAILURE_PAYER",
"payeeName": "Payee Name",
"mandate": {
"recurrence": {
"pattern": "MONTHLY",
"rule": { "type": "ON", "value": "28" }
},
"amount": { "rule": "MAX", "value": "8.00" },
"revokeable": "Y",
"umn": "46ef7165a2a94e3bae8a2b1252907XXX@handle",
"name": "Recurring Mandate",
"blockFund": "N",
"validity": { "start": "06122025", "end": "15102030" },
"txnId": "MPPa40e3829bbf04e9996bf3d0ebfdaXXXX",
"ts": "2025-12-06T00:25:59+05:30"
},
"headType": {
"ver": "2.0",
"msgId": "aemPblXXX",
"orgId": "NPCI",
"ts": "2025-12-06T00:25:59+05:30"
},
"payeeDetails": [
{
"payee": [
{
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXXXXXXXXX2522" },
{ "name": "ACTYPE", "value": "CURRENT" },
{ "name": "IFSC", "value": "AABC0XXXXXX" }
],
"addrType": "ACCOUNT"
},
"code": "8299",
"seqNum": "1",
"name": "Payee Name",
"addr": "payee.sample@handle",
"type": "ENTITY",
"info": {
"identity": { "verifiedName": "XXXXXXXXXXXXXXX2522", "id": "6053842", "type": "ACCOUNT" },
"rating": { "verifiedAddress": "TRUE", "value": "" }
}
}
]
}
],
"profileId": "952463b5-693b-448b-bbc7-7bc2a121XXXX",
"umn": "46ef7165a2a94e3bae8a2b1252907XXX@handle",
"txn": {
"note": "Mandate Unpause",
"purpose": "14",
"rules": {
"rule": [{ "name": "EXPIREAFTER", "value": "30" }]
},
"custRef": "534049661081",
"id": "MPPa40e3829bbf04e9996bf3d0ebfdaXXXX",
"refId": "460342979",
"refUrl": "https://sample-uat.example.in/upi",
"type": "CREATE",
"initiationMode": "00",
"initiatedBy": "PAYEE",
"ts": "2025-12-06T00:25:59+05:30"
},
"todayDate": "08/12/25",
"channelCode": "SAMPLE"
}Field Descriptions:
| Field | Type | Description |
|---|---|---|
transactionType | String | UPI_MANDATE_AUTOPAY_UNPAUSE_FAILURE_PAYER |
payeeName | String | Mandate beneficiary name |
umn | String | Unique Mandate Number |
todayDate | String | Date of failed unpause attempt |
UPI_MANDATE_AUTOPAY_UPDATE_SUCCESS_PAYER
Posted when an AutoPay mandate amount is successfully modified.
{
"payerDetails": {
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXXXXXXXX2878" },
{ "name": "ACTYPE", "value": "SAVINGS" },
{ "name": "IFSC", "value": "AABD00XXXXX" }
],
"addrType": "ACCOUNT"
},
"code": "0000",
"seqNum": "1",
"name": "Payer Name",
"addr": "9677XXXX36.sample@handle",
"type": "PERSON",
"device": {
"tag": [
{ "name": "MOBILE", "value": "9196XXXXXXXX" },
{ "name": "GEOCODE", "value": "13.01,80.208" },
{ "name": "LOCATION", "value": "Chennai" },
{ "name": "TYPE", "value": "MOB" },
{ "name": "ID", "value": "633d4f8dXXXXXXXX" },
{ "name": "OS", "value": "Android 14" },
{ "name": "APP", "value": "com.sample.upi.android" }
]
},
"creds": {
"cred": [
{
"data": { "code": "NPCI", "value": "XXXXXXXXXXXX", "ki": "20150822" },
"subType": "MPIN",
"type": "PIN"
}
]
},
"info": {
"identity": { "verifiedName": "XXXXXXXXXXXXXX2878", "id": "9724467", "type": "ACCOUNT" },
"rating": { "verifiedAddress": "TRUE" }
}
},
"transactionType": "UPI_MANDATE_AUTOPAY_UPDATE_SUCCESS_PAYER",
"amount": 45,
"mandate": {
"recurrence": { "pattern": "ASPRESENTED" },
"amount": { "rule": "MAX", "value": "45.00" },
"revokeable": "Y",
"umn": "6ed1f92bd9a84bc1a3ef24b0f846XXXX@handle",
"name": "Recurring Mandate",
"blockFund": "N",
"validity": { "start": "19112025", "end": "19112040" },
"txnId": "MPP05dcbca1a039497f9f241bce2f7dXXXX",
"ts": "2025-11-19T18:11:32+05:30"
},
"headType": {
"ver": "2.0",
"msgId": "adTd6XXXX",
"orgId": "NPCI",
"ts": "2025-11-19T18:11:33+05:30"
},
"payeeDetails": [
{
"payee": [
{
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXXXXXXXXX2522" },
{ "name": "ACTYPE", "value": "CURRENT" },
{ "name": "IFSC", "value": "AABC0XXXXXX" }
],
"addrType": "ACCOUNT"
},
"code": "8299",
"seqNum": "1",
"name": "Payee Name",
"addr": "payee.sample@handle",
"type": "ENTITY",
"info": {
"identity": { "verifiedName": "XXXXXXXXXXXXXXX2522", "id": "6705634", "type": "ACCOUNT" },
"rating": { "verifiedAddress": "TRUE", "value": "" }
}
}
]
}
],
"profileId": "7eb406dc-b3b9-42e2-8f13-6d2eeffaXXXX",
"umn": "6ed1f92bd9a84bc1a3ef24b0f846XXXX@handle",
"payerName": "Payee Name",
"txn": {
"note": "Recurring Mandate",
"purpose": "14",
"rules": {
"rule": [{ "name": "EXPIREAFTER", "value": "140" }]
},
"custRef": "532365232548",
"id": "MPP05dcbca1a039497f9f241bce2f7dXXXX",
"refId": "958063926",
"refUrl": "https://sample-uat.example.in/upi",
"type": "CREATE",
"initiationMode": "00",
"initiatedBy": "PAYEE",
"ts": "2025-11-19T18:11:32+05:30"
},
"channelCode": "SAMPLE"
}Field Descriptions:
| Field | Type | Description |
|---|---|---|
transactionType | String | UPI_MANDATE_AUTOPAY_UPDATE_SUCCESS_PAYER |
amount | Number | New updated mandate amount |
mandate.amount.value | String | Updated maximum amount |
umn | String | Unique Mandate Number |
payerName | String | Payer name |
UPI_MANDATE_AUTOPAY_UPDATE_FAILURE_PAYER
Posted when an AutoPay mandate modification fails.
{
"payerDetails": {
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXXXXXXXX2878" },
{ "name": "ACTYPE", "value": "SAVINGS" },
{ "name": "IFSC", "value": "AABD00XXXXX" }
],
"addrType": "ACCOUNT"
},
"code": "0000",
"seqNum": "1",
"name": "Payer Name",
"addr": "9677XXXX36.sample@handle",
"type": "PERSON",
"device": {
"tag": [
{ "name": "MOBILE", "value": "9196XXXXXXXX" },
{ "name": "GEOCODE", "value": "13.01,80.208" },
{ "name": "LOCATION", "value": "Chennai" },
{ "name": "TYPE", "value": "MOB" },
{ "name": "ID", "value": "41b352cfXXXXXXXX" },
{ "name": "OS", "value": "Android 14" },
{ "name": "APP", "value": "com.sample.upi.android" }
]
},
"creds": {
"cred": [
{
"data": { "code": "NPCI", "value": "XXXXXXXXXXXX", "ki": "20150822" },
"subType": "MPIN",
"type": "PIN"
}
]
},
"info": {
"identity": { "verifiedName": "XXXXXXXXXXXXXX2878", "id": "8460211", "type": "ACCOUNT" },
"rating": { "verifiedAddress": "TRUE" }
}
},
"transactionType": "UPI_MANDATE_AUTOPAY_UPDATE_FAILURE_PAYER",
"mandate": {
"recurrence": {
"pattern": "MONTHLY",
"rule": { "type": "ON", "value": "28" }
},
"amount": { "rule": "MAX", "value": "55.00" },
"revokeable": "Y",
"umn": "161d96310d224bae9df8f3e58e9aXXXX@handle",
"name": "Recurring Mandate",
"blockFund": "N",
"validity": { "start": "22112025", "end": "20102030" },
"txnId": "MPP7a92915cca274242b18494b405XXXXXXXX",
"ts": "2025-11-22T12:14:09+05:30"
},
"headType": {
"ver": "2.0",
"msgId": "adYo2XXXX",
"orgId": "NPCI",
"ts": "2025-11-22T12:14:09+05:30"
},
"payeeDetails": [
{
"payee": [
{
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXXXXXXXXX2522" },
{ "name": "ACTYPE", "value": "CURRENT" },
{ "name": "IFSC", "value": "AABC0XXXXXX" }
],
"addrType": "ACCOUNT"
},
"code": "8299",
"seqNum": "1",
"name": "Payee Name",
"addr": "payee.sample@handle",
"type": "ENTITY",
"info": {
"identity": { "verifiedName": "XXXXXXXXXXXXXXX2522", "id": "9835877", "type": "ACCOUNT" },
"rating": { "verifiedAddress": "TRUE", "value": "" }
}
}
]
}
],
"profileId": "7eb406dc-b3b9-42e2-8f13-6d2eeffaXXXX",
"payerName": "Payee Name",
"txn": {
"note": "Recurring Mandate",
"purpose": "14",
"rules": {
"rule": [{ "name": "EXPIREAFTER", "value": "30" }]
},
"custRef": "532681473796",
"id": "MPP7a92915cca274242b18494b405XXXXXXXX",
"refId": "327291281",
"refUrl": "https://sample-uat.example.in/upi",
"type": "CREATE",
"initiationMode": "00",
"initiatedBy": "PAYEE",
"ts": "2025-11-22T12:14:09+05:30"
},
"channelCode": "SAMPLE"
}Field Descriptions:
| Field | Type | Description |
|---|---|---|
transactionType | String | UPI_MANDATE_AUTOPAY_UPDATE_FAILURE_PAYER |
mandate.amount.value | String | Requested new amount that failed |
umn | String | Unique Mandate Number |
payerName | String | Payer name |
UPI_MANDATE_AUTOPAY_UPDATE_REQUEST_PAYER
Posted when an AutoPay mandate update request is received by the payer.
{
"payerDetails": {
"code": "0000",
"seqNum": "1",
"name": "Payer Name",
"addr": "8430XXXX30.sample@handle",
"type": "PERSON"
},
"transactionType": "UPI_MANDATE_AUTOPAY_CREATE_REQUEST_PAYER",
"payeeName": "Payee Name",
"amount": 7,
"mandate": {
"recurrence": {
"pattern": "MONTHLY",
"rule": { "type": "ON", "value": "28" }
},
"amount": { "rule": "MAX", "value": "7.00" },
"revokeable": "Y",
"name": "Recurring Mandate",
"blockFund": "N",
"validity": { "start": "11122025", "end": "15102030" },
"txnId": "MPPf5a0a0f7c0e24a3aa10aab64d77XXXXXXXX",
"ts": "2025-12-11T14:02:35+05:30"
},
"headType": {
"ver": "2.0",
"msgId": "aevS5XXXX",
"orgId": "NPCI",
"ts": "2025-12-11T14:02:35+05:30"
},
"payeeDetails": [
{
"payee": [
{
"ac": {
"detail": [
{ "name": "ACNUM", "value": "XXXXXXXXXXXXXXX2522" },
{ "name": "ACTYPE", "value": "CURRENT" },
{ "name": "IFSC", "value": "AABC0XXXXXX" }
],
"addrType": "ACCOUNT"
},
"code": "8299",
"seqNum": "1",
"name": "Payee Name",
"addr": "payee.sample@handle",
"type": "ENTITY",
"info": {
"identity": { "verifiedName": "XXXXXXXXXXXXXXX2522", "id": "6668535", "type": "ACCOUNT" },
"rating": { "verifiedAddress": "TRUE", "value": "" }
}
}
]
}
],
"profileId": "952463b5-693b-448b-bbc7-7bc2a121XXXX",
"txn": {
"note": "Recurring Mandate",
"purpose": "14",
"rules": {
"rule": [{ "name": "EXPIREAFTER", "value": "30" }]
},
"custRef": "534561989120",
"id": "MPPf5a0a0f7c0e24a3aa10aab64d77XXXXXXXX",
"refId": "864621626",
"refUrl": "https://sample-uat.example.in/upi",
"type": "CREATE",
"initiationMode": "00",
"initiatedBy": "PAYEE",
"ts": "2025-12-11T14:02:35+05:30"
},
"channelCode": "SAMPLE"
}Field Descriptions:
| Field | Type | Description |
|---|---|---|
transactionType | String | UPI_MANDATE_AUTOPAY_UPDATE_REQUEST_PAYER (note: payload may show CREATE_REQUEST internally) |
payeeName | String | Mandate beneficiary name |
amount | Number | Requested updated amount |
mandate.recurrence.pattern | String | MONTHLY |
mandate.recurrence.rule | Object | Rule — ON day 28 |
Notes
- All SMS messages end with the issuing bank identifier (e.g.,
- ABD BANK,- ABC Bank). - Template content may vary across programs; the samples above are representative defaults.
- Webhook notifications deliver the full event payload as a JSON POST to the partner's registered callback URL.
- In-App notifications are delivered via push notification services (FCM / APNs) configured per program.
Transaction Status Webhook POST
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.
Error Code Overview
Complete error code reference for M2P UPI Platform and NPCI UPI system — 1000+ codes with resolution guidance.
