API Test Keys
Perform Third-Party Validation Using Payment Links
POST/v1/payment_linksClick 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
.optionsparameter 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 Curlec 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": " Nur Aisyah",14"contact": "+60123456789",15"email": "nur.aisyah@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": " Nur Aisyah",47"contact": "+60123456789",48"email": "nur.aisyah@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": " Nur Aisyah",80"contact": "+60123456789",81"email": "nur.aisyah@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
Failure
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": "+60123456789",12"email": "nur.aisyah@example.com",13"name": " Nur Aisyah"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 RM 300.00, you must enter the value 30000.
currency stringA three-letter ISO code for the currency in which you want to accept the payment. For example, MYR.
accept_partial booleanIndicates 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 MYR. For example, if an amount of RM 700.00 is to be received from the customer in two installments of #1 - RM 500.00, #2 - RM 200.00, then you can set this value as 500000. Must be passed along with accept_partial parameter.
description stringA brief description of the Payment Link. The maximum character limit supported is 2048.
reference_id stringReference number tagged to a Payment Link. Must be a unique number for each Payment Link. The maximum character limit supported is 40.
customer json objectCustomer details
Show child parameters (3)
expire_by integerTimestamp, 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 arrayDefines 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 stringIf specified, adds a redirect URL to the Payment Link. Once customers completes the payment, they are redirected to the specified URL.
Handy Tips
If the callback_url is passed, it must 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 booleanUsed 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_partialbooleanIndicates whether customers can make
using the Payment Link. Possible values:true: Customer can make partial payments.false(default): Customer cannot make partial payments.
amountinteger 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 RM 300.00, you must enter the value 30000.
amount_paidintegerAmount paid by the customer.
callback_urlstringIf specified, adds a redirect URL to the Payment Link. Once the customer completes the payment, they are redirected to the specified URL.
callback_methodstring If callback_url parameter is passed, callback_method must be passed with the value get.
cancelled_atintegerTimestamp, in Unix, at which the Payment Link was cancelled by you.
created_atintegerTimestamp, in Unix, indicating when the Payment Link was created.
currencystringDefaults to MYR.
customerjson objectCustomer details.
Show child parameters (3)
descriptionstringA brief description of the Payment Link.
expire_byintegerTimestamp, 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_atintegerTimestamp, in Unix, at which the Payment Link expired.
first_min_partial_amountinteger Minimum amount that must be paid by the customer as the first partial payment. For example, if an amount of RM 700.00 is to be received from the customer in two installments of #1 - RM 500.00, #2 - RM 200.00, then you can set this value as 500000.
idstring Unique identifier of the Payment Link. For example, plink_ERgihyaAAC0VNW.
notesobjectSet 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.
notifyarrayDefines who handles Payment Link notification.
Show child parameters (2)
paymentsarray Payment details such as amount, payment id, Payment Link id and more are stored in this array. It is populated only after a payment is successfully captured by the customer. Only captured payments will be shown here. Until then, the value is null.
Show child parameters (7)
reference_idstringReference number tagged to a Payment Link. Must be a unique number for each Payment Link. The maximum character limit supported is 40.
short_urlstringThe unique short URL generated for the Payment Link.
statusstringDisplays the current state of the Payment Link. Possible values:
createdpartially_paidexpiredcancelledpaid
updated_atintegerTimestamp, in Unix, indicating when the Payment Link was updated.
reminder_enablebooleanUsed to send
for the Payment Link. Possible values:true: To send reminders.false: To disable reminders.
user_idstring A unique identifier for the user role through which the Payment Link was created. For example, HD1JAKCCPGDfRx.
Errors
The api {key/secret} provided is invalid
Error Status: 4xx
There is a mismatch between the API credentials passed in the API call and the API credentials generated on the Dashboard.
Solution
The {input field} is required
Error Status: 4xx
A mandatory field is empty.
Solution
wrong input fields sent.
Error Status: 400
When wrong input fields are sent during Payment Link creation.
Solution
payment link creation with reference ID already attempted
Error Status: 400
An existing reference id has been passed.
Solution
timestamp must be atleast 15 minutes in future
Error Status: 400
The epoch time passed is less than 15 minutes from the current time.
Solution
Invalid access: Cannot create a payment link in live mode, as live mode is disabled for merchant.
Error Status: 400
Occurs when you try to create a Payment Link in Live mode, but live mode is disabled for you
Solution
Invalid access: Cannot create a payment link, as Merchant is Suspended.
Error Status: 400
Occurs when you try to create a Payment Link when you have been been suspended.
Solution
value: the length must not be greater than 255.
Error Status: 400
When the notes length is greater than 255 characters during Payment Link creation.
Solution
Perform Third-Party Validation Using Payment Links
POST/v1/payment_linksClick 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
.optionsparameter 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 Curlec 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 RM 300.00, you must enter the value 30000.
currency stringA three-letter ISO code for the currency in which you want to accept the payment. For example, MYR.
accept_partial booleanIndicates 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 MYR. For example, if an amount of RM 700.00 is to be received from the customer in two installments of #1 - RM 500.00, #2 - RM 200.00, then you can set this value as 500000. Must be passed along with accept_partial parameter.
description stringA brief description of the Payment Link. The maximum character limit supported is 2048.
reference_id stringReference number tagged to a Payment Link. Must be a unique number for each Payment Link. The maximum character limit supported is 40.
customer json objectCustomer details
Show child parameters (3)
expire_by integerTimestamp, 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 arrayDefines 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 stringIf specified, adds a redirect URL to the Payment Link. Once customers completes the payment, they are redirected to the specified URL.
Handy Tips
If the callback_url is passed, it must 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 booleanUsed 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_partialbooleanIndicates whether customers can make
using the Payment Link. Possible values:true: Customer can make partial payments.false(default): Customer cannot make partial payments.
amountinteger 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 RM 300.00, you must enter the value 30000.
amount_paidintegerAmount paid by the customer.
callback_urlstringIf specified, adds a redirect URL to the Payment Link. Once the customer completes the payment, they are redirected to the specified URL.
callback_methodstring If callback_url parameter is passed, callback_method must be passed with the value get.
cancelled_atintegerTimestamp, in Unix, at which the Payment Link was cancelled by you.
created_atintegerTimestamp, in Unix, indicating when the Payment Link was created.
currencystringDefaults to MYR.
customerjson objectCustomer details.
Show child parameters (3)
descriptionstringA brief description of the Payment Link.
expire_byintegerTimestamp, 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_atintegerTimestamp, in Unix, at which the Payment Link expired.
first_min_partial_amountinteger Minimum amount that must be paid by the customer as the first partial payment. For example, if an amount of RM 700.00 is to be received from the customer in two installments of #1 - RM 500.00, #2 - RM 200.00, then you can set this value as 500000.
idstring Unique identifier of the Payment Link. For example, plink_ERgihyaAAC0VNW.
notesobjectSet 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.
notifyarrayDefines who handles Payment Link notification.
Show child parameters (2)
paymentsarray Payment details such as amount, payment id, Payment Link id and more are stored in this array. It is populated only after a payment is successfully captured by the customer. Only captured payments will be shown here. Until then, the value is null.
Show child parameters (7)
reference_idstringReference number tagged to a Payment Link. Must be a unique number for each Payment Link. The maximum character limit supported is 40.
short_urlstringThe unique short URL generated for the Payment Link.
statusstringDisplays the current state of the Payment Link. Possible values:
createdpartially_paidexpiredcancelledpaid
updated_atintegerTimestamp, in Unix, indicating when the Payment Link was updated.
reminder_enablebooleanUsed to send
for the Payment Link. Possible values:true: To send reminders.false: To disable reminders.
user_idstring A unique identifier for the user role through which the Payment Link was created. For example, HD1JAKCCPGDfRx.
Errors
The api {key/secret} provided is invalid
Error Status: 4xx
There is a mismatch between the API credentials passed in the API call and the API credentials generated on the Dashboard.
Solution
The {input field} is required
Error Status: 4xx
A mandatory field is empty.
Solution
wrong input fields sent.
Error Status: 400
When wrong input fields are sent during Payment Link creation.
Solution
payment link creation with reference ID already attempted
Error Status: 400
An existing reference id has been passed.
Solution
timestamp must be atleast 15 minutes in future
Error Status: 400
The epoch time passed is less than 15 minutes from the current time.
Solution
Invalid access: Cannot create a payment link in live mode, as live mode is disabled for merchant.
Error Status: 400
Occurs when you try to create a Payment Link in Live mode, but live mode is disabled for you
Solution
Invalid access: Cannot create a payment link, as Merchant is Suspended.
Error Status: 400
Occurs when you try to create a Payment Link when you have been been suspended.
Solution
value: the length must not be greater than 255.
Error Status: 400
When the notes length is greater than 255 characters during Payment Link creation.
Solution
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": " Nur Aisyah",14"contact": "+60123456789",15"email": "nur.aisyah@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": " Nur Aisyah",47"contact": "+60123456789",48"email": "nur.aisyah@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": " Nur Aisyah",80"contact": "+60123456789",81"email": "nur.aisyah@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
Failure
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": "+60123456789",12"email": "nur.aisyah@example.com",13"name": " Nur Aisyah"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}