Available in🇮🇳 India
You can create an authorisation transaction using Razorpay APIs or Registration Link.
1.1. Using Razorpay APIs
To create an authorisation transaction using Razorpay APIs, you need to:Handy TipsFor the Authorisation Payment to be successful in a day (for example, 5th June), you should create an Order and the Authorisation Transaction on the same day (5th June) before 11:59 pm.
1.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 asemail and contact and use them for various Razorpay offerings. The following endpoint creates a customer.
POST /customers
Sample Code
Sample Code
Request Parameters
Request Parameters
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”.Response Parameters
Response Parameters
id
: string The unique identifier of the customer. For example cust_1Aa00000000001.entity
: string The name of the entity. Here, it is customer.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.notes
: 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”.created_at
: integer A Unix timestamp, at which the customer was created.You can create an order once you create a customer for the payment authorisation.1.1.2. Create an Order
The Orders API allows you to create a unique Razorpayorder_id, for example, order_1Aa00000000001, that would be tied to the authorisation transaction. Refer to our detailed Order documentation for more details.
Use the below endpoint to create an order.
POST /orders
You can create a payment against the order_id once it is generated.
Request Parameters
Request Parameters
amount mandatory
: integer Amount in currency subunits. For cards, the minimum value is 100, that is, ₹1.currency mandatory
: string The 3-letter ISO currency code for the payment.customer_id mandatory
: string The unique identifier of the customer. For example, cust_1Aa00000000001.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 auto-debited in a single charge. The minimum value is 100, that is, ₹1, and the maximum value is 1500000, that is, ₹15000. For an amount higher than this, the cardholder should provide an Additional Factor of Authentication (AFA) as per RBI guidelines.expire_at mandatory
: integer The Unix timestamp that indicates when the authorisation transaction must expire. The default value is 10 years.frequency mandatory
: string The frequency at which you can charge your customer. Currently supported frequencies are as_presented and monthly. The support for other frequencies is expected to be live soon.receipt optional
: string A user-entered unique identifier for the order. For example, Receipt No. 1. This parameter should be mapped to the order_id sent by Razorpay.notesoptional
: json 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”.Response Parameters
Response Parameters
id
: string A unique identifier of the order created. For example order_1Aa00000000002.entity
: string The entity that has been created. Here it is order.amount
: integer Amount in currency subunits. For cards, the amount should be 100, that is, ₹1.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.receipt
: 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.method
: string Payment method used to make the authorisation transaction. Here, it is card.customer_id
: string The unique identifier of the customer. For example, cust_4xbQrmEoA5WJ01.status
: string The status of the order.notes
: 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”.created_at
: integer The Unix timestamp at which the order was created.You can create a payment against the order_id after you create an order.1.1.3. Create an Authorisation Payment
Handler Function vs Callback URL
- Handler Function:
When you use the handler function, the response object of the successful payment (razorpay_payment_id,razorpay_order_idandrazorpay_signature) is submitted to the Checkout Form. You need to collect these and send them to your server. - Callback URL:
When you use a Callback URL, the response object of the successful payment (razorpay_payment_id,razorpay_order_idandrazorpay_signature) is submitted to the Callback URL.
Additional Checkout Fields
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
: boolean Possible values:true: Recurring payment is enabled.false: Recurring payment is not enabled.
Handy TipsThe
recurring parameter also supports the value preferred. Use this when you want to support recurring payments and one-time payment in the same flow.save mandatory
: integer Indicates whether to save the card details. Possible values:1: Save the card details.0: Do not save the card details.
consent_to_save_card mandatory
: integer Indicates whether you have taken the customer’s consent for tokenising the card. Possible values:1: Taken the customer’s consent.0: Not taken the customer’s consent.
1.2. Using a Registration Link
Registration Link is an alternate way of creating an authorisation transaction. You can create a registration link using the API or Dashboard.Handy Tips
- You do not have to create a customer if you choose the registration link method for creating an authorisation transaction.
- You can use Webhooks to get notifications about successful payments against a registration link.
₹1.
1.2.1. Create a Registration Link
Use the below endpoint to create a registration link.POST /subscription_registration/auth_links
Request Parameters
Request Parameters
customer
: Details of the customer to whom the registration link will be sent.name mandatory
: string Customer’s name.email mandatory
: string Customer’s email address.contactmandatory
: string Customer’s phone number.type mandatory
: string In this case, the value is link.currency mandatory
: string The 3-letter ISO currency code for the payment. Currently, only INR is supported.amount mandatory
: integer The payment amount in the smallest currency sub-unit.description mandatory
: string A description that appears on the hosted page. For example, 12:30 p.m. Thali meals (Gaurav Kumar).subscription_registration
: Details of the authorisation transaction.method mandatory
: string The authorization method. Here it is card.max_amount optional
: integer Use to set the maximum amount (in paise) per debit request. The value can range from 500 - 9999900. Defaults to ₹99,000.expire_at optional
: integer The timestamp, in Unix format, till when you can use the token (authorization on the payment method) to charge the customer subsequent payments.sms_notify optional
: boolean Indicates if SMS notifications are to be sent by Razorpay. Can have the following values:true(default): Notifications are sent by Razorpay.false: Notifications are not sent by Razorpay.
email_notify optional
: boolean Indicates if email notifications are to be sent by Razorpay. Can have the following values:true(default): Notifications are sent by Razorpay.false: Notifications are not sent by Razorpay.
expire_by optional
: integer The timestamp, in Unix, till when the registration link should be available to the customer to make the authorisation transaction.receipt optional
: string A unique identifier entered by you for the order. For example, Receipt No. 1. This parameter should be mapped to the order_id sent by Razorpay.notes optional
: object This is a 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”.Response Parameters
Response Parameters
id
: string The unique identifier of the invoice.entity
: string The entity that has been created. Here, it is invoice.receipt
: string A user-entered unique identifier of the invoice.invoice_number
: string Unique number you added for internal reference.customer_id
: string The unique identifier of the customer. For example, cust_BMB3EwbqnqZ2EI.customer_details
: object Details of the customer.id
: string The unique identifier associated with the customer to whom the invoice has been issued.name
: string The customer’s name.email
: string The customer’s email address.contact
: integer The customer’s phone number.billing_address
: string Details of the customer’s billing address.shipping_address
: string Details of the customer’s shipping address.order_id
: string The unique identifier of the order associated with the invoice.line_items
: string Details of the line item that is billed in the invoice. Maximum of 50 line items are allowed.payment_id
: string Unique identifier of a payment made against the invoice.status
: string The status of the invoice. Possible values:draftissuedpartially_paidpaidcancelledexpireddeleted
expire_by
: integer The Unix timestamp at which the invoice will expire.issued_at
: integer The Unix timestamp at which the invoice was issued to the customer.paid_at
: integer The Unix timestamp at which the payment was made.cancelled_at
: integer The Unix timestamp at which the invoice was cancelled.expired_at
: integer The Unix timestamp at which the invoice expired.sms_status
: string The delivery status of the SMS notification for the invoice sent to the customer. Possible values:pendingsent
email_status
: string The delivery status of the email notification for the invoice sent to the customer. Possible values:pendingsent
date
: integer Timestamp, in Unix format, that indicates the issue date of the invoice.terms
: string Any terms to be included in the invoice. Maximum of 2048 characters.partial_payment
: boolean Indicates whether the customer can make a partial payment on the invoice. Possible values:true: The customer can make partial payments.false(default): The customer cannot make partial payments.
amount
: integer Amount to be paid using the invoice. Must be in the smallest unit of the currency. For example, if the amount to be received from the customer is ₹299.95, pass the value as 29995.amount_paid
: integer Amount paid by the customer against the invoice.amount_due
: integer The remaining amount to be paid by the customer for the issued invoice.currency
: string The currency associated with the invoice.description
: string A brief description of the invoice.notes
: object Any custom notes added to the invoice. Maximum of 2048 characters.short_url
: string The short URL that is generated. This is the link that can be shared with the customer to receive payments.type
: string Here, it is invoice.comment
: string Any comments to be added in the invoice. Maximum of 2048 characters.1.2.2. Send/Resend Notifications
The following endpoint sends/resends notifications with the short URL to the customer:POST /invoices/:id/notify_by/:medium
Sample Code
Sample Code
Response
Path Parameters
Path Parameters
idmandatory
: string The unique identifier of the invoice linked to the registration link for which you want to send the notification. For example, inv_1Aa00000000001.medium mandatory
: string Determines through which medium you want to resend the notification. Possible values:smsemail
Response Parameter
Response Parameter
success
: boolean Indicates whether the notifications were sent successfully. Possible values:true: The notifications were successfully sent via SMS, email or both.false: The notifications were not sent.
1.2.3. Cancel a Registration Link
The following endpoint cancels a registration link.POST /invoices/:id/cancel
Handy TipsYou can only cancel registration link in the
issued state.Sample Code
Sample Code
Response
Path Parameter
Path Parameter
id mandatory
: string The unique identifier for the invoice linked to the registration link that you want to cancel. For example, inv_1Aa00000000001.Response Parameters
Response Parameters
id
: string The unique identifier of the invoice.entity
: string The entity that has been created. Here, it is invoice.receipt
: string A user-entered unique identifier of the invoice.invoice_number
: string Unique number you added for internal reference.customer_id
: string The unique identifier of the customer. For example, cust_BMB3EwbqnqZ2EI.customer_details
: object Details of the customer.id
: string The unique identifier associated with the customer to whom the invoice has been issued.name
: string The customer’s name.email
: string The customer’s email address.contact
: integer The customer’s phone number.billing_address
: string Details of the customer’s billing address.shipping_address
: string Details of the customer’s shipping address.order_id
: string The unique identifier of the order associated with the invoice.line_items
: string Details of the line item that is billed in the invoice. Maximum of 50 line items are allowed.payment_id
: string Unique identifier of a payment made against the invoice.status
: string The status of the invoice. Possible values:draftissuedpartially_paidpaidcancelledexpireddeleted
expire_by
: integer The Unix timestamp at which the invoice will expire.issued_at
: integer The Unix timestamp at which the invoice was issued to the customer.paid_at
: integer The Unix timestamp at which the payment was made.cancelled_at
: integer The Unix timestamp at which the invoice was cancelled.expired_at
: integer The Unix timestamp at which the invoice expired.sms_status
: string The delivery status of the SMS notification for the invoice sent to the customer. Possible values:pendingsent
email_status
: string The delivery status of the email notification for the invoice sent to the customer. Possible values:pendingsent
date
: integer Timestamp, in Unix format, that indicates the issue date of the invoice.terms
: string Any terms to be included in the invoice. Maximum of 2048 characters.partial_payment
: boolean Indicates whether the customer can make a partial payment on the invoice. Possible values:true: The customer can make partial payments.false(default): The customer cannot make partial payments.
amount
: integer Amount to be paid using the invoice. Must be in the smallest unit of the currency. For example, if the amount to be received from the customer is ₹299.95, pass the value as 29995.amount_paid
: integer Amount paid by the customer against the invoice.amount_due
: integer The remaining amount to be paid by the customer for the issued invoice.currency
: string The currency associated with the invoice.description
: string A brief description of the invoice.notes
: object Any custom notes added to the invoice. Maximum of 2048 characters.short_url
: string The short URL that is generated. This is the link that can be shared with the customer to receive payments.type
: string Here, it is invoice.comment
: string Any comments to be added in the invoice. Maximum of 2048 characters.