Skip to content

Stripe: Create a Customer Session

Stripe customerSessions.postCustomerSessions: arguments, response, policy and SDK examples.

← Customer sessions operations · Get started

Operation stripe.postcustomersessions

Provider route: POST /v1/customer_sessions. Alter supplies the connection’s credentials and routing.

Install @alter-ai/sdk @alter-ai/stripe with npm, or alter-sdk-stripe with pip. Supply your connected customer’s grant ID and the arguments described below.

import { App } from "@alter-ai/sdk";
import { StripeIntegration } from "@alter-ai/stripe";
async function execute(input: Parameters<StripeIntegration["customerSessions"]["postCustomerSessions"]>[0]) {
const app = new App({ apiKey: process.env.ALTER_API_KEY! });
try {
const provider = new StripeIntegration(app, { grantId: process.env.PROVIDER_GRANT_ID! });
const call = await provider.customerSessions.postCustomerSessions(input);
const result = await call.wait();
return result.bodyJson();
} finally {
await app.close();
}
}
import os
from alter_sdk import App
from alter_sdk_stripe import StripeIntegration
async def execute(arguments):
async with App(api_key=os.environ["ALTER_API_KEY"]) as app:
provider = StripeIntegration(app, {"grant_id": os.environ["PROVIDER_GRANT_ID"]})
call = await provider.customer_sessions.post_customer_sessions(arguments)
result = await call.wait()
return result.body_json()
FieldTypePresenceDescription and constraints
$objectRootAdditional keys: not allowed
headersobjectOptionalAdditional keys: not allowed
headers.Idempotency-KeystringOptionalMinimum length: 1
Maximum length: 255
bodyobjectRequired within parentAdditional keys: not allowed
body.componentsobjectRequired within parentConfiguration for each component. At least 1 component must be enabled.
body.components.active_entitlementsobjectOptional
body.components.active_entitlements.enabledbooleanRequired within parent
body.components.buy_buttonobjectOptional
body.components.buy_button.enabledbooleanRequired within parent
body.components.customer_portalobjectOptional
body.components.customer_portal.enabledbooleanRequired within parent
body.components.customer_sheetobjectOptional
body.components.customer_sheet.enabledbooleanRequired within parent
body.components.customer_sheet.featuresobjectOptional
body.components.customer_sheet.features.payment_method_allow_redisplay_filtersarrayOptional
body.components.customer_sheet.features.payment_method_allow_redisplay_filters[]stringEach itemOne of: always, limited, unspecified
body.components.customer_sheet.features.payment_method_removestringOptionalOne of: disabled, enabled
body.components.mobile_payment_elementobjectOptional
body.components.mobile_payment_element.enabledbooleanRequired within parent
body.components.mobile_payment_element.featuresobjectOptional
body.components.mobile_payment_element.features.payment_method_allow_redisplay_filtersarrayOptional
body.components.mobile_payment_element.features.payment_method_allow_redisplay_filters[]stringEach itemOne of: always, limited, unspecified
body.components.mobile_payment_element.features.payment_method_redisplaystringOptionalOne of: disabled, enabled
body.components.mobile_payment_element.features.payment_method_removestringOptionalOne of: disabled, enabled
body.components.mobile_payment_element.features.payment_method_savestringOptionalOne of: disabled, enabled
body.components.mobile_payment_element.features.payment_method_save_allow_redisplay_overridestringOptionalOne of: always, limited, unspecified
body.components.payment_elementobjectOptional
body.components.payment_element.enabledbooleanRequired within parent
body.components.payment_element.featuresobjectOptional
body.components.payment_element.features.payment_method_allow_redisplay_filtersarrayOptional
body.components.payment_element.features.payment_method_allow_redisplay_filters[]stringEach itemOne of: always, limited, unspecified
body.components.payment_element.features.payment_method_redisplaystringOptionalOne of: disabled, enabled
body.components.payment_element.features.payment_method_redisplay_limitintegerOptional
body.components.payment_element.features.payment_method_removestringOptionalOne of: disabled, enabled
body.components.payment_element.features.payment_method_savestringOptionalOne of: disabled, enabled
body.components.payment_element.features.payment_method_save_usagestringOptionalOne of: off_session, on_session
body.components.pricing_tableobjectOptional
body.components.pricing_table.enabledbooleanRequired within parent
body.customerstringOptionalThe ID of an existing customer for which to create the Customer Session.
Maximum length: 5000
body.customer_accountstringOptionalThe ID of an existing Account for which to create the Customer Session.
Maximum length: 5000
body.expandarrayOptionalSpecifies which fields in the response should be expanded.
body.expand[]stringEach itemMaximum length: 5000

Response media type: application/json. The table describes the pinned successful response. Referenced models link to their complete fields.

FieldTypePresenceDescription and constraints
$ModelRootExpand Create a Customer Session — response body

Referenced models: Create a Customer Session — response body

716 more schemas are linked from the tables above, on the schema pages.

Create a Customer Session — response body
FieldTypePresenceDescription and constraints
$objectRootA Customer Session allows you to grant Stripe's frontend SDKs (like Stripe.js) client-side access
control over a Customer.

Related guides: [Customer Session with the Payment Element](/payments/accept-a-payment-deferred?platform=web&type=payment#save-payment-methods),
[Customer Session with the Pricing Table](/payments/checkout/pricing-table#customer-session),
[Customer Session with the Buy Button](/payment-links/buy-button#pass-an-existing-customer).
client_secretstringRequired within parentThe client secret of this Customer Session. Used on the client to set up secure access to the given `customer`.

The client secret can be used to provide access to `customer` from your frontend. It should not be stored, logged, or exposed to anyone other than the relevant customer. Make sure that you have TLS enabled on any page that includes the client secret.
Maximum length: 5000
componentsModelOptionalExpand Create a Customer Session — response body — components
createdJSONRequired within parent
created (anyOf 1)integerAlternativeTime at which the object was created. Measured in seconds since the Unix epoch.
Format: unix-time
created (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
customerJSONRequired within parentThe Customer the Customer Session was created for.
customer (anyOf 1)stringAlternativeMaximum length: 5000
customer (anyOf 2)ModelAlternativeExpand Create a customer — response body
customer_accountJSONOptional
customer_account (anyOf 1)stringAlternativeThe Account that the Customer Session was created for.
Maximum length: 5000
customer_account (anyOf 2)nullAlternative
expires_atJSONRequired within parent
expires_at (anyOf 1)integerAlternativeThe timestamp at which this Customer Session will expire.
Format: unix-time
expires_at (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
livemodebooleanRequired within parentIf the object exists in live mode, the value is `true`. If the object exists in test mode, the value is `false`.
objectstringRequired within parentString representing the object's type. Objects of the same type share the same value.
Known values: customer_session

Referenced models: Create a customer — response body, Create a Customer Session — response body — components

Create a Customer Session — response body — components
FieldTypePresenceDescription and constraints
$objectRootConfiguration for the components supported by this Customer Session.
active_entitlementsModelRequired within parentExpand Create a Customer Session — response body — components active entitlements
buy_buttonModelRequired within parentExpand Create a Customer Session — response body — components buy button
customer_portalModelRequired within parentExpand Create a Customer Session — response body — components customer portal
customer_sheetModelRequired within parentExpand Create a Customer Session — response body — components customer sheet
mobile_payment_elementModelRequired within parentExpand Create a Customer Session — response body — components mobile payment element
payment_elementModelRequired within parentExpand Create a Customer Session — response body — components payment element
pricing_tableModelRequired within parentExpand Create a Customer Session — response body — components pricing table

Referenced models: Create a Customer Session — response body — components active entitlements, Create a Customer Session — response body — components buy button, Create a Customer Session — response body — components customer portal, Create a Customer Session — response body — components customer sheet, Create a Customer Session — response body — components mobile payment element, Create a Customer Session — response body — components payment element, Create a Customer Session — response body — components pricing table

Create a Location — response body — address
FieldTypePresenceDescription and constraints
$objectRoot
cityJSONOptional
city (anyOf 1)stringAlternativeCity, district, suburb, town, or village.
Maximum length: 5000
city (anyOf 2)nullAlternative
countryJSONOptional
country (anyOf 1)stringAlternativeTwo-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
Maximum length: 5000
country (anyOf 2)nullAlternative
line1JSONOptional
line1 (anyOf 1)stringAlternativeAddress line 1, such as the street, PO Box, or company name.
Maximum length: 5000
line1 (anyOf 2)nullAlternative
line2JSONOptional
line2 (anyOf 1)stringAlternativeAddress line 2, such as the apartment, suite, unit, or building.
Maximum length: 5000
line2 (anyOf 2)nullAlternative
postal_codeJSONOptional
postal_code (anyOf 1)stringAlternativeZIP or postal code.
Maximum length: 5000
postal_code (anyOf 2)nullAlternative
stateJSONOptional
state (anyOf 1)stringAlternativeState, county, province, or region ([ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2)).
Maximum length: 5000
state (anyOf 2)nullAlternative
Retrieve a cash balance — response body
FieldTypePresenceDescription and constraints
$objectRootA customer's `Cash balance` represents real funds. Customers can add funds to their cash balance by sending a bank transfer. These funds can be used for payment and can eventually be paid out to your bank account.
availableJSONOptional
available (anyOf 1)objectAlternativeA hash of all cash balances available to this customer. You cannot delete a customer with any cash balances, even if the balance is 0. Amounts are represented in the [smallest currency unit](https://docs.stripe.com/currencies#zero-decimal).
Additional keys: see wildcard field
available (anyOf 1).*JSONAdditional keys
available (anyOf 1).* (anyOf 1)integerAlternative
available (anyOf 1).* (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
available (anyOf 2)nullAlternative
customerstringRequired within parentThe ID of the customer whose cash balance this object represents.
Maximum length: 5000
customer_accountJSONOptional
customer_account (anyOf 1)stringAlternativeThe ID of an Account representing a customer whose cash balance this object represents.
Maximum length: 5000
customer_account (anyOf 2)nullAlternative
livemodebooleanRequired within parentIf the object exists in live mode, the value is `true`. If the object exists in test mode, the value is `false`.
objectstringRequired within parentString representing the object's type. Objects of the same type share the same value.
Known values: cash_balance
settingsModelRequired within parentExpand Retrieve a cash balance — response body — settings

Referenced models: Retrieve a cash balance — response body — settings

Create a customer — response body — tax
FieldTypePresenceDescription and constraints
$objectRoot
automatic_taxstringRequired within parentSurfaces if automatic tax computation is possible given the current customer location information.
Known values: failed, not_collecting, supported, unrecognized_location
ip_addressJSONOptional
ip_address (anyOf 1)stringAlternativeA recent IP address of the customer used for tax reporting and tax location inference.
Maximum length: 5000
ip_address (anyOf 2)nullAlternative
locationJSONOptional
location (anyOf 1)JSONAlternativeThe identified tax location of the customer.
location (anyOf 1) (anyOf 1)ModelAlternativeExpand Create a customer — response body — tax / location / The identified tax location of the customer / source: billing address, ip address, payment method, shipping destination
location (anyOf 2)nullAlternative
providerstringRequired within parentThe tax calculation provider used for location resolution. Defaults to `stripe` when not using a [third-party provider](/tax/third-party-apps).
Known values: anrok, avalara, sphere, stripe

Referenced models: Create a customer — response body — tax / location / The identified tax location of the customer / source: billing address, ip address, payment method, shipping destination

SDK function policy ID: stripe.postcustomersessions. Catalog operation: PostCustomerSessions. Rules can name either ID; function rules distinguish managed calls and conservatively cover raw calls sharing the route. Existing grant permissions and policy rules apply. wait() returns an immediate result or waits for a required approval; it never approves the request itself. Persist the approval ID to resume after a restart.

Provider errors retain their response; JSON decoding raises ProviderAPIError for provider failures. ManagedOperationError identifies contract/input/retention errors. See error handling and provider-specific behavior. Sensitive input may be refused before approval storage. A decoding error never resubmits a write.

Pinned headers: {"Stripe-Version": "2026-09-30.endive"}

Official provider source

Report an issue with this page

Necessary

Required for sign-in, security, authorization, and remembering your choices.

Always active

Analytics

Helps us understand which product and documentation features are useful.

Performance diagnostics

Uses performance tracing and privacy-masked session replay to diagnose problems.

You can change these choices at any time from Cookie settings.