Create a QR Code
POST
/v1/payments/qr_codes
Click to copy
Use this endpoint to create a QR Code.
- You can share the short URL with customers to accept payments.
- You can print and download it.
- You can create QR Codes for single or multiple use and for specific or all customers.
Is this page helpful?
1curl -u <YOUR_KEY_ID>:<YOUR_KEY_SECRET> \2-X POST https://api.razorpay.com/v1/payments/qr_codes \3-H "Content-Type: application/json" \4-d '{5"type": "upi_qr",6"name": "Store Front Display",7"usage": "single_use",8"fixed_amount": true,9"payment_amount": 300,10"description": "For Store 1",11"customer_id": "cust_HKsR5se84c5LTO",12"close_by": 1681615838,13"notes": {14"purpose": "Test UPI QR Code notes"15}16}'
Success
Failure
1{2"id": "qr_HMsVL8HOpbMcjU",3"entity": "qr_code",4"created_at": 1623660301,5"name": "Store Front Display",6"usage": "single_use",7"type": "upi_qr",8"image_url": "https://rzp.io/i/BWcUVrLp",9"payment_amount": 300,10"status": "active",11"description": "For Store 1",12"fixed_amount": true,13"payments_amount_received": 0,14"payments_count_received": 0,15"notes": {16"purpose": "Test UPI QR Code notes"17},18"customer_id": "cust_HKsR5se84c5LTO",19"close_by": 168161583820}
Request Parameters
type
*
string
The type of the QR Code.
upi_qr
: Create a QR Code that accepts only UPI payments.
Feature Request
This is an on-demand feature. Please raise a request with our
to get this feature activated on your account.name
string
Label entered to identify the QR Code. For example, Store Front Display
.
usage
*
string
Indicates if the QR Code should be allowed to accept single payment or multiple payments. Possible values:
single_use
: QR Code will accept only one payment and then close automatically.multiple_use
(default): QR Code will accept multiple payments.
fixed_amount
boolean
Indicates if the QR should accept payments of specific amounts or any amount. Possible values:
true
: QR Code accepts only a specific amount.false
(default): QR Code accepts any amount.
Watch Out!
When setting the usage
to single_use
, ensure that fixed_amount
is true
to generate the QR Code successfully.
payment_amount
integer
The amount allowed for a transaction. If this is specified, then any transaction of an amount less than or more than this value is not allowed. For example, if this amount is set as 500000
, the customer cannot pay an amount less than or more than ₹5000.
description
string
A brief description about the QR Code.
customer_id
string
The unique identifier of the customer the QR Code is linked with. Know more about the
.close_by
integer
Unix timestamp at which the QR Code is scheduled to be automatically closed. The time must be at least 2 minutes after the current time.
Watch Out!
This parameter is available for single use QR codes only. You should ideally send a close_by
value (expiry time less than or equal to 2 hours from QR generation).
- The QR code has a minimum expiration time of 2 minutes and a maximum of 2 hours.
- If
close_by
isNULL
, the system sets a 2-hour expiry (returned in the response). - If
close_by
is greater than 2 hours, the system overrides it to 2 hours (returned in the response). - Use the returned
close_by
value for QR expiry. QR codes expire after theclose_by
time; you must regenerate them. - This parameter is only available for QR codes with
usage
set assingle_use
. You will not be able to use this parameter formultiple_use
QR codes as it will generate an error.
notes
object
Key-value pair that can be used to store additional information about the QR Code. Maximum 15 key-value pairs, 256 characters (maximum) each. For example, "note_key": "Beam me up Scotty”
.
Response Parameters
id
string
The unique identifier of the QR Code. For example, qr_HMsVL8HOpbMcjU
.
entity
string
Indicates the type of entity. Here, it is qr_code
.
created_at
integer
Unix timestamp at which the QR Code is created.
name
string
Label entered to identify the QR Code. For example, Store Front Display
.
usage
string
Indicates if the QR Code should be allowed to accept single payment or multiple payments. Possible values:
single_use
: QR Code will accept only one payment and then close automatically.multiple_use
(default): QR Code will accept multiple payments.
type
string
The type of the QR Code. Possible value is upi_qr
, which creates a QR Code that accepts only UPI payments.
Feature Request
This is an on-demand feature. Please raise a request with our
to get this feature activated on your account.image_url
string
The URL of the QR Code. For example, http://rzp.io/l6MS
. Click the link to download the code.
payment_amount
integer
The amount allowed for a transaction. If this is specified, then any transaction of an amount less than or more than this value is not allowed. For example, if this amount is set as 500000
, the customer cannot pay an amount less than or more than ₹5000.
status
string
Indicates the status of the QR Code. Possible values:
active
: Indicates that the QR Code has been created and is ready to accept payments.closed
: Indicates that the QR Code has been closed.
description
string
A brief description about the QR Code.
fixed_amount
boolean
Indicates if the QR Code should accept payments of specific amounts or any amount. Possible values:
true
: QR Code accepts only a specific amount.false
(default): QR code accepts any amount.
Watch Out!
When setting the usage
to single_use
, ensure that fixed_amount
is true
to generate the QR Code successfully.
payments_amount_received
integer
The total amount received on the QR Code. Only captured payments are considered.
payments_count_received
integer
The total number of payments received on the QR Code. All captured payments are considered.
notes
object
Key-value pair that can be used to store additional information about the QR Code. Maximum 15 key-value pairs, 256 characters (maximum) each. For example, "note_key": "Beam me up Scotty”
.
customer_id
string
The unique identifier of the customer the QR Code is linked with. Know more about the
.close_by
integer
Unix timestamp at which the QR Code is scheduled to be automatically closed. The time must be at least 2 minutes after the current time.
Watch Out!
This parameter is available for single use QR codes only. You should ideally send a close_by
value (expiry time less than or equal to 2 hours from QR generation).
- The QR code has a minimum expiration time of 2 minutes and a maximum of 2 hours.
- If
close_by
isNULL
, the system sets a 2-hour expiry (returned in the response). - If
close_by
is greater than 2 hours, the system overrides it to 2 hours (returned in the response). - Use the returned
close_by
value for QR expiry. QR codes expire after theclose_by
time; you must regenerate them. - This parameter is only available for QR codes with
usage
set assingle_use
. You will not be able to use this parameter formultiple_use
QR codes as it will generate an error.
closed_at
integer
Unix timestamp at which the QR Code is automatically closed.
close_reason
string
The reason for the closure of the QR Code. Possible values:
on_demand
: When you close the QR Code using the APIs or the Dashboard.paid
: If the QR Code is created with theusage=single_payment
parameter, the QR Code closes automatically once the customer makes the payment, with the reason marked aspaid
.null
: The QR Code has not been closed yet.
Errors
The API {key/secret} provided is invalid.
Error Status: 4xx
The API credentials passed in the API call differ from the ones generated on the Dashboard.
Solution
The selected {field name} is invalid.
Error Status: 400
Data sent for a field is invalid. For example, when the data sent for type
is abc
, instead of the acceptable value.
Solution
The {field name} is required.
Error Status: 400
A mandatory field is missing.
Solution
The payment amount must be at least 1.
Error Status: 400
The amount specified is less than the minimum amount.
Solution
{Customer_id} is not a valid id.
Error Status: 400
Data entered for the Customer id field is invalid.
Solution
type, usage, fixed_amount, payment_amount, description, close_by is/are not required and should not be sent
Error Status: 400
A POST API is executed by GET Method.
Solution
{close_by} must be between 946684800 and 4765046400
Error Status: 400
A wrong close by date is passed.
Solution
{any extra field} ajshdas is/are not required and should not be sent
Error Status: 400
An additional or unrequired parameter is passed.
Solution
Create a QR Code
POST
/v1/payments/qr_codes
Click to copy
Use this endpoint to create a QR Code.
- You can share the short URL with customers to accept payments.
- You can print and download it.
- You can create QR Codes for single or multiple use and for specific or all customers.
Is this page helpful?
Request Parameters
type
*
string
The type of the QR Code.
upi_qr
: Create a QR Code that accepts only UPI payments.
Feature Request
This is an on-demand feature. Please raise a request with our
to get this feature activated on your account.name
string
Label entered to identify the QR Code. For example, Store Front Display
.
usage
*
string
Indicates if the QR Code should be allowed to accept single payment or multiple payments. Possible values:
single_use
: QR Code will accept only one payment and then close automatically.multiple_use
(default): QR Code will accept multiple payments.
fixed_amount
boolean
Indicates if the QR should accept payments of specific amounts or any amount. Possible values:
true
: QR Code accepts only a specific amount.false
(default): QR Code accepts any amount.
Watch Out!
When setting the usage
to single_use
, ensure that fixed_amount
is true
to generate the QR Code successfully.
payment_amount
integer
The amount allowed for a transaction. If this is specified, then any transaction of an amount less than or more than this value is not allowed. For example, if this amount is set as 500000
, the customer cannot pay an amount less than or more than ₹5000.
description
string
A brief description about the QR Code.
customer_id
string
The unique identifier of the customer the QR Code is linked with. Know more about the
.close_by
integer
Unix timestamp at which the QR Code is scheduled to be automatically closed. The time must be at least 2 minutes after the current time.
Watch Out!
This parameter is available for single use QR codes only. You should ideally send a close_by
value (expiry time less than or equal to 2 hours from QR generation).
- The QR code has a minimum expiration time of 2 minutes and a maximum of 2 hours.
- If
close_by
isNULL
, the system sets a 2-hour expiry (returned in the response). - If
close_by
is greater than 2 hours, the system overrides it to 2 hours (returned in the response). - Use the returned
close_by
value for QR expiry. QR codes expire after theclose_by
time; you must regenerate them. - This parameter is only available for QR codes with
usage
set assingle_use
. You will not be able to use this parameter formultiple_use
QR codes as it will generate an error.
notes
object
Key-value pair that can be used to store additional information about the QR Code. Maximum 15 key-value pairs, 256 characters (maximum) each. For example, "note_key": "Beam me up Scotty”
.
Response Parameters
id
string
The unique identifier of the QR Code. For example, qr_HMsVL8HOpbMcjU
.
entity
string
Indicates the type of entity. Here, it is qr_code
.
created_at
integer
Unix timestamp at which the QR Code is created.
name
string
Label entered to identify the QR Code. For example, Store Front Display
.
usage
string
Indicates if the QR Code should be allowed to accept single payment or multiple payments. Possible values:
single_use
: QR Code will accept only one payment and then close automatically.multiple_use
(default): QR Code will accept multiple payments.
type
string
The type of the QR Code. Possible value is upi_qr
, which creates a QR Code that accepts only UPI payments.
Feature Request
This is an on-demand feature. Please raise a request with our
to get this feature activated on your account.image_url
string
The URL of the QR Code. For example, http://rzp.io/l6MS
. Click the link to download the code.
payment_amount
integer
The amount allowed for a transaction. If this is specified, then any transaction of an amount less than or more than this value is not allowed. For example, if this amount is set as 500000
, the customer cannot pay an amount less than or more than ₹5000.
status
string
Indicates the status of the QR Code. Possible values:
active
: Indicates that the QR Code has been created and is ready to accept payments.closed
: Indicates that the QR Code has been closed.
description
string
A brief description about the QR Code.
fixed_amount
boolean
Indicates if the QR Code should accept payments of specific amounts or any amount. Possible values:
true
: QR Code accepts only a specific amount.false
(default): QR code accepts any amount.
Watch Out!
When setting the usage
to single_use
, ensure that fixed_amount
is true
to generate the QR Code successfully.
payments_amount_received
integer
The total amount received on the QR Code. Only captured payments are considered.
payments_count_received
integer
The total number of payments received on the QR Code. All captured payments are considered.
notes
object
Key-value pair that can be used to store additional information about the QR Code. Maximum 15 key-value pairs, 256 characters (maximum) each. For example, "note_key": "Beam me up Scotty”
.
customer_id
string
The unique identifier of the customer the QR Code is linked with. Know more about the
.close_by
integer
Unix timestamp at which the QR Code is scheduled to be automatically closed. The time must be at least 2 minutes after the current time.
Watch Out!
This parameter is available for single use QR codes only. You should ideally send a close_by
value (expiry time less than or equal to 2 hours from QR generation).
- The QR code has a minimum expiration time of 2 minutes and a maximum of 2 hours.
- If
close_by
isNULL
, the system sets a 2-hour expiry (returned in the response). - If
close_by
is greater than 2 hours, the system overrides it to 2 hours (returned in the response). - Use the returned
close_by
value for QR expiry. QR codes expire after theclose_by
time; you must regenerate them. - This parameter is only available for QR codes with
usage
set assingle_use
. You will not be able to use this parameter formultiple_use
QR codes as it will generate an error.
closed_at
integer
Unix timestamp at which the QR Code is automatically closed.
close_reason
string
The reason for the closure of the QR Code. Possible values:
on_demand
: When you close the QR Code using the APIs or the Dashboard.paid
: If the QR Code is created with theusage=single_payment
parameter, the QR Code closes automatically once the customer makes the payment, with the reason marked aspaid
.null
: The QR Code has not been closed yet.
Errors
The API {key/secret} provided is invalid.
Error Status: 4xx
The API credentials passed in the API call differ from the ones generated on the Dashboard.
Solution
The selected {field name} is invalid.
Error Status: 400
Data sent for a field is invalid. For example, when the data sent for type
is abc
, instead of the acceptable value.
Solution
The {field name} is required.
Error Status: 400
A mandatory field is missing.
Solution
The payment amount must be at least 1.
Error Status: 400
The amount specified is less than the minimum amount.
Solution
{Customer_id} is not a valid id.
Error Status: 400
Data entered for the Customer id field is invalid.
Solution
type, usage, fixed_amount, payment_amount, description, close_by is/are not required and should not be sent
Error Status: 400
A POST API is executed by GET Method.
Solution
{close_by} must be between 946684800 and 4765046400
Error Status: 400
A wrong close by date is passed.
Solution
{any extra field} ajshdas is/are not required and should not be sent
Error Status: 400
An additional or unrequired parameter is passed.
Solution
1curl -u <YOUR_KEY_ID>:<YOUR_KEY_SECRET> \2-X POST https://api.razorpay.com/v1/payments/qr_codes \3-H "Content-Type: application/json" \4-d '{5"type": "upi_qr",6"name": "Store Front Display",7"usage": "single_use",8"fixed_amount": true,9"payment_amount": 300,10"description": "For Store 1",11"customer_id": "cust_HKsR5se84c5LTO",12"close_by": 1681615838,13"notes": {14"purpose": "Test UPI QR Code notes"15}16}'
Success
Failure
1{2"id": "qr_HMsVL8HOpbMcjU",3"entity": "qr_code",4"created_at": 1623660301,5"name": "Store Front Display",6"usage": "single_use",7"type": "upi_qr",8"image_url": "https://rzp.io/i/BWcUVrLp",9"payment_amount": 300,10"status": "active",11"description": "For Store 1",12"fixed_amount": true,13"payments_amount_received": 0,14"payments_count_received": 0,15"notes": {16"purpose": "Test UPI QR Code notes"17},18"customer_id": "cust_HKsR5se84c5LTO",19"close_by": 168161583820}