API Test Keys
Create a Subscription
POST
/v1/subscriptions
Click to copy
Use this endpoint to create a Subscription.
Is this page helpful?
1curl -u [YOUR_KEY_ID]:[YOUR_KEY_SECRET] \2-X POST https://api.razorpay.com/v1/subscriptions \3-H "Content-Type: application/json" \4-d '{5"plan_id":"plan_00000000000001",6"total_count":6,7"quantity":1,8"customer_notify":1,9"start_at":1580453311,10"expire_by":1580626111,11"addons":[12{13"item":{14"name":"Delivery charges",15"amount":30000,16"currency":"MYR"17}18}19],20"offer_id":"offer_JHD834hjbxzhd38d",21"notes":{22"notes_key_1":"Tea, Earl Grey, Hot",23"notes_key_2":"Tea, Earl Grey… decaf."24}25}'
Success
Failure
1{2"id": "sub_00000000000001",3"entity": "subscription",4"plan_id": "plan_00000000000001",5"status": "created",6"current_start": null,7"current_end": null,8"ended_at": null,9"quantity": 1,10"notes":{11"notes_key_1":"Tea, Earl Grey, Hot",12"notes_key_2":"Tea, Earl Grey… decaf."13},14"charge_at": 1580453311,15"start_at": 1580626111,16"end_at": 1583433000,17"auth_attempts": 0,18"total_count": 6,19"paid_count": 0,20"customer_notify": true,21"created_at": 1580280581,22"expire_by": 1580626111,23"short_url": "https://rzp.io/i/z3b1R61A9",24"has_scheduled_changes": false,25"change_scheduled_at": null,26"source": "api",27"offer_id":"offer_JHD834hjbxzhd38d",28"remaining_count": 529}
Request Parameters
plan_id
*
string
The unique identifier of a plan that should be linked to the Subscription. For example, plan_00000000000001
.
total_count
*
integer
The number of billing cycles for which the customer should be charged. For example, if a customer is buying a 1-year subscription billed on a bi-monthly basis, this value should be 6
.
quantity
integer
The number of times the customer should be charged the plan amount per invoice. For example, a customer subscribes to use software. The charges are MYR 100.00 /month/license. The customer wants 5 licenses. You should pass 5
as the quantity. The customer is charged MYR 500.00 (5 x MYR 100.00) monthly. By default, this value is set to 1
.
start_at
integer
Unix timestamp that indicates from when the Subscription should start. If not passed, the Subscription starts immediately after the authorisation payment. For example, 1581013800
. For Subscriptions with a future start_date, frequency is considered as_presented
.
expire_by
integer
Unix timestamp that indicates till when the customer can make the authorisation payment. For example, 1581013800
. The default value is 30 years. Do not pass any value if you do not want to set an expiry date.
customer_notify
boolean
Indicates whether the communication to the customer would be handled by businesses or Curlec. Possible values:
0
: communication handled by businesses.1
(default): communication handled by Curlec.
addons
object
Array that contains details of any upfront amount you want to collect as part of the authorisation transaction.
Show child parameters (1)
offer_id
string
The unique identifier of the offer that is linked to the Subscription. You can obtain this from the Dashboard. For example, offer_JHD834hjbxzhd38d
.
notes
object
Notes you can enter for the contact for future reference. This is a key-value pair. You can enter a maximum of 15 key-value pairs. For example, "note_key": "Beam me up Scotty”
.
Response Parameters
id
string
The unique identifier of the subscription created. For example, sub_00000000000001
.
entity
string
The entity being created. Here, it will be subscription
.
plan_id
string
The unique identifier for a plan that is linked to the created subscription. For example, plan_00000000000001
.
customer_id
string
The unique identifier of the customer linked to the subscription. This is populated automatically once the customer completes the authorization transaction. For example, cust_00000000000001
.
status
string
Status of the subscription. Refer to the
for more details. Possible values:created
authenticated
active
pending
halted
cancelled
completed
expired
current_start
integer
Unix timestamp. The start time of the current billing cycle of the subscription. For example, 1581013800
.
current_end
integer
Unix timestamp. The end time of the current billing cycle of the subscription. For example, 1581013800
.
ended_at
integer
The timestamp, in Unix format, when the subscription was completed or was cancelled. For example, 1581013800
.
quantity
integer
The number of times the plan should be linked to the subscription. For example, if the plan is MYR 100.00/user/month and the customer has 5 users, you should pass 5 as the quantity to have the customer charged MYR 500.00 (5 x MYR 100.00) monthly. By default, this value is set to 1.
notes
object
Notes you can enter for the contact for future reference. This is a key-value pair. You can enter a maximum of 15 key-value pairs. For example, "note_key": "Beam me up Scotty”
.
charge_at
integer
Unix timestamp. This indicates when the next charge on the subscription should be made. For example, 1581013800
.
offer_id
string
The unique identifier of the offer that should be linked to the subscription. For example, offer_JHD834hjbxzhd38d
.
start_at
integer
The timestamp, in Unix format, when the subscription should start. If not passed, the subscription starts immediately after the authorization payment. For example, 1581013800
.
end_at
integer
The timestamp, in Unix format, when the subscription should end. For example, 1581013800
.
auth_attempts
integer
The number of times that the charge for the current billing cycle has been attempted on the card. For example, 2
.
total_count
integer
The number of billing cycles for which the customer should be charged. For example, 2
. We support subscriptions for a maximum duration of 100 years. The number of billing cycles depends if the subscription is daily, weekly, monthly or yearly.
paid_count
integer
This indicates the number of billing cycles for which the customer has already been charged. For example, 2
.
customer_notify
boolean
Indicates whether the communication to the customer would be handled by businesses or Curlec.
false
: communication handled by businesses.true
: communication handled by Curlec. Defaults totrue
.
created_at
integer
The timestamp, in Unix format, when the subscription was created. For example, 1581013800
.
expire_by
integer
The timestamp, in Unix format, till when the customer can make the authorization payment. For example, 1581013800
.
short_url
string
URL that can be used to make the authorization payment. For example, https://rzp.io/i/PWtAiEo
.
has_scheduled_changes
boolean
Indicates if the subscription has any scheduled changes. Possible values:
true
false
schedule_change_at
string
Represents when the subscription should be updated. Possible values:
now
(default value): Updates the subscription immediately.cycle_end
: Updates the subscription at the end of the current billing cycle.
remaining_count
integer
This indicates the number of billing cycles remaining on the subscription. For example, 2
.
Errors
The requested URL was not found on the server.
Error Status: 400
This error occurs when the Subscriptions feature is not enabled.
Solution
The id provided does not exist
Error Status: 400
This error occurs when passing an incorrect plan_id
.
Solution
Offer Not Found
Error Status: 400
This error occurs when you are linking an invalid/expired offer to a Subscription.
Solution
Offer not applicable for this Subscription
Error Status: 400
This error occurs when you are linking/passing an offer_id
to a Subscription on which the offer doesn't apply.
Solution
Create a Subscription
POST
/v1/subscriptions
Click to copy
Use this endpoint to create a Subscription.
Is this page helpful?
Request Parameters
plan_id
*
string
The unique identifier of a plan that should be linked to the Subscription. For example, plan_00000000000001
.
total_count
*
integer
The number of billing cycles for which the customer should be charged. For example, if a customer is buying a 1-year subscription billed on a bi-monthly basis, this value should be 6
.
quantity
integer
The number of times the customer should be charged the plan amount per invoice. For example, a customer subscribes to use software. The charges are MYR 100.00 /month/license. The customer wants 5 licenses. You should pass 5
as the quantity. The customer is charged MYR 500.00 (5 x MYR 100.00) monthly. By default, this value is set to 1
.
start_at
integer
Unix timestamp that indicates from when the Subscription should start. If not passed, the Subscription starts immediately after the authorisation payment. For example, 1581013800
. For Subscriptions with a future start_date, frequency is considered as_presented
.
expire_by
integer
Unix timestamp that indicates till when the customer can make the authorisation payment. For example, 1581013800
. The default value is 30 years. Do not pass any value if you do not want to set an expiry date.
customer_notify
boolean
Indicates whether the communication to the customer would be handled by businesses or Curlec. Possible values:
0
: communication handled by businesses.1
(default): communication handled by Curlec.
addons
object
Array that contains details of any upfront amount you want to collect as part of the authorisation transaction.
Show child parameters (1)
offer_id
string
The unique identifier of the offer that is linked to the Subscription. You can obtain this from the Dashboard. For example, offer_JHD834hjbxzhd38d
.
notes
object
Notes you can enter for the contact for future reference. This is a key-value pair. You can enter a maximum of 15 key-value pairs. For example, "note_key": "Beam me up Scotty”
.
Response Parameters
id
string
The unique identifier of the subscription created. For example, sub_00000000000001
.
entity
string
The entity being created. Here, it will be subscription
.
plan_id
string
The unique identifier for a plan that is linked to the created subscription. For example, plan_00000000000001
.
customer_id
string
The unique identifier of the customer linked to the subscription. This is populated automatically once the customer completes the authorization transaction. For example, cust_00000000000001
.
status
string
Status of the subscription. Refer to the
for more details. Possible values:created
authenticated
active
pending
halted
cancelled
completed
expired
current_start
integer
Unix timestamp. The start time of the current billing cycle of the subscription. For example, 1581013800
.
current_end
integer
Unix timestamp. The end time of the current billing cycle of the subscription. For example, 1581013800
.
ended_at
integer
The timestamp, in Unix format, when the subscription was completed or was cancelled. For example, 1581013800
.
quantity
integer
The number of times the plan should be linked to the subscription. For example, if the plan is MYR 100.00/user/month and the customer has 5 users, you should pass 5 as the quantity to have the customer charged MYR 500.00 (5 x MYR 100.00) monthly. By default, this value is set to 1.
notes
object
Notes you can enter for the contact for future reference. This is a key-value pair. You can enter a maximum of 15 key-value pairs. For example, "note_key": "Beam me up Scotty”
.
charge_at
integer
Unix timestamp. This indicates when the next charge on the subscription should be made. For example, 1581013800
.
offer_id
string
The unique identifier of the offer that should be linked to the subscription. For example, offer_JHD834hjbxzhd38d
.
start_at
integer
The timestamp, in Unix format, when the subscription should start. If not passed, the subscription starts immediately after the authorization payment. For example, 1581013800
.
end_at
integer
The timestamp, in Unix format, when the subscription should end. For example, 1581013800
.
auth_attempts
integer
The number of times that the charge for the current billing cycle has been attempted on the card. For example, 2
.
total_count
integer
The number of billing cycles for which the customer should be charged. For example, 2
. We support subscriptions for a maximum duration of 100 years. The number of billing cycles depends if the subscription is daily, weekly, monthly or yearly.
paid_count
integer
This indicates the number of billing cycles for which the customer has already been charged. For example, 2
.
customer_notify
boolean
Indicates whether the communication to the customer would be handled by businesses or Curlec.
false
: communication handled by businesses.true
: communication handled by Curlec. Defaults totrue
.
created_at
integer
The timestamp, in Unix format, when the subscription was created. For example, 1581013800
.
expire_by
integer
The timestamp, in Unix format, till when the customer can make the authorization payment. For example, 1581013800
.
short_url
string
URL that can be used to make the authorization payment. For example, https://rzp.io/i/PWtAiEo
.
has_scheduled_changes
boolean
Indicates if the subscription has any scheduled changes. Possible values:
true
false
schedule_change_at
string
Represents when the subscription should be updated. Possible values:
now
(default value): Updates the subscription immediately.cycle_end
: Updates the subscription at the end of the current billing cycle.
remaining_count
integer
This indicates the number of billing cycles remaining on the subscription. For example, 2
.
Errors
The requested URL was not found on the server.
Error Status: 400
This error occurs when the Subscriptions feature is not enabled.
Solution
The id provided does not exist
Error Status: 400
This error occurs when passing an incorrect plan_id
.
Solution
Offer Not Found
Error Status: 400
This error occurs when you are linking an invalid/expired offer to a Subscription.
Solution
Offer not applicable for this Subscription
Error Status: 400
This error occurs when you are linking/passing an offer_id
to a Subscription on which the offer doesn't apply.
Solution
1curl -u [YOUR_KEY_ID]:[YOUR_KEY_SECRET] \2-X POST https://api.razorpay.com/v1/subscriptions \3-H "Content-Type: application/json" \4-d '{5"plan_id":"plan_00000000000001",6"total_count":6,7"quantity":1,8"customer_notify":1,9"start_at":1580453311,10"expire_by":1580626111,11"addons":[12{13"item":{14"name":"Delivery charges",15"amount":30000,16"currency":"MYR"17}18}19],20"offer_id":"offer_JHD834hjbxzhd38d",21"notes":{22"notes_key_1":"Tea, Earl Grey, Hot",23"notes_key_2":"Tea, Earl Grey… decaf."24}25}'
Success
Failure
1{2"id": "sub_00000000000001",3"entity": "subscription",4"plan_id": "plan_00000000000001",5"status": "created",6"current_start": null,7"current_end": null,8"ended_at": null,9"quantity": 1,10"notes":{11"notes_key_1":"Tea, Earl Grey, Hot",12"notes_key_2":"Tea, Earl Grey… decaf."13},14"charge_at": 1580453311,15"start_at": 1580626111,16"end_at": 1583433000,17"auth_attempts": 0,18"total_count": 6,19"paid_count": 0,20"customer_notify": true,21"created_at": 1580280581,22"expire_by": 1580626111,23"short_url": "https://rzp.io/i/z3b1R61A9",24"has_scheduled_changes": false,25"change_scheduled_at": null,26"source": "api",27"offer_id":"offer_JHD834hjbxzhd38d",28"remaining_count": 529}