--- title: Create a PaymentMethod route: /api/payment_methods/create --- # Create a PaymentMethod ## Parameters Creates a PaymentMethod object. Read the [Stripe.js reference](https://stripe.com/docs/stripe-js/reference#stripe-create-payment-method) to learn how to create PaymentMethods via Stripe.js. Instead of creating a PaymentMethod directly, we recommend using the [PaymentIntents](https://stripe.com/docs/payments/accept-a-payment) API to accept a payment immediately or the [SetupIntent](https://stripe.com/docs/payments/save-and-reuse) API to collect payment method details ahead of a future payment. ## Returns Returns a PaymentMethod object. - `type` (enum, required) The type of the PaymentMethod. An additional hash is included on the PaymentMethod with a name matching this value. It contains additional information specific to the PaymentMethod type. Possible enum values: - `acss_debit` [Pre-authorized debit payments](https://stripe.com/docs/payments/acss-debit) are used to debit Canadian bank accounts through the Automated Clearing Settlement System (ACSS). - `affirm` [Affirm](https://stripe.com/docs/payments/affirm) is a buy now, pay later payment method in the US. - `afterpay_clearpay` [Afterpay / Clearpay](https://stripe.com/docs/payments/afterpay-clearpay) is a buy now, pay later payment method used in Australia, Canada, France, New Zealand, Spain, the UK, and the US. - `alipay` [Alipay](https://stripe.com/docs/payments/alipay) is a digital wallet payment method used in China. - `alma` [Alma](https://stripe.com/docs/payments/alma) is a Buy Now, Pay Later payment method that lets customers pay in 2, 3, or 4 installments. - `amazon_pay` [Amazon Pay](https://stripe.com/docs/payments/amazon-pay) is a Wallet payment method that lets hundreds of millions of Amazon customers pay their way, every day. - `au_becs_debit` [BECS Direct Debit](https://stripe.com/docs/payments/au-becs-debit) is used to debit Australian bank accounts through the Bulk Electronic Clearing System (BECS). - `bacs_debit` [Bacs Direct Debit](https://stripe.com/docs/payments/payment-methods/bacs-debit) is used to debit UK bank accounts. - `bancontact` [Bancontact](https://stripe.com/docs/payments/bancontact) is a bank redirect payment method used in Belgium. - `billie` [Billie](https://stripe.com/docs/payments/billie) is a payment method. - `blik` [BLIK](https://stripe.com/docs/payments/blik) is a single-use payment method common in Poland. - `boleto` [Boleto](https://stripe.com/docs/payments/boleto) is a voucher-based payment method used in Brazil. - `card` [Card payments](https://stripe.com/docs/payments/payment-methods/overview#cards) are supported through many networks, card brands, and select Link funding sources. - `card_present` [Stripe Terminal](https://stripe.com/docs/terminal/payments/collect-card-payment) is used to collect in-person card payments. - `cashapp` [Cash App Pay](https://stripe.com/docs/payments/cash-app-pay) enables customers to frictionlessly authenticate payments in the Cash App using their stored balance or linked card. - `crypto` Crypto is a payment method. - `customer_balance` Uses a customer’s [cash balance](https://stripe.com/docs/payments/customer-balance) for the payment. - `eps` [EPS](https://stripe.com/docs/payments/eps) is an Austria-based bank redirect payment method. - `fpx` [FPX](https://stripe.com/docs/payments/fpx) is a Malaysia-based bank redirect payment method. - `giropay` [giropay](https://stripe.com/docs/payments/giropay) is a German bank redirect payment method. - `grabpay` [GrabPay](https://stripe.com/docs/payments/grabpay) is a digital wallet payment method used in Southeast Asia. - `ideal` [iDEAL](https://stripe.com/docs/payments/ideal) is a Netherlands-based bank redirect payment method. - `kakao_pay` [Kakao Pay](https://stripe.com/docs/payments/kakao-pay/accept-a-payment) is a digital wallet payment method used in South Korea. - `klarna` [Klarna](https://stripe.com/docs/payments/klarna) is a global buy now, pay later payment method. - `konbini` [Konbini](https://stripe.com/docs/payments/konbini) is a cash-based voucher payment method used in Japan. - `kr_card` [Korean cards](https://stripe.com/docs/payments/kr-card/accept-a-payment) enables customers to accept local credit and debit cards in South Korea. - `link` [Link](https://stripe.com/docs/payments/link) allows customers to pay with their saved payment details. - `mobilepay` [MobilePay](https://stripe.com/docs/payments/mobilepay) is a Nordic card-passthrough wallet payment method where customers authorize the payment in the MobilePay application. - `multibanco` [Multibanco](https://stripe.com/docs/payments/multibanco) is a voucher payment method - `naver_pay` [Naver Pay](https://stripe.com/docs/payments/naver-pay/accept-a-payment) is a digital wallet payment method used in South Korea. - `nz_bank_account` [New Zealand BECS Direct Debit](https://stripe.com/docs/payments/nz-bank-account) is used to debit New Zealand bank accounts through the Bulk Electronic Clearing System (BECS). - `oxxo` [OXXO](https://stripe.com/docs/payments/oxxo) is a cash-based voucher payment method used in Mexico. - `p24` [Przelewy24](https://stripe.com/docs/payments/p24) is a bank redirect payment method used in Poland. - `pay_by_bank` [Pay By Bank](https://stripe.com/docs/payments/pay-by-bank) is an open banking payment method in the UK. - `payco` [PAYCO](https://stripe.com/docs/payments/payco/accept-a-payment) is a digital wallet payment method used in South Korea. - `paynow` [PayNow](https://stripe.com/docs/payments/paynow) is a QR code payment method used in Singapore. - `paypal` [PayPal](https://stripe.com/docs/payments/paypal) is an online wallet and redirect payment method commonly used in Europe. - `pix` [Pix](https://stripe.com/docs/payments/pix) is an instant bank transfer payment method in Brazil. - `promptpay` [PromptPay](https://stripe.com/docs/payments/promptpay) is an instant funds transfer service popular in Thailand. - `revolut_pay` [Revolut Pay](https://stripe.com/docs/payments/revolut-pay) is a digital wallet payment method used in the United Kingdom. - `samsung_pay` [Samsung Pay](https://stripe.com/docs/payments/samsung-pay/accept-a-payment) is a digital wallet payment method used in South Korea. - `satispay` [Satispay](https://stripe.com/docs/payments/satispay) is a payment method. - `sepa_debit` [SEPA Direct Debit](https://stripe.com/docs/payments/sepa-debit) is used to debit bank accounts within the Single Euro Payments Area (SEPA) region. - `sofort` [Sofort](https://stripe.com/docs/payments/sofort) is a bank redirect payment method used in Europe. - `swish` [Swish](https://stripe.com/docs/payments/swish) is a Swedish wallet payment method where customers authorize the payment in the Swish application. - `twint` [TWINT](https://stripe.com/docs/payments/twint) is a single-use payment method used in Switzerland. - `us_bank_account` [ACH Direct Debit](https://stripe.com/docs/payments/ach-direct-debit) is used to debit US bank accounts through the Automated Clearing House (ACH) payments system. - `wechat_pay` [WeChat Pay](https://stripe.com/docs/payments/wechat-pay) is a digital wallet payment method based in China. - `zip` [Zip](https://stripe.com/docs/payments/zip) is a Buy now, pay later Payment Method - `acss_debit` (object, optional) If this is an `acss_debit` PaymentMethod, this hash contains details about the ACSS Debit payment method. - `acss_debit.account_number` (string, required) Customer’s bank account number. - `acss_debit.institution_number` (string, required) Institution number of the customer’s bank. - `acss_debit.transit_number` (string, required) Transit number of the customer’s bank. - `affirm` (object, optional) If this is an `affirm` PaymentMethod, this hash contains details about the Affirm payment method. - `afterpay_clearpay` (object, optional) If this is an `AfterpayClearpay` PaymentMethod, this hash contains details about the AfterpayClearpay payment method. - `alipay` (object, optional) If this is an `Alipay` PaymentMethod, this hash contains details about the Alipay payment method. - `allow_redisplay` (enum, optional) This field indicates whether this payment method can be shown again to its customer in a checkout flow. Stripe products such as Checkout and Elements use this field to determine whether a payment method can be shown as a saved payment method in a checkout flow. The field defaults to `unspecified`. Possible enum values: - `always` Use `always` to indicate that this payment method can always be shown to a customer in a checkout flow. - `limited` Use `limited` to indicate that this payment method can’t always be shown to a customer in a checkout flow. For example, it can only be shown in the context of a specific subscription. - `unspecified` This is the default value for payment methods where `allow_redisplay` wasn’t set. - `alma` (object, optional) If this is a Alma PaymentMethod, this hash contains details about the Alma payment method. - `amazon_pay` (object, optional) If this is a AmazonPay PaymentMethod, this hash contains details about the AmazonPay payment method. - `au_becs_debit` (object, optional) If this is an `au_becs_debit` PaymentMethod, this hash contains details about the bank account. - `au_becs_debit.account_number` (string, required) The account number for the bank account. - `au_becs_debit.bsb_number` (string, required) Bank-State-Branch number of the bank account. - `bacs_debit` (object, optional) If this is a `bacs_debit` PaymentMethod, this hash contains details about the Bacs Direct Debit bank account. - `bacs_debit.account_number` (string, optional) Account number of the bank account that the funds will be debited from. - `bacs_debit.sort_code` (string, optional) Sort code of the bank account. (e.g., `10-20-30`) - `bancontact` (object, optional) If this is a `bancontact` PaymentMethod, this hash contains details about the Bancontact payment method. - `billie` (object, optional) If this is a `billie` PaymentMethod, this hash contains details about the Billie payment method. - `billing_details` (object, optional) Billing information associated with the PaymentMethod that may be used or required by particular types of payment methods. - `billing_details.address` (object, optional) Billing address. - `billing_details.address.city` (string, optional) City, district, suburb, town, or village. - `billing_details.address.country` (string, optional) Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)). - `billing_details.address.line1` (string, optional) Address line 1 (e.g., street, PO Box, or company name). - `billing_details.address.line2` (string, optional) Address line 2 (e.g., apartment, suite, unit, or building). - `billing_details.address.postal_code` (string, optional) ZIP or postal code. - `billing_details.address.state` (string, optional) State, county, province, or region. - `billing_details.email` (string, optional) Email address. - `billing_details.name` (string, optional) Full name. - `billing_details.phone` (string, optional) Billing phone number (including extension). - `billing_details.tax_id` (string, optional) Taxpayer identification number. Used only for transactions between LATAM buyers and non-LATAM sellers. - `blik` (object, optional) If this is a `blik` PaymentMethod, this hash contains details about the BLIK payment method. - `boleto` (object, optional) If this is a `boleto` PaymentMethod, this hash contains details about the Boleto payment method. - `boleto.tax_id` (string, required) The tax ID of the customer (CPF for individual consumers or CNPJ for businesses consumers) - `card` (object, optional) If this is a `card` PaymentMethod, this hash contains the user’s card details. For backwards compatibility, you can alternatively provide a Stripe token (e.g., for Apple Pay, Amex Express Checkout, or legacy Checkout) into the card hash with format `card: {token: "tok_visa"}`. When providing a card number, you must meet the requirements for [PCI compliance](https://stripe.com/docs/security#validating-pci-compliance). We strongly recommend using Stripe.js instead of interacting with this API directly. - `card.exp_month` (integer, required) Two-digit number representing the card’s expiration month. - `card.exp_year` (integer, required) Four-digit number representing the card’s expiration year. - `card.number` (string, required) The card number, as a string without any separators. - `card.cvc` (string, optional) The card’s CVC. It is highly recommended to always include this value. - `card.networks` (object, optional) Contains information about card networks used to process the payment. - `card.networks.preferred` (enum, optional) The customer’s preferred card network for co-branded cards. Supports `cartes_bancaires`, `mastercard`, or `visa`. Selection of a network that does not apply to the card will be stored as `invalid_preference` on the card. - `cashapp` (object, optional) If this is a `cashapp` PaymentMethod, this hash contains details about the Cash App Pay payment method. - `crypto` (object, optional) If this is a Crypto PaymentMethod, this hash contains details about the Crypto payment method. - `customer_balance` (object, optional) If this is a `customer_balance` PaymentMethod, this hash contains details about the CustomerBalance payment method. - `eps` (object, optional) If this is an `eps` PaymentMethod, this hash contains details about the EPS payment method. - `eps.bank` (string, optional) The customer’s bank. - `fpx` (object, optional) If this is an `fpx` PaymentMethod, this hash contains details about the FPX payment method. - `fpx.bank` (string, required) The customer’s bank. - `giropay` (object, optional) If this is a `giropay` PaymentMethod, this hash contains details about the Giropay payment method. - `grabpay` (object, optional) If this is a `grabpay` PaymentMethod, this hash contains details about the GrabPay payment method. - `ideal` (object, optional) If this is an `ideal` PaymentMethod, this hash contains details about the iDEAL payment method. - `ideal.bank` (string, optional) The customer’s bank. Only use this parameter for existing customers. Don’t use it for new customers. - `kakao_pay` (object, optional) If this is a `kakao_pay` PaymentMethod, this hash contains details about the Kakao Pay payment method. - `klarna` (object, optional) If this is a `klarna` PaymentMethod, this hash contains details about the Klarna payment method. - `klarna.dob` (object, optional) Customer’s date of birth - `klarna.dob.day` (integer, required) The day of birth, between 1 and 31. - `klarna.dob.month` (integer, required) The month of birth, between 1 and 12. - `klarna.dob.year` (integer, required) The four-digit year of birth. - `konbini` (object, optional) If this is a `konbini` PaymentMethod, this hash contains details about the Konbini payment method. - `kr_card` (object, optional) If this is a `kr_card` PaymentMethod, this hash contains details about the Korean Card payment method. - `link` (object, optional) If this is an `Link` PaymentMethod, this hash contains details about the Link payment method. - `metadata` (object, optional) 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`. - `mobilepay` (object, optional) If this is a `mobilepay` PaymentMethod, this hash contains details about the MobilePay payment method. - `multibanco` (object, optional) If this is a `multibanco` PaymentMethod, this hash contains details about the Multibanco payment method. - `naver_pay` (object, optional) If this is a `naver_pay` PaymentMethod, this hash contains details about the Naver Pay payment method. - `naver_pay.funding` (enum, optional) Whether to use Naver Pay points or a card to fund this transaction. If not provided, this defaults to `card`. Possible enum values: - `card` Use a card to fund this transaction. - `points` Use Naver Pay points to fund this transaction. - `nz_bank_account` (object, optional) If this is an nz_bank_account PaymentMethod, this hash contains details about the nz_bank_account payment method. - `nz_bank_account.account_number` (string, required) The account number for the bank account. - `nz_bank_account.bank_code` (string, required) The numeric code for the bank account’s bank. - `nz_bank_account.branch_code` (string, required) The numeric code for the bank account’s bank branch. - `nz_bank_account.suffix` (string, required) The suffix of the bank account number. - `nz_bank_account.account_holder_name` (string, optional) The name on the bank account. Only required if the account holder name is different from the name of the authorized signatory collected in the PaymentMethod’s billing details. - `oxxo` (object, optional) If this is an `oxxo` PaymentMethod, this hash contains details about the OXXO payment method. - `p24` (object, optional) If this is a `p24` PaymentMethod, this hash contains details about the P24 payment method. - `p24.bank` (enum, optional) The customer’s bank. - `pay_by_bank` (object, optional) If this is a `pay_by_bank` PaymentMethod, this hash contains details about the PayByBank payment method. - `payco` (object, optional) If this is a `payco` PaymentMethod, this hash contains details about the PAYCO payment method. - `paynow` (object, optional) If this is a `paynow` PaymentMethod, this hash contains details about the PayNow payment method. - `paypal` (object, optional) If this is a `paypal` PaymentMethod, this hash contains details about the PayPal payment method. - `pix` (object, optional) If this is a `pix` PaymentMethod, this hash contains details about the Pix payment method. - `promptpay` (object, optional) If this is a `promptpay` PaymentMethod, this hash contains details about the PromptPay payment method. - `radar_options` (object, optional) Options to configure Radar. See [Radar Session](https://stripe.com/docs/radar/radar-session) for more information. - `radar_options.session` (string, optional) A [Radar Session](https://stripe.com/docs/radar/radar-session) is a snapshot of the browser metadata and device details that help Radar make more accurate predictions on your payments. - `revolut_pay` (object, optional) If this is a `revolut_pay` PaymentMethod, this hash contains details about the Revolut Pay payment method. - `samsung_pay` (object, optional) If this is a `samsung_pay` PaymentMethod, this hash contains details about the SamsungPay payment method. - `satispay` (object, optional) If this is a `satispay` PaymentMethod, this hash contains details about the Satispay payment method. - `sepa_debit` (object, optional) If this is a `sepa_debit` PaymentMethod, this hash contains details about the SEPA debit bank account. - `sepa_debit.iban` (string, required) IBAN of the bank account. - `sofort` (object, optional) If this is a `sofort` PaymentMethod, this hash contains details about the SOFORT payment method. - `sofort.country` (enum, required) Two-letter ISO code representing the country the bank account is located in. Possible enum values: - `AT` Austria - `BE` Belgium - `DE` Germany - `ES` Spain - `IT` Italy - `NL` Netherlands - `swish` (object, optional) If this is a `swish` PaymentMethod, this hash contains details about the Swish payment method. - `twint` (object, optional) If this is a TWINT PaymentMethod, this hash contains details about the TWINT payment method. - `us_bank_account` (object, optional) If this is an `us_bank_account` PaymentMethod, this hash contains details about the US bank account payment method. - `us_bank_account.account_holder_type` (enum, optional) Account holder type: individual or company. Possible enum values: - `company` Account belongs to a company - `individual` Account belongs to an individual - `us_bank_account.account_number` (string, optional) Account number of the bank account. - `us_bank_account.account_type` (enum, optional) Account type: checkings or savings. Defaults to checking if omitted. Possible enum values: - `checking` Bank account type is checking - `savings` Bank account type is savings - `us_bank_account.financial_connections_account` (string, optional) The ID of a Financial Connections Account to use as a payment method. - `us_bank_account.routing_number` (string, optional) Routing number of the bank account. - `wechat_pay` (object, optional) If this is an `wechat_pay` PaymentMethod, this hash contains details about the wechat_pay payment method. - `zip` (object, optional) If this is a `zip` PaymentMethod, this hash contains details about the Zip payment method. Code snippet calling post /v1/payment_methods in curl. ```curl curl https://api.stripe.com/v1/payment_methods \ -u "sk_test_BQokikJOvBiI2HlWgH4olfQ2:" \ -d type=us_bank_account \ -d "us_bank_account[account_holder_type]"=individual \ -d "us_bank_account[account_number]"=000123456789 \ -d "us_bank_account[routing_number]"=110000000 \ -d "billing_details[name]"="John Doe" ``` Code snippet calling post /v1/payment_methods in cli. ```cli stripe payment_methods create \ --type=us_bank_account \ -d "us_bank_account[account_holder_type]"=individual \ -d "us_bank_account[account_number]"=000123456789 \ -d "us_bank_account[routing_number]"=110000000 \ -d "billing_details[name]"="John Doe" ``` Code snippet calling post /v1/payment_methods in ruby. ```ruby Stripe.api_key = 'sk_test_BQokikJOvBiI2HlWgH4olfQ2' payment_method = Stripe::PaymentMethod.create({ type: 'us_bank_account', us_bank_account: { account_holder_type: 'individual', account_number: '000123456789', routing_number: '110000000', }, billing_details: {name: 'John Doe'}, }) ``` Code snippet calling post /v1/payment_methods in python. ```python import stripe stripe.api_key = "sk_test_BQokikJOvBiI2HlWgH4olfQ2" payment_method = stripe.PaymentMethod.create( type="us_bank_account", us_bank_account={ "account_holder_type": "individual", "account_number": "000123456789", "routing_number": "110000000", }, billing_details={"name": "John Doe"}, ) ``` Code snippet calling post /v1/payment_methods in php. ```php $stripe = new \Stripe\StripeClient('sk_test_BQokikJOvBiI2HlWgH4olfQ2'); $paymentMethod = $stripe->paymentMethods->create([ 'type' => 'us_bank_account', 'us_bank_account' => [ 'account_holder_type' => 'individual', 'account_number' => '000123456789', 'routing_number' => '110000000', ], 'billing_details' => ['name' => 'John Doe'], ]); ``` Code snippet calling post /v1/payment_methods in java. ```java Stripe.apiKey = "sk_test_BQokikJOvBiI2HlWgH4olfQ2"; PaymentMethodCreateParams params = PaymentMethodCreateParams.builder() .setType(PaymentMethodCreateParams.Type.US_BANK_ACCOUNT) .setUsBankAccount( PaymentMethodCreateParams.UsBankAccount.builder() .setAccountHolderType( PaymentMethodCreateParams.UsBankAccount.AccountHolderType.INDIVIDUAL ) .setAccountNumber("000123456789") .setRoutingNumber("110000000") .build() ) .setBillingDetails( PaymentMethodCreateParams.BillingDetails.builder().setName("John Doe").build() ) .build(); PaymentMethod paymentMethod = PaymentMethod.create(params); ``` Code snippet calling post /v1/payment_methods in node. ```node const stripe = require('stripe')('sk_test_BQokikJOvBiI2HlWgH4olfQ2'); const paymentMethod = await stripe.paymentMethods.create({ type: 'us_bank_account', us_bank_account: { account_holder_type: 'individual', account_number: '000123456789', routing_number: '110000000', }, billing_details: { name: 'John Doe', }, }); ``` Code snippet calling post /v1/payment_methods in go. ```go stripe.Key = "sk_test_BQokikJOvBiI2HlWgH4olfQ2" params := &stripe.PaymentMethodParams{ Type: stripe.String(stripe.PaymentMethodTypeUSBankAccount), USBankAccount: &stripe.PaymentMethodUSBankAccountParams{ AccountHolderType: stripe.String(stripe.PaymentMethodUSBankAccountAccountHolderTypeIndividual), AccountNumber: stripe.String("000123456789"), RoutingNumber: stripe.String("110000000"), }, BillingDetails: &stripe.PaymentMethodBillingDetailsParams{ Name: stripe.String("John Doe"), }, }; result, err := paymentmethod.New(params); ``` Code snippet calling post /v1/payment_methods in dotnet. ```dotnet StripeConfiguration.ApiKey = "sk_test_BQokikJOvBiI2HlWgH4olfQ2"; var options = new PaymentMethodCreateOptions { Type = "us_bank_account", UsBankAccount = new PaymentMethodUsBankAccountOptions { AccountHolderType = "individual", AccountNumber = "000123456789", RoutingNumber = "110000000", }, BillingDetails = new PaymentMethodBillingDetailsOptions { Name = "John Doe" }, }; var service = new PaymentMethodService(); PaymentMethod paymentMethod = service.Create(options); ``` ### Response ```json { "id": "pm_1Q0PsIJvEtkwdCNYMSaVuRz6", "object": "payment_method", "allow_redisplay": "unspecified", "billing_details": { "address": { "city": null, "country": null, "line1": null, "line2": null, "postal_code": null, "state": null }, "email": null, "name": "John Doe", "phone": null }, "created": 1726673582, "customer": null, "livemode": false, "metadata": {}, "type": "us_bank_account", "us_bank_account": { "account_holder_type": "individual", "account_type": "checking", "bank_name": "STRIPE TEST BANK", "financial_connections_account": null, "fingerprint": "LstWJFsCK7P349Bg", "last4": "6789", "networks": { "preferred": "ach", "supported": [ "ach" ] }, "routing_number": "110000000", "status_details": {} } } ```