Create a UPI Payment Link
Create a UPI Payment Link using this endpoint.
-
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.
-
After successful completion of the payment, customers can be redirected to a specific URL using the
callback_urlandcallback_methodparameters. Know more about how to use these paramaters. -
Verify the
razorpay_signatureparameter to validate that it is authentic and sent from Razorpay servers. Know more about how to Verify Signature.
Request Parameters
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.true: Customer can make partial payments.false(default): Customer cannot make partial payments.
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.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.
true: Razorpay handles the notification.false: You handle the notification.
true: Razorpay handles the notification.false: You handle the notification.
"note_key": "Payment Link for Groceries.”.callback_url is passed, it must be passed in the correct format. That is, it should contain a URL.callback_url parameter is passed, callback_method must be passed with the value get.true: To send reminders.false: To disable reminders.
Response Parameters
true: Customer can make partial payments.false(default): Customer cannot make partial payments.
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.callback_url parameter is passed, callback_method must be passed with the value get.500000.plink_ERgihyaAAC0VNW.true: A UPI Payment Link has been created.false: It is a Standard Payment Link.
true: Razorpay handles the notification.false: Businesses handle the notification.
true: Razorpay handles the notification.false: Businesses handle the notification.
null.netbankingcardwalletupiemibank_transfer
plink_ERgihyaAAC0VNW.captured.createdpartially_paidexpiredcancelledpaid
true: To send reminders.false: To disable reminders.
HD1JAKCCPGDfRx.Errors
The {input field} is required
The {input field} is required
4xxA mandatory field is empty.Solution: Ensure all mandatory fields and values are present.wrong input fields sent.
wrong input fields sent.
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.payment link creation with reference ID already attempted
payment link creation with reference ID already attempted
400An existing reference id has been passed.Solution: 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.
UPI Payment Links is not supported in Test Mode. Please experience the product in Live Mode.
400The UPI link parameter has been passed with the Test API keys.Solution: Ensure that you use Live API keys while passing UPI links.upi is currently supported only in indian currency
upi is currently supported only in indian currency
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.timestamp must be atleast 15 minutes in future
timestamp must be atleast 15 minutes in future
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.Invalid access: Cannot create a payment link in live mode, as live mode is disabled for merchant.
Invalid access: Cannot create a payment link in live mode, as live mode is disabled for merchant.
400Occurs when you try to create a Payment Link in Live mode, but live mode is disabled for youSolution: Raise a request to our support team to get live mode enabled for you.Invalid access: Cannot create a payment link, as Merchant is Suspended.
Invalid access: Cannot create a payment link, as Merchant is Suspended.
400Occurs when you try to create a Payment Link when you have been been suspended.Solution: Raise a request to our support team to be reinstated.value: the length must not be greater than 255.
value: the length must not be greater than 255.
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.partial payment not supported in upi link.
partial payment not supported in upi link.
400accept_partial: true (or any first_min_partial_amount) was passed alongside upi_link: true. Partial payments are not supported for UPI links.Solution: Either drop the partial-payment fields, or use a standard payment link instead of a UPI link.amount: cannot be blank.
amount: cannot be blank.
400The request body is missing the amount field, or the body is empty.Solution: Always include amount (in currency subunits) in the request body.amount: amount should be minimum 100 for INR.
amount: amount should be minimum 100 for INR.
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).amount, should be a whole number for e.g. 2234 to create a payment link for INR 22.34.
amount, should be a whole number for e.g. 2234 to create a payment link for INR 22.34.
400A decimal value was passed for amount. Amounts must be integers in currency subunits.Solution: Pass amount as an integer in currency subunits (paise for INR).email: must be in a valid format for e.g. abcxyz@domain.com.
email: must be in a valid format for e.g. abcxyz@domain.com.
400The value passed for customer.email is not in a valid email format.Solution: Pass customer.email as a valid email address.contact: the length must be between 8 and 14.
contact: the length must be between 8 and 14.
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.reference_id: the length must be no more than 40.
reference_id: the length must be no more than 40.
400The reference_id value exceeds the 40-character limit.Solution: Keep reference_id to 40 characters or fewer.extra fields sent.
extra fields sent.
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.Cannot create UPI links as UPI payment method is disabled for the Merchant.
Cannot create UPI links as UPI payment method is disabled for the Merchant.
400A UPI Payment Link was requested but UPI is not enabled as a payment method on the merchant account.Solution: Enable UPI under Payment Methods in the Settings section of the Razorpay Dashboard, or contact Razorpay support to get it enabled.customer name is a mandatory field.
customer name is a mandatory field.
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.expires by is a mandatory field.
expires by is a mandatory field.
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.