Stripe Billing API
Create and manage subscriptions, recurring payments, and recurring revenue.
Create and manage subscriptions, recurring payments, and recurring revenue.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/stripe-billing-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Stripe Accounts Account Billing API
description: This is an object representing a Stripe account. You can retrieve it to see properties on the account like its current requirements or if the account is enabled to make live charges or receive payouts.
contact:
email: dev-platform@stripe.com
name: Stripe Dev Platform Team
url: https://stripe.com
termsOfService: https://stripe.com/us/terms/
version: '2023-10-16'
x-stripeSpecFilename: spec3
servers:
- url: https://api.stripe.com/
security:
- basicAuth: []
- bearerAuth: []
tags:
- name: Billing
paths:
/v1/billing_portal/configurations:
get:
description: <p>Returns a list of configurations that describe the functionality of the customer portal.</p>
operationId: getBillingPortalConfigurations
parameters:
- description: Only return configurations that are active or inactive (e.g., pass `true` to only list active configurations).
in: query
name: active
required: false
schema:
type: boolean
style: form
- description: A cursor for use in pagination. `ending_before` is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, starting with `obj_bar`, your subsequent call can include `ending_before=obj_bar` in order to fetch the previous page of the list.
in: query
name: ending_before
required: false
schema:
maxLength: 5000
type: string
style: form
- description: Specifies which fields in the response should be expanded.
explode: true
in: query
name: expand
required: false
schema:
items:
maxLength: 5000
type: string
type: array
style: deepObject
- description: Only return the default or non-default configurations (e.g., pass `true` to only list the default configuration).
in: query
name: is_default
required: false
schema:
type: boolean
style: form
- description: A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.
in: query
name: limit
required: false
schema:
type: integer
style: form
- description: A cursor for use in pagination. `starting_after` is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with `obj_foo`, your subsequent call can include `starting_after=obj_foo` in order to fetch the next page of the list.
in: query
name: starting_after
required: false
schema:
maxLength: 5000
type: string
style: form
requestBody:
content:
application/x-www-form-urlencoded:
encoding: {}
schema:
additionalProperties: false
$ref: '#/components/schemas/GetBillingPortalConfigurationsRequest'
required: false
responses:
'200':
content:
application/json:
schema:
description: ''
x-expandableFields:
- data
$ref: '#/components/schemas/PortalPublicResourceConfigurationList'
description: Successful response.
default:
content:
application/json:
schema:
$ref: '#/components/schemas/error'
description: Error response.
summary: Stripe Get Billing Portal Configurations
x-api-evangelist-processing:
GenerateOperationSummariesFromPath: true
PascalCaseOperationSummaries: true
CaselCaseOperationIds: true
ChooseTags: true
tags:
- Billing
post:
description: <p>Creates a configuration that describes the functionality and behavior of a PortalSession</p>
operationId: postBillingPortalConfigurations
requestBody:
content:
application/x-www-form-urlencoded:
encoding:
business_profile:
explode: true
style: deepObject
default_return_url:
explode: true
style: deepObject
expand:
explode: true
style: deepObject
features:
explode: true
style: deepObject
login_page:
explode: true
style: deepObject
metadata:
explode: true
style: deepObject
schema:
additionalProperties: false
$ref: '#/components/schemas/PostBillingPortalConfigurationsRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/billing_portal.configuration'
description: Successful response.
default:
content:
application/json:
schema:
$ref: '#/components/schemas/error'
description: Error response.
summary: Stripe Post Billing Portal Configurations
x-api-evangelist-processing:
GenerateOperationSummariesFromPath: true
PascalCaseOperationSummaries: true
CaselCaseOperationIds: true
ChooseTags: true
tags:
- Billing
/v1/billing_portal/configurations/{configuration}:
get:
description: <p>Retrieves a configuration that describes the functionality of the customer portal.</p>
operationId: getBillingPortalConfigurationsConfiguration
parameters:
- in: path
name: configuration
required: true
schema:
maxLength: 5000
type: string
style: simple
- description: Specifies which fields in the response should be expanded.
explode: true
in: query
name: expand
required: false
schema:
items:
maxLength: 5000
type: string
type: array
style: deepObject
requestBody:
content:
application/x-www-form-urlencoded:
encoding: {}
schema:
additionalProperties: false
$ref: '#/components/schemas/GetBillingPortalConfigurationsConfigurationRequest'
required: false
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/billing_portal.configuration'
description: Successful response.
default:
content:
application/json:
schema:
$ref: '#/components/schemas/error'
description: Error response.
summary: Stripe Get Billing Portal Configurations Configuration
x-api-evangelist-processing:
GenerateOperationSummariesFromPath: true
PascalCaseOperationSummaries: true
CaselCaseOperationIds: true
ChooseTags: true
tags:
- Billing
post:
description: <p>Updates a configuration that describes the functionality of the customer portal.</p>
operationId: postBillingPortalConfigurationsConfiguration
parameters:
- in: path
name: configuration
required: true
schema:
maxLength: 5000
type: string
style: simple
requestBody:
content:
application/x-www-form-urlencoded:
encoding:
business_profile:
explode: true
style: deepObject
default_return_url:
explode: true
style: deepObject
expand:
explode: true
style: deepObject
features:
explode: true
style: deepObject
login_page:
explode: true
style: deepObject
metadata:
explode: true
style: deepObject
schema:
additionalProperties: false
$ref: '#/components/schemas/PostBillingPortalConfigurationsConfigurationRequest'
required: false
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/billing_portal.configuration'
description: Successful response.
default:
content:
application/json:
schema:
$ref: '#/components/schemas/error'
description: Error response.
summary: Stripe Post Billing Portal Configurations Configuration
x-api-evangelist-processing:
GenerateOperationSummariesFromPath: true
PascalCaseOperationSummaries: true
CaselCaseOperationIds: true
ChooseTags: true
tags:
- Billing
/v1/billing_portal/sessions:
post:
description: <p>Creates a session of the customer portal.</p>
operationId: postBillingPortalSessions
requestBody:
content:
application/x-www-form-urlencoded:
encoding:
expand:
explode: true
style: deepObject
flow_data:
explode: true
style: deepObject
schema:
additionalProperties: false
$ref: '#/components/schemas/PostBillingPortalSessionsRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/billing_portal.session'
description: Successful response.
default:
content:
application/json:
schema:
$ref: '#/components/schemas/error'
description: Error response.
summary: Stripe Post Billing Portal Sessions
x-api-evangelist-processing:
GenerateOperationSummariesFromPath: true
PascalCaseOperationSummaries: true
CaselCaseOperationIds: true
ChooseTags: true
tags:
- Billing
components:
schemas:
billing_portal.configuration:
description: A portal configuration describes the functionality and behavior of a portal session.
properties:
active:
description: Whether the configuration is active and can be used to create portal sessions.
type: boolean
application:
anyOf:
- maxLength: 5000
type: string
- $ref: '#/components/schemas/application'
- $ref: '#/components/schemas/deleted_application'
description: ID of the Connect Application that created the configuration.
x-expansionResources:
oneOf:
- $ref: '#/components/schemas/application'
- $ref: '#/components/schemas/deleted_application'
business_profile:
$ref: '#/components/schemas/portal_business_profile'
created:
description: Time at which the object was created. Measured in seconds since the Unix epoch.
format: unix-time
type: integer
default_return_url:
description: The default URL to redirect customers to when they click on the portal's link to return to your website. This can be [overriden](https://stripe.com/docs/api/customer_portal/sessions/create#create_portal_session-return_url) when creating the session.
maxLength: 5000
type:
- string
- 'null'
features:
$ref: '#/components/schemas/portal_features'
id:
description: Unique identifier for the object.
maxLength: 5000
type: string
is_default:
description: Whether the configuration is the default. If `true`, this configuration can be managed in the Dashboard and portal sessions will use this configuration unless it is overriden when creating the session.
type: boolean
livemode:
description: Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.
type: boolean
login_page:
$ref: '#/components/schemas/portal_login_page'
metadata:
additionalProperties:
maxLength: 500
type: string
description: Set of [key-value pairs](https://stripe.com/docs/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
type:
- object
- 'null'
object:
description: String representing the object's type. Objects of the same type share the same value.
enum:
- billing_portal.configuration
type: string
updated:
description: Time at which the object was last updated. Measured in seconds since the Unix epoch.
format: unix-time
type: integer
required:
- active
- business_profile
- created
- features
- id
- is_default
- livemode
- login_page
- object
- updated
title: PortalConfiguration
type: object
x-expandableFields:
- application
- business_profile
- features
- login_page
x-resourceId: billing_portal.configuration
PostBillingPortalSessionsRequest:
type: object
required:
- customer
properties:
configuration:
description: The ID of an existing [configuration](https://stripe.com/docs/api/customer_portal/configuration) to use for this session, describing its functionality and features. If not specified, the session uses the default configuration.
maxLength: 5000
type: string
customer:
description: The ID of an existing customer.
maxLength: 5000
type: string
expand:
description: Specifies which fields in the response should be expanded.
items:
maxLength: 5000
type: string
type: array
flow_data:
description: Information about a specific flow for the customer to go through. See the [docs](https://stripe.com/docs/customer-management/portal-deep-links) to learn more about using customer portal deep links and flows.
properties:
after_completion:
properties:
hosted_confirmation:
properties:
custom_message:
maxLength: 500
type: string
title: after_completion_hosted_confirmation_param
type: object
redirect:
properties:
return_url:
type: string
required:
- return_url
title: after_completion_redirect_param
type: object
type:
enum:
- hosted_confirmation
- portal_homepage
- redirect
type: string
required:
- type
title: flow_data_after_completion_param
type: object
subscription_cancel:
properties:
retention:
properties:
coupon_offer:
properties:
coupon:
maxLength: 5000
type: string
required:
- coupon
title: coupon_offer_param
type: object
type:
enum:
- coupon_offer
type: string
required:
- coupon_offer
- type
title: retention_param
type: object
subscription:
maxLength: 5000
type: string
required:
- subscription
title: flow_data_subscription_cancel_param
type: object
subscription_update:
properties:
subscription:
maxLength: 5000
type: string
required:
- subscription
title: flow_data_subscription_update_param
type: object
subscription_update_confirm:
properties:
discounts:
items:
properties:
coupon:
maxLength: 5000
type: string
promotion_code:
maxLength: 5000
type: string
title: subscription_update_confirm_discount_params
type: object
type: array
items:
items:
properties:
id:
maxLength: 5000
type: string
price:
maxLength: 5000
type: string
quantity:
type: integer
required:
- id
title: subscription_update_confirm_item_params
type: object
type: array
subscription:
maxLength: 5000
type: string
required:
- items
- subscription
title: flow_data_subscription_update_confirm_param
type: object
type:
enum:
- payment_method_update
- subscription_cancel
- subscription_update
- subscription_update_confirm
type: string
required:
- type
title: flow_data_param
type: object
locale:
description: The IETF language tag of the locale customer portal is displayed in. If blank or auto, the customer’s `preferred_locales` or browser’s locale is used.
enum:
- auto
- bg
- cs
- da
- de
- el
- en
- en-AU
- en-CA
- en-GB
- en-IE
- en-IN
- en-NZ
- en-SG
- es
- es-419
- et
- fi
- fil
- fr
- fr-CA
- hr
- hu
- id
- it
- ja
- ko
- lt
- lv
- ms
- mt
- nb
- nl
- pl
- pt
- pt-BR
- ro
- ru
- sk
- sl
- sv
- th
- tr
- vi
- zh
- zh-HK
- zh-TW
type: string
on_behalf_of:
description: The `on_behalf_of` account to use for this session. When specified, only subscriptions and invoices with this `on_behalf_of` account appear in the portal. For more information, see the [docs](https://stripe.com/docs/connect/separate-charges-and-transfers#on-behalf-of). Use the [Accounts API](https://stripe.com/docs/api/accounts/object#account_object-settings-branding) to modify the `on_behalf_of` account's branding settings, which the portal displays.
type: string
return_url:
description: The default URL to redirect customers to when they click on the portal's link to return to your website.
type: string
GetBillingPortalConfigurationsRequest:
type: object
properties: {}
billing_portal.session:
description: 'The Billing customer portal is a Stripe-hosted UI for subscription and
billing management.
A portal configuration describes the functionality and features that you
want to provide to your customers through the portal.
A portal session describes the instantiation of the customer portal for
a particular customer. By visiting the session''s URL, the customer
can manage their subscriptions and billing details. For security reasons,
sessions are short-lived and will expire if the customer does not visit the URL.
Create sessions on-demand when customers intend to manage their subscriptions
and billing details.
Learn more in the [integration guide](https://stripe.com/docs/billing/subscriptions/integrating-customer-portal).'
properties:
configuration:
anyOf:
- maxLength: 5000
type: string
- $ref: '#/components/schemas/billing_portal.configuration'
description: The configuration used by this session, describing the features available.
x-expansionResources:
oneOf:
- $ref: '#/components/schemas/billing_portal.configuration'
created:
description: Time at which the object was created. Measured in seconds since the Unix epoch.
format: unix-time
type: integer
customer:
description: The ID of the customer for this session.
maxLength: 5000
type: string
flow:
anyOf:
- $ref: '#/components/schemas/portal_flows_flow'
description: Information about a specific flow for the customer to go through. See the [docs](https://stripe.com/docs/customer-management/portal-deep-links) to learn more about using customer portal deep links and flows.
id:
description: Unique identifier for the object.
maxLength: 5000
type: string
livemode:
description: Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.
type: boolean
locale:
description: The IETF language tag of the locale Customer Portal is displayed in. If blank or auto, the customer’s `preferred_locales` or browser’s locale is used.
enum:
- auto
- bg
- cs
- da
- de
- el
- en
- en-AU
- en-CA
- en-GB
- en-IE
- en-IN
- en-NZ
- en-SG
- es
- es-419
- et
- fi
- fil
- fr
- fr-CA
- hr
- hu
- id
- it
- ja
- ko
- lt
- lv
- ms
- mt
- nb
- nl
- pl
- pt
- pt-BR
- ro
- ru
- sk
- sl
- sv
- th
- tr
- vi
- zh
- zh-HK
- zh-TW
type:
- string
- 'null'
object:
description: String representing the object's type. Objects of the same type share the same value.
enum:
- billing_portal.session
type: string
on_behalf_of:
description: The account for which the session was created on behalf of. When specified, only subscriptions and invoices with this `on_behalf_of` account appear in the portal. For more information, see the [docs](https://stripe.com/docs/connect/separate-charges-and-transfers#on-behalf-of). Use the [Accounts API](https://stripe.com/docs/api/accounts/object#account_object-settings-branding) to modify the `on_behalf_of` account's branding settings, which the portal displays.
maxLength: 5000
type:
- string
- 'null'
return_url:
description: The URL to redirect customers to when they click on the portal's link to return to your website.
maxLength: 5000
type:
- string
- 'null'
url:
description: The short-lived URL of the session that gives customers access to the customer portal.
maxLength: 5000
type: string
required:
- configuration
- created
- customer
- id
- livemode
- object
- url
title: PortalSession
type: object
x-expandableFields:
- configuration
- flow
x-resourceId: billing_portal.session
PortalPublicResourceConfigurationList:
type: object
required:
- data
- has_more
- object
- url
properties:
data:
items:
$ref: '#/components/schemas/billing_portal.configuration'
type: array
has_more:
description: True if this list has another page of items after this one that can be fetched.
type: boolean
object:
description: String representing the object's type. Objects of the same type share the same value. Always has the value `list`.
enum:
- list
type: string
url:
description: The URL where this list can be accessed.
maxLength: 5000
pattern: ^/v1/billing_portal/configurations
type: string
error:
description: An error response from the Stripe API
properties:
error:
$ref: '#/components/schemas/api_errors'
required:
- error
type: object
PostBillingPortalConfigurationsRequest:
type: object
required:
- business_profile
- features
properties:
business_profile:
description: The business information shown to customers in the portal.
properties:
headline:
anyOf:
- maxLength: 60
type: string
- enum:
- ''
type: string
privacy_policy_url:
type: string
terms_of_service_url:
type: string
title: business_profile_create_param
type: object
default_return_url:
anyOf:
- type: string
- enum:
- ''
type: string
description: The default URL to redirect customers to when they click on the portal's link to return to your website. This can be [overriden](https://stripe.com/docs/api/customer_portal/sessions/create#create_portal_session-return_url) when creating the session.
expand:
description: Specifies which fields in the response should be expanded.
items:
maxLength: 5000
type: string
type: array
features:
description: Information about the features available in the portal.
properties:
customer_update:
properties:
allowed_updates:
anyOf:
- items:
enum:
- address
- email
- name
- phone
- shipping
- tax_id
type: string
type: array
- enum:
- ''
type: string
enabled:
type: boolean
required:
- enabled
title: customer_update_creation_param
type: object
invoice_history:
properties:
enabled:
type: boolean
required:
- enabled
title: invoice_list_param
type: object
payment_method_update:
properties:
enabled:
type: boolean
required:
- enabled
title: payment_method_update_param
type: object
subscription_cancel:
properties:
cancellation_reason:
properties:
enabled:
type: boolean
options:
anyOf:
- items:
enum:
- customer_service
- low_quality
- missing_features
- other
- switched_service
- too_complex
- too_expensive
- unused
type: string
type: array
- enum:
- ''
type: string
required:
- enabled
- options
title: subscription_cancellation_reason_creation_param
type: object
enabled:
type: boolean
mode:
enum:
- at_period_end
- immediately
type: string
proration_behavior:
enum:
- always_invoice
- create_prorations
- none
type: string
required:
- enabled
title: subscription_cancel_creation_param
type: object
subscription_pause:
properties:
enabled:
type: boolean
title: subscription_pause_param
type: object
subscription_update:
properties:
default_allowed_updates:
anyOf:
- items:
enum:
- price
- promotion_code
- quantity
type: string
type: array
- enum:
- ''
type: string
enabled:
type: boolean
products:
anyOf:
- items:
properties:
prices:
items:
maxLength: 5000
type: string
type: array
product:
maxLength: 5000
type: string
required:
- prices
- product
title: subscription_update_product_param
type: object
type: array
- enum:
- ''
type: string
proration_behavior:
enum:
- always_invoice
- create_prorations
- none
type: string
required:
- default_allowed_updates
- enabled
- products
title: subscription_update_creation_param
type: object
title: features_creation_param
type: object
login_page:
description: The hosted login page for this configuration. Learn more about the portal login page in our [integration docs](https://stripe.com/docs/billing/subscriptions/integrating-customer-portal#share).
properties:
enabled:
type: boolean
required:
- enabled
title: login_page_create_param
type: object
metadata:
additionalProperties:
type: string
description: Set of [key-value pairs](https://stripe.com/docs/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to `metadata`.
type: object
PostBillingPortalConfigurationsConfigurationRequest:
type: object
properties:
active:
description: Whether the configuration is active and can be used t
# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/stripe/refs/heads/main/openapi/stripe-billing-api-openapi.yml