API Test Keys
Update a Subscription
PATCH
/v1/subscriptions/:id
Click to copy
Use this endpoint to update a Subscription.
Is this page helpful?
1curl -u <YOUR_KEY>:<YOUR_SECRET> \2-X PATCH https://api.razorpay.com/v1/subscriptions/sub_00000000000001 \3-H "Content-Type: application/json" \4-d '{5"plan_id":"plan_00000000000002",6"offer_id":"offer_JHD834hjbxzhd38d",7"quantity":5,8"remaining_count":5,9"start_at":1496000432,10"schedule_change_at":"now",11"customer_notify":112}'
Success
Failure
1{2"id":"sub_00000000000002",3"entity":"subscription",4"plan_id":"plan_00000000000002",5"customer_id":"cust_00000000000002",6"status":"authenticated",7"current_start":null,8"current_end":null,9"ended_at":null,10"quantity":3,11"notes":{12"notes_key_1":"Tea, Earl Grey, Hot",13"notes_key_2":"Tea, Earl Grey… decaf."14},15"charge_at":1580453311,16"start_at":1580453311,17"end_at":1606588200,18"auth_attempts":0,19"total_count":6,20"paid_count":0,21"customer_notify":true,22"created_at":1580283807,23"expire_by":1580626111,24"short_url":"https://rzp.io/i/yeDkUKy",25"has_scheduled_changes":false,26"change_scheduled_at":null,27"source": "api",28"offer_id":"offer_JHD834hjbxzhd38d",29"remaining_count":630}
Path Parameters
id
*
string
The unique identifier linked to a Subscription. For example, sub_00000000000001
.
Request Parameters
plan_id
string
The unique identifier of the new plan that should be linked to the Subscription. For example, plan_00000000000001
.
offer_id
string
The unique identifier of the offer that should be linked to the Subscription. You can obtain this from the Dashboard. For example, offer_JHD834hjbxzhd38d
.
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
.
remaining_count
integer
This parameter is used to update the total_count
for a Subscription. For example, let us consider a monthly Subscription with 12 billing cycles. The Subscription has been charged successfully 4 times and 3 more invoices have been issued, but have not been charged. The remaining count in such cases is 5. However, you can overwrite this value using this parameter.
start_at
integer
Unix timestamp. The new start date for the Subscription.
schedule_change_at
string
Represents when the Subscription should be updated.
now
(default): Updates the Subscription immediately.cycle_end
: Updates the Subscription at the end of the current billing cycle.
customer_notify
boolean
Represents who sends notifications to the customer. Possible values:
1
(default): Notifications sent by Curlec.0
: Notifications sent by you.
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
Subscriptions cannot be updated when payment mode is UPI
Error Status: 400
This error occurs when you are trying to update a Subscription authorised via UPI.
Solution
Can't update Subscription when Subscription is not in Authenticated or Active state
Error Status: 400
This error occurs when you are trying to update a Subscription in the created state.
Solution
Update a Subscription
PATCH
/v1/subscriptions/:id
Click to copy
Use this endpoint to update a Subscription.
Is this page helpful?
Path Parameters
id
*
string
The unique identifier linked to a Subscription. For example, sub_00000000000001
.
Request Parameters
plan_id
string
The unique identifier of the new plan that should be linked to the Subscription. For example, plan_00000000000001
.
offer_id
string
The unique identifier of the offer that should be linked to the Subscription. You can obtain this from the Dashboard. For example, offer_JHD834hjbxzhd38d
.
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
.
remaining_count
integer
This parameter is used to update the total_count
for a Subscription. For example, let us consider a monthly Subscription with 12 billing cycles. The Subscription has been charged successfully 4 times and 3 more invoices have been issued, but have not been charged. The remaining count in such cases is 5. However, you can overwrite this value using this parameter.
start_at
integer
Unix timestamp. The new start date for the Subscription.
schedule_change_at
string
Represents when the Subscription should be updated.
now
(default): Updates the Subscription immediately.cycle_end
: Updates the Subscription at the end of the current billing cycle.
customer_notify
boolean
Represents who sends notifications to the customer. Possible values:
1
(default): Notifications sent by Curlec.0
: Notifications sent by you.
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
Subscriptions cannot be updated when payment mode is UPI
Error Status: 400
This error occurs when you are trying to update a Subscription authorised via UPI.
Solution
Can't update Subscription when Subscription is not in Authenticated or Active state
Error Status: 400
This error occurs when you are trying to update a Subscription in the created state.
Solution
1curl -u <YOUR_KEY>:<YOUR_SECRET> \2-X PATCH https://api.razorpay.com/v1/subscriptions/sub_00000000000001 \3-H "Content-Type: application/json" \4-d '{5"plan_id":"plan_00000000000002",6"offer_id":"offer_JHD834hjbxzhd38d",7"quantity":5,8"remaining_count":5,9"start_at":1496000432,10"schedule_change_at":"now",11"customer_notify":112}'
Success
Failure
1{2"id":"sub_00000000000002",3"entity":"subscription",4"plan_id":"plan_00000000000002",5"customer_id":"cust_00000000000002",6"status":"authenticated",7"current_start":null,8"current_end":null,9"ended_at":null,10"quantity":3,11"notes":{12"notes_key_1":"Tea, Earl Grey, Hot",13"notes_key_2":"Tea, Earl Grey… decaf."14},15"charge_at":1580453311,16"start_at":1580453311,17"end_at":1606588200,18"auth_attempts":0,19"total_count":6,20"paid_count":0,21"customer_notify":true,22"created_at":1580283807,23"expire_by":1580626111,24"short_url":"https://rzp.io/i/yeDkUKy",25"has_scheduled_changes":false,26"change_scheduled_at":null,27"source": "api",28"offer_id":"offer_JHD834hjbxzhd38d",29"remaining_count":630}