Class: Stripe::PaymentMethod

Inherits:
APIResource show all
Extended by:
APIOperations::Create, APIOperations::List
Includes:
APIOperations::Save
Defined in:
lib/stripe/resources/payment_method.rb

Overview

PaymentMethod objects represent your customer’s payment instruments. You can use them with [PaymentIntents](stripe.com/docs/payments/payment-intents) to collect payments or save them to Customer objects to store instrument details for future payments.

Related guides: [Payment Methods](stripe.com/docs/payments/payment-methods) and [More Payment Scenarios](stripe.com/docs/payments/more-payment-scenarios).

Defined Under Namespace

Classes: AcssDebit, Affirm, AfterpayClearpay, Alipay, Alma, AmazonPay, AuBecsDebit, BacsDebit, Bancontact, Billie, BillingDetails, Blik, Boleto, Card, CardPresent, Cashapp, Crypto, Custom, CustomerBalance, Eps, Fpx, Giropay, Grabpay, Ideal, InteracPresent, KakaoPay, Klarna, Konbini, KrCard, Link, MbWay, Mobilepay, Multibanco, NaverPay, NzBankAccount, Oxxo, P24, PayByBank, Payco, Paynow, Paypal, Pix, Promptpay, RadarOptions, RevolutPay, SamsungPay, Satispay, SepaDebit, Sofort, Swish, Twint, UsBankAccount, WechatPay, Zip

Constant Summary collapse

OBJECT_NAME =
"payment_method"

Constants inherited from StripeObject

StripeObject::RESERVED_FIELD_NAMES

Instance Attribute Summary collapse

Attributes inherited from APIResource

#save_with_parent

Attributes inherited from StripeObject

#last_response

Class Method Summary collapse

Instance Method Summary collapse

Methods included from APIOperations::Create

create

Methods included from APIOperations::List

list

Methods included from APIOperations::Save

included, #save

Methods inherited from APIResource

class_name, custom_method, #refresh, #request_stripe_object, resource_url, #resource_url, retrieve, save_nested_resource

Methods included from APIOperations::Request

included

Methods inherited from StripeObject

#==, #[], #[]=, #_get_inner_class_type, additive_object_param, additive_object_param?, #as_json, construct_from, #deleted?, #dirty!, #each, #eql?, #hash, #initialize, #inspect, #keys, #marshal_dump, #marshal_load, protected_fields, #serialize_params, #to_hash, #to_json, #to_s, #update_attributes, #values

Constructor Details

This class inherits a constructor from Stripe::StripeObject

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Stripe::StripeObject

Instance Attribute Details

#acss_debitObject (readonly)

Attribute for field acss_debit



1391
1392
1393
# File 'lib/stripe/resources/payment_method.rb', line 1391

def acss_debit
  @acss_debit
end

#affirmObject (readonly)

Attribute for field affirm



1393
1394
1395
# File 'lib/stripe/resources/payment_method.rb', line 1393

def affirm
  @affirm
end

#afterpay_clearpayObject (readonly)

Attribute for field afterpay_clearpay



1395
1396
1397
# File 'lib/stripe/resources/payment_method.rb', line 1395

def afterpay_clearpay
  @afterpay_clearpay
end

#alipayObject (readonly)

Attribute for field alipay



1397
1398
1399
# File 'lib/stripe/resources/payment_method.rb', line 1397

def alipay
  @alipay
end

#allow_redisplayObject (readonly)

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”.



1399
1400
1401
# File 'lib/stripe/resources/payment_method.rb', line 1399

def allow_redisplay
  @allow_redisplay
end

#almaObject (readonly)

Attribute for field alma



1401
1402
1403
# File 'lib/stripe/resources/payment_method.rb', line 1401

def alma
  @alma
end

#amazon_payObject (readonly)

Attribute for field amazon_pay



1403
1404
1405
# File 'lib/stripe/resources/payment_method.rb', line 1403

def amazon_pay
  @amazon_pay
end

#au_becs_debitObject (readonly)

Attribute for field au_becs_debit



1405
1406
1407
# File 'lib/stripe/resources/payment_method.rb', line 1405

def au_becs_debit
  @au_becs_debit
end

#bacs_debitObject (readonly)

Attribute for field bacs_debit



1407
1408
1409
# File 'lib/stripe/resources/payment_method.rb', line 1407

def bacs_debit
  @bacs_debit
end

#bancontactObject (readonly)

Attribute for field bancontact



1409
1410
1411
# File 'lib/stripe/resources/payment_method.rb', line 1409

def bancontact
  @bancontact
end

#billieObject (readonly)

Attribute for field billie



1411
1412
1413
# File 'lib/stripe/resources/payment_method.rb', line 1411

def billie
  @billie
end

#billing_detailsObject (readonly)

Attribute for field billing_details



1413
1414
1415
# File 'lib/stripe/resources/payment_method.rb', line 1413

def billing_details
  @billing_details
end

#blikObject (readonly)

Attribute for field blik



1415
1416
1417
# File 'lib/stripe/resources/payment_method.rb', line 1415

def blik
  @blik
end

#boletoObject (readonly)

Attribute for field boleto



1417
1418
1419
# File 'lib/stripe/resources/payment_method.rb', line 1417

def boleto
  @boleto
end

#cardObject (readonly)

Attribute for field card



1419
1420
1421
# File 'lib/stripe/resources/payment_method.rb', line 1419

def card
  @card
end

#card_presentObject (readonly)

Attribute for field card_present



1421
1422
1423
# File 'lib/stripe/resources/payment_method.rb', line 1421

def card_present
  @card_present
end

#cashappObject (readonly)

Attribute for field cashapp



1423
1424
1425
# File 'lib/stripe/resources/payment_method.rb', line 1423

def cashapp
  @cashapp
end

#createdObject (readonly)

Time at which the object was created. Measured in seconds since the Unix epoch.



1425
1426
1427
# File 'lib/stripe/resources/payment_method.rb', line 1425

def created
  @created
end

#cryptoObject (readonly)

Attribute for field crypto



1427
1428
1429
# File 'lib/stripe/resources/payment_method.rb', line 1427

def crypto
  @crypto
end

#customObject (readonly)

Attribute for field custom



1429
1430
1431
# File 'lib/stripe/resources/payment_method.rb', line 1429

def custom
  @custom
end

#customerObject (readonly)

The ID of the Customer to which this PaymentMethod is saved. This will not be set when the PaymentMethod has not been saved to a Customer.



1431
1432
1433
# File 'lib/stripe/resources/payment_method.rb', line 1431

def customer
  @customer
end

#customer_balanceObject (readonly)

Attribute for field customer_balance



1433
1434
1435
# File 'lib/stripe/resources/payment_method.rb', line 1433

def customer_balance
  @customer_balance
end

#epsObject (readonly)

Attribute for field eps



1435
1436
1437
# File 'lib/stripe/resources/payment_method.rb', line 1435

def eps
  @eps
end

#fpxObject (readonly)

Attribute for field fpx



1437
1438
1439
# File 'lib/stripe/resources/payment_method.rb', line 1437

def fpx
  @fpx
end

#giropayObject (readonly)

Attribute for field giropay



1439
1440
1441
# File 'lib/stripe/resources/payment_method.rb', line 1439

def giropay
  @giropay
end

#grabpayObject (readonly)

Attribute for field grabpay



1441
1442
1443
# File 'lib/stripe/resources/payment_method.rb', line 1441

def grabpay
  @grabpay
end

#idObject (readonly)

Unique identifier for the object.



1443
1444
1445
# File 'lib/stripe/resources/payment_method.rb', line 1443

def id
  @id
end

#idealObject (readonly)

Attribute for field ideal



1445
1446
1447
# File 'lib/stripe/resources/payment_method.rb', line 1445

def ideal
  @ideal
end

#interac_presentObject (readonly)

Attribute for field interac_present



1447
1448
1449
# File 'lib/stripe/resources/payment_method.rb', line 1447

def interac_present
  @interac_present
end

#kakao_payObject (readonly)

Attribute for field kakao_pay



1449
1450
1451
# File 'lib/stripe/resources/payment_method.rb', line 1449

def kakao_pay
  @kakao_pay
end

#klarnaObject (readonly)

Attribute for field klarna



1451
1452
1453
# File 'lib/stripe/resources/payment_method.rb', line 1451

def klarna
  @klarna
end

#konbiniObject (readonly)

Attribute for field konbini



1453
1454
1455
# File 'lib/stripe/resources/payment_method.rb', line 1453

def konbini
  @konbini
end

#kr_cardObject (readonly)

Attribute for field kr_card



1455
1456
1457
# File 'lib/stripe/resources/payment_method.rb', line 1455

def kr_card
  @kr_card
end

Attribute for field link



1457
1458
1459
# File 'lib/stripe/resources/payment_method.rb', line 1457

def link
  @link
end

#livemodeObject (readonly)

Has the value ‘true` if the object exists in live mode or the value `false` if the object exists in test mode.



1459
1460
1461
# File 'lib/stripe/resources/payment_method.rb', line 1459

def livemode
  @livemode
end

#mb_wayObject (readonly)

Attribute for field mb_way



1461
1462
1463
# File 'lib/stripe/resources/payment_method.rb', line 1461

def mb_way
  @mb_way
end

#metadataObject (readonly)

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



1463
1464
1465
# File 'lib/stripe/resources/payment_method.rb', line 1463

def 
  @metadata
end

#mobilepayObject (readonly)

Attribute for field mobilepay



1465
1466
1467
# File 'lib/stripe/resources/payment_method.rb', line 1465

def mobilepay
  @mobilepay
end

#multibancoObject (readonly)

Attribute for field multibanco



1467
1468
1469
# File 'lib/stripe/resources/payment_method.rb', line 1467

def multibanco
  @multibanco
end

Attribute for field naver_pay



1469
1470
1471
# File 'lib/stripe/resources/payment_method.rb', line 1469

def naver_pay
  @naver_pay
end

#nz_bank_accountObject (readonly)

Attribute for field nz_bank_account



1471
1472
1473
# File 'lib/stripe/resources/payment_method.rb', line 1471

def 
  @nz_bank_account
end

#objectObject (readonly)

String representing the object’s type. Objects of the same type share the same value.



1473
1474
1475
# File 'lib/stripe/resources/payment_method.rb', line 1473

def object
  @object
end

#oxxoObject (readonly)

Attribute for field oxxo



1475
1476
1477
# File 'lib/stripe/resources/payment_method.rb', line 1475

def oxxo
  @oxxo
end

#p24Object (readonly)

Attribute for field p24



1477
1478
1479
# File 'lib/stripe/resources/payment_method.rb', line 1477

def p24
  @p24
end

#pay_by_bankObject (readonly)

Attribute for field pay_by_bank



1479
1480
1481
# File 'lib/stripe/resources/payment_method.rb', line 1479

def pay_by_bank
  @pay_by_bank
end

#paycoObject (readonly)

Attribute for field payco



1481
1482
1483
# File 'lib/stripe/resources/payment_method.rb', line 1481

def payco
  @payco
end

#paynowObject (readonly)

Attribute for field paynow



1483
1484
1485
# File 'lib/stripe/resources/payment_method.rb', line 1483

def paynow
  @paynow
end

#paypalObject (readonly)

Attribute for field paypal



1485
1486
1487
# File 'lib/stripe/resources/payment_method.rb', line 1485

def paypal
  @paypal
end

#pixObject (readonly)

Attribute for field pix



1487
1488
1489
# File 'lib/stripe/resources/payment_method.rb', line 1487

def pix
  @pix
end

#promptpayObject (readonly)

Attribute for field promptpay



1489
1490
1491
# File 'lib/stripe/resources/payment_method.rb', line 1489

def promptpay
  @promptpay
end

#radar_optionsObject (readonly)

Options to configure Radar. See [Radar Session](stripe.com/docs/radar/radar-session) for more information.



1491
1492
1493
# File 'lib/stripe/resources/payment_method.rb', line 1491

def radar_options
  @radar_options
end

#revolut_payObject (readonly)

Attribute for field revolut_pay



1493
1494
1495
# File 'lib/stripe/resources/payment_method.rb', line 1493

def revolut_pay
  @revolut_pay
end

#samsung_payObject (readonly)

Attribute for field samsung_pay



1495
1496
1497
# File 'lib/stripe/resources/payment_method.rb', line 1495

def samsung_pay
  @samsung_pay
end

#satispayObject (readonly)

Attribute for field satispay



1497
1498
1499
# File 'lib/stripe/resources/payment_method.rb', line 1497

def satispay
  @satispay
end

#sepa_debitObject (readonly)

Attribute for field sepa_debit



1499
1500
1501
# File 'lib/stripe/resources/payment_method.rb', line 1499

def sepa_debit
  @sepa_debit
end

#sofortObject (readonly)

Attribute for field sofort



1501
1502
1503
# File 'lib/stripe/resources/payment_method.rb', line 1501

def sofort
  @sofort
end

#swishObject (readonly)

Attribute for field swish



1503
1504
1505
# File 'lib/stripe/resources/payment_method.rb', line 1503

def swish
  @swish
end

#twintObject (readonly)

Attribute for field twint



1505
1506
1507
# File 'lib/stripe/resources/payment_method.rb', line 1505

def twint
  @twint
end

#typeObject (readonly)

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.



1507
1508
1509
# File 'lib/stripe/resources/payment_method.rb', line 1507

def type
  @type
end

#us_bank_accountObject (readonly)

Attribute for field us_bank_account



1509
1510
1511
# File 'lib/stripe/resources/payment_method.rb', line 1509

def 
  @us_bank_account
end

#wechat_payObject (readonly)

Attribute for field wechat_pay



1511
1512
1513
# File 'lib/stripe/resources/payment_method.rb', line 1511

def wechat_pay
  @wechat_pay
end

#zipObject (readonly)

Attribute for field zip



1513
1514
1515
# File 'lib/stripe/resources/payment_method.rb', line 1513

def zip
  @zip
end

Class Method Details

.attach(payment_method, params = {}, opts = {}) ⇒ Object

Attaches a PaymentMethod object to a Customer.

To attach a new PaymentMethod to a customer for future payments, we recommend you use a [SetupIntent](docs.stripe.com/docs/api/setup_intents) or a PaymentIntent with [setup_future_usage](docs.stripe.com/docs/api/payment_intents/create#create_payment_intent-setup_future_usage). These approaches will perform any necessary steps to set up the PaymentMethod for future payments. Using the /v1/payment_methods/:id/attach endpoint without first using a SetupIntent or PaymentIntent with setup_future_usage does not optimize the PaymentMethod for future use, which makes later declines and payment friction more likely. See [Optimizing cards for future payments](docs.stripe.com/docs/payments/payment-intents#future-usage) for more information about setting up future payments.

To use this PaymentMethod as the default for invoice or subscription payments, set [invoice_settings.default_payment_method](docs.stripe.com/docs/api/customers/update#update_customer-invoice_settings-default_payment_method), on the Customer to the PaymentMethod’s ID.



1550
1551
1552
1553
1554
1555
1556
1557
# File 'lib/stripe/resources/payment_method.rb', line 1550

def self.attach(payment_method, params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/payment_methods/%<payment_method>s/attach", { payment_method: CGI.escape(payment_method) }),
    params: params,
    opts: opts
  )
end

.create(params = {}, opts = {}) ⇒ Object

Creates a PaymentMethod object. Read the [Stripe.js reference](docs.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 API to accept a payment immediately or the <a href=“/docs/payments/save-and-reuse”>SetupIntent](docs.stripe.com/docs/payments/accept-a-payment) API to collect payment method details ahead of a future payment.



1562
1563
1564
# File 'lib/stripe/resources/payment_method.rb', line 1562

def self.create(params = {}, opts = {})
  request_stripe_object(method: :post, path: "/v1/payment_methods", params: params, opts: opts)
end

.detach(payment_method, params = {}, opts = {}) ⇒ Object

Detaches a PaymentMethod object from a Customer. After a PaymentMethod is detached, it can no longer be used for a payment or re-attached to a Customer.



1577
1578
1579
1580
1581
1582
1583
1584
# File 'lib/stripe/resources/payment_method.rb', line 1577

def self.detach(payment_method, params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/payment_methods/%<payment_method>s/detach", { payment_method: CGI.escape(payment_method) }),
    params: params,
    opts: opts
  )
end

.field_remappingsObject



1660
1661
1662
# File 'lib/stripe/resources/payment_method.rb', line 1660

def self.field_remappings
  @field_remappings = {}
end

.inner_class_typesObject



1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
# File 'lib/stripe/resources/payment_method.rb', line 1601

def self.inner_class_types
  @inner_class_types = {
    acss_debit: AcssDebit,
    affirm: Affirm,
    afterpay_clearpay: AfterpayClearpay,
    alipay: Alipay,
    alma: Alma,
    amazon_pay: AmazonPay,
    au_becs_debit: AuBecsDebit,
    bacs_debit: BacsDebit,
    bancontact: Bancontact,
    billie: Billie,
    billing_details: BillingDetails,
    blik: Blik,
    boleto: Boleto,
    card: Card,
    card_present: CardPresent,
    cashapp: Cashapp,
    crypto: Crypto,
    custom: Custom,
    customer_balance: CustomerBalance,
    eps: Eps,
    fpx: Fpx,
    giropay: Giropay,
    grabpay: Grabpay,
    ideal: Ideal,
    interac_present: InteracPresent,
    kakao_pay: KakaoPay,
    klarna: Klarna,
    konbini: Konbini,
    kr_card: KrCard,
    link: Link,
    mb_way: MbWay,
    mobilepay: Mobilepay,
    multibanco: Multibanco,
    naver_pay: NaverPay,
    nz_bank_account: NzBankAccount,
    oxxo: Oxxo,
    p24: P24,
    pay_by_bank: PayByBank,
    payco: Payco,
    paynow: Paynow,
    paypal: Paypal,
    pix: Pix,
    promptpay: Promptpay,
    radar_options: RadarOptions,
    revolut_pay: RevolutPay,
    samsung_pay: SamsungPay,
    satispay: Satispay,
    sepa_debit: SepaDebit,
    sofort: Sofort,
    swish: Swish,
    twint: Twint,
    us_bank_account: UsBankAccount,
    wechat_pay: WechatPay,
    zip: Zip,
  }
end

.list(params = {}, opts = {}) ⇒ Object

Returns a list of PaymentMethods for Treasury flows. If you want to list the PaymentMethods attached to a Customer for payments, you should use the [List a Customer’s PaymentMethods](docs.stripe.com/docs/api/payment_methods/customer_list) API instead.



1587
1588
1589
# File 'lib/stripe/resources/payment_method.rb', line 1587

def self.list(params = {}, opts = {})
  request_stripe_object(method: :get, path: "/v1/payment_methods", params: params, opts: opts)
end

.object_nameObject



16
17
18
# File 'lib/stripe/resources/payment_method.rb', line 16

def self.object_name
  "payment_method"
end

.update(payment_method, params = {}, opts = {}) ⇒ Object

Updates a PaymentMethod object. A PaymentMethod must be attached to a customer to be updated.



1592
1593
1594
1595
1596
1597
1598
1599
# File 'lib/stripe/resources/payment_method.rb', line 1592

def self.update(payment_method, params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/payment_methods/%<payment_method>s", { payment_method: CGI.escape(payment_method) }),
    params: params,
    opts: opts
  )
end

Instance Method Details

#attach(params = {}, opts = {}) ⇒ Object

Attaches a PaymentMethod object to a Customer.

To attach a new PaymentMethod to a customer for future payments, we recommend you use a [SetupIntent](docs.stripe.com/docs/api/setup_intents) or a PaymentIntent with [setup_future_usage](docs.stripe.com/docs/api/payment_intents/create#create_payment_intent-setup_future_usage). These approaches will perform any necessary steps to set up the PaymentMethod for future payments. Using the /v1/payment_methods/:id/attach endpoint without first using a SetupIntent or PaymentIntent with setup_future_usage does not optimize the PaymentMethod for future use, which makes later declines and payment friction more likely. See [Optimizing cards for future payments](docs.stripe.com/docs/payments/payment-intents#future-usage) for more information about setting up future payments.

To use this PaymentMethod as the default for invoice or subscription payments, set [invoice_settings.default_payment_method](docs.stripe.com/docs/api/customers/update#update_customer-invoice_settings-default_payment_method), on the Customer to the PaymentMethod’s ID.



1528
1529
1530
1531
1532
1533
1534
1535
# File 'lib/stripe/resources/payment_method.rb', line 1528

def attach(params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/payment_methods/%<payment_method>s/attach", { payment_method: CGI.escape(self["id"]) }),
    params: params,
    opts: opts
  )
end

#detach(params = {}, opts = {}) ⇒ Object

Detaches a PaymentMethod object from a Customer. After a PaymentMethod is detached, it can no longer be used for a payment or re-attached to a Customer.



1567
1568
1569
1570
1571
1572
1573
1574
# File 'lib/stripe/resources/payment_method.rb', line 1567

def detach(params = {}, opts = {})
  request_stripe_object(
    method: :post,
    path: format("/v1/payment_methods/%<payment_method>s/detach", { payment_method: CGI.escape(self["id"]) }),
    params: params,
    opts: opts
  )
end