#Payment notification
Most of the products on our platform end up creating a payment event when a customer interacts with it from a Payer PSP. We provide consistent and transparent payment statuses for a merchant, to be able to track the life-cycle of a payment request. These statuses are shown in the diagram below.
Any UPI Setu product relies on creating and presenting payment request to a customer. Setu’s UPI Setu stack provides consistent and transparent payment statuses for a merchant, to be able to track the life-cycle of a payment request. These statuses are shown in the diagram below.

Payment statuses | Description |
---|---|
payment.initiated | Payment has been attempted by a customer |
payment.ending | Payment is currently being processed by UPI Setu |
payment.success | Payment has been successfully completed |
payment.failed | Payment could not be processed |
The order of the payment notifications cannot be guaranteed. For example, a client might receive a payment.success
notification before a payment.initiated
is sent.
For the same payment transaction the txnId
value will always be the same, you can use this to correlate different events to a unique payment
Payment events are common for products like sqr
, dqr
, tpv
and collect
, any product which is intended to collect funds from a customer will result in a payment event on customer interaction.
While most of the attributes in the notificiation payload are the same for all products, there are some that are conditional.
productInstanceType
- depends on the product type, allowed values —collect
,pay_single
,pay_multi
andpay_single_tpv
bin
— when thecustomerAccountType
isCREDIT
txnType
- all intent based payments will be of typepay
, the rest will becollect
tpv
— conditional, this object is populated only when the productInstanceType ispay_single_tpv
{// Payment context"productInstanceType": "pay_single_tpv",// TPV attributes“tpv”: {"sourceAccounts": [{"ifsc": "HDFC00123","accountNumber": "**** **** **** 1234","accountName": "M*N* T*O*M*A*S",}],"customerAccount": {"ifsc": "HDFC00123","accountNumber": "**** **** **** 1234","accountName": "M*N* T*O*M*A*S",}}}
A payment.initiated
event is raised when a customer tries to make a payment to an intent link or QR either by clicking on a shortlink or by scanning the QR code
{// Event attributes"eventId": "01ARZ3NDEKTSV4RRFFQ69G5FAV", // Id of an event (unique for each event)"eventTs": "2023-09-04T12:08:20+0530", // Timestamp associated with the event"txnTs": "2023-09-04T12:08:20+0530","eventType": "payment.initiated","resource": "payment","status": "initiated",// Payment context"productInstanceId": "01ARZ3NDEKTSV4RRFFQ69G5FAV","productInstanceType": "<TYPE>", // collect | pay_single | pay_multi | pay_single_tpv// References"merchantId": "01ARZ3NDEKTSV4RRFFQ69G5FAV",// Payment attributes"id": "01ARZ3NDEKTSV4RRFFQ69G5FAV","txnId": "SETmBZkQOV0M7wyyP1V4PIFhRSzW5eSjmYI","txnType": "pay", // collect | pay// Attributes shared with the platform, when a customer initiates a payment from a payer PSP"refId": "SU01ARZ3NDEKTSV4RRFFQ69G5FAV", // tr field in the intent"rrn": "124068997913","txnNote": "testpay","amount": 1000,"currency": "INR","merchantVpa": "fastestupi@pineaxis","customerVpa": "test-auto-9xsabx8n8x@pineaxis","customerAccountType": "SAVINGS", // SAVINGS, CREDIT,..."bin": "652926"}