Skip to main content
Available in🇮🇳 India
UPI Reserve Pay APIs use the single-block, multiple-debit (SBMD) framework to manage scheduled or recurring transactions. With a single customer authorisation, this system allows businesses to block a specific sum from the customer’s account. This reserved fund can then be debited automatically multiple times, eliminating the need for further customer approvals and ensuring a smoother, more reliable payment flow. Example A customer using the Acme Quick commerce app authorises a one-time UPI block of ₹2000 for future purchases. When they place a ₹400 order on Monday and a ₹600 order on Wednesday, both amounts are automatically debited from that reserved fund. The customer never has to enter a PIN at checkout, making their repeat orders completely frictionless. To create a UPI Reserve Pay mandate:
  1. Create an authorisation transaction
  2. Fetch and manage tokens
  3. Create a One Time payment

Create an Authorisation Transaction

To create an authorisation transaction using the Razorpay APIs, you need to:
  1. Create a Customer
  2. Create an Order
  3. Create Authorisation Payment

1.1 Create a Customer

Razorpay links recurring tokens to customers using a unique identifier generated through the Customer API. You can create customers with basic information such as email and contact and use them for various Razorpay offerings. The following endpoint creates a customer. POST /customers
name : string The name of the customer. For example, Gaurav Kumar.email : string The email address of the customer. For example, gaurav.kumar@example.com.contact : string The phone number of the customer. For example, 9876543210.fail_existing optional : string The request throws an exception by default if a customer with the exact details already exists. You can pass an additional parameter fail_existing to get the existing customer’s details in the response. Possible values:
  • 1 (default): If a customer with the same details already exists, throws an error.
  • 0: If a customer with the same details already exists, fetches details of the existing customer.
notes optional : object Key-value pair that can be used to store additional information about the entity. Maximum 15 key-value pairs, 256 characters (maximum) each. For example, "note_key": "Beam me up Scotty”.

1.2 Create an Order

Use the Orders API to create a unique Razorpay order_id that is associated with the authorisation transaction for a one time mandate. To create a one-time mandate, pass the value of the frequency parameter as one_time. The following endpoint creates an order. POST /orders
amount mandatory : integer Amount in currency subunits. The maximum amount that can be blocked is ₹10,000.currency mandatory : string The 3-letter ISO currency code for the payment. Currently, we only support INR.customer_id mandatory : string The unique identifier of the customer. For example, cust_4xbQrmEoA5WJ01.method mandatory : string The authorisation method. Here, it is upi.receipt optional : string A user-entered unique identifier of the order. For example, Receipt No. 1. You should map this parameter to the order_id sent by Razorpay.notesoptional : object Key-value pair that can be used to store additional information about the entity. Maximum 15 key-value pairs, 256 characters each. For example, "note_key": "Beam me up Scotty”.token : object Details related to the authorisation such as max amount, frequency and expiry information.max_amount mandatory : integer The maximum amount that can be debited is ₹10,000.expire_at mandatory : integer The Unix timestamp that indicates when the authorisation transaction must expire. The default and the maximum value allowed is 90 days.frequency mandatory : string The frequency at which you can charge your customer. The value should be as_presented.type mandatory : string Indicates the type of payment. Here, the possible value is single_block_multiple_debit.

1.3 Create an Authorisation Payment

Create a payment checkout form for customers to make Authorisation Transaction and register their mandate. You can use the Handler Function or Callback URL.
Watch Out!
  • The callback URL is not supported for recurring payments created using the registration link.
  • While handling the first time authorisation payment response, consume the error_reason field with value upi_dummy_payment and error_description field with value Payment was a dummy payment for one time mandate registration. to identify successful mandate registration. The parent error_code will be BAD_REQUEST_ERROR.

Additional Checkout Fields

customer_id mandatory : string Unique identifier of the customer created in the first step. order_id mandatory : string Unique identifier of the order created in the second step. recurring mandatory : string Determines if the recurring payment is enabled or not. Possible values:
  • 1: Recurring payment is enabled.
  • preferred: Use this if you want to allow recurring payments and one-time payment in the same flow.

Error Response Parameters

Given below is a list of possible errors you may face while making the authorisation payment.
  • Description: Invalid Mandate Sequence Number.
  • Next Steps: Retry after some time during the valid cycle.
  • Description: Payment failed because Account linked to VPA is invalid.
  • Next Steps: Create a new mandate with the customer.
  • Description: Payment was unsuccessful as the details are invalid. Please retry with the right details.
  • Next Steps: Ask the customer to retry again.
  • Description: Payment was unsuccessful as the bank linked to this UPI ID is temporarily unavailable. Any amount deducted will be refunded within 5-7 working days.
  • Next Steps: Retry after some time.
  • Description: Payment was unsuccessful as the bank linked to this UPI ID is temporarily unavailable. Any amount deducted will be refunded within 5-7 working days.
  • Next Steps: Retry after some time.
  • Description: Payment was unsuccessful due to a temporary issue at your bank. Any amount deducted will be refunded within 5-7 working days.
  • Next Steps: Retry after some time.
  • Description: Payment was unsuccessful as it was declined by your bank. Any amount deducted will be refunded within 5-7 working days.
  • Next Steps: Retry after some time.
  • Description: Payment processing failed due to error at bank or wallet gateway.
  • Next Steps: Retry after some time.
  • Description: Payment was unsuccessful due to a temporary issue. Any amount deducted will be refunded within 5-7 working days.
  • Next Steps: Retry after some time.
  • Description: Payment was unsuccessful due to a temporary halt of services at this bank.
  • Next Steps: Retry after some time.
  • Description: Payment was unsuccessful due to a temporary issue. Any amount deducted will be refunded within 5-7 working days.
  • Next Steps: Retry after some time.
  • Description: Payment was unsuccessful as it was declined by remitter bank.
  • Next Steps: Create a new mandate with the customer.
  • Description: Payment was unsuccessful as the account linked to this UPI ID is blocked. Try using another account.
  • Next Steps: Create a new mandate with the customer.
  • Description: Duplicate mandate request. Please try again with another mandate request.
  • Next Steps: Please try again with another mandate request.
  • Description: Payment processing failed due to error at bank or wallet gateway.
  • Next Steps: Retry after some time.
  • Description: Payment was unsuccessful due to a temporary issue. If money got deducted, reach out to the seller.
  • Next Steps: Retry after some time.
  • Description: You have entered an incorrect PIN on the UPI app. Please retry with the correct PIN.
  • Next Steps: Ask the customer to retry with correct PIN.
  • Description: Transaction failed due to insufficient funds.
  • Next Steps: Ask the customer to add balance to their account and retry.
  • Description: Payment processing failed due to error at bank or wallet gateway.
  • Next Steps: Retry after some time.
  • Description: Payment was unsuccessful due to a temporary issue. Any amount deducted will be refunded within 5-7 working days.
  • Next Steps: Retry after some time.
  • Description: Beneficiary address resolution failed. Please try again after some time.
  • Next Steps: Please try again after some time.
  • Description: You have entered an incorrect UPI ID. Please retry with the correct UPI ID.
  • Next Steps: Ask the customer to retry with a valid VPA.
  • Description: Payment failed due to some issue at the issuer bank. Please try again after some time.
  • Next Steps: Please try again after some time.
  • Description: Limit exceeded for remitter bank. Please ask customer to try with another bank account.
  • Next Steps: Please ask customer to try with another bank account.
  • Description: Debit amount is beyond payer PSP specified amount cap. Please reduce the amount and try again.
  • Next Steps: Please reduce the mandate amount to match customer PSP.
  • Description: Maximum number of mandate creation requests exceeded for customer’s bank account. Please wait for some time before initiating new mandate creation requests.
  • Next Steps: Please wait for some time before initiating new mandate creation requests.
  • Description: Registered Mobile number linked to the account has been changed or removed.
  • Next Steps: Create a new mandate with the customer.
  • Description: Nature of debit not allowed in customer’s account. Please ask the customer to use a different bank account.
  • Next Steps: Please ask the customer to use a different bank account.
  • Description: No financial address record found for this VPA. Please ask customer to try with another bank account.
  • Next Steps: Please ask customer to try with other bank account.
  • Description: No mandate details were found in the record during debit. Please try after some time.
  • Next Steps: Please try after some time.
  • Description: Payment was unsuccessful as you could not pay with the UPI app within time.
  • Next Steps: Retry after some time.
  • Description: Payment was unsuccessful as it was declined by your bank. Any amount deducted will be refunded within 5-7 working days.
  • Next Steps: Ask the customer to retry with other account.
  • Description: You have declined the payment request on the UPI app. Please retry when you are ready.
  • Next Steps: Ask the customer to approve the payment.
  • Description: Payment was unsuccessful due to a temporary issue. If amount got deducted, it will be refunded within 5-7 working days.
  • Next Steps: Retry after 1 hour.
  • Description: The status of your payment is pending. You can either wait or retry to pay successfully.
  • Next Steps: Retry after some time.
  • Description: Payment was unsuccessful as your account does not pass the risk checks done by your bank. Try using another account.
  • Next Steps: Retry after some time.
  • Description: Payment was unsuccessful as you could not complete it in time.
  • Next Steps: Retry after some time.
  • Description: Unable to Notify the Customer.
  • Next Steps: Retry after some time.
  • Description: Payment failed due to some issue at the customer’s. Please try again after some time.
  • Next Steps: Please try again after some time.
  • Description: Payment was unsuccessful due to a temporary issue. Any amount deducted will be refunded within 5-7 working days.
  • Next Steps: Retry after some time.
  • Description: Payment was unsuccessful as it was declined by your bank. Any amount deducted will be refunded within 5-7 working days.
  • Next Steps: Retry after some time.
  • Description: Payment was unsuccessful as the recurring payment can not be created at this time. Any amount deducted will be refunded within 5-7 working days.
  • Next Steps: Retry after some time.
  • Description: Payment failed. Please try again with another bank account.
  • Next Steps: Create a new mandate with the customer.
  • Description: Payment failed because Transaction amount limit has exceeded.
  • Next Steps: Reach out to the customer to collect the amount.
  • Description: Payment was unsuccessful as you exceeded the amount limit on the bank account linked to this UPI ID.
  • Next Steps: Ask the customer to retry after some time.
  • Description: Payment was unsuccessful as it was declined by your bank. Reach out to your bank for more details. Try using another account.
  • Next Steps: Create a new mandate with the customer.
  • Description: Payment was a dummy payment for one time mandate registration.
  • Next Steps: NA