Core Resources
Plans
The
Plans resource is used to create and configure the transactional options for the Product (subscription, prepaid, and onetime purchase options) in Recharge.67 additions in V2, marked New
Everything marked New also works when you send X-Recharge-Version: 2021-11.

#The plan object
The
Current transactional options are: subscription, prepaid and onetime.
Plan object is used to create and configure the transactional options for the Products in Recharge. Current transactional options are: subscription, prepaid and onetime.
Important - Updating/modifying plans in V2 will impact /products in 2021-01. These are not cross compatible. Proceed with caution.
Attributes
- idintegerUnique numeric identifier for the
Plan. - An object containing the add-on configuration of the
Plan.nullwhen the plan is not an add-on plan. Add-on plans must besubscriptionplans charged and delivered every 1 month, and a product can have only one.Only for stores that have add-on plans enabled.Show child attributesHide child attributes24 new
- An object describing when an add-on purchased through this plan expires.
nullwhen it does not expire.Only for stores that have add-on plans enabled.Show child attributesHide child attributes22 new
- How the expiration is expressed.Possible values
relativeabsoluteOnly for stores that have add-on plans enabled. - The expiration value. For
relative, an object withoffset(an integer of 1 or more) andunit(day,week,monthoryear). Forabsolute, a date string inYYYY-MM-DDformat.Only for stores that have add-on plans enabled.
- An array of the variant ids, as they appear in external platforms, of the parent products the add-on belongs to.Only for stores that have add-on plans enabled.
- channel_settingsobjectAn object containing the availability of the plan through various supported channels.
Show child attributesHide child attributes4
- apiobjectAn object containing api channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- customer_portalobjectAn object containing customer portal channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- merchant_portalobjectAn object containing merchant portal channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- checkout_pageobjectAn object containing checkout channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- The quantity of the product that a subscriber receives when purchasing through this
Plan.nullwhen the plan does not set a quantity. - An array of translated titles for the
Plan. - created_atdatetimeThe time the plan was created.
- deleted_atdatetimeIf deleted, the time the plan was deleted.
- discount_amountstringThe discount amount applied to the product
pricewhen purchased through thisPlan. - discount_typestringUsed in combination with discount amount to determine the discount applied on a product price when purchased through this
Plan.percentageapplies the discount amount as a percent off the price;fixed_amountapplies it as a flat amount in the store's currency.Possible valuespercentagefixed_amount - external_plan_group_idstringThe id of the selling plan group as it appears in external platforms.
- external_plan_idstringThe id of the selling plan as it appears in external platforms.
- external_plan_namestringThe name of the selling plan as it appears in external platforms.
- external_product_idobjectAn object containing the product id as it appears in external platforms.
Show child attributesHide child attributes1
- ecommercestringThe product id as it appears in the external e-commerce platform. The
external_product_idof theProductrecord in Recharge, linking aPlanto aProduct.
- external_variant_idsarrayAn array of variant ids as they appear in external platforms.
- has_variant_restrictionsbooleanWhether this plan applies to specific variants of the product
- sort_orderintegerThe number indicating the order which the plan will be in a list of related plans.
- subscription_preferencesobjectAn object containing the various subscription preferences associated with this plan.
Show child attributesHide child attributes10
- Whether the specified cutoff day should be applied to the initial checkout order
- charge_interval_frequencyintegerFrequency at which the subscriber will be charged.
- cutoff_day_of_monthintegerDay of the month the plan should be chargedOnly valid for
interval_unit:month - cutoff_day_of_weekintegerDay of the month the plan should be chargedOnly valid for
interval_unit:week - A maximum number of charges on which the subscription should appear before automatic cancellation.
- order_day_of_monthintegerDay of the month an order should be generated when the customer is subscribed.
- order_day_of_weekintegerDay of the week an order should be generated when the customer is subscribed.
- order_interval_frequencyintegerFrequency at which the subscriber will receive shipments when subscribed to this plan.
- interval_unitstringThe unit applied to
charge_interval_frequencyandorder_interval_frequency.Possible valuesdayweekmonthAll plans for aProductmust have the sameinterval_unit. - pricing_progressionarray of objectsFor regular subscription plans, this field is an empty array.
Show child attributesHide child attributes3
- The number of cycles after which this recurring discount should be applied. The checkout order is cycle 1. The first recurring order is cycle 2.
- The discount amount applied to the product
priceafter the specified number of cycles. - recurring_discount_typestringUsed in combination with discount amount to determine the discount applied on a product price after the specified number of cycles.
percentageapplies the discount amount as a percent off the price;fixed_amountapplies it as a flat amount in the store's currency.Possible valuespercentagefixed_amount
- titlestringThe title of the plan.All
Plansfor a product must have the sametitle. - typestringThe type of the plan.Possible values
subscriptionprepaidprepaid_v2onetimemembership_subscriptionProducts with aprepaidplan cannot have plans of other types. - updated_atdatetimeThe time the plan was last updated.
{
"plan": {
"id": 88237,
"channel_settings": {
"api": {
"display": true
},
"checkout_page": {
"display": true
},
"customer_portal": {
"display": true
},
"merchant_portal": {
"display": true
}
},
"created_at": "2021-07-27T19:07:34+00:00",
"deleted_at": null,
"discount_amount": "30.00",
"discount_type": "percentage",
"external_plan_group_id": "77695091010",
"external_plan_id": "690103779650",
"external_plan_name": "1 week subscription",
"external_product_id": {
"ecommerce": "2103271587891"
},
"external_variant_ids": [],
"has_variant_restrictions": false,
"product_quantity": null,
"sort_order": 1,
"subscription_preferences": {
"apply_cutoff_date_to_checkout": false,
"charge_interval_frequency": 30,
"cutoff_day_of_month": null,
"cutoff_day_of_week": null,
"expire_after_specific_number_of_charges": null,
"interval_unit": "day",
"order_day_of_month": 1,
"order_day_of_week": null,
"order_interval_frequency": 30
},
"title": "Jarred Pickles",
"translations": [],
"type": "subscription",
"updated_at": "2021-07-27T19:07:34+00:00"
}
}#Create a plan
POST/plans
Create a
Plan for a Product in Recharge.Scope
write_plansMultiple
Returns
Plans may exist for any Product, see the Plan object for restrictions.Returns
201 Created. subscription_preferences and its charge_interval_frequency, order_interval_frequency and interval_unit are required for every type except onetime; for onetime plans they must be omitted or null.Body parameters
- An object containing the add-on configuration of the
Plan.nullwhen the plan is not an add-on plan. Add-on plans must besubscriptionplans charged and delivered every 1 month, and a product can have only one.Only for stores that have add-on plans enabled.Show child attributesHide child attributes24 new
- An object describing when an add-on purchased through this plan expires.
nullwhen it does not expire. The key is required whenaddon_settingsis sent.Only for stores that have add-on plans enabled.Show child attributesHide child attributes22 new
- How the expiration is expressed.Possible values
relativeabsoluteOnly for stores that have add-on plans enabled. - The expiration value. For
relative, an object withoffset(an integer of 1 or more) andunit(day,week,monthoryear). Forabsolute, a date string inYYYY-MM-DDformat.Only for stores that have add-on plans enabled.
- An array of the variant ids, as they appear in external platforms, of the parent products the add-on belongs to. At least one is required when
addon_settingsis sent.Only for stores that have add-on plans enabled.
- channel_settingsobjectAn object containing the availability of the plan through various supported channels.
Show child attributesHide child attributes4
- apiobjectAn object containing api channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- customer_portalobjectAn object containing customer portal channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- merchant_portalobjectAn object containing merchant portal channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- checkout_pageobjectAn object containing checkout channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- discount_amountstringThe discount amount applied to the product price when purchased through this plan.
- discount_typestringUsed in combination with discount amount to determine the discount applied on a product price when purchased through this plan.
percentageapplies the discount amount as a percent off the price;fixed_amountapplies it as a flat amount in the store's currency. (accepts: percentage, fixed_amount)Possible valuespercentagefixed_amount - An object containing the product id as it appears in external platforms.
Show child attributesHide child attributes1
- The product id as it appears in the external e-commerce platform. The
external_product_idof theProductrecord in Recharge, linking aPlanto aProduct.
- An array of variant ids, as they appear in external platforms, that the plan applies to.
- Whether this plan applies only to the variants listed in
external_variant_ids. Defaults tofalse. - The quantity of the product that a subscriber receives when purchasing through this
Plan.nullwhen the plan does not set a quantity. - sort_orderintegerThe number indicating the order which the plan will be in a list of related plans.
- An object containing the various subscription preferences associated with this plan.
Show child attributesHide child attributes10
- Whether the specified cutoff day should be applied to the initial checkout order
- Frequency at which the subscriber will be charged.
- cutoff_day_of_monthintegerDay of the month the plan should be chargedOnly valid for
interval_unit:month - cutoff_day_of_weekintegerDay of the month the plan should be chargedOnly valid for
interval_unit:week - A maximum number of charges on which the subscription should appear before automatic cancellation.
- order_day_of_monthintegerDay of the month an order should be generated when the customer is subscribed.
- order_day_of_weekintegerDay of the week an order should be generated when the customer is subscribed.
- Frequency at which the subscriber will receive shipments when subscribed to this plan.
- The unit applied to
charge_interval_frequencyandorder_interval_frequency.Possible valuesdayweekmonthAll plans for aProductmust have the sameinterval_unit. - pricing_progressionarray of objectsUsed to configure a plan with dynamic pricing. For regular subscription plans, this is field is null. For dynamically priced plans, this field is an array of one item.
Show child attributesHide child attributes3
- The number of cycles after which this recurring discount should be applied. The checkout order is cycle 1. The first recurring order is cycle 2.
- The discount amount applied to the product
priceafter the specified number of cycles. - recurring_discount_typestringUsed in combination with discount amount to determine the discount applied on a product price after the specified number of cycles.
percentageapplies the discount amount as a percent off the price;fixed_amountapplies it as a flat amount in the store's currency.Possible valuespercentagefixed_amount
- The title of the plan.All
Plansfor a product must have the sametitle. - An array of translated titles for the
Plan. - The type of the plan. Products with a prepaid plan cannot have plans of other types.Possible values
subscriptionprepaidprepaid_v2onetimemembership_subscription
curl 'https://api.rechargeapps.com/plans' \
-H 'X-Recharge-Version: v2' \
-H 'Content-Type: application/json' \
-H 'X-Recharge-Access-Token: your_api_token' \
-d '{
"discount_amount": "10",
"discount_type": "percentage",
"external_product_id": {
"ecommerce": "2103271587891"
},
"sort_order": 1,
"subscription_preferences": {
"charge_interval_frequency": 30,
"expire_after_specific_number_of_charges": 6,
"interval_unit": "day",
"order_day_of_month": 1,
"order_interval_frequency": 30
}
"title": "Concert T-Shirt",
"type": "subscription",
}'{
"plan": {
"id": 88237,
"channel_settings": {
"api": {
"display": true
},
"checkout_page": {
"display": true
},
"customer_portal": {
"display": true
},
"merchant_portal": {
"display": true
}
},
"created_at": "2021-07-27T19:07:34+00:00",
"deleted_at": null,
"discount_amount": "10",
"discount_type": "percentage",
"external_product_id": {
"ecommerce": "2103271587891"
},
"product_quantity": null,
"sort_order": 1,
"subscription_preferences": {
"charge_interval_frequency": 30,
"cutoff_day_of_month": null,
"cutoff_day_of_week": null,
"expire_after_specific_number_of_charges": 6,
"interval_unit": "day",
"order_day_of_month": 1,
"order_day_of_week": null,
"order_interval_frequency": 30
},
"title": "Concert TShirt",
"translations": [],
"type": "subscription",
"updated_at": "2021-07-27T19:07:34+00:00"
}
}#Update a plan
PUT/plans/{id}
Update an existing Plan.
Scope
write_planstype cannot be changed after the plan is created. When channel_settings is sent, any channel left out of it is reset to display: true.Body parameters
- An object containing the add-on configuration of the
Plan.nullwhen the plan is not an add-on plan. Add-on plans must besubscriptionplans charged and delivered every 1 month, and a product can have only one.Only for stores that have add-on plans enabled.Show child attributesHide child attributes24 new
- An object describing when an add-on purchased through this plan expires.
nullwhen it does not expire. The key is required whenaddon_settingsis sent.Only for stores that have add-on plans enabled.Show child attributesHide child attributes22 new
- How the expiration is expressed.Possible values
relativeabsoluteOnly for stores that have add-on plans enabled. - The expiration value. For
relative, an object withoffset(an integer of 1 or more) andunit(day,week,monthoryear). Forabsolute, a date string inYYYY-MM-DDformat.Only for stores that have add-on plans enabled.
- An array of the variant ids, as they appear in external platforms, of the parent products the add-on belongs to. At least one is required when
addon_settingsis sent.Only for stores that have add-on plans enabled.
- channel_settingsobjectAn object containing the availability of the plan through various supported channels.
Show child attributesHide child attributes4
- apiobjectAn object containing api channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- customer_portalobjectAn object containing customer portal channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- merchant_portalobjectAn object containing merchant portal channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- checkout_pageobjectAn object containing checkout channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- discount_amountstringThe discount amount applied to the product price when purchased through this plan.
- discount_typestringUsed in combination with discount amount to determine the discount applied on a product price when purchased through this plan.
percentageapplies the discount amount as a percent off the price;fixed_amountapplies it as a flat amount in the store's currency.Possible valuespercentagefixed_amount - external_product_idobjectAn object containing the product id as it appears in external platforms.
Show child attributesHide child attributes1
- ecommercestringThe product id as it appears in the external e-commerce platform. The
external_product_idof theProductrecord in Recharge, linking aPlanto aProduct.
- An array of variant ids, as they appear in external platforms, that the plan applies to.
- Whether this plan applies only to the variants listed in
external_variant_ids. Defaults tofalse. - The quantity of the product that a subscriber receives when purchasing through this
Plan.nullwhen the plan does not set a quantity. - sort_orderintegerThe number indicating the order which the plan will be in a list of related plans.
- subscription_preferencesobjectAn object containing the various subscription preferences associated with this plan.
Show child attributesHide child attributes10
- Whether the specified cutoff day should be applied to the initial checkout order
- charge_interval_frequencyintegerFrequency at which the subscriber will be charged.
- cutoff_day_of_monthintegerDay of the month the plan should be chargedOnly valid for
interval_unit:month - cutoff_day_of_weekintegerDay of the month the plan should be chargedOnly valid for
interval_unit:week - A maximum number of charges on which the subscription should appear before automatic cancellation.
- order_day_of_monthintegerDay of the month an order should be generated when the customer is subscribed.
- order_day_of_weekintegerDay of the week an order should be generated when the customer is subscribed.
- order_interval_frequencyintegerFrequency at which the subscriber will receive shipments when subscribed to this plan.
- interval_unitstringThe unit applied to
charge_interval_frequencyandorder_interval_frequency.Possible valuesdayweekmonthAll plans for aProductmust have the sameinterval_unit. - pricing_progressionarray of objectsUsed to configure a plan with dynamic pricing. For regular subscription plans, this is field is null. For dynamically priced plans, this field is an array of one item.
Show child attributesHide child attributes3
- The number of cycles after which this recurring discount should be applied. The checkout order is cycle 1. The first recurring order is cycle 2.
- The discount amount applied to the product
priceafter the specified number of cycles. - recurring_discount_typestringUsed in combination with discount amount to determine the discount applied on a product price after the specified number of cycles.
percentageapplies the discount amount as a percent off the price;fixed_amountapplies it as a flat amount in the store's currency.Possible valuespercentagefixed_amount
- titlestringThe title of the plan.
- An array of translated titles for the
Plan.
curl -X PUT 'https://api.rechargeapps.com/plans/16909886' \
-H 'X-Recharge-Version: v2' \
-H 'Content-Type: application/json' \
-H 'X-Recharge-Access-Token: your_api_token' \
-d '{
"discount_amount": "12.0",
"title": "Concert T-Shirt"
}'{
"plan": {
"id": 88237,
"channel_settings": {
"api": {
"display": true
},
"checkout_page": {
"display": true
},
"customer_portal": {
"display": true
},
"merchant_portal": {
"display": true
}
},
"created_at": "2021-07-27T19:07:34+00:00",
"deleted_at": null,
"discount_amount": "10",
"discount_type": "percentage",
"external_product_id": {
"ecommerce": "2103271587891"
},
"product_quantity": null,
"sort_order": 1,
"subscription_preferences": {
"charge_interval_frequency": 30,
"cutoff_day_of_month": null,
"cutoff_day_of_week": null,
"expire_after_specific_number_of_charges": 6,
"interval_unit": "day",
"order_day_of_month": 1,
"order_day_of_week": null,
"order_interval_frequency": 30
},
"title": "Concert TShirt",
"translations": [],
"type": "subscription",
"updated_at": "2021-07-27T19:07:34+00:00"
}
}curl -X DELETE 'https://api.rechargeapps.com/plans/321654' \
-H 'X-Recharge-Version: v2' \
-H 'X-Recharge-Access-Token: your_api_token'{}#List plans
GET/plans
Returns a list of all plans from
Store.Scope
read_plansQuery parameters
- limitstringThe number of results.
- The page to show.Page-based pagination has been deprecated but still available to use for pages up to a 100. If you need data past this point, use cursor pagination.
- external_product_idstringReturn the
Planslinked to theProductrecord in Recharge with the indicatedexternal_product_id - idsstringFilter plans by id. If passing multiple values, must be comma separated. Non-integer values will result in a 422 error
- updated_at_maxdatetimeReturn the plans updated before the given date.
- updated_at_mindatetimeReturn the plans updated after the given date.
- typestringReturn the plans that are of a specific type.Possible values
subscriptionprepaidprepaid_v2onetimemembership_subscription - The cursor of the page to return, taken from
next_cursororprevious_cursorin a previous response. Onlylimitcan be sent together withcursor. - The order in which the plans are returned. Defaults to
id-desc.Possible valuesid-ascid-descupdated_at-ascupdated_at-desc - Return the plans created after the given date.
- Return the plans created before the given date.
- Return the
Planslinked to any of the givenexternal_product_idvalues. If passing multiple values, must be comma separated. - Return the
Plansthat can be used with the given variant: plans without variant restrictions and plans whoseexternal_variant_idscontain it. Best combined withexternal_product_id. - Return the
Planswith the givenexternal_plan_id. - Return the
Planswith the givenexternal_plan_group_id.
curl 'https://api.rechargeapps.com/plans?limit=3' \
-H 'X-Recharge-Version: v2' \
-H 'X-Recharge-Access-Token: your_api_token'{
"plans": [
{
"id": 88237,
"channel_settings": {
"api": {
"display": true
},
"checkout_page": {
"display": true
},
"customer_portal": {
"display": true
},
"merchant_portal": {
"display": true
}
},
"created_at": "2021-07-27T19:07:34+00:00",
"deleted_at": null,
"discount_amount": null,
"discount_type": null,
"external_product_id": {
"ecommerce": "2103271587891"
},
"product_quantity": null,
"sort_order": 1,
"subscription_preferences": {
"charge_interval_frequency": 30,
"cutoff_day_of_month": null,
"cutoff_day_of_week": null,
"expire_after_specific_number_of_charges": null,
"interval_unit": "day",
"order_day_of_month": 1,
"order_day_of_week": null,
"order_interval_frequency": 30
},
"title": "Jarred Pickles",
"translations": [],
"type": "subscription",
"updated_at": "2021-07-27T19:07:34+00:00"
}
]
}#Bulk create plans
POST/products/{external_product_id}/plans-bulk
Bulk create new plans.
There is a limit of 20 plans per request.
There is a limit of 20 plans per request.
Scope
write_plansReturns
201 Created. The plans in the response do not include external_product_id. A request must contain between 1 and 31 plans (up to 100 for some stores).Body parameters
- An array of plans to be created.
Show child attributesHide child attributes1211 new
- An object containing the add-on configuration of the
Plan.nullwhen the plan is not an add-on plan. Add-on plans must besubscriptionplans charged and delivered every 1 month, and a product can have only one.Only for stores that have add-on plans enabled.Show child attributesHide child attributes24 new
- An object describing when an add-on purchased through this plan expires.
nullwhen it does not expire. The key is required whenaddon_settingsis sent.Only for stores that have add-on plans enabled.Show child attributesHide child attributes22 new
- How the expiration is expressed.Possible values
relativeabsoluteOnly for stores that have add-on plans enabled. - The expiration value. For
relative, an object withoffset(an integer of 1 or more) andunit(day,week,monthoryear). Forabsolute, a date string inYYYY-MM-DDformat.Only for stores that have add-on plans enabled.
- An array of the variant ids, as they appear in external platforms, of the parent products the add-on belongs to. At least one is required when
addon_settingsis sent.Only for stores that have add-on plans enabled.
- channel_settingsobjectAn object containing the availability of the plan through various supported channels.
Show child attributesHide child attributes4
- apiobjectAn object containing api channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- customer_portalobjectAn object containing customer portal channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- merchant_portalobjectAn object containing merchant portal channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- checkout_pageobjectAn object containing checkout channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- discount_amountstringThe discount amount applied to the product price when purchased through this plan.
- discount_typestringUsed in combination with discount amount to determine the discount applied on a product price when purchased through this plan.
percentageapplies the discount amount as a percent off the price;fixed_amountapplies it as a flat amount in the store's currency.Possible valuespercentagefixed_amount - An array of variant ids, as they appear in external platforms, that the plan applies to.
- Whether this plan applies only to the variants listed in
external_variant_ids. Defaults tofalse. - The quantity of the product that a subscriber receives when purchasing through this
Plan.nullwhen the plan does not set a quantity. - sort_orderintegerThe number indicating the order which the plan will be in a list of related plans.
- subscription_preferencesobjectAn object containing the various subscription preferences associated with this plan.
Show child attributesHide child attributes10
- Whether the specified cutoff day should be applied to the initial checkout order
- charge_interval_frequencyintegerFrequency at which the subscriber will be charged.
- cutoff_day_of_monthintegerDay of the month the plan should be chargedOnly valid for
interval_unit:month - cutoff_day_of_weekintegerDay of the month the plan should be chargedOnly valid for
interval_unit:week - A maximum number of charges on which the subscription should appear before automatic cancellation.
- order_day_of_monthintegerDay of the month an order should be generated when the customer is subscribed.
- order_day_of_weekintegerDay of the week an order should be generated when the customer is subscribed.
- order_interval_frequencyintegerFrequency at which the subscriber will receive shipments when subscribed to this plan.
- interval_unitstringThe unit applied to
charge_interval_frequencyandorder_interval_frequency.Possible valuesdayweekmonthAll plans for aProductmust have the sameinterval_unit. - pricing_progressionarray of objectsUsed to configure a plan with dynamic pricing. For regular subscription plans, this is field is null. For dynamically priced plans, this field is an array of one item.
Show child attributesHide child attributes3
- The number of cycles after which this recurring discount should be applied. The checkout order is cycle 1. The first recurring order is cycle 2.
- The discount amount applied to the product
priceafter the specified number of cycles. - recurring_discount_typestringUsed in combination with discount amount to determine the discount applied on a product price after the specified number of cycles.
percentageapplies the discount amount as a percent off the price;fixed_amountapplies it as a flat amount in the store's currency.Possible valuespercentagefixed_amount
- The title of the plan.All
Plansfor a product must have the sametitle. - An array of translated titles for the
Plan. - The type of the plan. Products with a prepaid plan cannot have plans of other types.Possible values
subscriptionprepaidprepaid_v2onetimemembership_subscription
Response attributes
- plansarray of objects
Show child attributesHide child attributes17
- idintegerUnique numeric identifier for the
Plan. - channel_settingsobjectAn object containing the availability of the plan through various supported channels.
Show child attributesHide child attributes4
- apiobjectAn object containing api channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- customer_portalobjectAn object containing customer portal channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- merchant_portalobjectAn object containing merchant portal channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- checkout_pageobjectAn object containing checkout channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- created_atdatetimeThe time the plan was created.
- deleted_atdatetimeIf deleted, the time the plan was deleted.
- discount_amountstringThe discount amount applied to the product
pricewhen purchased through thisPlan. - discount_typestringUsed in combination with discount amount to determine the discount applied on a product price when purchased through this
Plan.percentageapplies the discount amount as a percent off the price;fixed_amountapplies it as a flat amount in the store's currency.Possible valuespercentagefixed_amount - external_plan_group_idstringThe id of the selling plan group as it appears in external platforms.
- external_plan_idstringThe id of the selling plan as it appears in external platforms.
- external_plan_namestringThe name of the selling plan as it appears in external platforms.
- external_product_idobjectAn object containing the product id as it appears in external platforms.
Show child attributesHide child attributes1
- ecommercestringThe product id as it appears in the external e-commerce platform. The
external_product_idof theProductrecord in Recharge, linking aPlanto aProduct.
- external_variant_idsarrayAn array of variant ids as they appear in external platforms.
- has_variant_restrictionsbooleanWhether this plan applies to specific variants of the product
- sort_orderintegerThe number indicating the order which the plan will be in a list of related plans.
- subscription_preferencesobjectAn object containing the various subscription preferences associated with this plan.
Show child attributesHide child attributes10
- Whether the specified cutoff day should be applied to the initial checkout order
- charge_interval_frequencyintegerFrequency at which the subscriber will be charged.
- cutoff_day_of_monthintegerDay of the month the plan should be chargedOnly valid for
interval_unit:month - cutoff_day_of_weekintegerDay of the month the plan should be chargedOnly valid for
interval_unit:week - A maximum number of charges on which the subscription should appear before automatic cancellation.
- order_day_of_monthintegerDay of the month an order should be generated when the customer is subscribed.
- order_day_of_weekintegerDay of the week an order should be generated when the customer is subscribed.
- order_interval_frequencyintegerFrequency at which the subscriber will receive shipments when subscribed to this plan.
- interval_unitstringThe unit applied to
charge_interval_frequencyandorder_interval_frequency.Possible valuesdayweekmonthAll plans for aProductmust have the sameinterval_unit. - pricing_progressionarray of objectsUsed to configure a plan with dynamic pricing. For regular subscription plans, this is field is null. For dynamically priced plans, this field is an array of one item.
Show child attributesHide child attributes3
- The number of cycles after which this recurring discount should be applied. The checkout order is cycle 1. The first recurring order is cycle 2.
- The discount amount applied to the product
priceafter the specified number of cycles. - recurring_discount_typestringUsed in combination with discount amount to determine the discount applied on a product price after the specified number of cycles.
percentageapplies the discount amount as a percent off the price;fixed_amountapplies it as a flat amount in the store's currency.Possible valuespercentagefixed_amount
- titlestringThe title of the plan.All
Plansfor a product must have the sametitle. - typestringThe type of the plan.Possible values
subscriptionprepaidonetimeProducts with aprepaidplan cannot have plans of other types. - updated_atdatetimeThe time the plan was last updated.
curl -X POST 'https://api.rechargeapps.com/products/2103271587891/plans-bulk' \
-H 'X-Recharge-Version: v2' \
-H 'Content-Type: application/json' \
-H 'X-Recharge-Access-Token: your_api_token' \
-d '{
"plans": [
{
"discount_amount": "10",
"discount_type": "percentage",
"sort_order": 1,
"title": "Concert T-Shirt",
"type": "subscription",
"subscription_preferences": {
"charge_interval_frequency": 30,
"expire_after_specific_number_of_charges": 6,
"interval_unit": "day",
"order_day_of_month": 1,
"order_interval_frequency": 30
}
},
{
"discount_amount": "10",
"discount_type": "percentage",
"sort_order": 2,
"title": "Concert T-Shirt",
"type": "subscription",
"subscription_preferences": {
"charge_interval_frequency": 60,
"expire_after_specific_number_of_charges": 6,
"interval_unit": "day",
"order_day_of_month": 1,
"order_interval_frequency": 60
}
}
]
}'{
"plans": [
{
"id": 88237,
"channel_settings": {
"api": {
"display": true
},
"checkout_page": {
"display": true
},
"customer_portal": {
"display": true
},
"merchant_portal": {
"display": true
}
},
"created_at": "2021-07-27T19:07:34+00:00",
"discount_amount": "10",
"discount_type": "percentage",
"external_product_id": {
"ecommerce": "2103271587891"
},
"product_quantity": null,
"sort_order": 1,
"title": "Concert T-Shirt",
"translations": [],
"type": "subscription",
"subscription_preferences": {
"charge_interval_frequency": 30,
"cutoff_day_of_month": null,
"cutoff_day_of_week": null,
"expire_after_specific_number_of_charges": 6,
"interval_unit": "day",
"order_day_of_month": 1,
"order_interval_frequency": 30
},
"updated_at": "2021-07-27T19:07:34+00:00"
},
{
"id": 88238,
"channel_settings": {
"api": {
"display": true
},
"checkout_page": {
"display": true
},
"customer_portal": {
"display": true
},
"merchant_portal": {
"display": true
}
},
"created_at": "2021-07-27T19:07:34+00:00",
"discount_amount": "10",
"discount_type": "percentage",
"external_product_id": {
"ecommerce": "2103271587891"
},
"product_quantity": null,
"sort_order": 2,
"title": "Concert T-Shirt",
"translations": [],
"type": "subscription",
"subscription_preferences": {
"charge_interval_frequency": 60,
"expire_after_specific_number_of_charges": 6,
"interval_unit": "day",
"order_day_of_month": 1,
"order_interval_frequency": 60
},
"updated_at": "2021-07-27T19:07:34+00:00"
}
]
}#Bulk update plans
PUT/products/{external_product_id}/plans-bulk
Bulk update existing plans.
There is a limit of 20 plans per request.
There is a limit of 20 plans per request.
Scope
write_plansThe plans in the response do not include
external_product_id. type cannot be changed. A request must contain between 1 and 31 plans (up to 100 for some stores).Body parameters
- An array of plans to be updated. Must provide ID for each plan.
Show child attributesHide child attributes1215 new
- The ID of the plan.
- An object containing the add-on configuration of the
Plan.nullwhen the plan is not an add-on plan. Add-on plans must besubscriptionplans charged and delivered every 1 month, and a product can have only one.Only for stores that have add-on plans enabled.Show child attributesHide child attributes24 new
- An object describing when an add-on purchased through this plan expires.
nullwhen it does not expire. The key is required whenaddon_settingsis sent.Only for stores that have add-on plans enabled.Show child attributesHide child attributes22 new
- How the expiration is expressed.Possible values
relativeabsoluteOnly for stores that have add-on plans enabled. - The expiration value. For
relative, an object withoffset(an integer of 1 or more) andunit(day,week,monthoryear). Forabsolute, a date string inYYYY-MM-DDformat.Only for stores that have add-on plans enabled.
- An array of the variant ids, as they appear in external platforms, of the parent products the add-on belongs to. At least one is required when
addon_settingsis sent.Only for stores that have add-on plans enabled.
- channel_settingsobjectAn object containing the availability of the plan through various supported channels.
Show child attributesHide child attributes4
- apiobjectAn object containing api channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- customer_portalobjectAn object containing customer portal channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- merchant_portalobjectAn object containing merchant portal channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- checkout_pageobjectAn object containing checkout channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- discount_amountstringThe discount amount applied to the product price when purchased through this plan.
- discount_typestringUsed in combination with discount amount to determine the discount applied on a product price when purchased through this plan.
percentageapplies the discount amount as a percent off the price;fixed_amountapplies it as a flat amount in the store's currency.Possible valuespercentagefixed_amount - An array of variant ids, as they appear in external platforms, that the plan applies to.
- Whether this plan applies only to the variants listed in
external_variant_ids. Defaults tofalse. - The quantity of the product that a subscriber receives when purchasing through this
Plan.nullwhen the plan does not set a quantity. - sort_orderintegerThe number indicating the order which the plan will be in a list of related plans.
- subscription_preferencesobjectAn object containing the various subscription preferences associated with this plan.
Show child attributesHide child attributes104 new
- Whether the specified cutoff day should be applied to the initial checkout order
- charge_interval_frequencyintegerFrequency at which the subscriber will be charged.
- cutoff_day_of_monthintegerDay of the month the plan should be chargedOnly valid for
interval_unit:month - cutoff_day_of_weekintegerDay of the month the plan should be chargedOnly valid for
interval_unit:week - A maximum number of charges on which the subscription should appear before automatic cancellation.
- order_day_of_monthintegerDay of the month an order should be generated when the customer is subscribed.
- order_day_of_weekintegerDay of the week an order should be generated when the customer is subscribed.
- order_interval_frequencyintegerFrequency at which the subscriber will receive shipments when subscribed to this plan.
- interval_unitstringThe unit applied to
charge_interval_frequencyandorder_interval_frequency.Possible valuesdayweekmonthAll plans for aProductmust have the sameinterval_unit. - Used to configure a plan with dynamic pricing. Only the first item of the array is used.
Show child attributesHide child attributes33 new
- The number of cycles after which this recurring discount should be applied.
- The discount amount applied to the product
priceafter the specified number of cycles. - Used in combination with the recurring discount amount to determine the discount applied after the specified number of cycles.Possible values
percentagefixed_amount
- titlestringThe title of the plan.All
Plansfor a product must have the sametitle. - An array of translated titles for the
Plan.
Response attributes
- plansarray of objects
Show child attributesHide child attributes17
- idintegerUnique numeric identifier for the
Plan. - channel_settingsobjectAn object containing the availability of the plan through various supported channels.
Show child attributesHide child attributes4
- apiobjectAn object containing api channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- customer_portalobjectAn object containing customer portal channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- merchant_portalobjectAn object containing merchant portal channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- checkout_pageobjectAn object containing checkout channel settings.
Show child attributesHide child attributes1
- displaybooleanA boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
- created_atdatetimeThe time the plan was created.
- deleted_atdatetimeIf deleted, the time the plan was deleted.
- discount_amountstringThe discount amount applied to the product
pricewhen purchased through thisPlan. - discount_typestringUsed in combination with discount amount to determine the discount applied on a product price when purchased through this
Plan.percentageapplies the discount amount as a percent off the price;fixed_amountapplies it as a flat amount in the store's currency.Possible valuespercentagefixed_amount - external_plan_group_idstringThe id of the selling plan group as it appears in external platforms.
- external_plan_idstringThe id of the selling plan as it appears in external platforms.
- external_plan_namestringThe name of the selling plan as it appears in external platforms.
- external_product_idobjectAn object containing the product id as it appears in external platforms.
Show child attributesHide child attributes1
- ecommercestringThe product id as it appears in the external e-commerce platform. The
external_product_idof theProductrecord in Recharge, linking aPlanto aProduct.
- external_variant_idsarrayAn array of variant ids as they appear in external platforms.
- has_variant_restrictionsbooleanWhether this plan applies to specific variants of the product
- sort_orderintegerThe number indicating the order which the plan will be in a list of related plans.
- subscription_preferencesobjectAn object containing the various subscription preferences associated with this plan.
Show child attributesHide child attributes10
- Whether the specified cutoff day should be applied to the initial checkout order
- charge_interval_frequencyintegerFrequency at which the subscriber will be charged.
- cutoff_day_of_monthintegerDay of the month the plan should be chargedOnly valid for
interval_unit:month - cutoff_day_of_weekintegerDay of the month the plan should be chargedOnly valid for
interval_unit:week - A maximum number of charges on which the subscription should appear before automatic cancellation.
- order_day_of_monthintegerDay of the month an order should be generated when the customer is subscribed.
- order_day_of_weekintegerDay of the week an order should be generated when the customer is subscribed.
- order_interval_frequencyintegerFrequency at which the subscriber will receive shipments when subscribed to this plan.
- interval_unitstringThe unit applied to
charge_interval_frequencyandorder_interval_frequency.Possible valuesdayweekmonthAll plans for aProductmust have the sameinterval_unit. - pricing_progressionarray of objectsUsed to configure a plan with dynamic pricing. For regular subscription plans, this is field is null. For dynamically priced plans, this field is an array of one item.
Show child attributesHide child attributes3
- The number of cycles after which this recurring discount should be applied. The checkout order is cycle 1. The first recurring order is cycle 2.
- The discount amount applied to the product
priceafter the specified number of cycles. - recurring_discount_typestringUsed in combination with discount amount to determine the discount applied on a product price after the specified number of cycles.
percentageapplies the discount amount as a percent off the price;fixed_amountapplies it as a flat amount in the store's currency.Possible valuespercentagefixed_amount
- titlestringThe title of the plan.All
Plansfor a product must have the sametitle. - typestringThe type of the plan.Possible values
subscriptionprepaidonetimeProducts with aprepaidplan cannot have plans of other types. - updated_atdatetimeThe time the plan was last updated.
curl -X PUT 'https://api.rechargeapps.com/products/2103271587891/plans-bulk' \
-H 'X-Recharge-Version: v2' \
-H 'Content-Type: application/json' \
-H 'X-Recharge-Access-Token: your_api_token' \
-d '{
"plans": [
{
"id": 88237,
"title": "Updated T-Shirt"
},
{
"id": 88238,
"title": "Updated T-Shirt"
}
]
}'{
"plans": [
{
"id": 88237,
"channel_settings": {
"api": {
"display": true
},
"checkout_page": {
"display": true
},
"customer_portal": {
"display": true
},
"merchant_portal": {
"display": true
}
},
"created_at": "2021-07-27T19:07:34+00:00",
"discount_amount": "10",
"discount_type": "percentage",
"external_product_id": {
"ecommerce": "2103271587891"
},
"product_quantity": null,
"sort_order": 1,
"title": "Concert T-Shirt",
"translations": [],
"type": "subscription",
"subscription_preferences": {
"charge_interval_frequency": 30,
"cutoff_day_of_month": null,
"cutoff_day_of_week": null,
"expire_after_specific_number_of_charges": 6,
"interval_unit": "day",
"order_day_of_month": 1,
"order_interval_frequency": 30
},
"updated_at": "2021-07-27T19:07:34+00:00"
},
{
"id": 88238,
"channel_settings": {
"api": {
"display": true
},
"checkout_page": {
"display": true
},
"customer_portal": {
"display": true
},
"merchant_portal": {
"display": true
}
},
"created_at": "2021-07-27T19:07:34+00:00",
"discount_amount": "10",
"discount_type": "percentage",
"external_product_id": {
"ecommerce": "2103271587891"
},
"product_quantity": null,
"sort_order": 2,
"title": "Concert T-Shirt",
"translations": [],
"type": "subscription",
"subscription_preferences": {
"charge_interval_frequency": 60,
"expire_after_specific_number_of_charges": 6,
"interval_unit": "day",
"order_day_of_month": 1,
"order_interval_frequency": 60
},
"updated_at": "2021-07-27T19:07:34+00:00"
}
]
}#Bulk delete plans
DELETE/products/{external_product_id}/plans-bulk
Bulk delete existing plans.
There is a limit of 20 plans per request.
There is a limit of 20 plans per request.
Scope
write_plansBody parameters
- An array of plans to be deleted. Must provide ID for each plan.
Show child attributesHide child attributes1
- The ID of the plan.
curl -X DELETE 'https://api.rechargeapps.com/products/2103271587891/plans-bulk' \
-H 'X-Recharge-Version: v2' \
-H 'Content-Type: application/json' \
-H 'X-Recharge-Access-Token: your_api_token' \
-d '{
"plans": [
{
"id": 88237
},
{
"id": 88238
}
]
}'{}#Retrieve a planNew
GET/plans/{id}
Retrieves a single
Plan by its id. Deleted plans return a 404.Scope
read_planscurl 'https://api.rechargeapps.com/plans/129593' \
-H 'X-Recharge-Version: v2' \
-H 'X-Recharge-Access-Token: your_api_token'{
"plan": {
"id": 1298456,
"channel_settings": {
"api": {
"display": true
},
"checkout_page": {
"display": true
},
"customer_portal": {
"display": true
},
"merchant_portal": {
"display": true
}
},
"created_at": "2026-03-02T15:04:31+00:00",
"deleted_at": null,
"discount_amount": "10.00",
"discount_type": "percentage",
"external_plan_group_id": null,
"external_plan_id": null,
"external_plan_name": null,
"external_product_id": {
"ecommerce": "7654321098"
},
"external_variant_ids": [],
"has_variant_restrictions": false,
"product_quantity": null,
"sort_order": 1,
"subscription_preferences": {
"apply_cutoff_date_to_checkout": false,
"charge_interval_frequency": 1,
"cutoff_day_of_month": null,
"cutoff_day_of_week": null,
"expire_after_specific_number_of_charges": null,
"interval_unit": "month",
"order_day_of_month": null,
"order_day_of_week": null,
"order_interval_frequency": 1,
"pricing_progression": []
},
"title": "Monthly coffee",
"translations": [
{
"language": "fr",
"title": "Cafe mensuel"
}
],
"type": "subscription",
"updated_at": "2026-03-02T15:04:31+00:00"
}
}#List plan charge frequenciesNew
GET/plans/charge_frequencies
Returns the distinct charge frequencies used by the store's active
subscription plans. Each item has the charge_interval_frequency, the interval_unit and a normalized_frequency_key that joins the two, for example 30_day.Scope
read_planscurl 'https://api.rechargeapps.com/plans/charge_frequencies' \
-H 'X-Recharge-Version: v2' \
-H 'X-Recharge-Access-Token: your_api_token'{
"data": [
{
"charge_interval_frequency": 30,
"interval_unit": "day",
"normalized_frequency_key": "30_day"
},
{
"charge_interval_frequency": 1,
"interval_unit": "month",
"normalized_frequency_key": "1_month"
}
]
}