openapi: 3.2.0 info: version: 1.0.1 title: Bolt API Reference Subscriptions API description: "Postman Collection:\n\n[![](https://run.pstmn.io/button.svg)](https://god.gw.postman.com/run-collection/9136127-55d2bde1-a248-473f-95b5-64cfd02fb445?action=collection%2Ffork&collection-url=entityId%3D9136127-55d2bde1-a248-473f-95b5-64cfd02fb445%26entityType%3Dcollection%26workspaceId%3D78beee89-4238-4c5f-bd1f-7e98978744b4#?env%5BBolt%20Sandbox%20Environment%5D=W3sia2V5IjoiYXBpX2Jhc2VfdXJsIiwidmFsdWUiOiJodHRwczovL2FwaS1zYW5kYm94LmJvbHQuY29tIiwidHlwZSI6ImRlZmF1bHQiLCJlbmFibGVkIjp0cnVlfSx7ImtleSI6InRrX2Jhc2UiLCJ2YWx1ZSI6Imh0dHBzOi8vc2FuZGJveC5ib2x0dGsuY29tIiwidHlwZSI6ImRlZmF1bHQiLCJlbmFibGVkIjp0cnVlfSx7ImtleSI6ImFwaV9rZXkiLCJ2YWx1ZSI6IjxyZXBsYWNlIHdpdGggeW91ciBCb2x0IFNhbmRib3ggQVBJIGtleT4iLCJ0eXBlIjoic2VjcmV0IiwiZW5hYmxlZCI6dHJ1ZX0seyJrZXkiOiJwdWJsaXNoYWJsZV9rZXkiLCJ2YWx1ZSI6IjxyZXBsYWNlIHdpdGggeW91ciBCb2x0IFNhbmRib3ggcHVibGlzaGFibGUga2V5PiIsInR5cGUiOiJkZWZhdWx0IiwiZW5hYmxlZCI6dHJ1ZX0seyJrZXkiOiJkaXZpc2lvbl9pZCIsInZhbHVlIjoiPHJlcGxhY2Ugd2l0aCB5b3VyIEJvbHQgU2FuZGJveCBwdWJsaWMgZGl2aXNpb24gSUQ+IiwidHlwZSI6ImRlZmF1bHQiLCJlbmFibGVkIjp0cnVlfV0=)\n\n## About\n A comprehensive Bolt API reference for interacting with Transactions, Orders, Product Catalog, Configuration, Testing, and much more.\n\n Note: You must also reference the [Merchant Callback API](/api-merchant) when building a managed checkout custom cart integration\n" servers: - url: https://api.boltapp.com description: The Production URL (Live Data). - url: https://api-sandbox.boltapp.com description: The Sandbox URL (Test Data). - url: https://api-staging.boltapp.com description: The Staging URL (Staged Data). security: - X-API-Key: [] - OAuth: - bolt.account.manage - bolt.account.view tags: - name: Subscriptions description: 'Use the Subscriptions endpoint to manage merchant-side recurring subscriptions created through Bolt Charge: list and retrieve subscriptions, cancel or pause/unpause them, view generated orders, and configure dunning (failed payment recovery) settings for a division. ' paths: /v1/subscriptions: get: description: List subscriptions belonging to the authenticated merchant division. Results are limited to only show subscriptions authorized by the X-API-Key and X-Publishable-Key. operationId: getSubscriptions parameters: - $ref: '#/components/parameters/x_publishable_key_required' - $ref: '#/components/parameters/bolt_connect_seller_id_header' - $ref: '#/components/parameters/bolt_connect_seller_id_query' - description: Filter to subscriptions for these subscription product IDs. Comma-separated. in: query name: product_ids required: false schema: type: string - description: Filter to subscriptions on these plan IDs. Comma-separated. in: query name: plan_ids required: false schema: type: string - description: Filter to subscriptions for these shopper emails. Comma-separated. in: query name: emails required: false schema: type: string - description: Filter to subscriptions with these statuses. Comma-separated. in: query name: statuses required: false schema: items: $ref: '#/components/schemas/subscription_v2_status' type: array - description: The page number to retrieve, starting at 1. in: query name: page required: false schema: default: 1 minimum: 1 type: integer - description: The number of subscriptions to return per page. in: query name: page_size required: false schema: default: 400 maximum: 400 minimum: 1 type: integer responses: '200': content: application/json: schema: $ref: '#/components/schemas/subscription_v2_list' description: Success '400': content: application/json: schema: $ref: '#/components/schemas/errors_bolt_api_response' description: BAD REQUEST. Request is malformed or invalid values are detected. '401': content: application/json: schema: $ref: '#/components/schemas/errors_bolt_api_response' description: UNAUTHORIZED. Missing or invalid X-API-Key or X-Publishable-Key. security: - X-API-Key: [] summary: Get Subscriptions tags: - Subscriptions /v1/subscriptions/{subscription_id}: get: description: Get a single subscription by its ID. Results are limited to only show subscriptions authorized by the X-API-Key and X-Publishable-Key. operationId: getSubscription parameters: - $ref: '#/components/parameters/subscription_v2_id_path' - $ref: '#/components/parameters/x_publishable_key_required' responses: '200': content: application/json: schema: $ref: '#/components/schemas/subscription_v2' description: Success '400': content: application/json: schema: $ref: '#/components/schemas/errors_bolt_api_response' description: BAD REQUEST. Request is malformed or invalid values are detected. '401': content: application/json: schema: $ref: '#/components/schemas/errors_bolt_api_response' description: UNAUTHORIZED. Missing or invalid X-API-Key or X-Publishable-Key. '404': content: application/json: schema: $ref: '#/components/schemas/errors_bolt_api_response' description: NOT FOUND. Unable to find a subscription with this ID for this merchant division. security: - X-API-Key: [] summary: Get Subscription tags: - Subscriptions /v1/subscriptions/{subscription_id}/cancel: post: description: Cancel a subscription. This cancels any of the subscription's orders that are currently `scheduled`, `paused`, or `payment_failed`; no further orders will be placed. operationId: cancelSubscription parameters: - $ref: '#/components/parameters/subscription_v2_id_path' - $ref: '#/components/parameters/x_publishable_key_required' responses: '200': content: application/json: schema: $ref: '#/components/schemas/subscription_v2_success' description: Success '400': content: application/json: schema: $ref: '#/components/schemas/errors_bolt_api_response' description: BAD REQUEST. Request is malformed, or the subscription is not in a cancellable state. '401': content: application/json: schema: $ref: '#/components/schemas/errors_bolt_api_response' description: UNAUTHORIZED. Missing or invalid X-API-Key or X-Publishable-Key. '404': content: application/json: schema: $ref: '#/components/schemas/errors_bolt_api_response' description: NOT FOUND. Unable to find a subscription with this ID for this merchant division. security: - X-API-Key: [] summary: Cancel Subscription tags: - Subscriptions /v1/subscriptions/{subscription_id}/pause: post: description: Pause a subscription. This transitions the subscription's next `scheduled` order to `paused`, skipping its next billing cycle. Returns an error if the subscription is already paused. operationId: pauseSubscription parameters: - $ref: '#/components/parameters/subscription_v2_id_path' - $ref: '#/components/parameters/x_publishable_key_required' responses: '200': content: application/json: schema: $ref: '#/components/schemas/subscription_v2' description: Success '400': content: application/json: schema: $ref: '#/components/schemas/errors_bolt_api_response' description: BAD REQUEST. Request is malformed, or the subscription is already paused. '401': content: application/json: schema: $ref: '#/components/schemas/errors_bolt_api_response' description: UNAUTHORIZED. Missing or invalid X-API-Key or X-Publishable-Key. '404': content: application/json: schema: $ref: '#/components/schemas/errors_bolt_api_response' description: NOT FOUND. Unable to find a subscription with this ID for this merchant division. security: - X-API-Key: [] summary: Pause Subscription tags: - Subscriptions /v1/subscriptions/{subscription_id}/unpause: post: description: Unpause a previously paused subscription. This computes the next billing date from the plan's frequency and reschedules the subscription's order. Returns an error if the subscription is not currently paused. operationId: unpauseSubscription parameters: - $ref: '#/components/parameters/subscription_v2_id_path' - $ref: '#/components/parameters/x_publishable_key_required' responses: '200': content: application/json: schema: $ref: '#/components/schemas/subscription_v2' description: Success '400': content: application/json: schema: $ref: '#/components/schemas/errors_bolt_api_response' description: BAD REQUEST. Request is malformed, or the subscription is not currently paused. '401': content: application/json: schema: $ref: '#/components/schemas/errors_bolt_api_response' description: UNAUTHORIZED. Missing or invalid X-API-Key or X-Publishable-Key. '404': content: application/json: schema: $ref: '#/components/schemas/errors_bolt_api_response' description: NOT FOUND. Unable to find a subscription with this ID for this merchant division. security: - X-API-Key: [] summary: Unpause Subscription tags: - Subscriptions /v1/subscriptions/orders: get: description: List subscription orders (billing cycles) for the authenticated merchant division. operationId: getSubscriptionOrders parameters: - $ref: '#/components/parameters/x_publishable_key_required' - $ref: '#/components/parameters/bolt_connect_seller_id_header' - $ref: '#/components/parameters/bolt_connect_seller_id_query' - description: Filter to orders for these subscription IDs. Comma-separated. in: query name: subscription_ids required: false schema: type: string - description: Filter to orders for these Bolt order IDs. Comma-separated. in: query name: order_ids required: false schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/subscription_v2_order_list' description: Success '400': content: application/json: schema: $ref: '#/components/schemas/errors_bolt_api_response' description: BAD REQUEST. Request is malformed, such as a non-numeric value in `order_ids`. '401': content: application/json: schema: $ref: '#/components/schemas/errors_bolt_api_response' description: UNAUTHORIZED. Missing or invalid X-API-Key or X-Publishable-Key. security: - X-API-Key: [] summary: Get Subscription Orders tags: - Subscriptions /v1/subscriptions/dunning_settings: get: description: Get the merchant division's dunning (failed payment recovery) settings. If the division has never configured these settings, Bolt's defaults are returned. operationId: getDunningSettings parameters: - $ref: '#/components/parameters/x_publishable_key_required' - $ref: '#/components/parameters/bolt_connect_seller_id_header' - $ref: '#/components/parameters/bolt_connect_seller_id_query' responses: '200': content: application/json: schema: $ref: '#/components/schemas/subscription_v2_dunning_settings' description: Success '401': content: application/json: schema: $ref: '#/components/schemas/errors_bolt_api_response' description: UNAUTHORIZED. Missing or invalid X-API-Key or X-Publishable-Key. security: - X-API-Key: [] summary: Get Dunning Settings tags: - Subscriptions put: description: Update the merchant division's dunning (failed payment recovery) settings. This replaces the full configuration; omitted fields are not merged with the previous settings. operationId: updateDunningSettings parameters: - $ref: '#/components/parameters/x_publishable_key_required' - $ref: '#/components/parameters/bolt_connect_seller_id_header' - $ref: '#/components/parameters/bolt_connect_seller_id_query' requestBody: content: application/json: schema: $ref: '#/components/schemas/subscription_v2_dunning_settings' description: Dunning Settings required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/subscription_v2_dunning_settings' description: Success '400': content: application/json: schema: $ref: '#/components/schemas/errors_bolt_api_response' description: BAD REQUEST. Request is malformed or fails validation, e.g. `final_action` is not one of `cancel`/`pause`, `retry_schedule_hours` is not strictly increasing, or `reminder_lead_days` has more than 10 entries. '401': content: application/json: schema: $ref: '#/components/schemas/errors_bolt_api_response' description: UNAUTHORIZED. Missing or invalid X-API-Key or X-Publishable-Key. security: - X-API-Key: [] summary: Update Dunning Settings tags: - Subscriptions components: schemas: amounts: description: The amount. **Nullable** for Transactions Details. properties: amount: $ref: '#/components/schemas/amount' currency: $ref: '#/components/schemas/currency_iso' currency_symbol: $ref: '#/components/schemas/currency_symbol' required: - amount - currency - currency_symbol type: object subscription_v2_order_list: description: A list of subscription orders. properties: orders: items: $ref: '#/components/schemas/subscription_v2_order' type: array required: - orders title: Subscription Order List type: object subscription_v2_status: description: The current status of the subscription. enum: - active - paused - canceled - payment_failed example: active title: Subscription Status type: string currency_iso: description: The 3-digit ISO code for the currency. **Nullable** for Transactions Details. example: USD type: string subscription_v2_pagination: description: Pagination details for a list response. properties: page_size: example: 25 type: integer total_count: example: 132 type: integer required: - page_size - total_count title: Pagination type: object subscription_v2_initial_period: description: An initial billing period, such as a trial or introductory offer, that differs from the plan's regular frequency. properties: frequency: description: The number of `frequency_unit`s in the initial period. example: 14 type: integer frequency_unit: description: The unit of time for the initial period's frequency. enum: - day - week - month - year example: day type: string required: - frequency - frequency_unit title: Subscription Initial Period type: object request_failed: example: false type: boolean description: Indicates that the request failed. This value is always false. message: description: Human-readable description of the error for developers. Should not be shown to users and is not localized. example: The input is missing a required parameter. type: string subscription_v2_success: description: A generic confirmation response. properties: success: example: true type: boolean required: - success title: Success type: object code: description: Custom-defined Bolt error code. This can be used to programmatically react to specific errors. example: 2001005 format: int64 type: integer subscription_v2_dunning_settings: description: A merchant division's dunning (failed payment recovery) configuration. properties: retry_schedule_hours: description: Hour offsets from the initial payment failure at which Bolt retries the payment. Must be 1-10 strictly increasing, positive values, each at most 2160 (90 days). example: - 24 - 72 - 168 - 336 items: type: integer type: array reminder_lead_days: description: Days before a subscription's renewal at which Bolt sends the shopper a reminder. Must be 1-10 unique values between 1 and 90. example: - 30 - 7 - 3 items: type: integer type: array final_action: description: The action Bolt takes on a subscription once the retry schedule is exhausted without a successful payment. enum: - cancel - pause example: cancel type: string sms_enabled: description: Whether Bolt sends SMS reminders and payment-failure notifications to the shopper, in addition to email. example: false type: boolean required: - retry_schedule_hours - reminder_lead_days - final_action - sms_enabled title: Dunning Settings type: object subscription_v2_plan: description: The billing plan the subscription is enrolled in. properties: id: description: The unique ID for the subscription plan. example: plan_9f8e7d6c5b type: string name: description: The display name of the plan. example: Monthly type: string sku: description: The merchant-defined SKU for the plan. example: SUB-MONTHLY-001 type: string created_at: format: date-time type: string updated_at: format: date-time type: string frequency: description: The number of `frequency_unit`s between each billing cycle. example: 1 type: integer frequency_unit: description: The unit of time between billing cycles. enum: - day - week - month - year example: month type: string product_id: description: The unique ID of the subscription product this plan belongs to. example: prod_3c2b1a0f9e type: string checkout_link: description: A hosted checkout link for this plan, when available. example: https://subscribe.boltapp.com/plans/plan_9f8e7d6c5b type: string initial_period: $ref: '#/components/schemas/subscription_v2_initial_period' required: - id - name - sku - created_at - updated_at - frequency - frequency_unit - product_id title: Subscription Plan type: object subscription_v2_status_details: description: Details about the subscription's current status. properties: type: $ref: '#/components/schemas/subscription_v2_status' reason: description: Additional context for the current status, when available. example: payment_failed type: string required: - type title: Subscription Status Details type: object subscription_v2_order_status: description: The status of a subscription order. enum: - scheduled - done - paused - payment_failed - canceled example: scheduled title: Subscription Order Status type: string errors_bolt_api: items: $ref: '#/components/schemas/error_bolt_api' type: array subscription_v2_id: description: The unique ID for a Bolt subscription. example: sub_1a2b3c4d5e title: Subscription ID type: string errors_bolt_api_response: properties: errors: $ref: '#/components/schemas/errors_bolt_api' result: $ref: '#/components/schemas/request_result' type: object error_bolt_api: properties: code: $ref: '#/components/schemas/code' message: $ref: '#/components/schemas/message' type: object description: Error object containing custom error information currency_symbol: description: The currency symbol used for the amount. **Nullable** for Transactions Details. example: $ type: string subscription_v2_order: description: A single billing cycle (order) generated by a subscription. properties: id: description: The unique ID for the subscription order. example: sorder_5d4c3b2a19 type: string subscription_id: $ref: '#/components/schemas/subscription_v2_id' order_id: description: The associated Bolt order ID, once the order has been placed. example: 123456789 type: integer transaction_reference: description: The transaction reference for this order's payment attempt. example: 6CEA-ZME1-DACE type: string placement_time: description: The scheduled or actual placement time of this order. format: date-time type: string status: $ref: '#/components/schemas/subscription_v2_order_status' cancel_reason: deprecated: true description: Deprecated. type: - string - 'null' created_at: format: date-time type: string updated_at: format: date-time type: string sequence_number: description: The 1-indexed position of this order within the subscription's billing history. example: 3 type: integer total_amount: $ref: '#/components/schemas/amounts' required: - id - subscription_id - transaction_reference - placement_time - status - created_at - updated_at - sequence_number title: Subscription Order type: object subscription_v2: description: A Bolt subscription. properties: id: $ref: '#/components/schemas/subscription_v2_id' created_at: format: date-time type: string updated_at: format: date-time type: string merchant_name: description: The name of the merchant this subscription belongs to. example: Bolt Swag Store type: string email: description: The email address of the shopper who owns this subscription. Nullable. example: shopper@example.com type: - string - 'null' status_details: $ref: '#/components/schemas/subscription_v2_status_details' payment_method: $ref: '#/components/schemas/subscription_v2_payment_method' next_renewal_date: description: The date of the next scheduled renewal, if any. format: date-time type: - string - 'null' next_payment_retry_date: description: The date of the next scheduled payment retry, if the subscription currently has a failed payment. format: date-time type: - string - 'null' canceled_date: format: date-time type: - string - 'null' paused_date: format: date-time type: - string - 'null' plan: $ref: '#/components/schemas/subscription_v2_plan' product_names: items: type: string type: array total_amount: $ref: '#/components/schemas/amounts' metadata: additionalProperties: type: string description: Merchant-defined custom metadata. type: object required: - id - created_at - updated_at - merchant_name - email - status_details - plan - product_names - total_amount - metadata title: Subscription type: object request_result: description: Custom-defined Bolt result object. properties: success: $ref: '#/components/schemas/request_failed' type: object amount: description: The amount in cents. **Nullable** for Transactions Details. example: 754 type: integer subscription_v2_payment_method: description: The card currently used to pay for this subscription. properties: card_last_4: description: The last 4 digits of the card number. example: '4242' type: string card_network: description: The card network (e.g. Visa, Mastercard). example: visa type: string required: - card_last_4 - card_network title: Subscription Payment Method type: object subscription_v2_list: description: A paginated list of subscriptions. properties: subscriptions: items: $ref: '#/components/schemas/subscription_v2' type: array pagination: $ref: '#/components/schemas/subscription_v2_pagination' required: - subscriptions - pagination title: Subscription List type: object parameters: subscription_v2_id_path: description: The unique ID for the subscription. in: path name: subscription_id required: true schema: $ref: '#/components/schemas/subscription_v2_id' x_publishable_key_required: description: The publicly viewable identifier used to identify a merchant division. This key is found in the Developer > API section of the Bolt Merchant Dashboard. in: header name: X-Publishable-Key required: true schema: type: string bolt_connect_seller_id_header: description: For Bolt Connect marketplace integrations, the seller's external ID. When provided, the request acts on the seller's division rather than the caller's own division. Ignored if the `seller_id` query parameter is also set. in: header name: X-Bolt-Connect-Seller-Id required: false schema: type: string bolt_connect_seller_id_query: description: For Bolt Connect marketplace integrations, the seller's external ID. When provided, the request acts on the seller's division rather than the caller's own division. Takes precedence over the `X-Bolt-Connect-Seller-Id` header if both are set. in: query name: seller_id required: false schema: type: string securitySchemes: OAuth: description: 'Bolt utilizes the OAuth flow that developers can use to attain access to Bolt Account data via APIs. For all APIs that require authorization, please provide your `access_token` returned from `/v1/oauth/token` via the basic auth bearer header `Authorization: bearer ${TOKEN}`. [Read more about the OAuth token endpoint.](/api-bolt/#tag/OAuth) ' flows: authorizationCode: authorizationUrl: https://api.boltapp.com/v1/oauth/authorize refreshUrl: https://api.boltapp.com/v1/oauth/token scopes: bolt.account.manage: This scope grants permissions to perform read/edit/delete actions on Bolt Account data bolt.account.view: This scope grants permissions to perform read only actions on Bolt Account data openid: This scope grants permissions that enable Bolt SSO by granting an id token JWT that stores account data. Not used in v1/account endpoints tokenUrl: https://api.boltapp.com/v1/oauth/token type: oauth2 X-API-Key: description: Admins and Developers can obtain their Bolt API key from the Bolt Merchant Dashboard. in: header name: X-API-Key type: apiKey