Available in🇮🇳 India
The flow to complete an authorisation transaction using paper NACH is a little different from the regular recurring payment flow. The flow when using paper NACH is:
- Create a customer.
-
Create an order by passing the
customer_idand methodnach. When you do this, Razorpay generates a NACH form with the customer information pre-filled and ready to sign. -
The customer signs the form. The customer can obtain the form in one of the following ways:
- You can download the form from the Dashboard and send it to the customer.
- Download from the Hosted page (in the case of registration links).
-
The signed form is uploaded to Razorpay. This can be done in one of the following ways:
- Using custom Checkout page created from Razorpay APIs.
- Hosted page (in the case of registration links).
- The customer can send you the form and you can upload the form for the customer. The acceptable image formats and size are:
- jpeg
- jpg
- png
- Maximum accepted size is 6 MB.
confirmed.
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
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.1.2. Create an Order
Request Parameters
amount mandatory
: integer Amount in currency subunits. For Paper NACH, the amount has to be 0.
currency mandatory
: string The 3-letter ISO currency code for the payment. Currently, we only support INR.
method mandatory
: string The authorization method. In this case, the value will be nach.
customer_id mandatory
: string The unique identifier of the customer, who is to be charged. For example, cust_D0cs04OIpPPU1F.
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
: 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”.
token
: Details related to the authorization such as max amount, bank account information and NACH information.
auth_type mandatory
: string In this case, it will be physical.
bank_account
: Customer’s bank account details that will be printed on the NACH form.
account_numbermandatory
: string Customer’s bank account number. For example, 11214311215411.
ifsc_codemandatory
: string Customer’s bank IFSC. For example, UTIB0000001.
beneficiary_namemandatory
: string Customer’s name. For example, Gaurav Kumar.
account_type optional
: string Customer’s bank account type. Possible values:
savings(default)current
max_amount optional
: integer Use to set the maximum amount per debit request. Know about maximum and default values.
expire_at optional
: integer Timestamp, in Unix, that specifies when the registration link should expire. The default value is 30 years.
nach
: Additional information to be printed on the NACH form that your customer will sign.
form_reference1 optional
: string A user-entered reference that appears on the NACH form.
form_reference2 optional
: string A user-entered reference that appears on the NACH form.
description optional
: string A user-entered description that appears on the hosted page. For example, Form for Gaurav Kumar.
notesoptional
: 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.1.3. Create an Authorisation Payment
Follow these steps to create authorisation transaction:- Download the Paper NACH form and send it to the customers.
- Ask the customers to fill the form and
- Upload it via the Checkout.
- Send it to you and you can upload it from the Dashboard.
- Upload the received form via create NACH File API.
1.1.3.1 Upload the NACH File via Checkout
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
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 Determines whether the recurring is enabled or not. Possible values:
true: Recurring payment is enabled.false: Recurring payment is not enabled.
1.1.3.2 Upload the NACH File via API
Feature RequestThis feature is available only on request. It is not available by default. Raise a request on our Support Portal to get this feature enabled.
POST /payments/create/nach/file
Error Reasons
To learn about errors, refer to the FAQ Upload the NACH File section.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.
0.
1.2.1. Create a Registration Link
The following endpoint creates a registration link for recurring payments.POST /subscription_registration/auth_links
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 payment.
method mandatory
: string In this case, it will be nach.
auth_type mandatory
: string In this case, it will be physical.
bank_account
: The customer’s bank account details.
beneficiary_name mandatory
: string Name on the bank account. For example, Gaurav Kumar.
account_number mandatory
: integer Customer’s bank account number. For example, 11214311215411.
account_type mandatory
: string Customer’s bank account type. Possible values:
savings(default)current
ifsc_code mandatory
: string Customer’s bank IFSC. For example, HDFC0000001.
nach
: Additional information to be printed on the NACH form that your customer will sign.
form_reference1 optional
: string A user-entered reference that appears on the NACH form.
form_reference2 optional
: string A user-entered reference that appears on the NACH form.
max_amount optional
: integer Use to set the maximum amount per debit request. Know about maximum and default values.
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”.
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
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
1.2.3. Cancel a Registration Link
Use the below endpoint to cancel a registration link.POST /invoices/:id/cancel
NoteYou can only cancel registration link that is in the
issued state.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.