Skip to main content
POST
Available in🇮🇳 India🇸🇬 Singapore🇺🇸 United States
Use this endpoint to create a UPI Payment Link using basic details such as amount, expiry date, reference id, description, customer details and so on.
  • Basic Payment Links
    These are regular Payment Links, which are not customised.
  • Customised Payment Links
    You can customise Payment Links as per your business requirements.
Handy TipsAs 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.
  • After successful completion of the payment, customers can be redirected to a specific URL using the callback_url and callback_method parameters. Know more about how to use these paramaters.
  • Verify the razorpay_signature parameter to validate that it is authentic and sent from Razorpay servers. Know more about how to Verify Signature.

Request Parameters

integer
required
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 , 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.
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.
Handy TipsRazorpay 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 Currency Conversion (May 2024).
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.
integer
required
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 is to be received from the customer in two installments of #1 - , #2 - , then you can set this value as 500000. Must be passed along with accept_partial parameter.
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. Possible values:
  • true: Creates a UPI Payment Link.
  • false: Creates a Standard Payment Link.
string
A brief description of the Payment Link. The maximum character limit supported is 2048.
string
Reference number tagged to a Payment Link. Must be a unique number for each Payment Link. The maximum character limit supported is 40.
json object
Customer details
string
The customer’s name.
string
The customer’s email address.
string
The customer’s phone number.
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.
array
Defines who handles Payment Link notification.
boolean
Defines who handles the SMS notification. Possible values:
  • true: Razorpay handles the notification.
  • false: You handle the notification.
boolean
Defines who handles the email notification. Possible values:
  • true: Razorpay handles the notification.
  • false: You handle the notification.
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.”.
string
If specified, adds a redirect URL to the Payment Link. Once customers completes the payment, they are redirected to the specified URL.
Handy TipsIf the callback_url is passed, it must be passed in the correct format. That is, it should contain a URL.
string
required
If callback_url parameter is passed, callback_method must be passed with the value get.
boolean
Used to send reminders for the Payment Link. Possible values:
  • true: To send reminders.
  • false: To disable reminders.

Response Parameters

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.
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 , 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.
integer
Amount paid by the customer.
string
If specified, adds a redirect URL to the Payment Link. Once the customer completes the payment, they are redirected to the specified URL.
string
If callback_url parameter is passed, callback_method must be passed with the value get.
integer
Timestamp, in Unix, at which the Payment Link was cancelled by you.
integer
Timestamp, in Unix, indicating when the Payment Link was created.
string
Defaults to INR. We accept payments in international currencies.
Handy TipsRazorpay 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 Currency Conversion (May 2024).
json object
Customer details.
string
The customer’s name.
string
The customer’s email address.
string
The customer’s phone number.
string
A brief description of the Payment Link.
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.
integer
Timestamp, in Unix, at which the Payment Link expired.
integer
Minimum amount that must be paid by the customer as the first partial payment. For example, if an amount of is to be received from the customer in two installments of #1 - , #2 - , then you can set this value as 500000.
string
Unique identifier of the Payment Link. For example, plink_ERgihyaAAC0VNW.
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.
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.
array
Defines who handles Payment Link notification.
boolean
Defines who handles the SMS notification.
  • true: Razorpay handles the notification.
  • false: Businesses handle the notification.
boolean
Defines who handles the email notification.
  • true: Razorpay handles the notification.
  • false: Businesses handle the notification.
array
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.
integer
The amount paid by the customer using the Payment Link.
integer
Timestamp, in Unix, indicating when the payment was made.
string
The payment method used to make the payment. Possible values:
  • netbanking
  • card
  • wallet
  • upi
  • emi
  • bank_transfer
string
Unique identifier of the payment made against the Payment Link.
Unique identifier of the Payment Link. For example, plink_ERgihyaAAC0VNW.
string
The payment state. Possible value is captured.
integer
Timestamp, in Unix, indicating when the payment was updated.
string
Reference number tagged to a Payment Link. Must be a unique number for each Payment Link. The maximum character limit supported is 40.
string
The unique short URL generated for the Payment Link.
string
Displays the current state of the Payment Link. Possible values:
  • created
  • partially_paid
  • expired
  • cancelled
  • paid
integer
Timestamp, in Unix, indicating when the Payment Link was updated.
boolean
Used to send reminders for the Payment Link. Possible values:
  • true: To send reminders.
  • false: To disable reminders.
string
A unique identifier for the user role through which the Payment Link was created. For example, HD1JAKCCPGDfRx.
array
Custom checkout options applied to this payment link (theme, prefill, etc.). Empty when none.

Errors

Code: 4xxA mandatory field is empty.Solution: Ensure all mandatory fields and values are present.
Code: 400When wrong input fields are sent during Payment Link creation.Solution: Ensure that the input fields are added correctly. Refer to these request parameters on how to add correct input fields.
Code: 400Occurs when you try to create a UPI Payment Link using an international currency.Solution: Ensure that you create a UPI payment link only in indian currency.
Code: 400The epoch time passed is less than 15 minutes from the current time.Solution: The close_by time should be more than 15 minutes from the current time.
Code: 400When the notes length is greater than 255 characters during Payment Link creation.Solution: Please create a payment link with notes values less than 255 characters.
Code: 400The request body is missing the amount field, or the body is empty.Solution: Always include amount (in currency subunits) in the request body.
Code: 400The amount value is below the per-currency minimum. For INR, the minimum is 100 (₹1.00) in currency subunits.Solution: Pass amount greater than or equal to the per-currency minimum (100 for INR).
Code: 400The value passed for customer.email is not in a valid email format.Solution: Pass customer.email as a valid email address.
Code: 400The customer.contact value is shorter than 8 characters or longer than 14 characters.Solution: Pass customer.contact as a phone number between 8 and 14 characters, including the country code prefix.
Code: 400The reference_id value exceeds the 40-character limit.Solution: Keep reference_id to 40 characters or fewer.
Code: 400The request body contains fields that are not part of the Payment Links API schema.Solution: Only include documented fields. Remove any unknown keys from the request body.
Code: 400The customer object is present in the request but the name field inside it is missing or empty. Some organisations enforce customer name as mandatory.Solution: Pass customer.name as a non-empty string in the request body.
Code: 400The expire_by field is missing from the request. Some organisations enforce expire_by as mandatory for payment-link creation.Solution: Pass expire_by as a Unix-epoch integer at least 15 minutes in the future.