Sample - Stripe API
POST/v1/customers/{customer}/sources

Create a customer payment source

Creates and attaches a payment source to a customer. Supply a card, bank account, or token in the request body, and the new source becomes the default only when the customer does not already have a default source.

  • RetriesRetries up to 2×, 500ms backoff, 30s timeout.
  • IdempotentThe SDK sends Idempotency-Key, so a retried request is only applied once.

1 parameter · 6 body fields
customerstringrequired
The customer identifier to which the payment source will be attached.

Payment source details and optional metadata for attaching a card, bank account, or token to the customer.

alipay_accountstringoptional
A token returned by [Stripe.js](https://stripe.com/docs/js) representing the user’s Alipay account details.
bank_accountobjectoptional
Either a token, like the ones returned by [Stripe.js](https://stripe.com/docs/js), or a dictionary containing a user's bank account details.
cardobjectoptional
A token, like the ones returned by [Stripe.js](https://stripe.com/docs/js).
expandarray<string>optional
Specifies which fields in the response should be expanded.
metadataobjectoptional
Set of [key-value pairs](https://docs.stripe.com/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`.
sourcestringoptional
Please refer to full [documentation](https://api.stripe.com) instead.

2 status codes
200Returns the created payment source, which may be a card, bank account, account, or other supported source object.
business_profileobjectoptional
Business information about the account.
business_typestringoptional
The business type.
Allowed:companygovernment_entityindividualnon_profit
capabilitiesobjectoptional
charges_enabledbooleanoptional
Whether the account can process charges.
companyobjectoptional
controllerobjectoptional
countrystringoptional
The account's country.
createdintegeroptional
Time at which the account was connected. Measured in seconds since the Unix epoch.
default_currencystringoptional
Three-letter ISO currency code representing the default currency for the account. This must be a currency that [Stripe supports in the account's country](https://stripe.com/docs/payouts).
details_submittedbooleanoptional
Whether account details have been submitted. Accounts with Stripe Dashboard access, which includes Standard accounts, cannot receive payouts before this is true. Accounts where this is false should be directed to [an onboarding flow](/connect/onboarding) to finish submitting account details.
emailstringoptional
An email address associated with the account. It's not used for authentication and Stripe doesn't market to this field without explicit approval from the platform.
external_accountsobjectoptional
External accounts (bank accounts and debit cards) currently attached to this account. External accounts are only returned for requests where `controller[is_controller]` is true.
future_requirementsobjectoptional
groupsobjectoptional
The groups associated with the account.
idstringrequired
Unique identifier for the object.
individualobjectoptional
This is an object representing a person associated with a Stripe account. A platform can only access a subset of data in a person for an account where [account.controller.requirement_collection](/api/accounts/object#account_object-controller-requirement_collection) is `stripe`, which includes Standard and Express accounts, after creating an Account Link or Account Session to start Connect onboarding. See the [Standard onboarding](/connect/standard-accounts) or [Express onboarding](/connect/express-accounts) documentation for information about prefilling information and account onboarding steps. Learn more about [handling identity verification with the API](/connect/handling-api-verification#person-information).
metadataobjectoptional
Set of [key-value pairs](https://docs.stripe.com/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
objectstringrequired
String representing the object's type. Objects of the same type share the same value.
Allowed:account
payouts_enabledbooleanoptional
Whether the funds in this account can be paid out.
requirementsobjectoptional
settingsobjectoptional
Options for customizing how the account functions within Stripe.
tos_acceptanceobjectoptional
typestringoptional
The Stripe account type. Can be `standard`, `express`, `custom`, or `none`.
Allowed:customexpressnonestandard
defaultError response.
errorobjectrequired

Error handling

customer must identify the customer to which the source will be attached. Provide a supported source input such as card, bank_account, alipay_account, or source; card details require exp_month, exp_year, and number, while bank account details require account_number and country.