API
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.

How Plans relate to other resources

#The plan object

The 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

  • idinteger
    Unique numeric identifier for the Plan.
  • addon_settingsobject · nullableNew
    An object containing the add-on configuration of the Plan. null when the plan is not an add-on plan. Add-on plans must be subscription plans 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
    • expirationobject · nullableNew
      An object describing when an add-on purchased through this plan expires. null when it does not expire.
      Only for stores that have add-on plans enabled.
      Show child attributesHide child attributes22 new
      • typestringNew
        How the expiration is expressed.
        Possible values
        relativeabsolute
        Only for stores that have add-on plans enabled.
      • valueobjectNew
        The expiration value. For relative, an object with offset (an integer of 1 or more) and unit (day, week, month or year). For absolute, a date string in YYYY-MM-DD format.
        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.
  • An object containing the availability of the plan through various supported channels.
    Show child attributesHide child attributes4
    • apiobject
      An object containing api channel settings.
      Show child attributesHide child attributes1
      • displayboolean
        A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
        Default true
    • An object containing customer portal channel settings.
      Show child attributesHide child attributes1
      • displayboolean
        A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
        Default true
    • An object containing merchant portal channel settings.
      Show child attributesHide child attributes1
      • displayboolean
        A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
        Default true
    • An object containing checkout channel settings.
      Show child attributesHide child attributes1
      • displayboolean
        A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
        Default true
  • product_quantityinteger · nullableNew
    The quantity of the product that a subscriber receives when purchasing through this Plan. null when the plan does not set a quantity.
  • translationsarray of objectsNew
    An array of translated titles for the Plan.
    Show child attributesHide child attributes22 new
    • languagestringNew
      The language code of the translation, for example fr.
    • titlestringNew
      The title of the Plan in that language.
  • created_atdatetime
    The time the plan was created.
  • deleted_atdatetime
    If deleted, the time the plan was deleted.
  • The discount amount applied to the product price when purchased through this Plan.
  • Used in combination with discount amount to determine the discount applied on a product price when purchased through this Plan. percentage applies the discount amount as a percent off the price; fixed_amount applies it as a flat amount in the store's currency.
    Possible values
    percentagefixed_amount
  • The id of the selling plan group as it appears in external platforms.
  • The id of the selling plan as it appears in external platforms.
  • The name of the selling plan as it appears in external platforms.
  • An object containing the product id as it appears in external platforms.
    Show child attributesHide child attributes1
    • ecommercestring
      The product id as it appears in the external e-commerce platform. The external_product_id of the Product record in Recharge, linking a Plan to a Product.
  • An array of variant ids as they appear in external platforms.
  • Whether this plan applies to specific variants of the product
    Default false
  • sort_orderinteger
    The 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.
    • Day of the month the plan should be charged
      Only valid for interval_unit:month
    • Day of the month the plan should be charged
      Only valid for interval_unit:week
    • A maximum number of charges on which the subscription should appear before automatic cancellation.
    • Day of the month an order should be generated when the customer is subscribed.
    • Day 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_frequency and order_interval_frequency.
      Possible values
      dayweekmonth
      All plans for a Product must have the same interval_unit.
    • pricing_progressionarray of objects
      For 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 price after the specified number of cycles.
      • Used in combination with discount amount to determine the discount applied on a product price after the specified number of cycles. percentage applies the discount amount as a percent off the price; fixed_amount applies it as a flat amount in the store's currency.
        Possible values
        percentagefixed_amount
  • titlestring
    The title of the plan.
    All Plans for a product must have the same title.
  • typestring
    The type of the plan.
    Possible values
    subscriptionprepaidprepaid_v2onetimemembership_subscription
    Products with a prepaid plan cannot have plans of other types.
  • updated_atdatetime
    The time the plan was last updated.
The plan object
{
  "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.
Scopewrite_plans
Multiple 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

  • addon_settingsobject · nullableNew
    An object containing the add-on configuration of the Plan. null when the plan is not an add-on plan. Add-on plans must be subscription plans 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
    • expirationobject · nullableNew
      An object describing when an add-on purchased through this plan expires. null when it does not expire. The key is required when addon_settings is sent.
      Only for stores that have add-on plans enabled.
      Show child attributesHide child attributes22 new
      • typestringNew
        How the expiration is expressed.
        Possible values
        relativeabsolute
        Only for stores that have add-on plans enabled.
      • valueobjectNew
        The expiration value. For relative, an object with offset (an integer of 1 or more) and unit (day, week, month or year). For absolute, a date string in YYYY-MM-DD format.
        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_settings is sent.
      Only for stores that have add-on plans enabled.
  • An object containing the availability of the plan through various supported channels.
    Show child attributesHide child attributes4
    • apiobject
      An object containing api channel settings.
      Show child attributesHide child attributes1
      • displayboolean
        A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
        Default true
    • An object containing customer portal channel settings.
      Show child attributesHide child attributes1
      • displayboolean
        A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
        Default true
    • An object containing merchant portal channel settings.
      Show child attributesHide child attributes1
      • displayboolean
        A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
        Default true
    • An object containing checkout channel settings.
      Show child attributesHide child attributes1
      • displayboolean
        A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
        Default true
  • The discount amount applied to the product price when purchased through this plan.
  • Used in combination with discount amount to determine the discount applied on a product price when purchased through this plan. percentage applies the discount amount as a percent off the price; fixed_amount applies it as a flat amount in the store's currency. (accepts: percentage, fixed_amount)
    Possible values
    percentagefixed_amount
  • external_product_idobjectRequired
    An object containing the product id as it appears in external platforms.
    Show child attributesHide child attributes1
    • ecommercestringRequired
      The product id as it appears in the external e-commerce platform. The external_product_id of the Product record in Recharge, linking a Plan to a Product.
  • 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 to false.
  • product_quantityinteger · nullableNew
    The quantity of the product that a subscriber receives when purchasing through this Plan. null when the plan does not set a quantity.
  • sort_orderinteger
    The 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.
    • Day of the month the plan should be charged
      Only valid for interval_unit:month
    • Day of the month the plan should be charged
      Only valid for interval_unit:week
    • A maximum number of charges on which the subscription should appear before automatic cancellation.
    • Day of the month an order should be generated when the customer is subscribed.
    • Day 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.
    • interval_unitstringRequired
      The unit applied to charge_interval_frequency and order_interval_frequency.
      Possible values
      dayweekmonth
      All plans for a Product must have the same interval_unit.
    • pricing_progressionarray of objects
      Used 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 price after the specified number of cycles.
      • Used in combination with discount amount to determine the discount applied on a product price after the specified number of cycles. percentage applies the discount amount as a percent off the price; fixed_amount applies it as a flat amount in the store's currency.
        Possible values
        percentagefixed_amount
  • titlestringRequired
    The title of the plan.
    All Plans for a product must have the same title.
  • translationsarray of objectsNew
    An array of translated titles for the Plan.
    Show child attributesHide child attributes22 new
    • languagestringNew
      The language code of the translation, for example fr.
    • titlestringNew
      The title of the Plan in that language.
  • typestringRequired
    The type of the plan. Products with a prepaid plan cannot have plans of other types.
    Possible values
    subscriptionprepaidprepaid_v2onetimemembership_subscription
POST/plans
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",
}'
Response
{
  "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.
Scopewrite_plans
type 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

  • addon_settingsobject · nullableNew
    An object containing the add-on configuration of the Plan. null when the plan is not an add-on plan. Add-on plans must be subscription plans 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
    • expirationobject · nullableNew
      An object describing when an add-on purchased through this plan expires. null when it does not expire. The key is required when addon_settings is sent.
      Only for stores that have add-on plans enabled.
      Show child attributesHide child attributes22 new
      • typestringNew
        How the expiration is expressed.
        Possible values
        relativeabsolute
        Only for stores that have add-on plans enabled.
      • valueobjectNew
        The expiration value. For relative, an object with offset (an integer of 1 or more) and unit (day, week, month or year). For absolute, a date string in YYYY-MM-DD format.
        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_settings is sent.
      Only for stores that have add-on plans enabled.
  • An object containing the availability of the plan through various supported channels.
    Show child attributesHide child attributes4
    • apiobject
      An object containing api channel settings.
      Show child attributesHide child attributes1
      • displayboolean
        A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
        Default true
    • An object containing customer portal channel settings.
      Show child attributesHide child attributes1
      • displayboolean
        A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
        Default true
    • An object containing merchant portal channel settings.
      Show child attributesHide child attributes1
      • displayboolean
        A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
        Default true
    • An object containing checkout channel settings.
      Show child attributesHide child attributes1
      • displayboolean
        A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
        Default true
  • The discount amount applied to the product price when purchased through this plan.
  • Used in combination with discount amount to determine the discount applied on a product price when purchased through this plan. percentage applies the discount amount as a percent off the price; fixed_amount applies it as a flat amount in the store's currency.
    Possible values
    percentagefixed_amount
  • An object containing the product id as it appears in external platforms.
    Show child attributesHide child attributes1
    • ecommercestring
      The product id as it appears in the external e-commerce platform. The external_product_id of the Product record in Recharge, linking a Plan to a Product.
  • 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 to false.
  • product_quantityinteger · nullableNew
    The quantity of the product that a subscriber receives when purchasing through this Plan. null when the plan does not set a quantity.
  • sort_orderinteger
    The 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.
    • Day of the month the plan should be charged
      Only valid for interval_unit:month
    • Day of the month the plan should be charged
      Only valid for interval_unit:week
    • A maximum number of charges on which the subscription should appear before automatic cancellation.
    • Day of the month an order should be generated when the customer is subscribed.
    • Day 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_frequency and order_interval_frequency.
      Possible values
      dayweekmonth
      All plans for a Product must have the same interval_unit.
    • pricing_progressionarray of objects
      Used 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 price after the specified number of cycles.
      • Used in combination with discount amount to determine the discount applied on a product price after the specified number of cycles. percentage applies the discount amount as a percent off the price; fixed_amount applies it as a flat amount in the store's currency.
        Possible values
        percentagefixed_amount
  • titlestring
    The title of the plan.
  • translationsarray of objectsNew
    An array of translated titles for the Plan.
    Show child attributesHide child attributes22 new
    • languagestringNew
      The language code of the translation, for example fr.
    • titlestringNew
      The title of the Plan in that language.
PUT/plans/{id}
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"
}'
Response
{
  "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"
  }
}

#Delete a plan

DELETE/plans/{id}
Delete a plan.
Scopewrite_plans
DELETE/plans/{id}
curl -X DELETE 'https://api.rechargeapps.com/plans/321654' \
  -H 'X-Recharge-Version: v2' \
  -H 'X-Recharge-Access-Token: your_api_token'
Response
{}

#List plans

GET/plans
Returns a list of all plans from Store.
Scoperead_plans

Query parameters

  • limitstring
    The number of results.
    Default 50Maximum 250
  • pagestringDeprecated
    The page to show.
    Default 1
    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.
  • Return the Plans linked to the Product record in Recharge with the indicated external_product_id
  • idsstring
    Filter plans by id. If passing multiple values, must be comma separated. Non-integer values will result in a 422 error
  • Return the plans updated before the given date.
  • Return the plans updated after the given date.
  • typestring
    Return the plans that are of a specific type.
    Possible values
    subscriptionprepaidprepaid_v2onetimemembership_subscription
  • cursorstringNew
    The cursor of the page to return, taken from next_cursor or previous_cursor in a previous response. Only limit can be sent together with cursor.
  • sort_bystringNew
    The order in which the plans are returned. Defaults to id-desc.
    Possible values
    id-ascid-descupdated_at-ascupdated_at-desc
  • created_at_mindatetimeNew
    Return the plans created after the given date.
  • created_at_maxdatetimeNew
    Return the plans created before the given date.
  • Return the Plans linked to any of the given external_product_id values. If passing multiple values, must be comma separated.
  • Return the Plans that can be used with the given variant: plans without variant restrictions and plans whose external_variant_ids contain it. Best combined with external_product_id.
  • Return the Plans with the given external_plan_id.
  • Return the Plans with the given external_plan_group_id.
GET/plans
curl 'https://api.rechargeapps.com/plans?limit=3' \
  -H 'X-Recharge-Version: v2' \
  -H 'X-Recharge-Access-Token: your_api_token'
Response
{
  "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.
Scopewrite_plans
Returns 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

  • plansarray of objectsRequired
    An array of plans to be created.
    Show child attributesHide child attributes1211 new
    • addon_settingsobject · nullableNew
      An object containing the add-on configuration of the Plan. null when the plan is not an add-on plan. Add-on plans must be subscription plans 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
      • expirationobject · nullableNew
        An object describing when an add-on purchased through this plan expires. null when it does not expire. The key is required when addon_settings is sent.
        Only for stores that have add-on plans enabled.
        Show child attributesHide child attributes22 new
        • typestringNew
          How the expiration is expressed.
          Possible values
          relativeabsolute
          Only for stores that have add-on plans enabled.
        • valueobjectNew
          The expiration value. For relative, an object with offset (an integer of 1 or more) and unit (day, week, month or year). For absolute, a date string in YYYY-MM-DD format.
          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_settings is sent.
        Only for stores that have add-on plans enabled.
    • An object containing the availability of the plan through various supported channels.
      Show child attributesHide child attributes4
      • apiobject
        An object containing api channel settings.
        Show child attributesHide child attributes1
        • displayboolean
          A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
          Default true
      • An object containing customer portal channel settings.
        Show child attributesHide child attributes1
        • displayboolean
          A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
          Default true
      • An object containing merchant portal channel settings.
        Show child attributesHide child attributes1
        • displayboolean
          A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
          Default true
      • An object containing checkout channel settings.
        Show child attributesHide child attributes1
        • displayboolean
          A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
          Default true
    • The discount amount applied to the product price when purchased through this plan.
    • Used in combination with discount amount to determine the discount applied on a product price when purchased through this plan. percentage applies the discount amount as a percent off the price; fixed_amount applies it as a flat amount in the store's currency.
      Possible values
      percentagefixed_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 to false.
    • product_quantityinteger · nullableNew
      The quantity of the product that a subscriber receives when purchasing through this Plan. null when the plan does not set a quantity.
    • sort_orderinteger
      The 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.
      • Day of the month the plan should be charged
        Only valid for interval_unit:month
      • Day of the month the plan should be charged
        Only valid for interval_unit:week
      • A maximum number of charges on which the subscription should appear before automatic cancellation.
      • Day of the month an order should be generated when the customer is subscribed.
      • Day 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_frequency and order_interval_frequency.
        Possible values
        dayweekmonth
        All plans for a Product must have the same interval_unit.
      • pricing_progressionarray of objects
        Used 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 price after the specified number of cycles.
        • Used in combination with discount amount to determine the discount applied on a product price after the specified number of cycles. percentage applies the discount amount as a percent off the price; fixed_amount applies it as a flat amount in the store's currency.
          Possible values
          percentagefixed_amount
    • titlestringRequired
      The title of the plan.
      All Plans for a product must have the same title.
    • translationsarray of objectsNew
      An array of translated titles for the Plan.
      Show child attributesHide child attributes22 new
      • languagestringNew
        The language code of the translation, for example fr.
      • titlestringNew
        The title of the Plan in that language.
    • typestringRequired
      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
    • idinteger
      Unique numeric identifier for the Plan.
    • An object containing the availability of the plan through various supported channels.
      Show child attributesHide child attributes4
      • apiobject
        An object containing api channel settings.
        Show child attributesHide child attributes1
        • displayboolean
          A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
          Default true
      • An object containing customer portal channel settings.
        Show child attributesHide child attributes1
        • displayboolean
          A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
          Default true
      • An object containing merchant portal channel settings.
        Show child attributesHide child attributes1
        • displayboolean
          A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
          Default true
      • An object containing checkout channel settings.
        Show child attributesHide child attributes1
        • displayboolean
          A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
          Default true
    • created_atdatetime
      The time the plan was created.
    • deleted_atdatetime
      If deleted, the time the plan was deleted.
    • The discount amount applied to the product price when purchased through this Plan.
    • Used in combination with discount amount to determine the discount applied on a product price when purchased through this Plan. percentage applies the discount amount as a percent off the price; fixed_amount applies it as a flat amount in the store's currency.
      Possible values
      percentagefixed_amount
    • The id of the selling plan group as it appears in external platforms.
    • The id of the selling plan as it appears in external platforms.
    • The name of the selling plan as it appears in external platforms.
    • An object containing the product id as it appears in external platforms.
      Show child attributesHide child attributes1
      • ecommercestring
        The product id as it appears in the external e-commerce platform. The external_product_id of the Product record in Recharge, linking a Plan to a Product.
    • An array of variant ids as they appear in external platforms.
    • Whether this plan applies to specific variants of the product
      Default false
    • sort_orderinteger
      The 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.
      • Day of the month the plan should be charged
        Only valid for interval_unit:month
      • Day of the month the plan should be charged
        Only valid for interval_unit:week
      • A maximum number of charges on which the subscription should appear before automatic cancellation.
      • Day of the month an order should be generated when the customer is subscribed.
      • Day 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_frequency and order_interval_frequency.
        Possible values
        dayweekmonth
        All plans for a Product must have the same interval_unit.
      • pricing_progressionarray of objects
        Used 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 price after the specified number of cycles.
        • Used in combination with discount amount to determine the discount applied on a product price after the specified number of cycles. percentage applies the discount amount as a percent off the price; fixed_amount applies it as a flat amount in the store's currency.
          Possible values
          percentagefixed_amount
    • titlestring
      The title of the plan.
      All Plans for a product must have the same title.
    • typestring
      The type of the plan.
      Possible values
      subscriptionprepaidonetime
      Products with a prepaid plan cannot have plans of other types.
    • updated_atdatetime
      The time the plan was last updated.
POST/products/{external_product_id}/plans-bulk
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
      }
    }
  ]
}'
Response
{
  "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.
Scopewrite_plans
The 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

  • plansarray of objectsRequired
    An array of plans to be updated. Must provide ID for each plan.
    Show child attributesHide child attributes1215 new
    • idintegerRequired
      The ID of the plan.
    • addon_settingsobject · nullableNew
      An object containing the add-on configuration of the Plan. null when the plan is not an add-on plan. Add-on plans must be subscription plans 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
      • expirationobject · nullableNew
        An object describing when an add-on purchased through this plan expires. null when it does not expire. The key is required when addon_settings is sent.
        Only for stores that have add-on plans enabled.
        Show child attributesHide child attributes22 new
        • typestringNew
          How the expiration is expressed.
          Possible values
          relativeabsolute
          Only for stores that have add-on plans enabled.
        • valueobjectNew
          The expiration value. For relative, an object with offset (an integer of 1 or more) and unit (day, week, month or year). For absolute, a date string in YYYY-MM-DD format.
          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_settings is sent.
        Only for stores that have add-on plans enabled.
    • An object containing the availability of the plan through various supported channels.
      Show child attributesHide child attributes4
      • apiobject
        An object containing api channel settings.
        Show child attributesHide child attributes1
        • displayboolean
          A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
          Default true
      • An object containing customer portal channel settings.
        Show child attributesHide child attributes1
        • displayboolean
          A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
          Default true
      • An object containing merchant portal channel settings.
        Show child attributesHide child attributes1
        • displayboolean
          A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
          Default true
      • An object containing checkout channel settings.
        Show child attributesHide child attributes1
        • displayboolean
          A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
          Default true
    • The discount amount applied to the product price when purchased through this plan.
    • Used in combination with discount amount to determine the discount applied on a product price when purchased through this plan. percentage applies the discount amount as a percent off the price; fixed_amount applies it as a flat amount in the store's currency.
      Possible values
      percentagefixed_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 to false.
    • product_quantityinteger · nullableNew
      The quantity of the product that a subscriber receives when purchasing through this Plan. null when the plan does not set a quantity.
    • sort_orderinteger
      The 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 attributes104 new
      • Whether the specified cutoff day should be applied to the initial checkout order
      • Frequency at which the subscriber will be charged.
      • Day of the month the plan should be charged
        Only valid for interval_unit:month
      • Day of the month the plan should be charged
        Only valid for interval_unit:week
      • A maximum number of charges on which the subscription should appear before automatic cancellation.
      • Day of the month an order should be generated when the customer is subscribed.
      • Day 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_frequency and order_interval_frequency.
        Possible values
        dayweekmonth
        All plans for a Product must have the same interval_unit.
      • pricing_progressionarray of objectsNew
        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 price after 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
    • titlestring
      The title of the plan.
      All Plans for a product must have the same title.
    • translationsarray of objectsNew
      An array of translated titles for the Plan.
      Show child attributesHide child attributes22 new
      • languagestringNew
        The language code of the translation, for example fr.
      • titlestringNew
        The title of the Plan in that language.

Response attributes

  • plansarray of objects
    Show child attributesHide child attributes17
    • idinteger
      Unique numeric identifier for the Plan.
    • An object containing the availability of the plan through various supported channels.
      Show child attributesHide child attributes4
      • apiobject
        An object containing api channel settings.
        Show child attributesHide child attributes1
        • displayboolean
          A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
          Default true
      • An object containing customer portal channel settings.
        Show child attributesHide child attributes1
        • displayboolean
          A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
          Default true
      • An object containing merchant portal channel settings.
        Show child attributesHide child attributes1
        • displayboolean
          A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
          Default true
      • An object containing checkout channel settings.
        Show child attributesHide child attributes1
        • displayboolean
          A boolean to indicate if the plan may be used in the associated channel (defaults to true for all channels).
          Default true
    • created_atdatetime
      The time the plan was created.
    • deleted_atdatetime
      If deleted, the time the plan was deleted.
    • The discount amount applied to the product price when purchased through this Plan.
    • Used in combination with discount amount to determine the discount applied on a product price when purchased through this Plan. percentage applies the discount amount as a percent off the price; fixed_amount applies it as a flat amount in the store's currency.
      Possible values
      percentagefixed_amount
    • The id of the selling plan group as it appears in external platforms.
    • The id of the selling plan as it appears in external platforms.
    • The name of the selling plan as it appears in external platforms.
    • An object containing the product id as it appears in external platforms.
      Show child attributesHide child attributes1
      • ecommercestring
        The product id as it appears in the external e-commerce platform. The external_product_id of the Product record in Recharge, linking a Plan to a Product.
    • An array of variant ids as they appear in external platforms.
    • Whether this plan applies to specific variants of the product
      Default false
    • sort_orderinteger
      The 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.
      • Day of the month the plan should be charged
        Only valid for interval_unit:month
      • Day of the month the plan should be charged
        Only valid for interval_unit:week
      • A maximum number of charges on which the subscription should appear before automatic cancellation.
      • Day of the month an order should be generated when the customer is subscribed.
      • Day 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_frequency and order_interval_frequency.
        Possible values
        dayweekmonth
        All plans for a Product must have the same interval_unit.
      • pricing_progressionarray of objects
        Used 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 price after the specified number of cycles.
        • Used in combination with discount amount to determine the discount applied on a product price after the specified number of cycles. percentage applies the discount amount as a percent off the price; fixed_amount applies it as a flat amount in the store's currency.
          Possible values
          percentagefixed_amount
    • titlestring
      The title of the plan.
      All Plans for a product must have the same title.
    • typestring
      The type of the plan.
      Possible values
      subscriptionprepaidonetime
      Products with a prepaid plan cannot have plans of other types.
    • updated_atdatetime
      The time the plan was last updated.
PUT/products/{external_product_id}/plans-bulk
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"
    }
  ]
}'
Response
{
  "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.
Scopewrite_plans

Body parameters

  • plansarray of objectsRequired
    An array of plans to be deleted. Must provide ID for each plan.
    Show child attributesHide child attributes1
    • idintegerRequired
      The ID of the plan.
DELETE/products/{external_product_id}/plans-bulk
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
    }
  ]
}'
Response
{}

#Retrieve a planNew

GET/plans/{id}
Retrieves a single Plan by its id. Deleted plans return a 404.
Scoperead_plans
GET/plans/{id}
curl 'https://api.rechargeapps.com/plans/129593' \
  -H 'X-Recharge-Version: v2' \
  -H 'X-Recharge-Access-Token: your_api_token'
Response
{
  "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.
Scoperead_plans
GET/plans/charge_frequencies
curl 'https://api.rechargeapps.com/plans/charge_frequencies' \
  -H 'X-Recharge-Version: v2' \
  -H 'X-Recharge-Access-Token: your_api_token'
Response
{
  "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"
    }
  ]
}