/

to search

Introducing Setu Changelog Check it out ↗

#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.

Bridge
Payment statusesDescription
payment.initiatedPayment has been attempted by a customer
payment.endingPayment is currently being processed by UPI Setu
payment.successPayment has been successfully completed
payment.failedPayment 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 and pay_single_tpv

  • bin — when the customerAccountType is CREDIT

  • txnType - all intent based payments will be of type pay, the rest will be collect

  • tpv — conditional, this object is populated only when the productInstanceType is pay_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"
}