Skip to main content
The merchant displays a dynamic QR code. The customer scans it using any UPI-enabled app and authenticates with their UPI PIN. Funds settle instantly.

Step 1: Create a Payin

Create a payin with invoice_currency: INR. The payin is created with status requires_payment_method.

Step 2: Confirm the Payin

Confirm the payin to generate a QR code. Status moves to requires_action.Pass the following in payment_method_details:
Pass all parameters to the Create Payin endpoint along with "confirm": true.

Step 3: Display the QR Code

The confirm response includes a qr_code field (Base64-encoded) inside latest_payment_attempt_data. Decode and render it for the customer to scan.
The QR code expires after 5 minutes. If the customer does not pay within this window, re-confirm the payin (Step 2) to generate a new QR code.

Step 4: Handle Post-Payment Events

Tazapay sends webhooks to your configured endpoint.

Testing


Refunds

upi_inr_native supports partial refunds.
Refer to the refund guide.

The customer enters their UPI VPA (e.g., test@bank) at checkout. A collect request is sent to their UPI-linked bank app. The customer approves and authenticates with their UPI PIN — funds settle instantly.

Step 1: Create a Payin

Create a payin with invoice_currency: INR. The payin is created with status requires_payment_method.

Step 2: Confirm the Payin

Confirm the payin to send a collect request to the customer’s UPI app. Status moves to requires_action.Pass the following in payment_method_details:
Pass all parameters to the Create Payin endpoint along with "confirm": true.
The collect request expires after 5 minutes. If the customer does not approve within this window, re-confirm the payin (Step 2) to send a new request.

Step 3: Handle Post-Payment Events

Tazapay sends webhooks to your configured endpoint.

Testing


Refunds

upi_inr_native supports partial refunds.
Refer to the refund guide.