3. Create Subsequent Payments

Create and charge subsequent payments using Razorpay APIs after the customer's selected payment method is successfully authorised.


You should perform the following steps to create and charge your customer subsequent payments:

You have to create a new order every time you want to charge your customers. This order is different from the one created during the authorisation transaction.

The following endpoint creates an order.

POST
/orders

amount

mandatory

integer Amount in currency subunits. For cards, the minimum value is 100 (ā‚¹1.00).

currency

mandatory

string The 3-letter ISO currency code for the payment. Currently, we only support INR.

receipt

optional

string A user-entered unique identifier for the order. For example, Receipt No. 1. You should map this parameter to the order_id sent by Razorpay.

notes

optional

object Key-value pair you can use to store additional information about the entity. Maximum of 15 key-value pairs, 256 characters each. For example, "note_key": "Beam me up Scottyā€¯.

payment_capture

mandatory

boolean Determines whether tha payment status should be changed to captured automatically or not. Possible values:

  • true: Payments are captured automatically.
  • false: Payments are not captured automatically. You can manually capture payments using the .

id

string A unique identifier of the order created. For example order_1Aa00000000001.

entity

string The entity that has been created. Here it is order.

amount

integer Amount in currency subunits.

amount_paid

integer The amount that has been paid.

amount_due

integer The amount that is yet to pay.

currency

string The 3-letter ISO currency code for the payment. Currently, we only support INR.

receipt

string A user-entered unique identifier of the order. For example, rcptid #1.

status

string The status of the order.

notes

object Key-value pair you can use to store additional information about the entity. Maximum of 15 key-value pairs, 256 characters each. For example, "note_key": "Beam me up Scottyā€¯.

created_at

integer The Unix timestamp at which the order was created.

Given below is a list of possible errors you may face while creating an Order.

ErrorCauseSolution
The api key provided is invalidThis error occurs when you enter the wrong API key or secret.Make sure to enter the valid API key and secret.
The amount must be atleast INR 1.00.This error occurs when you enter an amount less than INR 1.Make sure the entered amount is atleast INR 1.
The currency should be INR when method is upiThis error occurs when you enter a currency other than INR.Make sure the currency is INR.

Once you have generated an order_id, use it with the token_id to create a payment and charge the customer. The following endpoint creates a payment to charge the customer.

POST
/payments/create/recurring

email

mandatory

string The customer's email address. For example, gaurav.kumar@example.com.

contact

mandatory

integer The customer's phone number. For example, 9876543210.

currency

mandatory

string 3-letter ISO currency code for the payment. Currently, only INR is allowed.

amount

mandatory

integer The amount you want to charge your customer. This should be the same as the order amount.

order_id

mandatory

string The unique identifier of the order created. For example, order_1Aa00000000002.

customer_id

mandatory

string The unique identifier of the customer you want to charge. For example, cust_1Aa00000000002.

token

mandatory

string The token_id generated when the customer successfully completes the authorisation payment. Different payment instruments for the same customer have different token_id.

recurring

mandatory

boolean Determines whether recurring payment is enabled or not.

description

optional

string A user-entered description for the payment. For example, Creating recurring payment for Gaurav Kumar.

notes

optional

object Key-value pair you can use to store additional information about the entity. Maximum of 15 key-value pairs, 256 characters each. For example, "note_key": "Beam me up Scottyā€¯.

razorpay_payment_id

string The unique identifier of the payment that is created. For example, pay_1Aa00000000001.

razorpay_order_id

string The unique identifier of the order that is created. For example, order_1Aa00000000001.

razorpay_signature

string The signature generated by the Razorpay. For example, 9ef4dffbfd84f1318f6739a3ce19f9d85851857ae648f114332d8401e0949a3d.

Given below is a list of possible errors you may face while creating a Recurring Payment.

ErrorCauseSolution
bank_account_invalidThis error occurs when The customer's bank account is either closed or no longer valid. The customer or bank may have closed the account.The customer should re-register the mandate.
bank_account_validation_failedThis error occurs when the bank could not validate the customer registration for debiting the customer.You can retry after some time or reach out to Razorpay.
bank_technical_errorThe destination bank was facing technical problems at the time the payment was attempted. This error usually occurs when the Core Banking System encounters a technical error while processing the payment.You can retry after some time or reach out to Razorpay.
debit_instrument_blockedThis error occurs when the bank temporarily blocks withdrawals on the customer's account.The customer should reach out to their bank to get the account unblocked.
debit_instrument_inactiveThis error occurs when the bank temporarily blocks withdrawals on the customer's account.The customer should reach out to their bank to get the account unblocked.
gateway_technical_errorThe payment failed due to a technical error at the gateway. This error usually occurs when the gateway server encounters a technical error while processing the payment.You can retry after some time or reach out to Razorpay.
incorrect_ifscThis error occurs when the bank IFSC code is no longer valid.The customer should re-register the mandate.
input_validation_failedThe payment failed due to the wrong request or input sent in the payment request. You can also get this error while creating a payment with incorrect parameter values on the Dashboard.Rectify the validation issues and try again. Check the error description and field parameters for more information about the error. Check your integration/payment request or reach out to Razorpay. Refer to the .
insufficient_fundsThis error occurs when the customer does not have sufficient funds in the account to complete the payment.You can retry after asking the customer to add funds to their bank account.
invalid_amountThis error occurs when the amount or currency passed in the payment request is not supported or invalid. This can arise when you pass a different variable type in the amount field or pass an unsupported amount value.You can check your integration and payment request.
mandate_not_activeThis error occurs when the registered mandate is no longer active. The customer or bank could have cancelled the mandate.The customer should re-register the mandate.
payment_cancelledThis error occurs when the customer has explicitly cancelled the payment. The customer could have given a cancellation instruction to their banks.You can retry after informing the customer to remove the cancellation request.
payment_declinedDestination Bank or Gateway has declined the payment due to business or technical reasons such as terminal and pricing.You can retry after some time or reach out to Razorpay.
payment_failedThis error occurs when the destination Bank or Gateway has declined the payment due to business or technical reasons such as terminal and pricing.You can retry after some time or reach out to Razorpay.
payment_mandate_not_activeThis error occurs when the is not yet activated the registered mandate. Banks sometimes take longer to activate the mandates at their end.You can retry after some time or reach out to Razorpay.
payment_timed_outThis error occurs when the bank with the registered mandate could not debit the customer's account in time.You can retry after some time or reach out to Razorpay.
server_errorThis error occurs when there is a technical error at Razorpay's server.You can retry after some time or reach out to Razorpay.
transaction_limit_exceededThis error occurs when customers exceed their account's credit or debit limit during high-value transactions.You can retry after some time by informing the customer to update their transaction limits.

Was this page helpful?