API Test Keys
Perform Third-Party Validation Using Payment Links
POST
/v1/payment_links
Click to copy
Use this endpoint to comply with the regulatory guidelines in a manner such that the customers make payments only from their registered bank account. TPV stands for Third Party Validation. This feature is made available only to businesses operating in Mutual fund, Securities or Brokerage sectors.
You can perform third party validation using Payment Links by passing the options
parameter along with the Create Payment Links API request. Check the
Feature Request
This is an on-demand feature. Please raise a request with our
to get this feature activated on your Razorpay account.Is this page helpful?
1Use this API endpoint for Netbanking23curl -X POST https://api.razorpay.com/v1/payment_links4-H 'content-type: application/json'5-d '{6"amount": 1000,7"currency": "INR",8"accept_partial": true,9"first_min_partial_amount": 100,10"reference_id": "#425",11"description": "Payment for policy no #23456",12"customer": {13"name": "Gaurav Kumar",14"contact": "+919000090000",15"email": "gaurav.kumar@example.com"16},17"notify": {18"sms": true,19"email": true20},21"reminder_enable": true,22"options": {23"order": {24"method": "netbanking",25"bank_account": {26"account_number": "04300040049999",27"name": "Gaurav Kumar",28"ifsc": "KKBK0000430"29}30}31}32}'3334Use this API endpoint for UPI3536curl -X POST https://api.razorpay.com/v1/payment_links37-H 'content-type: application/json'38-d '{39"amount": 1000,40"currency": "INR",41"accept_partial": true,42"first_min_partial_amount": 100,43"reference_id": "#42ds6",44"description": "Payment for policy no #23456",45"customer": {46"name": "Gaurav Kumar",47"contact": "+919000090000",48"email": "gaurav.kumar@example.com"49},50"notify": {51"sms": true,52"email": true53},54"reminder_enable": true,55"options": {56"order": {57"method": "upi",58"bank_account": {59"account_number": "04300040049999",60"name": "Gaurav Kumar",61"ifsc": "KKBK0000430"62}63}64}65}'6667Use this API endpoint for for either Netbanking or UPI6869curl -X POST https://api.razorpay.com/v1/payment_links70-H 'content-type: application/json'71-d '{72"amount": 1000,73"currency": "INR",74"accept_partial": true,75"first_min_partial_amount": 100,76"reference_id": "#427",77"description": "Payment for policy no #23456",78"customer": {79"name": "Gaurav Kumar",80"contact": "+919000090000",81"email": "gaurav.kumar@example.com"82},83"notify": {84"sms": true,85"email": true86},87"reminder_enable": true,88"options": {89"order": {90"bank_account": {91"account_number": "04300050077634",92"name": "Gaurav Kumar",93"ifsc": "KKBK0000430"94}95}96}97}'
Netbanking
UPI
Either
1{2"accept_partial": true,3"amount": 1000,4"amount_paid": 0,5"callback_method": "",6"callback_url": "",7"cancelled_at": 0,8"created_at": 1596525334,9"currency": "INR",10"customer": {11"contact": "+919000090000",12"email": "gaurav.kumar@example.com",13"name": "Gaurav Kumar"14},15"deleted_at": 0,16"description": "Payment for policy no #23456",17"expire_by": 0,18"expired_at": 0,19"first_min_partial_amount": 100,20"id": "plink_FMbF1mewlEnf3Q",21"notes": null,22"notify": {23"email": true,24"sms": true25},26"payments": null,27"reference_id": "#42sd5",28"reminder_enable": true,29"reminders": [],30"short_url": "https://rzp.io/i/XxDxHPE",31"source": "",32"source_id": "",33"status": "created",34"updated_at": 1596525334,35"user_id": ""36}
Request Parameters
amount
*
integer
Amount to be paid using the Payment Link. Must be in the smallest unit of the currency. For example, if you want to receive a payment of ₹300.00, you must enter the value 30000
. In the case of three decimal currencies, such as KWD, BHD and OMR, to refund a payment of 295.991, pass the value as 295990. And in the case of zero decimal currencies such as JPY, to refund a payment of 295, pass the value as 295.
Watch Out!
As per payment guidelines, you should pass the last decimal number as 0 for three decimal currency payments. For example, if you want to refund a customer 99.991 KD for a transaction, you should pass the value for the amount parameter as 99990
and not 99991
.
currency
string
A three-letter ISO code for the currency in which you want to accept the payment. For example, INR. Refer to the list of
.Handy Tips
Razorpay has added support for zero decimal currencies, such as JPY, and three decimal currencies, such as KWD, BHD, and OMR, allowing businesses to accept international payments in these currencies. Know more about
(May 2024).accept_partial
boolean
Indicates whether customers can make
using the Payment Link. Possible values:true
: Customer can make partial payments.false
: (default): Customer cannot make partial payments.
first_min_partial_amount
integer
Minimum amount, in currency subunits, that must be paid by the customer as the first partial payment. Default value is 100
. Default currency is INR
. For example, if an amount of ₹700.00 is to be received from the customer in two installments of #1 - ₹500.00, #2 - ₹200.00, then you can set this value as 500000
. Must be passed along with accept_partial
parameter.
upi_link
boolean
Must be set to true
for creating UPI Payment Link. If the upi_link
parameter is not passed or passed with value as false, a Standard Payment Link will be created.
description
string
A brief description of the Payment Link. The maximum character limit supported is 2048.
reference_id
string
Reference number tagged to a Payment Link. Must be a unique number for each Payment Link. The maximum character limit supported is 40.
customer
string
Customer details
Show child parameters (3)
expire_by
integer
Timestamp, in Unix, at which the Payment Link will expire. By default, a Payment Link will be valid for six months from the date of creation. Please note that the expire by date cannot exceed more than six months from the date of creation.
notify
array
Defines who handles Payment Link notification.
Show child parameters (2)
notes
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": "Payment Link for Groceries.”
.
callback_url
string
If specified, adds a redirect URL to the Payment Link. Once customers completes the payment, they are redirected to the specified URL.
If the
callback_url
is passed, it should be passed in the correct format. That is, it should contain a URL. callback_method
string
If callback_url
parameter is passed, callback_method must be passed with the value get
.
reminder_enable
boolean
Used to send
for the Payment Link. Possible values:true
: To send reminders.false
: To disable reminders.
options
*
array
Options to configure the customer's bank account details in the Payment Link. Parent parameter under which the order
child parameter must be passed.
Show child parameters (1)
Response Parameters
accept_partial
boolean
Indicates whether customers can make
using the Payment Link. Possible values:true
: Customer can make partial payments.false
: (default): Customer cannot make partial payments.
amount
integer
Amount to be paid using the Payment Link. Must be in the smallest unit of the currency. For example, if you want to receive a payment of ₹300.00, you must enter the value 30000
. In the case of three decimal currencies, such as KWD, BHD and OMR, to refund a payment of 295.991, pass the value as 295990. And in the case of zero decimal currencies such as JPY, to refund a payment of 295, pass the value as 295.
Watch Out!
As per payment guidelines, you should pass the last decimal number as 0 for three decimal currency payments. For example, if you want to refund a customer 99.991 KD for a transaction, you should pass the value for the amount parameter as 99990
and not 99991
.
amount_paid
integer
Amount paid by the customer.
callback_url
string
If specified, adds a redirect URL to the Payment Link. Once the customer completes the payment, they are redirected to the specified URL.
callback_method
string
If callback_url
parameter is passed, callback_method
must be passed with the value get
.
cancelled_at
integer
Timestamp, in Unix, at which the Payment Link was cancelled by you.
created_at
integer
Timestamp, in Unix, indicating when the Payment Link was created.
currency
string
Defaults to INR. We accept payments in
Handy Tips
Razorpay has added support for zero decimal currencies, such as JPY, and three decimal currencies, such as KWD, BHD, and OMR, allowing businesses to accept international payments in these currencies. Know more about
(May 2024).customer
string
Customer details.
Show child parameters (3)
description
string
A brief description of the Payment Link.
expire_by
integer
Timestamp, in Unix, when the Payment Link will expire. By default, a Payment Link will be valid for six months from the date of creation. Please note that the expire by date cannot exceed more than six months from the date of creation.
expired_at
integer
Timestamp, in Unix, at which the Payment Link expired.
first_min_partial_amount
integer
Minimum amount that must be paid by the customer as the first partial payment. For example, if an amount of ₹700.00 is to be received from the customer in two installments of #1 - ₹500.00, #2 - ₹200.00, then you can set this value as 500000
.
id
string
Unique identifier of the Payment Link. For example, plink_ERgihyaAAC0VNW
.
upi_link
boolean
Indicates whether the Payment Link is a UPI Payment Link.
true
: A UPI Payment Link has been created.false
: It is a Standard Payment Link.
notes
object
Set of key-value pairs that you can use to store additional information. You (Businesses) can enter a maximum of 15 key-value pairs, with each value having a maximum limit of 256 characters.
notify
array
Defines who handles Payment Link notification.
Show child parameters (2)
payments
array
Payment details such as amount, payment id, Payment Link id and more. This array is populated only after a payment is made by the customer or if the payment fails. Until then, the value is null
.
Show child parameters (7)
reference_id
string
Reference number tagged to a Payment Link. Must be a unique number for each Payment Link. The maximum character limit supported is 40.
short_url
string
The unique short URL generated for the Payment Link.
status
string
Displays the current state of the Payment Link. Possible values:
created
partially_paid
expired
cancelled
paid
updated_at
integer
Timestamp, in Unix, indicating when the Payment Link was updated.
reminder_enable
boolean
Used to send
for the Payment Link. Possible values:true
: To send reminders.false
: To disable reminders.
user_id
string
A unique identifier for the user role through which the Payment Link was created. For example, HD1JAKCCPGDfRx
.
Perform Third-Party Validation Using Payment Links
POST
/v1/payment_links
Click to copy
Use this endpoint to comply with the regulatory guidelines in a manner such that the customers make payments only from their registered bank account. TPV stands for Third Party Validation. This feature is made available only to businesses operating in Mutual fund, Securities or Brokerage sectors.
You can perform third party validation using Payment Links by passing the options
parameter along with the Create Payment Links API request. Check the
Feature Request
This is an on-demand feature. Please raise a request with our
to get this feature activated on your Razorpay account.Is this page helpful?
Request Parameters
amount
*
integer
Amount to be paid using the Payment Link. Must be in the smallest unit of the currency. For example, if you want to receive a payment of ₹300.00, you must enter the value 30000
. In the case of three decimal currencies, such as KWD, BHD and OMR, to refund a payment of 295.991, pass the value as 295990. And in the case of zero decimal currencies such as JPY, to refund a payment of 295, pass the value as 295.
Watch Out!
As per payment guidelines, you should pass the last decimal number as 0 for three decimal currency payments. For example, if you want to refund a customer 99.991 KD for a transaction, you should pass the value for the amount parameter as 99990
and not 99991
.
currency
string
A three-letter ISO code for the currency in which you want to accept the payment. For example, INR. Refer to the list of
.Handy Tips
Razorpay has added support for zero decimal currencies, such as JPY, and three decimal currencies, such as KWD, BHD, and OMR, allowing businesses to accept international payments in these currencies. Know more about
(May 2024).accept_partial
boolean
Indicates whether customers can make
using the Payment Link. Possible values:true
: Customer can make partial payments.false
: (default): Customer cannot make partial payments.
first_min_partial_amount
integer
Minimum amount, in currency subunits, that must be paid by the customer as the first partial payment. Default value is 100
. Default currency is INR
. For example, if an amount of ₹700.00 is to be received from the customer in two installments of #1 - ₹500.00, #2 - ₹200.00, then you can set this value as 500000
. Must be passed along with accept_partial
parameter.
upi_link
boolean
Must be set to true
for creating UPI Payment Link. If the upi_link
parameter is not passed or passed with value as false, a Standard Payment Link will be created.
description
string
A brief description of the Payment Link. The maximum character limit supported is 2048.
reference_id
string
Reference number tagged to a Payment Link. Must be a unique number for each Payment Link. The maximum character limit supported is 40.
customer
string
Customer details
Show child parameters (3)
expire_by
integer
Timestamp, in Unix, at which the Payment Link will expire. By default, a Payment Link will be valid for six months from the date of creation. Please note that the expire by date cannot exceed more than six months from the date of creation.
notify
array
Defines who handles Payment Link notification.
Show child parameters (2)
notes
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": "Payment Link for Groceries.”
.
callback_url
string
If specified, adds a redirect URL to the Payment Link. Once customers completes the payment, they are redirected to the specified URL.
If the
callback_url
is passed, it should be passed in the correct format. That is, it should contain a URL. callback_method
string
If callback_url
parameter is passed, callback_method must be passed with the value get
.
reminder_enable
boolean
Used to send
for the Payment Link. Possible values:true
: To send reminders.false
: To disable reminders.
options
*
array
Options to configure the customer's bank account details in the Payment Link. Parent parameter under which the order
child parameter must be passed.
Show child parameters (1)
Response Parameters
accept_partial
boolean
Indicates whether customers can make
using the Payment Link. Possible values:true
: Customer can make partial payments.false
: (default): Customer cannot make partial payments.
amount
integer
Amount to be paid using the Payment Link. Must be in the smallest unit of the currency. For example, if you want to receive a payment of ₹300.00, you must enter the value 30000
. In the case of three decimal currencies, such as KWD, BHD and OMR, to refund a payment of 295.991, pass the value as 295990. And in the case of zero decimal currencies such as JPY, to refund a payment of 295, pass the value as 295.
Watch Out!
As per payment guidelines, you should pass the last decimal number as 0 for three decimal currency payments. For example, if you want to refund a customer 99.991 KD for a transaction, you should pass the value for the amount parameter as 99990
and not 99991
.
amount_paid
integer
Amount paid by the customer.
callback_url
string
If specified, adds a redirect URL to the Payment Link. Once the customer completes the payment, they are redirected to the specified URL.
callback_method
string
If callback_url
parameter is passed, callback_method
must be passed with the value get
.
cancelled_at
integer
Timestamp, in Unix, at which the Payment Link was cancelled by you.
created_at
integer
Timestamp, in Unix, indicating when the Payment Link was created.
currency
string
Defaults to INR. We accept payments in
Handy Tips
Razorpay has added support for zero decimal currencies, such as JPY, and three decimal currencies, such as KWD, BHD, and OMR, allowing businesses to accept international payments in these currencies. Know more about
(May 2024).customer
string
Customer details.
Show child parameters (3)
description
string
A brief description of the Payment Link.
expire_by
integer
Timestamp, in Unix, when the Payment Link will expire. By default, a Payment Link will be valid for six months from the date of creation. Please note that the expire by date cannot exceed more than six months from the date of creation.
expired_at
integer
Timestamp, in Unix, at which the Payment Link expired.
first_min_partial_amount
integer
Minimum amount that must be paid by the customer as the first partial payment. For example, if an amount of ₹700.00 is to be received from the customer in two installments of #1 - ₹500.00, #2 - ₹200.00, then you can set this value as 500000
.
id
string
Unique identifier of the Payment Link. For example, plink_ERgihyaAAC0VNW
.
upi_link
boolean
Indicates whether the Payment Link is a UPI Payment Link.
true
: A UPI Payment Link has been created.false
: It is a Standard Payment Link.
notes
object
Set of key-value pairs that you can use to store additional information. You (Businesses) can enter a maximum of 15 key-value pairs, with each value having a maximum limit of 256 characters.
notify
array
Defines who handles Payment Link notification.
Show child parameters (2)
payments
array
Payment details such as amount, payment id, Payment Link id and more. This array is populated only after a payment is made by the customer or if the payment fails. Until then, the value is null
.
Show child parameters (7)
reference_id
string
Reference number tagged to a Payment Link. Must be a unique number for each Payment Link. The maximum character limit supported is 40.
short_url
string
The unique short URL generated for the Payment Link.
status
string
Displays the current state of the Payment Link. Possible values:
created
partially_paid
expired
cancelled
paid
updated_at
integer
Timestamp, in Unix, indicating when the Payment Link was updated.
reminder_enable
boolean
Used to send
for the Payment Link. Possible values:true
: To send reminders.false
: To disable reminders.
user_id
string
A unique identifier for the user role through which the Payment Link was created. For example, HD1JAKCCPGDfRx
.
1Use this API endpoint for Netbanking23curl -X POST https://api.razorpay.com/v1/payment_links4-H 'content-type: application/json'5-d '{6"amount": 1000,7"currency": "INR",8"accept_partial": true,9"first_min_partial_amount": 100,10"reference_id": "#425",11"description": "Payment for policy no #23456",12"customer": {13"name": "Gaurav Kumar",14"contact": "+919000090000",15"email": "gaurav.kumar@example.com"16},17"notify": {18"sms": true,19"email": true20},21"reminder_enable": true,22"options": {23"order": {24"method": "netbanking",25"bank_account": {26"account_number": "04300040049999",27"name": "Gaurav Kumar",28"ifsc": "KKBK0000430"29}30}31}32}'3334Use this API endpoint for UPI3536curl -X POST https://api.razorpay.com/v1/payment_links37-H 'content-type: application/json'38-d '{39"amount": 1000,40"currency": "INR",41"accept_partial": true,42"first_min_partial_amount": 100,43"reference_id": "#42ds6",44"description": "Payment for policy no #23456",45"customer": {46"name": "Gaurav Kumar",47"contact": "+919000090000",48"email": "gaurav.kumar@example.com"49},50"notify": {51"sms": true,52"email": true53},54"reminder_enable": true,55"options": {56"order": {57"method": "upi",58"bank_account": {59"account_number": "04300040049999",60"name": "Gaurav Kumar",61"ifsc": "KKBK0000430"62}63}64}65}'6667Use this API endpoint for for either Netbanking or UPI6869curl -X POST https://api.razorpay.com/v1/payment_links70-H 'content-type: application/json'71-d '{72"amount": 1000,73"currency": "INR",74"accept_partial": true,75"first_min_partial_amount": 100,76"reference_id": "#427",77"description": "Payment for policy no #23456",78"customer": {79"name": "Gaurav Kumar",80"contact": "+919000090000",81"email": "gaurav.kumar@example.com"82},83"notify": {84"sms": true,85"email": true86},87"reminder_enable": true,88"options": {89"order": {90"bank_account": {91"account_number": "04300050077634",92"name": "Gaurav Kumar",93"ifsc": "KKBK0000430"94}95}96}97}'
Netbanking
UPI
Either
1{2"accept_partial": true,3"amount": 1000,4"amount_paid": 0,5"callback_method": "",6"callback_url": "",7"cancelled_at": 0,8"created_at": 1596525334,9"currency": "INR",10"customer": {11"contact": "+919000090000",12"email": "gaurav.kumar@example.com",13"name": "Gaurav Kumar"14},15"deleted_at": 0,16"description": "Payment for policy no #23456",17"expire_by": 0,18"expired_at": 0,19"first_min_partial_amount": 100,20"id": "plink_FMbF1mewlEnf3Q",21"notes": null,22"notify": {23"email": true,24"sms": true25},26"payments": null,27"reference_id": "#42sd5",28"reminder_enable": true,29"reminders": [],30"short_url": "https://rzp.io/i/XxDxHPE",31"source": "",32"source_id": "",33"status": "created",34"updated_at": 1596525334,35"user_id": ""36}