Skip to main content
  1. Create an order to charge the customer
  2. Create a recurring payment

3.1. Create an Order to Charge the Customer

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. /orders
Curl
Success Response

Request Parameters

amount mandatory : integer Amount in currency subunits. currency mandatory : string The 3-letter ISO currency code for the payment. 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 the 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 Manually Capture Payments API.

Response Parameters

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.

Error Response Parameters

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

Error | Cause | Solution

The api key provided is invalid | This 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 at least 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 upi | This error occurs when you enter a currency other than INR. | Make sure the currency is INR.

3.2. Create a Recurring Payment

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. /payments/create/recurring
Curl
Success Response

Request Parameters

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_idmandatory : 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.
  • true: Recurring payment is enabled.
  • false: Recurring payment is not enabled.
notesoptional : 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”.

Response Parameters

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.

Error Response Parameters

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

Error | Cause | Solution

bank_account_invalid | This 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_failed | This 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_error | The 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_blocked | This 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_inactive | This 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_error | The 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_ifsc | This error occurs when the bank IFSC code is no longer valid. | The customer should re-register the mandate.

input_validation_failed | The 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 API Reference Guide.

insufficient_funds | This 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_amount | This 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_active | This 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_cancelled | This 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_declined | 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_failed | This 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_active | This 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_out | This 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_error | This 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_exceeded | This 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.