Skip to main content
POST
Create a payment method session

Authorizations

Authorization
string
header
required

A secret key, sk_test_... or sk_live_...; a publishable key (pk_...) on the browser routes only

Body

application/json
customer
string<uuid>

A customer of your workspace the collected method will belong to.

payment_method_types
enum<string>[]

One type. card when omitted; us_bank_account collects a US account for ACH, acss_debit a Canadian one for a pre-authorized debit (EFT), which the workspace must be set up for; apple_pay or google_pay opens a wallet session, which needs amount.

Minimum array length: 1
Available options:
card,
us_bank_account,
acss_debit,
apple_pay,
google_pay
Example:
amount
integer

Required for a us_bank_account or acss_debit session without a customer (the amount the account holder authorizes) and for a wallet session (the amount the sheet shows), in the smallest unit of currency. The charge must match it.

Example:

21375

currency
enum<string>

With amount. USD for a US bank account, CAD for a Canadian one; USD or CAD for a wallet.

Available options:
USD,
usd,
CAD,
cad
Example:

"USD"

Response

The session, with its client secret

object
enum<string>
required
Available options:
payment_method_session
id
string
required
Example:

"pms_test_7Hs2kQ9mL1pXv4cR8tWzAbCd"

status
enum<string>
required
Available options:
requires_payment_method,
succeeded,
canceled,
expired
Example:

"requires_payment_method"

customer
string<uuid> | null
required
Example:

null

payment_method_types
enum<string>[]
required
Available options:
card,
us_bank_account,
acss_debit,
apple_pay,
google_pay
Example:
amount
integer | null
required

What a one-time bank debit will authorize, or what a wallet sheet shows, in the smallest unit of currency. Null on a card session and when a bank account is being saved.

Example:

null

currency
enum<string> | null
required

USD on a us_bank_account session, CAD on an acss_debit one, either on a wallet session.

Available options:
USD,
CAD
Example:

null

livemode
boolean
required
Example:

false

expires_at
string<date-time>
required
Example:

"2026-09-17T18:30:00.000Z"

canceled_at
string<date-time> | null
required
Example:

null

succeeded_at
string<date-time> | null
required
Example:

null

card
object | null
required

Set once the browser confirmed a card, or a wallet confirmed with its card.

Example:

null

us_bank_account
object | null
required

Set once the browser confirmed a US bank account.

Example:

null

acss_debit
object | null
required

Set once the browser confirmed a Canadian bank account.

Example:

null

ach_authorization
object | null
required

On a us_bank_account session: the authorization shown to the account holder, and when they accepted it.

Example:

null

pad_agreement
object | null
required

On an acss_debit session: the pre-authorized debit agreement shown to the account holder, and when they accepted it.

Example:

null

payment_method
string | null
required

The payment method your server created from this session, once it did.

Example:

null

created_at
string<date-time>
required
Example:

"2026-09-17T18:00:00.000Z"

client_secret
string
required

Returned only here. Hand it to the browser; never store it server-side.

Example:

"pms_test_7Hs2kQ9mL1pXv4cR8tWzAbCd_secret_9qmY2w6f0Rj8XpLs3vTb1nHc7KdGaZe4"