Payment Links

Create, update, delete, cancel, fetch and send Payment Links using Razorpay APIs.


Payment Links are URLs that you can send to your customers through SMS and email to collect payments from them. Customers can click on the URL, which opens the payment request page, and complete the payment using any of the available payment methods.

There are two types of Payment Links:

  • Standard Payment Links: You can make payments using netbanking, cards, wallets, UPI and bank transfer payment methods using Standard Payment Links.

  • UPI Payment Links: You can select the UPI app of your choice to make payments using UPI Payment Links.

You can try out our APIs on the Razorpay Postman Public Workspace.

Run in Postman

Payment Link EntityπŸ”—

The Payment Link entity has the following fields:

accept_partial

boolean Indicates whether customers can make partial payments 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 β‚Ή299.95, you must enter the value 29995.

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 international currencies.

customer

Customer details

name
string The customer's name.
email
string The customer's email address.
contact
string The customer's phone number.
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 β‚Ή7,000 is to be received from the customer in two installments of #1 - β‚Ή5,000, #2 - β‚Ή2,000, 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 hass 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 can enter a maximum of 15 key-value pairs, with each value having a maximum limit of 256 characters.

notify optional

array Defines who handles Payment Link notification.

sms
boolean Defines who handles the SMS notification.
  • true - Razorpay handles the notification.
  • false - You handle the notification.
email optional
boolean Defines who handles the email notification.
  • true - Razorpay handles the notification.
  • false - You handle the notification.
payments

array Payment details such as amount, payment ID, Payment Link ID and more. This array gets populated only after the customer makes a payment. Until then, the value is null.

amount
integer The amount paid by the customer using the Payment Link.
created_at
integer Timestamp, in Unix, indicating when the payment was made.
method
string The payment method used to make the payment. Possible values:
  • netbanking
  • card
  • wallet
  • upi
  • emi
  • bank_transfer
payment_id
string Unique identifier of the payment made against the Payment Link.
plink_id
string Unique identifier of the Payment Link. For example, plink_ERgihyaAAC0VNW.
status
string The payment state. Possible values:
  • captured
  • failed
updated_at
integer Timestamp, in Unix, indicating when the payment was updated.
reference_id optional

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:

updated_at

integer Timestamp, in Unix, indicating when the Payment Link was updated.

reminder_enable optional

boolean Used to send reminders 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.

You can create, fetch, edit or cancel Payment Links using APIs or from the Razorpay Dashboard.

Create Payment LinkπŸ”—

The following endpoint creates a payment link using basic details such as amount, expiry date, reference id, description, customer details and so on.

/payment_links

Basic Payment Links
These are regular Payment Links, which are not customized.

Customized Payment Links
You can customize Payment Links as per your business requirements.

Handy Tips
As per Razorpay's updated security policy, even if the customer's email address and phone number are provided while creating the Payment Link, these details are not auto-populated on the Checkout section of the Payment Link hosted page. The customer will have to enter these details manually while making the payment.

Request ParametersπŸ”—

amount mandatory

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 β‚Ή299.95, you must enter the value 29995.

currency optional

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 supported currencies.

accept_partial optional

boolean Indicates whether customers can make partial payments using the Payment Link. Possible values:

  • true: Customer can make partial payments.
  • false (default): Customer cannot make partial payments.
first_min_partial_amount conditionally mandatory

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 β‚Ή7,000 is to be received from the customer in two installments of #1 - β‚Ή5,000, #2 - β‚Ή2,000, then you can set this value as 500000. Must be passed along with accept_partial parameter.

upi_link mandatory for creating UPI Payment Link

boolean Must be set to true for creating UPI Payment Link. Handy Tips
If the upi_link parameter is not passed or passed with value as false, a Standard Payment Link will be created.

description optional

string A brief description of the Payment Link. The maximum character limit supported is 2048.

reference_id optional

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

Customer details

name optional
string The Customer's name.
email optional
string The customer's email address.
contact optional
string The customer's phone number.
expire_by optional

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 optional

array Defines who handles Payment Link notification.

sms
boolean Defines who handles the SMS notification.
  • true - Razorpay handles the notification.
  • false - You handle the notification.
email optional
boolean Defines who handles the email notification.
  • true - Razorpay handles the notification.
  • false - You handle the notification.
notes optional

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”.

callback_url optional

string If 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 should be passed in the correct format. That is, it should contain a URL.

callback_method conditionally mandatory

string If callback_url parameter is passed, callback_method must be passed with the value get.

reminder_enable optional

boolean Used to send reminders for the Payment Link. Possible values:

  • true: To send reminders.
  • false: To disable reminders.

Using callback_url ParameterπŸ”—

After successful completion of the payment, customers can be redirected to a specific URL using the callback_url and callback_method parameters.

For example, you can redirect customers to https://example-callback-url.com/.

razorpay_payment_id
Payment ID of the successful payment.
razorpay_payment_link_id
Payment Link ID generated at the time of link creation.
razorpay_payment_link_reference_id
Internal order ID set by you for business reference using the reference_id parameter at the time of link creation. No value is returned if reference_id parameter was not used.
razorpay_payment_link_status
Current status of the link.
razorpay_signature
Signature for server-side validation to be calculated as HMAC hex digest using SHA256 algorithm. This is described below with a sample code.

The query parameters are added to the URL as shown:

Copyhttps://example-callback-url.com/?razorpay_payment_id=pay_Fc8mUeDrEKf08Y&razorpay_payment_link_id=plink_Fc8lXILABzQL7M& razorpay_payment_link_reference_id=TSsd1989& razorpay_payment_link_status=partially_paid&razorpay_signature=b0ea302006d9c3da504510c9be482a647d5196b265f5a82aeb272888dcbee70e

Verify SignatureπŸ”—

You can verify the razorpay_signature parameter to validate that it is authentic and sent from Razorpay servers.

  • The razorpay_payment_link_id​ attribute should be stored in your system against an order, right after it is returned in the create Payment Link response. This is displayed as just id (for example, "id": "plink_FKeEiabyAAiSVQ") in the response.

  • The razorpay_signature should be validated by your server. In order to verify the signature, you need to create a signature using

    • razorpay_payment_link_id
    • razorpay_payment_link_reference_id
    • razorpay_payment_link_status
    • razorpay_payment_id​ as payload and your key_secret​ (your API secret) as secret.

After validating the signature, you should fetch the order in your system corresponding to the razorpay_payment_link_id​ and mark this order as successful.

Response ParametersπŸ”—

Descriptions for the response parameters are present in the Payment Link Entity parameters table.

Once you have created the Payment Link, the response from Razorpay API includes a field called short_url. This URL can be shared with the customer via SMS, WhatsApp or any other means for payments.

Error Response ParametersπŸ”—

Error

Cause

Solution

The {input field} is required

A mandatory field is empty.

Ensure all mandatory fields and values are present.

payment link with given reference_id: notes already exists. Please create a payment link with a different reference_id

An existing reference id has been passed.

Ensure that a unique reference id is used for all payment links.

UPI Payment Links is not supported in Test Mode. Please experience the product in Live Mode.

The UPI link parameter has been passed with the Test API keys.

Ensure that you use Live API keys while passing UPI links.

Fetch all Payment LinksπŸ”—

The following endpoint retrieves the details of all the payment links.

/payment_links/

Query ParametersπŸ”—

payment_id optional
Unique identifier of the payment associated with the Payment Link.
reference_id optional
The unique reference number entered by you while creating the Payment Link.

Response ParametersπŸ”—

Descriptions for the response parameters are present in the Payment Link Entity parameters table.

Error Response ParametersπŸ”—

Error

Cause

Solution

The api {key/secret} provided is invalid

There is a mismatch between the API credentials passed in the API call and the API credentials generated on the dashboard.

Make sure that:

  1. The API Keys are active and entered correctly.
  2. There are no white-spaces before or after the keys.

Fetch Specific Payment Links by IDπŸ”—

The following endpoint retrieves details of a payment link as per the ID.

/payment_links/:id

Path ParameterπŸ”—

id mandatory
string Unique identifier of the Payment Link.

Response ParametersπŸ”—

Descriptions for the response parameters are present in the Payment Link Entity parameters table.

Error Response ParametersπŸ”—

Error

Cause

Solution

invalid input [strippedId] = [xxxxxxxxxxxx]

An invalid Payment Link id has been passed.

Ensure that a valid Payment Link id is sent in the API endpoint.

The id provided does not exist

The Payment Link does not belong to the requestor business, or it doesn't exist.

Ensure that the Payment Link is valid and belongs to the requestor business.

The api {key/secret} provided is invalid

There is a mismatch between the API credentials passed in the API call and the API credentials generated on the dashboard.

Make sure that:

  1. The API Keys are active and entered correctly.
  2. There are no white-spaces before or after the keys.

Send or Resend NotificationsπŸ”—

The following endpoint allows you to send or resend notifications to customers via email and SMS.

/payment_links/:id/notify_by/:medium

Path ParametersπŸ”—

id mandatory
string Unique identifier of the Payment Link that should be resent.
medium mandatory
string Medium through which the Payment Link must be resent. Possible values:
  • sms
  • email

Response ParametersπŸ”—

Descriptions for the response parameters are present in the Payment Link Entity parameters table.

Update Payment LinkπŸ”—

The following endpoint edits the payment link details such as the reference id, expiry date, enabling reminders and so on.

/payment_links/:id

Path ParameterπŸ”—

id mandatory
string The unique identifier of the Payment Link that needs to be updated.

Request ParametersπŸ”—

accept_partial optional
boolean Indicates whether customers can make partial payments using the Payment Link. Possible values:
  • true: Customer can make partial payments.
  • false (default): Customer cannot make partial payments.
    Handy Tips
    Partial payments are not allowed with UPI Payment Links.
reference_id optional
string Adds a unique reference number to an existing link.
expire_by optional
integer Timestamp, in Unix format, when the payment links should expire.
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πŸ”—

Descriptions for the response parameters are present in the Payment Link Entity parameters table.

Error Response ParametersπŸ”—

Error

Cause

Solution

update can only be made in created or partially paid state

A payment link has been passed in paid state.

Ensure that the payment link is in the created state or partially paid state to update the payment link.

The id provided does not exist

The Payment Link does not belong to the requestor business, or it doesn't exist.

Ensure that the Payment Link is valid and belongs to the requestor business.

The api {key/secret} provided is invalid

There is a mismatch between the API credentials passed in the API call and the API credentials generated on the dashboard.

Ensure that the API Keys are active and entered correctly. Also, make sure there are no white-spaces before or after the keys.

Cancel Payment LinkπŸ”—

The following endpoint cancels a payment link.

/payment_links/:id/cancel

Code Samples for UPI PL ResponseπŸ”—

Path ParameterπŸ”—

id mandatory
string Unique identifier of the Payment Link.

Response ParametersπŸ”—

Descriptions for the response parameters are present in the Payment Link Entity parameters table.

Handy Tips
You can cancel a Payment Link only if it is in issued state.

Error Response ParametersπŸ”—

Error

Cause

Solution

cannot cancel or expire an already paid/partially paid link

A payment link has been passed in paid state.

Ensure that the payment link is in the created state or partially paid state to update the payment link.

The id provided does not exist

The Payment Link does not belong to the requestor business, or it doesn't exist.

Ensure that the Payment Link is valid and belongs to the requestor business.

The api {key/secret} provided is invalid

There is a mismatch between the API credentials passed in the API call and the API credentials generated on the dashboard.

Ensure that the API Keys are active and entered correctly. Also, make sure there are no white-spaces before or after the keys.


Γ—