Create a PaymentMethod 

Payment Methods
Payment Methods
Create a PaymentMethod

Creates a PaymentMethod object. Read the Stripe.js reference to learn how to create PaymentMethods via Stripe.js.

Instead of creating a PaymentMethod directly, we recommend using the PaymentIntents API to accept a payment immediately or the SetupIntent API to collect payment method details ahead of a future payment.

Parameters

  • typeenumRequired

    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 are used to debit Canadian bank accounts through the Automated Clearing Settlement System (ACSS).

    affirm

    Affirm is a buy now, pay later payment method in the US.

    afterpay_clearpay

    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 is a digital wallet payment method used in China.

    alma

    Alma is a Buy Now, Pay Later payment method that lets customers pay in 2, 3, or 4 installments.

    amazon_pay

    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 is used to debit Australian bank accounts through the Bulk Electronic Clearing System (BECS).

    bacs_debit

    Bacs Direct Debit is used to debit UK bank accounts.

    bancontact

    Bancontact is a bank redirect payment method used in Belgium.

    billie

    Billie is a payment method.

    Show 40 more
  • billing_detailshash

    Billing information associated with the PaymentMethod that may be used or required by particular types of payment methods.

    • billing_details.addresshash

      Billing address.

      • billing_details.address.citystring

        City, district, suburb, town, or village.

      • billing_details.address.countrystring

        Two-letter country code (ISO 3166-1 alpha-2).

      • billing_details.address.line1string

        Address line 1 (e.g., street, PO Box, or company name).

      • billing_details.address.line2string

        Address line 2 (e.g., apartment, suite, unit, or building).

      • billing_details.address.postal_codestring

        ZIP or postal code.

      • billing_details.address.statestring

        State, county, province, or region.

    • billing_details.emailstring

      Email address.

    • billing_details.namestring

      Full name.

    • billing_details.phonestring

      Billing phone number (including extension).

    • billing_details.tax_idstring

      Taxpayer identification number. Used only for transactions between LATAM buyers and non-LATAM sellers.

  • metadatahash

    Set of key-value pairs 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.

More parameters

  • acss_debithash

    If this is an acss_debit PaymentMethod, this hash contains details about the ACSS Debit payment method.

    • acss_debit.account_numberstringRequired

      Customer’s bank account number.

    • acss_debit.institution_numberstringRequired

      Institution number of the customer’s bank.

    • acss_debit.transit_numberstringRequired

      Transit number of the customer’s bank.

  • affirmhash

    If this is an affirm PaymentMethod, this hash contains details about the Affirm payment method.

  • afterpay_clearpayhash

    If this is an AfterpayClearpay PaymentMethod, this hash contains details about the AfterpayClearpay payment method.

  • alipayhash

    If this is an Alipay PaymentMethod, this hash contains details about the Alipay payment method.

  • allow_redisplayenum

    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.

  • almahash

    If this is a Alma PaymentMethod, this hash contains details about the Alma payment method.

  • amazon_payhash

    If this is a AmazonPay PaymentMethod, this hash contains details about the AmazonPay payment method.

  • au_becs_debithash

    If this is an au_becs_debit PaymentMethod, this hash contains details about the bank account.

    • au_becs_debit.account_numberstringRequired

      The account number for the bank account.

    • au_becs_debit.bsb_numberstringRequired

      Bank-State-Branch number of the bank account.

  • bacs_debithash

    If this is a bacs_debit PaymentMethod, this hash contains details about the Bacs Direct Debit bank account.

    • bacs_debit.account_numberstring

      Account number of the bank account that the funds will be debited from.

    • bacs_debit.sort_codestring

      Sort code of the bank account. (e.g., 10-20-30)

  • bancontacthash

    If this is a bancontact PaymentMethod, this hash contains details about the Bancontact payment method.

  • billiehash

    If this is a billie PaymentMethod, this hash contains details about the Billie payment method.

  • blikhash

    If this is a blik PaymentMethod, this hash contains details about the BLIK payment method.

  • boletohash

    If this is a boleto PaymentMethod, this hash contains details about the Boleto payment method.

    • boleto.tax_idstringRequired

      The tax ID of the customer (CPF for individual consumers or CNPJ for businesses consumers)

  • cardhash

    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. We strongly recommend using Stripe.js instead of interacting with this API directly.

    • card.exp_monthintegerRequired

      Two-digit number representing the card’s expiration month.

    • card.exp_yearintegerRequired

      Four-digit number representing the card’s expiration year.

    • card.numberstringRequired

      The card number, as a string without any separators.

    • card.cvcstring

      The card’s CVC. It is highly recommended to always include this value.

    • card.networkshash

      Contains information about card networks used to process the payment.

      • card.networks.preferredenum

        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.

  • cashapphash

    If this is a cashapp PaymentMethod, this hash contains details about the Cash App Pay payment method.

  • cryptohash

    If this is a Crypto PaymentMethod, this hash contains details about the Crypto payment method.

  • customer_balancehash

    If this is a customer_balance PaymentMethod, this hash contains details about the CustomerBalance payment method.

  • epshash

    If this is an eps PaymentMethod, this hash contains details about the EPS payment method.

    • eps.bankstring

      The customer’s bank.

  • fpxhash

    If this is an fpx PaymentMethod, this hash contains details about the FPX payment method.

    • fpx.bankstringRequired

      The customer’s bank.

  • giropayhash

    If this is a giropay PaymentMethod, this hash contains details about the Giropay payment method.

  • grabpayhash

    If this is a grabpay PaymentMethod, this hash contains details about the GrabPay payment method.

  • idealhash

    If this is an ideal PaymentMethod, this hash contains details about the iDEAL payment method.

    • ideal.bankstring

      The customer’s bank. Only use this parameter for existing customers. Don’t use it for new customers.

  • interac_presenthashPreview feature

    If this is an interac_present PaymentMethod, this hash contains details about the Interac Present payment method.

  • kakao_payhash

    If this is a kakao_pay PaymentMethod, this hash contains details about the Kakao Pay payment method.

  • klarnahash

    If this is a klarna PaymentMethod, this hash contains details about the Klarna payment method.

    • klarna.dobhash

      Customer’s date of birth

      • klarna.dob.dayintegerRequired

        The day of birth, between 1 and 31.

      • klarna.dob.monthintegerRequired

        The month of birth, between 1 and 12.

      • klarna.dob.yearintegerRequired

        The four-digit year of birth.

  • konbinihash

    If this is a konbini PaymentMethod, this hash contains details about the Konbini payment method.

  • kr_cardhash

    If this is a kr_card PaymentMethod, this hash contains details about the Korean Card payment method.

  • linkhash

    If this is an Link PaymentMethod, this hash contains details about the Link payment method.

  • mobilepayhash

    If this is a mobilepay PaymentMethod, this hash contains details about the MobilePay payment method.

  • multibancohash

    If this is a multibanco PaymentMethod, this hash contains details about the Multibanco payment method.

  • naver_payhash

    If this is a naver_pay PaymentMethod, this hash contains details about the Naver Pay payment method.

    • naver_pay.fundingenum

      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_accounthash

    If this is an nz_bank_account PaymentMethod, this hash contains details about the nz_bank_account payment method.

    • nz_bank_account.account_numberstringRequired

      The account number for the bank account.

    • nz_bank_account.bank_codestringRequired

      The numeric code for the bank account’s bank.

    • nz_bank_account.branch_codestringRequired

      The numeric code for the bank account’s bank branch.

    • nz_bank_account.suffixstringRequired

      The suffix of the bank account number.

    • nz_bank_account.account_holder_namestring

      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.

  • oxxohash

    If this is an oxxo PaymentMethod, this hash contains details about the OXXO payment method.

  • p24hash

    If this is a p24 PaymentMethod, this hash contains details about the P24 payment method.

    • p24.bankenum

      The customer’s bank.

  • pay_by_bankhash

    If this is a pay_by_bank PaymentMethod, this hash contains details about the PayByBank payment method.

  • paycohash

    If this is a payco PaymentMethod, this hash contains details about the PAYCO payment method.

  • paynowhash

    If this is a paynow PaymentMethod, this hash contains details about the PayNow payment method.

  • paypalhash

    If this is a paypal PaymentMethod, this hash contains details about the PayPal payment method.

  • pixhash

    If this is a pix PaymentMethod, this hash contains details about the Pix payment method.

  • promptpayhash

    If this is a promptpay PaymentMethod, this hash contains details about the PromptPay payment method.

  • radar_optionshash

    Options to configure Radar. See Radar Session for more information.

    • radar_options.sessionstringsecret key only

      A Radar Session is a snapshot of the browser metadata and device details that help Radar make more accurate predictions on your payments.

  • revolut_payhash

    If this is a revolut_pay PaymentMethod, this hash contains details about the Revolut Pay payment method.

  • samsung_payhash

    If this is a samsung_pay PaymentMethod, this hash contains details about the SamsungPay payment method.

  • satispayhash

    If this is a satispay PaymentMethod, this hash contains details about the Satispay payment method.

  • sepa_debithash

    If this is a sepa_debit PaymentMethod, this hash contains details about the SEPA debit bank account.

    • sepa_debit.ibanstringRequired

      IBAN of the bank account.

  • soforthash

    If this is a sofort PaymentMethod, this hash contains details about the SOFORT payment method.

    • sofort.countryenumRequired

      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

  • swishhash

    If this is a swish PaymentMethod, this hash contains details about the Swish payment method.

  • twinthash

    If this is a TWINT PaymentMethod, this hash contains details about the TWINT payment method.

  • us_bank_accounthash

    If this is an us_bank_account PaymentMethod, this hash contains details about the US bank account payment method.

    • us_bank_account.account_holder_typeenum

      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_numberstring

      Account number of the bank account.

    • us_bank_account.account_typeenum

      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_accountstring

      The ID of a Financial Connections Account to use as a payment method.

    • us_bank_account.routing_numberstring

      Routing number of the bank account.

  • wechat_payhash

    If this is an wechat_pay PaymentMethod, this hash contains details about the wechat_pay payment method.

  • ziphash

    If this is a zip PaymentMethod, this hash contains details about the Zip payment method.

Returns

Returns a PaymentMethod object.

POST /v1/payment_methods
Stripe.api_key = 'sk_test_BQokikJ...2HlWgH4olfQ2sk_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'},
})
Response
{
"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": {}
}
}