github.com/stripe/stripe-go/v76@v76.25.0/checkout_session.go (about)

     1  //
     2  //
     3  // File generated from our OpenAPI spec
     4  //
     5  //
     6  
     7  package stripe
     8  
     9  // Type of the account referenced.
    10  type CheckoutSessionAutomaticTaxLiabilityType string
    11  
    12  // List of values that CheckoutSessionAutomaticTaxLiabilityType can take
    13  const (
    14  	CheckoutSessionAutomaticTaxLiabilityTypeAccount CheckoutSessionAutomaticTaxLiabilityType = "account"
    15  	CheckoutSessionAutomaticTaxLiabilityTypeSelf    CheckoutSessionAutomaticTaxLiabilityType = "self"
    16  )
    17  
    18  // The status of the most recent automated tax calculation for this session.
    19  type CheckoutSessionAutomaticTaxStatus string
    20  
    21  // List of values that CheckoutSessionAutomaticTaxStatus can take
    22  const (
    23  	CheckoutSessionAutomaticTaxStatusComplete               CheckoutSessionAutomaticTaxStatus = "complete"
    24  	CheckoutSessionAutomaticTaxStatusFailed                 CheckoutSessionAutomaticTaxStatus = "failed"
    25  	CheckoutSessionAutomaticTaxStatusRequiresLocationInputs CheckoutSessionAutomaticTaxStatus = "requires_location_inputs"
    26  )
    27  
    28  // Describes whether Checkout should collect the customer's billing address. Defaults to `auto`.
    29  type CheckoutSessionBillingAddressCollection string
    30  
    31  // List of values that CheckoutSessionBillingAddressCollection can take
    32  const (
    33  	CheckoutSessionBillingAddressCollectionAuto     CheckoutSessionBillingAddressCollection = "auto"
    34  	CheckoutSessionBillingAddressCollectionRequired CheckoutSessionBillingAddressCollection = "required"
    35  )
    36  
    37  // If `opt_in`, the customer consents to receiving promotional communications
    38  // from the merchant about this Checkout Session.
    39  type CheckoutSessionConsentPromotions string
    40  
    41  // List of values that CheckoutSessionConsentPromotions can take
    42  const (
    43  	CheckoutSessionConsentPromotionsOptIn  CheckoutSessionConsentPromotions = "opt_in"
    44  	CheckoutSessionConsentPromotionsOptOut CheckoutSessionConsentPromotions = "opt_out"
    45  )
    46  
    47  // If `accepted`, the customer in this Checkout Session has agreed to the merchant's terms of service.
    48  type CheckoutSessionConsentTermsOfService string
    49  
    50  // List of values that CheckoutSessionConsentTermsOfService can take
    51  const (
    52  	CheckoutSessionConsentTermsOfServiceAccepted CheckoutSessionConsentTermsOfService = "accepted"
    53  )
    54  
    55  // Determines the position and visibility of the payment method reuse agreement in the UI. When set to `auto`, Stripe's defaults will be used.
    56  //
    57  // When set to `hidden`, the payment method reuse agreement text will always be hidden in the UI.
    58  type CheckoutSessionConsentCollectionPaymentMethodReuseAgreementPosition string
    59  
    60  // List of values that CheckoutSessionConsentCollectionPaymentMethodReuseAgreementPosition can take
    61  const (
    62  	CheckoutSessionConsentCollectionPaymentMethodReuseAgreementPositionAuto   CheckoutSessionConsentCollectionPaymentMethodReuseAgreementPosition = "auto"
    63  	CheckoutSessionConsentCollectionPaymentMethodReuseAgreementPositionHidden CheckoutSessionConsentCollectionPaymentMethodReuseAgreementPosition = "hidden"
    64  )
    65  
    66  // If set to `auto`, enables the collection of customer consent for promotional communications. The Checkout
    67  // Session will determine whether to display an option to opt into promotional communication
    68  // from the merchant depending on the customer's locale. Only available to US merchants.
    69  type CheckoutSessionConsentCollectionPromotions string
    70  
    71  // List of values that CheckoutSessionConsentCollectionPromotions can take
    72  const (
    73  	CheckoutSessionConsentCollectionPromotionsAuto CheckoutSessionConsentCollectionPromotions = "auto"
    74  	CheckoutSessionConsentCollectionPromotionsNone CheckoutSessionConsentCollectionPromotions = "none"
    75  )
    76  
    77  // If set to `required`, it requires customers to accept the terms of service before being able to pay.
    78  type CheckoutSessionConsentCollectionTermsOfService string
    79  
    80  // List of values that CheckoutSessionConsentCollectionTermsOfService can take
    81  const (
    82  	CheckoutSessionConsentCollectionTermsOfServiceNone     CheckoutSessionConsentCollectionTermsOfService = "none"
    83  	CheckoutSessionConsentCollectionTermsOfServiceRequired CheckoutSessionConsentCollectionTermsOfService = "required"
    84  )
    85  
    86  // The type of the label.
    87  type CheckoutSessionCustomFieldLabelType string
    88  
    89  // List of values that CheckoutSessionCustomFieldLabelType can take
    90  const (
    91  	CheckoutSessionCustomFieldLabelTypeCustom CheckoutSessionCustomFieldLabelType = "custom"
    92  )
    93  
    94  // The type of the field.
    95  type CheckoutSessionCustomFieldType string
    96  
    97  // List of values that CheckoutSessionCustomFieldType can take
    98  const (
    99  	CheckoutSessionCustomFieldTypeDropdown CheckoutSessionCustomFieldType = "dropdown"
   100  	CheckoutSessionCustomFieldTypeNumeric  CheckoutSessionCustomFieldType = "numeric"
   101  	CheckoutSessionCustomFieldTypeText     CheckoutSessionCustomFieldType = "text"
   102  )
   103  
   104  // Configure whether a Checkout Session creates a Customer when the Checkout Session completes.
   105  type CheckoutSessionCustomerCreation string
   106  
   107  // List of values that CheckoutSessionCustomerCreation can take
   108  const (
   109  	CheckoutSessionCustomerCreationAlways     CheckoutSessionCustomerCreation = "always"
   110  	CheckoutSessionCustomerCreationIfRequired CheckoutSessionCustomerCreation = "if_required"
   111  )
   112  
   113  // The customer's tax exempt status after a completed Checkout Session.
   114  type CheckoutSessionCustomerDetailsTaxExempt string
   115  
   116  // List of values that CheckoutSessionCustomerDetailsTaxExempt can take
   117  const (
   118  	CheckoutSessionCustomerDetailsTaxExemptExempt  CheckoutSessionCustomerDetailsTaxExempt = "exempt"
   119  	CheckoutSessionCustomerDetailsTaxExemptNone    CheckoutSessionCustomerDetailsTaxExempt = "none"
   120  	CheckoutSessionCustomerDetailsTaxExemptReverse CheckoutSessionCustomerDetailsTaxExempt = "reverse"
   121  )
   122  
   123  // The type of the tax ID, one of `ad_nrt`, `ar_cuit`, `eu_vat`, `bo_tin`, `br_cnpj`, `br_cpf`, `cn_tin`, `co_nit`, `cr_tin`, `do_rcn`, `ec_ruc`, `eu_oss_vat`, `pe_ruc`, `ro_tin`, `rs_pib`, `sv_nit`, `uy_ruc`, `ve_rif`, `vn_tin`, `gb_vat`, `nz_gst`, `au_abn`, `au_arn`, `in_gst`, `no_vat`, `no_voec`, `za_vat`, `ch_vat`, `mx_rfc`, `sg_uen`, `ru_inn`, `ru_kpp`, `ca_bn`, `hk_br`, `es_cif`, `tw_vat`, `th_vat`, `jp_cn`, `jp_rn`, `jp_trn`, `li_uid`, `my_itn`, `us_ein`, `kr_brn`, `ca_qst`, `ca_gst_hst`, `ca_pst_bc`, `ca_pst_mb`, `ca_pst_sk`, `my_sst`, `sg_gst`, `ae_trn`, `cl_tin`, `sa_vat`, `id_npwp`, `my_frp`, `il_vat`, `ge_vat`, `ua_vat`, `is_vat`, `bg_uic`, `hu_tin`, `si_tin`, `ke_pin`, `tr_tin`, `eg_tin`, `ph_tin`, or `unknown`
   124  type CheckoutSessionCustomerDetailsTaxIDType string
   125  
   126  // List of values that CheckoutSessionCustomerDetailsTaxIDType can take
   127  const (
   128  	CheckoutSessionCustomerDetailsTaxIDTypeADNRT    CheckoutSessionCustomerDetailsTaxIDType = "ad_nrt"
   129  	CheckoutSessionCustomerDetailsTaxIDTypeAETRN    CheckoutSessionCustomerDetailsTaxIDType = "ae_trn"
   130  	CheckoutSessionCustomerDetailsTaxIDTypeARCUIT   CheckoutSessionCustomerDetailsTaxIDType = "ar_cuit"
   131  	CheckoutSessionCustomerDetailsTaxIDTypeAUABN    CheckoutSessionCustomerDetailsTaxIDType = "au_abn"
   132  	CheckoutSessionCustomerDetailsTaxIDTypeAUARN    CheckoutSessionCustomerDetailsTaxIDType = "au_arn"
   133  	CheckoutSessionCustomerDetailsTaxIDTypeBGUIC    CheckoutSessionCustomerDetailsTaxIDType = "bg_uic"
   134  	CheckoutSessionCustomerDetailsTaxIDTypeBOTIN    CheckoutSessionCustomerDetailsTaxIDType = "bo_tin"
   135  	CheckoutSessionCustomerDetailsTaxIDTypeBRCNPJ   CheckoutSessionCustomerDetailsTaxIDType = "br_cnpj"
   136  	CheckoutSessionCustomerDetailsTaxIDTypeBRCPF    CheckoutSessionCustomerDetailsTaxIDType = "br_cpf"
   137  	CheckoutSessionCustomerDetailsTaxIDTypeCABN     CheckoutSessionCustomerDetailsTaxIDType = "ca_bn"
   138  	CheckoutSessionCustomerDetailsTaxIDTypeCAGSTHST CheckoutSessionCustomerDetailsTaxIDType = "ca_gst_hst"
   139  	CheckoutSessionCustomerDetailsTaxIDTypeCAPSTBC  CheckoutSessionCustomerDetailsTaxIDType = "ca_pst_bc"
   140  	CheckoutSessionCustomerDetailsTaxIDTypeCAPSTMB  CheckoutSessionCustomerDetailsTaxIDType = "ca_pst_mb"
   141  	CheckoutSessionCustomerDetailsTaxIDTypeCAPSTSK  CheckoutSessionCustomerDetailsTaxIDType = "ca_pst_sk"
   142  	CheckoutSessionCustomerDetailsTaxIDTypeCAQST    CheckoutSessionCustomerDetailsTaxIDType = "ca_qst"
   143  	CheckoutSessionCustomerDetailsTaxIDTypeCHVAT    CheckoutSessionCustomerDetailsTaxIDType = "ch_vat"
   144  	CheckoutSessionCustomerDetailsTaxIDTypeCLTIN    CheckoutSessionCustomerDetailsTaxIDType = "cl_tin"
   145  	CheckoutSessionCustomerDetailsTaxIDTypeCNTIN    CheckoutSessionCustomerDetailsTaxIDType = "cn_tin"
   146  	CheckoutSessionCustomerDetailsTaxIDTypeCONIT    CheckoutSessionCustomerDetailsTaxIDType = "co_nit"
   147  	CheckoutSessionCustomerDetailsTaxIDTypeCRTIN    CheckoutSessionCustomerDetailsTaxIDType = "cr_tin"
   148  	CheckoutSessionCustomerDetailsTaxIDTypeDORCN    CheckoutSessionCustomerDetailsTaxIDType = "do_rcn"
   149  	CheckoutSessionCustomerDetailsTaxIDTypeECRUC    CheckoutSessionCustomerDetailsTaxIDType = "ec_ruc"
   150  	CheckoutSessionCustomerDetailsTaxIDTypeEGTIN    CheckoutSessionCustomerDetailsTaxIDType = "eg_tin"
   151  	CheckoutSessionCustomerDetailsTaxIDTypeESCIF    CheckoutSessionCustomerDetailsTaxIDType = "es_cif"
   152  	CheckoutSessionCustomerDetailsTaxIDTypeEUOSSVAT CheckoutSessionCustomerDetailsTaxIDType = "eu_oss_vat"
   153  	CheckoutSessionCustomerDetailsTaxIDTypeEUVAT    CheckoutSessionCustomerDetailsTaxIDType = "eu_vat"
   154  	CheckoutSessionCustomerDetailsTaxIDTypeGBVAT    CheckoutSessionCustomerDetailsTaxIDType = "gb_vat"
   155  	CheckoutSessionCustomerDetailsTaxIDTypeGEVAT    CheckoutSessionCustomerDetailsTaxIDType = "ge_vat"
   156  	CheckoutSessionCustomerDetailsTaxIDTypeHKBR     CheckoutSessionCustomerDetailsTaxIDType = "hk_br"
   157  	CheckoutSessionCustomerDetailsTaxIDTypeHUTIN    CheckoutSessionCustomerDetailsTaxIDType = "hu_tin"
   158  	CheckoutSessionCustomerDetailsTaxIDTypeIDNPWP   CheckoutSessionCustomerDetailsTaxIDType = "id_npwp"
   159  	CheckoutSessionCustomerDetailsTaxIDTypeILVAT    CheckoutSessionCustomerDetailsTaxIDType = "il_vat"
   160  	CheckoutSessionCustomerDetailsTaxIDTypeINGST    CheckoutSessionCustomerDetailsTaxIDType = "in_gst"
   161  	CheckoutSessionCustomerDetailsTaxIDTypeISVAT    CheckoutSessionCustomerDetailsTaxIDType = "is_vat"
   162  	CheckoutSessionCustomerDetailsTaxIDTypeJPCN     CheckoutSessionCustomerDetailsTaxIDType = "jp_cn"
   163  	CheckoutSessionCustomerDetailsTaxIDTypeJPRN     CheckoutSessionCustomerDetailsTaxIDType = "jp_rn"
   164  	CheckoutSessionCustomerDetailsTaxIDTypeJPTRN    CheckoutSessionCustomerDetailsTaxIDType = "jp_trn"
   165  	CheckoutSessionCustomerDetailsTaxIDTypeKEPIN    CheckoutSessionCustomerDetailsTaxIDType = "ke_pin"
   166  	CheckoutSessionCustomerDetailsTaxIDTypeKRBRN    CheckoutSessionCustomerDetailsTaxIDType = "kr_brn"
   167  	CheckoutSessionCustomerDetailsTaxIDTypeLIUID    CheckoutSessionCustomerDetailsTaxIDType = "li_uid"
   168  	CheckoutSessionCustomerDetailsTaxIDTypeMXRFC    CheckoutSessionCustomerDetailsTaxIDType = "mx_rfc"
   169  	CheckoutSessionCustomerDetailsTaxIDTypeMYFRP    CheckoutSessionCustomerDetailsTaxIDType = "my_frp"
   170  	CheckoutSessionCustomerDetailsTaxIDTypeMYITN    CheckoutSessionCustomerDetailsTaxIDType = "my_itn"
   171  	CheckoutSessionCustomerDetailsTaxIDTypeMYSST    CheckoutSessionCustomerDetailsTaxIDType = "my_sst"
   172  	CheckoutSessionCustomerDetailsTaxIDTypeNOVAT    CheckoutSessionCustomerDetailsTaxIDType = "no_vat"
   173  	CheckoutSessionCustomerDetailsTaxIDTypeNOVOEC   CheckoutSessionCustomerDetailsTaxIDType = "no_voec"
   174  	CheckoutSessionCustomerDetailsTaxIDTypeNZGST    CheckoutSessionCustomerDetailsTaxIDType = "nz_gst"
   175  	CheckoutSessionCustomerDetailsTaxIDTypePERUC    CheckoutSessionCustomerDetailsTaxIDType = "pe_ruc"
   176  	CheckoutSessionCustomerDetailsTaxIDTypePHTIN    CheckoutSessionCustomerDetailsTaxIDType = "ph_tin"
   177  	CheckoutSessionCustomerDetailsTaxIDTypeROTIN    CheckoutSessionCustomerDetailsTaxIDType = "ro_tin"
   178  	CheckoutSessionCustomerDetailsTaxIDTypeRSPIB    CheckoutSessionCustomerDetailsTaxIDType = "rs_pib"
   179  	CheckoutSessionCustomerDetailsTaxIDTypeRUINN    CheckoutSessionCustomerDetailsTaxIDType = "ru_inn"
   180  	CheckoutSessionCustomerDetailsTaxIDTypeRUKPP    CheckoutSessionCustomerDetailsTaxIDType = "ru_kpp"
   181  	CheckoutSessionCustomerDetailsTaxIDTypeSAVAT    CheckoutSessionCustomerDetailsTaxIDType = "sa_vat"
   182  	CheckoutSessionCustomerDetailsTaxIDTypeSGGST    CheckoutSessionCustomerDetailsTaxIDType = "sg_gst"
   183  	CheckoutSessionCustomerDetailsTaxIDTypeSGUEN    CheckoutSessionCustomerDetailsTaxIDType = "sg_uen"
   184  	CheckoutSessionCustomerDetailsTaxIDTypeSITIN    CheckoutSessionCustomerDetailsTaxIDType = "si_tin"
   185  	CheckoutSessionCustomerDetailsTaxIDTypeSVNIT    CheckoutSessionCustomerDetailsTaxIDType = "sv_nit"
   186  	CheckoutSessionCustomerDetailsTaxIDTypeTHVAT    CheckoutSessionCustomerDetailsTaxIDType = "th_vat"
   187  	CheckoutSessionCustomerDetailsTaxIDTypeTRTIN    CheckoutSessionCustomerDetailsTaxIDType = "tr_tin"
   188  	CheckoutSessionCustomerDetailsTaxIDTypeTWVAT    CheckoutSessionCustomerDetailsTaxIDType = "tw_vat"
   189  	CheckoutSessionCustomerDetailsTaxIDTypeUAVAT    CheckoutSessionCustomerDetailsTaxIDType = "ua_vat"
   190  	CheckoutSessionCustomerDetailsTaxIDTypeUnknown  CheckoutSessionCustomerDetailsTaxIDType = "unknown"
   191  	CheckoutSessionCustomerDetailsTaxIDTypeUSEIN    CheckoutSessionCustomerDetailsTaxIDType = "us_ein"
   192  	CheckoutSessionCustomerDetailsTaxIDTypeUYRUC    CheckoutSessionCustomerDetailsTaxIDType = "uy_ruc"
   193  	CheckoutSessionCustomerDetailsTaxIDTypeVERIF    CheckoutSessionCustomerDetailsTaxIDType = "ve_rif"
   194  	CheckoutSessionCustomerDetailsTaxIDTypeVNTIN    CheckoutSessionCustomerDetailsTaxIDType = "vn_tin"
   195  	CheckoutSessionCustomerDetailsTaxIDTypeZAVAT    CheckoutSessionCustomerDetailsTaxIDType = "za_vat"
   196  )
   197  
   198  // Type of the account referenced.
   199  type CheckoutSessionInvoiceCreationInvoiceDataIssuerType string
   200  
   201  // List of values that CheckoutSessionInvoiceCreationInvoiceDataIssuerType can take
   202  const (
   203  	CheckoutSessionInvoiceCreationInvoiceDataIssuerTypeAccount CheckoutSessionInvoiceCreationInvoiceDataIssuerType = "account"
   204  	CheckoutSessionInvoiceCreationInvoiceDataIssuerTypeSelf    CheckoutSessionInvoiceCreationInvoiceDataIssuerType = "self"
   205  )
   206  
   207  // The mode of the Checkout Session.
   208  type CheckoutSessionMode string
   209  
   210  // List of values that CheckoutSessionMode can take
   211  const (
   212  	CheckoutSessionModePayment      CheckoutSessionMode = "payment"
   213  	CheckoutSessionModeSetup        CheckoutSessionMode = "setup"
   214  	CheckoutSessionModeSubscription CheckoutSessionMode = "subscription"
   215  )
   216  
   217  // Configure whether a Checkout Session should collect a payment method. Defaults to `always`.
   218  type CheckoutSessionPaymentMethodCollection string
   219  
   220  // List of values that CheckoutSessionPaymentMethodCollection can take
   221  const (
   222  	CheckoutSessionPaymentMethodCollectionAlways     CheckoutSessionPaymentMethodCollection = "always"
   223  	CheckoutSessionPaymentMethodCollectionIfRequired CheckoutSessionPaymentMethodCollection = "if_required"
   224  )
   225  
   226  // List of Stripe products where this mandate can be selected automatically. Returned when the Session is in `setup` mode.
   227  type CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptionsDefaultFor string
   228  
   229  // List of values that CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptionsDefaultFor can take
   230  const (
   231  	CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptionsDefaultForInvoice      CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptionsDefaultFor = "invoice"
   232  	CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptionsDefaultForSubscription CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptionsDefaultFor = "subscription"
   233  )
   234  
   235  // Payment schedule for the mandate.
   236  type CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptionsPaymentSchedule string
   237  
   238  // List of values that CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptionsPaymentSchedule can take
   239  const (
   240  	CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptionsPaymentScheduleCombined CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptionsPaymentSchedule = "combined"
   241  	CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptionsPaymentScheduleInterval CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptionsPaymentSchedule = "interval"
   242  	CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptionsPaymentScheduleSporadic CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptionsPaymentSchedule = "sporadic"
   243  )
   244  
   245  // Transaction type of the mandate.
   246  type CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptionsTransactionType string
   247  
   248  // List of values that CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptionsTransactionType can take
   249  const (
   250  	CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptionsTransactionTypeBusiness CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptionsTransactionType = "business"
   251  	CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptionsTransactionTypePersonal CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptionsTransactionType = "personal"
   252  )
   253  
   254  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   255  //
   256  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   257  //
   258  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   259  type CheckoutSessionPaymentMethodOptionsACSSDebitSetupFutureUsage string
   260  
   261  // List of values that CheckoutSessionPaymentMethodOptionsACSSDebitSetupFutureUsage can take
   262  const (
   263  	CheckoutSessionPaymentMethodOptionsACSSDebitSetupFutureUsageNone       CheckoutSessionPaymentMethodOptionsACSSDebitSetupFutureUsage = "none"
   264  	CheckoutSessionPaymentMethodOptionsACSSDebitSetupFutureUsageOffSession CheckoutSessionPaymentMethodOptionsACSSDebitSetupFutureUsage = "off_session"
   265  	CheckoutSessionPaymentMethodOptionsACSSDebitSetupFutureUsageOnSession  CheckoutSessionPaymentMethodOptionsACSSDebitSetupFutureUsage = "on_session"
   266  )
   267  
   268  // Bank account verification method.
   269  type CheckoutSessionPaymentMethodOptionsACSSDebitVerificationMethod string
   270  
   271  // List of values that CheckoutSessionPaymentMethodOptionsACSSDebitVerificationMethod can take
   272  const (
   273  	CheckoutSessionPaymentMethodOptionsACSSDebitVerificationMethodAutomatic     CheckoutSessionPaymentMethodOptionsACSSDebitVerificationMethod = "automatic"
   274  	CheckoutSessionPaymentMethodOptionsACSSDebitVerificationMethodInstant       CheckoutSessionPaymentMethodOptionsACSSDebitVerificationMethod = "instant"
   275  	CheckoutSessionPaymentMethodOptionsACSSDebitVerificationMethodMicrodeposits CheckoutSessionPaymentMethodOptionsACSSDebitVerificationMethod = "microdeposits"
   276  )
   277  
   278  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   279  //
   280  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   281  //
   282  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   283  type CheckoutSessionPaymentMethodOptionsAffirmSetupFutureUsage string
   284  
   285  // List of values that CheckoutSessionPaymentMethodOptionsAffirmSetupFutureUsage can take
   286  const (
   287  	CheckoutSessionPaymentMethodOptionsAffirmSetupFutureUsageNone CheckoutSessionPaymentMethodOptionsAffirmSetupFutureUsage = "none"
   288  )
   289  
   290  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   291  //
   292  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   293  //
   294  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   295  type CheckoutSessionPaymentMethodOptionsAfterpayClearpaySetupFutureUsage string
   296  
   297  // List of values that CheckoutSessionPaymentMethodOptionsAfterpayClearpaySetupFutureUsage can take
   298  const (
   299  	CheckoutSessionPaymentMethodOptionsAfterpayClearpaySetupFutureUsageNone CheckoutSessionPaymentMethodOptionsAfterpayClearpaySetupFutureUsage = "none"
   300  )
   301  
   302  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   303  //
   304  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   305  //
   306  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   307  type CheckoutSessionPaymentMethodOptionsAlipaySetupFutureUsage string
   308  
   309  // List of values that CheckoutSessionPaymentMethodOptionsAlipaySetupFutureUsage can take
   310  const (
   311  	CheckoutSessionPaymentMethodOptionsAlipaySetupFutureUsageNone CheckoutSessionPaymentMethodOptionsAlipaySetupFutureUsage = "none"
   312  )
   313  
   314  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   315  //
   316  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   317  //
   318  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   319  type CheckoutSessionPaymentMethodOptionsAUBECSDebitSetupFutureUsage string
   320  
   321  // List of values that CheckoutSessionPaymentMethodOptionsAUBECSDebitSetupFutureUsage can take
   322  const (
   323  	CheckoutSessionPaymentMethodOptionsAUBECSDebitSetupFutureUsageNone CheckoutSessionPaymentMethodOptionsAUBECSDebitSetupFutureUsage = "none"
   324  )
   325  
   326  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   327  //
   328  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   329  //
   330  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   331  type CheckoutSessionPaymentMethodOptionsBACSDebitSetupFutureUsage string
   332  
   333  // List of values that CheckoutSessionPaymentMethodOptionsBACSDebitSetupFutureUsage can take
   334  const (
   335  	CheckoutSessionPaymentMethodOptionsBACSDebitSetupFutureUsageNone       CheckoutSessionPaymentMethodOptionsBACSDebitSetupFutureUsage = "none"
   336  	CheckoutSessionPaymentMethodOptionsBACSDebitSetupFutureUsageOffSession CheckoutSessionPaymentMethodOptionsBACSDebitSetupFutureUsage = "off_session"
   337  	CheckoutSessionPaymentMethodOptionsBACSDebitSetupFutureUsageOnSession  CheckoutSessionPaymentMethodOptionsBACSDebitSetupFutureUsage = "on_session"
   338  )
   339  
   340  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   341  //
   342  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   343  //
   344  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   345  type CheckoutSessionPaymentMethodOptionsBancontactSetupFutureUsage string
   346  
   347  // List of values that CheckoutSessionPaymentMethodOptionsBancontactSetupFutureUsage can take
   348  const (
   349  	CheckoutSessionPaymentMethodOptionsBancontactSetupFutureUsageNone CheckoutSessionPaymentMethodOptionsBancontactSetupFutureUsage = "none"
   350  )
   351  
   352  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   353  //
   354  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   355  //
   356  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   357  type CheckoutSessionPaymentMethodOptionsBoletoSetupFutureUsage string
   358  
   359  // List of values that CheckoutSessionPaymentMethodOptionsBoletoSetupFutureUsage can take
   360  const (
   361  	CheckoutSessionPaymentMethodOptionsBoletoSetupFutureUsageNone       CheckoutSessionPaymentMethodOptionsBoletoSetupFutureUsage = "none"
   362  	CheckoutSessionPaymentMethodOptionsBoletoSetupFutureUsageOffSession CheckoutSessionPaymentMethodOptionsBoletoSetupFutureUsage = "off_session"
   363  	CheckoutSessionPaymentMethodOptionsBoletoSetupFutureUsageOnSession  CheckoutSessionPaymentMethodOptionsBoletoSetupFutureUsage = "on_session"
   364  )
   365  
   366  // We strongly recommend that you rely on our SCA Engine to automatically prompt your customers for authentication based on risk level and [other requirements](https://stripe.com/docs/strong-customer-authentication). However, if you wish to request 3D Secure based on logic from your own fraud engine, provide this option. If not provided, this value defaults to `automatic`. Read our guide on [manually requesting 3D Secure](https://stripe.com/docs/payments/3d-secure/authentication-flow#manual-three-ds) for more information on how this configuration interacts with Radar and our SCA Engine.
   367  type CheckoutSessionPaymentMethodOptionsCardRequestThreeDSecure string
   368  
   369  // List of values that CheckoutSessionPaymentMethodOptionsCardRequestThreeDSecure can take
   370  const (
   371  	CheckoutSessionPaymentMethodOptionsCardRequestThreeDSecureAny       CheckoutSessionPaymentMethodOptionsCardRequestThreeDSecure = "any"
   372  	CheckoutSessionPaymentMethodOptionsCardRequestThreeDSecureAutomatic CheckoutSessionPaymentMethodOptionsCardRequestThreeDSecure = "automatic"
   373  	CheckoutSessionPaymentMethodOptionsCardRequestThreeDSecureChallenge CheckoutSessionPaymentMethodOptionsCardRequestThreeDSecure = "challenge"
   374  )
   375  
   376  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   377  //
   378  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   379  //
   380  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   381  type CheckoutSessionPaymentMethodOptionsCardSetupFutureUsage string
   382  
   383  // List of values that CheckoutSessionPaymentMethodOptionsCardSetupFutureUsage can take
   384  const (
   385  	CheckoutSessionPaymentMethodOptionsCardSetupFutureUsageNone       CheckoutSessionPaymentMethodOptionsCardSetupFutureUsage = "none"
   386  	CheckoutSessionPaymentMethodOptionsCardSetupFutureUsageOffSession CheckoutSessionPaymentMethodOptionsCardSetupFutureUsage = "off_session"
   387  	CheckoutSessionPaymentMethodOptionsCardSetupFutureUsageOnSession  CheckoutSessionPaymentMethodOptionsCardSetupFutureUsage = "on_session"
   388  )
   389  
   390  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   391  //
   392  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   393  //
   394  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   395  type CheckoutSessionPaymentMethodOptionsCashAppSetupFutureUsage string
   396  
   397  // List of values that CheckoutSessionPaymentMethodOptionsCashAppSetupFutureUsage can take
   398  const (
   399  	CheckoutSessionPaymentMethodOptionsCashAppSetupFutureUsageNone CheckoutSessionPaymentMethodOptionsCashAppSetupFutureUsage = "none"
   400  )
   401  
   402  // List of address types that should be returned in the financial_addresses response. If not specified, all valid types will be returned.
   403  //
   404  // Permitted values include: `sort_code`, `zengin`, `iban`, or `spei`.
   405  type CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferRequestedAddressType string
   406  
   407  // List of values that CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferRequestedAddressType can take
   408  const (
   409  	CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferRequestedAddressTypeABA      CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferRequestedAddressType = "aba"
   410  	CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferRequestedAddressTypeIBAN     CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferRequestedAddressType = "iban"
   411  	CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferRequestedAddressTypeSEPA     CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferRequestedAddressType = "sepa"
   412  	CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferRequestedAddressTypeSortCode CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferRequestedAddressType = "sort_code"
   413  	CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferRequestedAddressTypeSpei     CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferRequestedAddressType = "spei"
   414  	CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferRequestedAddressTypeSwift    CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferRequestedAddressType = "swift"
   415  	CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferRequestedAddressTypeZengin   CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferRequestedAddressType = "zengin"
   416  )
   417  
   418  // The bank transfer type that this PaymentIntent is allowed to use for funding Permitted values include: `eu_bank_transfer`, `gb_bank_transfer`, `jp_bank_transfer`, `mx_bank_transfer`, or `us_bank_transfer`.
   419  type CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferType string
   420  
   421  // List of values that CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferType can take
   422  const (
   423  	CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferTypeEUBankTransfer CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferType = "eu_bank_transfer"
   424  	CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferTypeGBBankTransfer CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferType = "gb_bank_transfer"
   425  	CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferTypeJPBankTransfer CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferType = "jp_bank_transfer"
   426  	CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferTypeMXBankTransfer CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferType = "mx_bank_transfer"
   427  	CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferTypeUSBankTransfer CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferType = "us_bank_transfer"
   428  )
   429  
   430  // The funding method type to be used when there are not enough funds in the customer balance. Permitted values include: `bank_transfer`.
   431  type CheckoutSessionPaymentMethodOptionsCustomerBalanceFundingType string
   432  
   433  // List of values that CheckoutSessionPaymentMethodOptionsCustomerBalanceFundingType can take
   434  const (
   435  	CheckoutSessionPaymentMethodOptionsCustomerBalanceFundingTypeBankTransfer CheckoutSessionPaymentMethodOptionsCustomerBalanceFundingType = "bank_transfer"
   436  )
   437  
   438  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   439  //
   440  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   441  //
   442  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   443  type CheckoutSessionPaymentMethodOptionsCustomerBalanceSetupFutureUsage string
   444  
   445  // List of values that CheckoutSessionPaymentMethodOptionsCustomerBalanceSetupFutureUsage can take
   446  const (
   447  	CheckoutSessionPaymentMethodOptionsCustomerBalanceSetupFutureUsageNone CheckoutSessionPaymentMethodOptionsCustomerBalanceSetupFutureUsage = "none"
   448  )
   449  
   450  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   451  //
   452  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   453  //
   454  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   455  type CheckoutSessionPaymentMethodOptionsEPSSetupFutureUsage string
   456  
   457  // List of values that CheckoutSessionPaymentMethodOptionsEPSSetupFutureUsage can take
   458  const (
   459  	CheckoutSessionPaymentMethodOptionsEPSSetupFutureUsageNone CheckoutSessionPaymentMethodOptionsEPSSetupFutureUsage = "none"
   460  )
   461  
   462  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   463  //
   464  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   465  //
   466  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   467  type CheckoutSessionPaymentMethodOptionsFPXSetupFutureUsage string
   468  
   469  // List of values that CheckoutSessionPaymentMethodOptionsFPXSetupFutureUsage can take
   470  const (
   471  	CheckoutSessionPaymentMethodOptionsFPXSetupFutureUsageNone CheckoutSessionPaymentMethodOptionsFPXSetupFutureUsage = "none"
   472  )
   473  
   474  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   475  //
   476  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   477  //
   478  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   479  type CheckoutSessionPaymentMethodOptionsGiropaySetupFutureUsage string
   480  
   481  // List of values that CheckoutSessionPaymentMethodOptionsGiropaySetupFutureUsage can take
   482  const (
   483  	CheckoutSessionPaymentMethodOptionsGiropaySetupFutureUsageNone CheckoutSessionPaymentMethodOptionsGiropaySetupFutureUsage = "none"
   484  )
   485  
   486  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   487  //
   488  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   489  //
   490  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   491  type CheckoutSessionPaymentMethodOptionsGrabpaySetupFutureUsage string
   492  
   493  // List of values that CheckoutSessionPaymentMethodOptionsGrabpaySetupFutureUsage can take
   494  const (
   495  	CheckoutSessionPaymentMethodOptionsGrabpaySetupFutureUsageNone CheckoutSessionPaymentMethodOptionsGrabpaySetupFutureUsage = "none"
   496  )
   497  
   498  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   499  //
   500  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   501  //
   502  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   503  type CheckoutSessionPaymentMethodOptionsIDEALSetupFutureUsage string
   504  
   505  // List of values that CheckoutSessionPaymentMethodOptionsIDEALSetupFutureUsage can take
   506  const (
   507  	CheckoutSessionPaymentMethodOptionsIDEALSetupFutureUsageNone CheckoutSessionPaymentMethodOptionsIDEALSetupFutureUsage = "none"
   508  )
   509  
   510  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   511  //
   512  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   513  //
   514  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   515  type CheckoutSessionPaymentMethodOptionsKlarnaSetupFutureUsage string
   516  
   517  // List of values that CheckoutSessionPaymentMethodOptionsKlarnaSetupFutureUsage can take
   518  const (
   519  	CheckoutSessionPaymentMethodOptionsKlarnaSetupFutureUsageNone       CheckoutSessionPaymentMethodOptionsKlarnaSetupFutureUsage = "none"
   520  	CheckoutSessionPaymentMethodOptionsKlarnaSetupFutureUsageOffSession CheckoutSessionPaymentMethodOptionsKlarnaSetupFutureUsage = "off_session"
   521  	CheckoutSessionPaymentMethodOptionsKlarnaSetupFutureUsageOnSession  CheckoutSessionPaymentMethodOptionsKlarnaSetupFutureUsage = "on_session"
   522  )
   523  
   524  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   525  //
   526  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   527  //
   528  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   529  type CheckoutSessionPaymentMethodOptionsKonbiniSetupFutureUsage string
   530  
   531  // List of values that CheckoutSessionPaymentMethodOptionsKonbiniSetupFutureUsage can take
   532  const (
   533  	CheckoutSessionPaymentMethodOptionsKonbiniSetupFutureUsageNone CheckoutSessionPaymentMethodOptionsKonbiniSetupFutureUsage = "none"
   534  )
   535  
   536  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   537  //
   538  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   539  //
   540  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   541  type CheckoutSessionPaymentMethodOptionsLinkSetupFutureUsage string
   542  
   543  // List of values that CheckoutSessionPaymentMethodOptionsLinkSetupFutureUsage can take
   544  const (
   545  	CheckoutSessionPaymentMethodOptionsLinkSetupFutureUsageNone       CheckoutSessionPaymentMethodOptionsLinkSetupFutureUsage = "none"
   546  	CheckoutSessionPaymentMethodOptionsLinkSetupFutureUsageOffSession CheckoutSessionPaymentMethodOptionsLinkSetupFutureUsage = "off_session"
   547  )
   548  
   549  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   550  //
   551  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   552  //
   553  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   554  type CheckoutSessionPaymentMethodOptionsOXXOSetupFutureUsage string
   555  
   556  // List of values that CheckoutSessionPaymentMethodOptionsOXXOSetupFutureUsage can take
   557  const (
   558  	CheckoutSessionPaymentMethodOptionsOXXOSetupFutureUsageNone CheckoutSessionPaymentMethodOptionsOXXOSetupFutureUsage = "none"
   559  )
   560  
   561  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   562  //
   563  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   564  //
   565  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   566  type CheckoutSessionPaymentMethodOptionsP24SetupFutureUsage string
   567  
   568  // List of values that CheckoutSessionPaymentMethodOptionsP24SetupFutureUsage can take
   569  const (
   570  	CheckoutSessionPaymentMethodOptionsP24SetupFutureUsageNone CheckoutSessionPaymentMethodOptionsP24SetupFutureUsage = "none"
   571  )
   572  
   573  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   574  //
   575  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   576  //
   577  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   578  type CheckoutSessionPaymentMethodOptionsPayNowSetupFutureUsage string
   579  
   580  // List of values that CheckoutSessionPaymentMethodOptionsPayNowSetupFutureUsage can take
   581  const (
   582  	CheckoutSessionPaymentMethodOptionsPayNowSetupFutureUsageNone CheckoutSessionPaymentMethodOptionsPayNowSetupFutureUsage = "none"
   583  )
   584  
   585  // Controls when the funds will be captured from the customer's account.
   586  type CheckoutSessionPaymentMethodOptionsPaypalCaptureMethod string
   587  
   588  // List of values that CheckoutSessionPaymentMethodOptionsPaypalCaptureMethod can take
   589  const (
   590  	CheckoutSessionPaymentMethodOptionsPaypalCaptureMethodManual CheckoutSessionPaymentMethodOptionsPaypalCaptureMethod = "manual"
   591  )
   592  
   593  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   594  //
   595  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   596  //
   597  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   598  type CheckoutSessionPaymentMethodOptionsPaypalSetupFutureUsage string
   599  
   600  // List of values that CheckoutSessionPaymentMethodOptionsPaypalSetupFutureUsage can take
   601  const (
   602  	CheckoutSessionPaymentMethodOptionsPaypalSetupFutureUsageNone       CheckoutSessionPaymentMethodOptionsPaypalSetupFutureUsage = "none"
   603  	CheckoutSessionPaymentMethodOptionsPaypalSetupFutureUsageOffSession CheckoutSessionPaymentMethodOptionsPaypalSetupFutureUsage = "off_session"
   604  )
   605  
   606  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   607  //
   608  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   609  //
   610  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   611  type CheckoutSessionPaymentMethodOptionsSEPADebitSetupFutureUsage string
   612  
   613  // List of values that CheckoutSessionPaymentMethodOptionsSEPADebitSetupFutureUsage can take
   614  const (
   615  	CheckoutSessionPaymentMethodOptionsSEPADebitSetupFutureUsageNone       CheckoutSessionPaymentMethodOptionsSEPADebitSetupFutureUsage = "none"
   616  	CheckoutSessionPaymentMethodOptionsSEPADebitSetupFutureUsageOffSession CheckoutSessionPaymentMethodOptionsSEPADebitSetupFutureUsage = "off_session"
   617  	CheckoutSessionPaymentMethodOptionsSEPADebitSetupFutureUsageOnSession  CheckoutSessionPaymentMethodOptionsSEPADebitSetupFutureUsage = "on_session"
   618  )
   619  
   620  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   621  //
   622  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   623  //
   624  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   625  type CheckoutSessionPaymentMethodOptionsSofortSetupFutureUsage string
   626  
   627  // List of values that CheckoutSessionPaymentMethodOptionsSofortSetupFutureUsage can take
   628  const (
   629  	CheckoutSessionPaymentMethodOptionsSofortSetupFutureUsageNone CheckoutSessionPaymentMethodOptionsSofortSetupFutureUsage = "none"
   630  )
   631  
   632  // The list of permissions to request. The `payment_method` permission must be included.
   633  type CheckoutSessionPaymentMethodOptionsUSBankAccountFinancialConnectionsPermission string
   634  
   635  // List of values that CheckoutSessionPaymentMethodOptionsUSBankAccountFinancialConnectionsPermission can take
   636  const (
   637  	CheckoutSessionPaymentMethodOptionsUSBankAccountFinancialConnectionsPermissionBalances      CheckoutSessionPaymentMethodOptionsUSBankAccountFinancialConnectionsPermission = "balances"
   638  	CheckoutSessionPaymentMethodOptionsUSBankAccountFinancialConnectionsPermissionOwnership     CheckoutSessionPaymentMethodOptionsUSBankAccountFinancialConnectionsPermission = "ownership"
   639  	CheckoutSessionPaymentMethodOptionsUSBankAccountFinancialConnectionsPermissionPaymentMethod CheckoutSessionPaymentMethodOptionsUSBankAccountFinancialConnectionsPermission = "payment_method"
   640  	CheckoutSessionPaymentMethodOptionsUSBankAccountFinancialConnectionsPermissionTransactions  CheckoutSessionPaymentMethodOptionsUSBankAccountFinancialConnectionsPermission = "transactions"
   641  )
   642  
   643  // Data features requested to be retrieved upon account creation.
   644  type CheckoutSessionPaymentMethodOptionsUSBankAccountFinancialConnectionsPrefetch string
   645  
   646  // List of values that CheckoutSessionPaymentMethodOptionsUSBankAccountFinancialConnectionsPrefetch can take
   647  const (
   648  	CheckoutSessionPaymentMethodOptionsUSBankAccountFinancialConnectionsPrefetchBalances     CheckoutSessionPaymentMethodOptionsUSBankAccountFinancialConnectionsPrefetch = "balances"
   649  	CheckoutSessionPaymentMethodOptionsUSBankAccountFinancialConnectionsPrefetchTransactions CheckoutSessionPaymentMethodOptionsUSBankAccountFinancialConnectionsPrefetch = "transactions"
   650  )
   651  
   652  // Indicates that you intend to make future payments with this PaymentIntent's payment method.
   653  //
   654  // Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
   655  //
   656  // When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
   657  type CheckoutSessionPaymentMethodOptionsUSBankAccountSetupFutureUsage string
   658  
   659  // List of values that CheckoutSessionPaymentMethodOptionsUSBankAccountSetupFutureUsage can take
   660  const (
   661  	CheckoutSessionPaymentMethodOptionsUSBankAccountSetupFutureUsageNone       CheckoutSessionPaymentMethodOptionsUSBankAccountSetupFutureUsage = "none"
   662  	CheckoutSessionPaymentMethodOptionsUSBankAccountSetupFutureUsageOffSession CheckoutSessionPaymentMethodOptionsUSBankAccountSetupFutureUsage = "off_session"
   663  	CheckoutSessionPaymentMethodOptionsUSBankAccountSetupFutureUsageOnSession  CheckoutSessionPaymentMethodOptionsUSBankAccountSetupFutureUsage = "on_session"
   664  )
   665  
   666  // Bank account verification method.
   667  type CheckoutSessionPaymentMethodOptionsUSBankAccountVerificationMethod string
   668  
   669  // List of values that CheckoutSessionPaymentMethodOptionsUSBankAccountVerificationMethod can take
   670  const (
   671  	CheckoutSessionPaymentMethodOptionsUSBankAccountVerificationMethodAutomatic CheckoutSessionPaymentMethodOptionsUSBankAccountVerificationMethod = "automatic"
   672  	CheckoutSessionPaymentMethodOptionsUSBankAccountVerificationMethodInstant   CheckoutSessionPaymentMethodOptionsUSBankAccountVerificationMethod = "instant"
   673  )
   674  
   675  // The payment status of the Checkout Session, one of `paid`, `unpaid`, or `no_payment_required`.
   676  // You can use this value to decide when to fulfill your customer's order.
   677  type CheckoutSessionPaymentStatus string
   678  
   679  // List of values that CheckoutSessionPaymentStatus can take
   680  const (
   681  	CheckoutSessionPaymentStatusNoPaymentRequired CheckoutSessionPaymentStatus = "no_payment_required"
   682  	CheckoutSessionPaymentStatusPaid              CheckoutSessionPaymentStatus = "paid"
   683  	CheckoutSessionPaymentStatusUnpaid            CheckoutSessionPaymentStatus = "unpaid"
   684  )
   685  
   686  // This parameter applies to `ui_mode: embedded`. Learn more about the [redirect behavior](https://stripe.com/docs/payments/checkout/custom-redirect-behavior) of embedded sessions. Defaults to `always`.
   687  type CheckoutSessionRedirectOnCompletion string
   688  
   689  // List of values that CheckoutSessionRedirectOnCompletion can take
   690  const (
   691  	CheckoutSessionRedirectOnCompletionAlways     CheckoutSessionRedirectOnCompletion = "always"
   692  	CheckoutSessionRedirectOnCompletionIfRequired CheckoutSessionRedirectOnCompletion = "if_required"
   693  	CheckoutSessionRedirectOnCompletionNever      CheckoutSessionRedirectOnCompletion = "never"
   694  )
   695  
   696  // The reasoning behind this tax, for example, if the product is tax exempt. The possible values for this field may be extended as new tax rules are supported.
   697  type CheckoutSessionShippingCostTaxTaxabilityReason string
   698  
   699  // List of values that CheckoutSessionShippingCostTaxTaxabilityReason can take
   700  const (
   701  	CheckoutSessionShippingCostTaxTaxabilityReasonCustomerExempt       CheckoutSessionShippingCostTaxTaxabilityReason = "customer_exempt"
   702  	CheckoutSessionShippingCostTaxTaxabilityReasonNotCollecting        CheckoutSessionShippingCostTaxTaxabilityReason = "not_collecting"
   703  	CheckoutSessionShippingCostTaxTaxabilityReasonNotSubjectToTax      CheckoutSessionShippingCostTaxTaxabilityReason = "not_subject_to_tax"
   704  	CheckoutSessionShippingCostTaxTaxabilityReasonNotSupported         CheckoutSessionShippingCostTaxTaxabilityReason = "not_supported"
   705  	CheckoutSessionShippingCostTaxTaxabilityReasonPortionProductExempt CheckoutSessionShippingCostTaxTaxabilityReason = "portion_product_exempt"
   706  	CheckoutSessionShippingCostTaxTaxabilityReasonPortionReducedRated  CheckoutSessionShippingCostTaxTaxabilityReason = "portion_reduced_rated"
   707  	CheckoutSessionShippingCostTaxTaxabilityReasonPortionStandardRated CheckoutSessionShippingCostTaxTaxabilityReason = "portion_standard_rated"
   708  	CheckoutSessionShippingCostTaxTaxabilityReasonProductExempt        CheckoutSessionShippingCostTaxTaxabilityReason = "product_exempt"
   709  	CheckoutSessionShippingCostTaxTaxabilityReasonProductExemptHoliday CheckoutSessionShippingCostTaxTaxabilityReason = "product_exempt_holiday"
   710  	CheckoutSessionShippingCostTaxTaxabilityReasonProportionallyRated  CheckoutSessionShippingCostTaxTaxabilityReason = "proportionally_rated"
   711  	CheckoutSessionShippingCostTaxTaxabilityReasonReducedRated         CheckoutSessionShippingCostTaxTaxabilityReason = "reduced_rated"
   712  	CheckoutSessionShippingCostTaxTaxabilityReasonReverseCharge        CheckoutSessionShippingCostTaxTaxabilityReason = "reverse_charge"
   713  	CheckoutSessionShippingCostTaxTaxabilityReasonStandardRated        CheckoutSessionShippingCostTaxTaxabilityReason = "standard_rated"
   714  	CheckoutSessionShippingCostTaxTaxabilityReasonTaxableBasisReduced  CheckoutSessionShippingCostTaxTaxabilityReason = "taxable_basis_reduced"
   715  	CheckoutSessionShippingCostTaxTaxabilityReasonZeroRated            CheckoutSessionShippingCostTaxTaxabilityReason = "zero_rated"
   716  )
   717  
   718  // The status of the Checkout Session, one of `open`, `complete`, or `expired`.
   719  type CheckoutSessionStatus string
   720  
   721  // List of values that CheckoutSessionStatus can take
   722  const (
   723  	CheckoutSessionStatusComplete CheckoutSessionStatus = "complete"
   724  	CheckoutSessionStatusExpired  CheckoutSessionStatus = "expired"
   725  	CheckoutSessionStatusOpen     CheckoutSessionStatus = "open"
   726  )
   727  
   728  // Describes the type of transaction being performed by Checkout in order to customize
   729  // relevant text on the page, such as the submit button. `submit_type` can only be
   730  // specified on Checkout Sessions in `payment` mode. If blank or `auto`, `pay` is used.
   731  type CheckoutSessionSubmitType string
   732  
   733  // List of values that CheckoutSessionSubmitType can take
   734  const (
   735  	CheckoutSessionSubmitTypeAuto   CheckoutSessionSubmitType = "auto"
   736  	CheckoutSessionSubmitTypeBook   CheckoutSessionSubmitType = "book"
   737  	CheckoutSessionSubmitTypeDonate CheckoutSessionSubmitType = "donate"
   738  	CheckoutSessionSubmitTypePay    CheckoutSessionSubmitType = "pay"
   739  )
   740  
   741  // The reasoning behind this tax, for example, if the product is tax exempt. The possible values for this field may be extended as new tax rules are supported.
   742  type CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReason string
   743  
   744  // List of values that CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReason can take
   745  const (
   746  	CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReasonCustomerExempt       CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReason = "customer_exempt"
   747  	CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReasonNotCollecting        CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReason = "not_collecting"
   748  	CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReasonNotSubjectToTax      CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReason = "not_subject_to_tax"
   749  	CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReasonNotSupported         CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReason = "not_supported"
   750  	CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReasonPortionProductExempt CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReason = "portion_product_exempt"
   751  	CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReasonPortionReducedRated  CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReason = "portion_reduced_rated"
   752  	CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReasonPortionStandardRated CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReason = "portion_standard_rated"
   753  	CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReasonProductExempt        CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReason = "product_exempt"
   754  	CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReasonProductExemptHoliday CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReason = "product_exempt_holiday"
   755  	CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReasonProportionallyRated  CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReason = "proportionally_rated"
   756  	CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReasonReducedRated         CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReason = "reduced_rated"
   757  	CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReasonReverseCharge        CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReason = "reverse_charge"
   758  	CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReasonStandardRated        CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReason = "standard_rated"
   759  	CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReasonTaxableBasisReduced  CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReason = "taxable_basis_reduced"
   760  	CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReasonZeroRated            CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReason = "zero_rated"
   761  )
   762  
   763  // The UI mode of the Session. Defaults to `hosted`.
   764  type CheckoutSessionUIMode string
   765  
   766  // List of values that CheckoutSessionUIMode can take
   767  const (
   768  	CheckoutSessionUIModeEmbedded CheckoutSessionUIMode = "embedded"
   769  	CheckoutSessionUIModeHosted   CheckoutSessionUIMode = "hosted"
   770  )
   771  
   772  // Only return the Checkout Sessions for the Customer details specified.
   773  type CheckoutSessionListCustomerDetailsParams struct {
   774  	// Customer's email address.
   775  	Email *string `form:"email"`
   776  }
   777  
   778  // Returns a list of Checkout Sessions.
   779  type CheckoutSessionListParams struct {
   780  	ListParams `form:"*"`
   781  	// Only return Checkout Sessions that were created during the given date interval.
   782  	Created *int64 `form:"created"`
   783  	// Only return Checkout Sessions that were created during the given date interval.
   784  	CreatedRange *RangeQueryParams `form:"created"`
   785  	// Only return the Checkout Sessions for the Customer specified.
   786  	Customer *string `form:"customer"`
   787  	// Only return the Checkout Sessions for the Customer details specified.
   788  	CustomerDetails *CheckoutSessionListCustomerDetailsParams `form:"customer_details"`
   789  	// Specifies which fields in the response should be expanded.
   790  	Expand []*string `form:"expand"`
   791  	// Only return the Checkout Session for the PaymentIntent specified.
   792  	PaymentIntent *string `form:"payment_intent"`
   793  	// Only return the Checkout Sessions for the Payment Link specified.
   794  	PaymentLink *string `form:"payment_link"`
   795  	// Only return the Checkout Sessions matching the given status.
   796  	Status *string `form:"status"`
   797  	// Only return the Checkout Session for the subscription specified.
   798  	Subscription *string `form:"subscription"`
   799  }
   800  
   801  // AddExpand appends a new field to expand.
   802  func (p *CheckoutSessionListParams) AddExpand(f string) {
   803  	p.Expand = append(p.Expand, &f)
   804  }
   805  
   806  // Configure a Checkout Session that can be used to recover an expired session.
   807  type CheckoutSessionAfterExpirationRecoveryParams struct {
   808  	// Enables user redeemable promotion codes on the recovered Checkout Sessions. Defaults to `false`
   809  	AllowPromotionCodes *bool `form:"allow_promotion_codes"`
   810  	// If `true`, a recovery URL will be generated to recover this Checkout Session if it
   811  	// expires before a successful transaction is completed. It will be attached to the
   812  	// Checkout Session object upon expiration.
   813  	Enabled *bool `form:"enabled"`
   814  }
   815  
   816  // Configure actions after a Checkout Session has expired.
   817  type CheckoutSessionAfterExpirationParams struct {
   818  	// Configure a Checkout Session that can be used to recover an expired session.
   819  	Recovery *CheckoutSessionAfterExpirationRecoveryParams `form:"recovery"`
   820  }
   821  
   822  // The account that's liable for tax. If set, the business address and tax registrations required to perform the tax calculation are loaded from this account. The tax transaction is returned in the report of the connected account.
   823  type CheckoutSessionAutomaticTaxLiabilityParams struct {
   824  	// The connected account being referenced when `type` is `account`.
   825  	Account *string `form:"account"`
   826  	// Type of the account referenced in the request.
   827  	Type *string `form:"type"`
   828  }
   829  
   830  // Settings for automatic tax lookup for this session and resulting payments, invoices, and subscriptions.
   831  type CheckoutSessionAutomaticTaxParams struct {
   832  	// Set to true to enable automatic taxes.
   833  	Enabled *bool `form:"enabled"`
   834  	// The account that's liable for tax. If set, the business address and tax registrations required to perform the tax calculation are loaded from this account. The tax transaction is returned in the report of the connected account.
   835  	Liability *CheckoutSessionAutomaticTaxLiabilityParams `form:"liability"`
   836  }
   837  
   838  // Determines the display of payment method reuse agreement text in the UI. If set to `hidden`, it will hide legal text related to the reuse of a payment method.
   839  type CheckoutSessionConsentCollectionPaymentMethodReuseAgreementParams struct {
   840  	// Determines the position and visibility of the payment method reuse agreement in the UI. When set to `auto`, Stripe's
   841  	// defaults will be used. When set to `hidden`, the payment method reuse agreement text will always be hidden in the UI.
   842  	Position *string `form:"position"`
   843  }
   844  
   845  // Configure fields for the Checkout Session to gather active consent from customers.
   846  type CheckoutSessionConsentCollectionParams struct {
   847  	// Determines the display of payment method reuse agreement text in the UI. If set to `hidden`, it will hide legal text related to the reuse of a payment method.
   848  	PaymentMethodReuseAgreement *CheckoutSessionConsentCollectionPaymentMethodReuseAgreementParams `form:"payment_method_reuse_agreement"`
   849  	// If set to `auto`, enables the collection of customer consent for promotional communications. The Checkout
   850  	// Session will determine whether to display an option to opt into promotional communication
   851  	// from the merchant depending on the customer's locale. Only available to US merchants.
   852  	Promotions *string `form:"promotions"`
   853  	// If set to `required`, it requires customers to check a terms of service checkbox before being able to pay.
   854  	// There must be a valid terms of service URL set in your [Dashboard settings](https://dashboard.stripe.com/settings/public).
   855  	TermsOfService *string `form:"terms_of_service"`
   856  }
   857  
   858  // The options available for the customer to select. Up to 200 options allowed.
   859  type CheckoutSessionCustomFieldDropdownOptionParams struct {
   860  	// The label for the option, displayed to the customer. Up to 100 characters.
   861  	Label *string `form:"label"`
   862  	// The value for this option, not displayed to the customer, used by your integration to reconcile the option selected by the customer. Must be unique to this option, alphanumeric, and up to 100 characters.
   863  	Value *string `form:"value"`
   864  }
   865  
   866  // Configuration for `type=dropdown` fields.
   867  type CheckoutSessionCustomFieldDropdownParams struct {
   868  	// The options available for the customer to select. Up to 200 options allowed.
   869  	Options []*CheckoutSessionCustomFieldDropdownOptionParams `form:"options"`
   870  }
   871  
   872  // The label for the field, displayed to the customer.
   873  type CheckoutSessionCustomFieldLabelParams struct {
   874  	// Custom text for the label, displayed to the customer. Up to 50 characters.
   875  	Custom *string `form:"custom"`
   876  	// The type of the label.
   877  	Type *string `form:"type"`
   878  }
   879  
   880  // Configuration for `type=numeric` fields.
   881  type CheckoutSessionCustomFieldNumericParams struct {
   882  	// The maximum character length constraint for the customer's input.
   883  	MaximumLength *int64 `form:"maximum_length"`
   884  	// The minimum character length requirement for the customer's input.
   885  	MinimumLength *int64 `form:"minimum_length"`
   886  }
   887  
   888  // Configuration for `type=text` fields.
   889  type CheckoutSessionCustomFieldTextParams struct {
   890  	// The maximum character length constraint for the customer's input.
   891  	MaximumLength *int64 `form:"maximum_length"`
   892  	// The minimum character length requirement for the customer's input.
   893  	MinimumLength *int64 `form:"minimum_length"`
   894  }
   895  
   896  // Collect additional information from your customer using custom fields. Up to 3 fields are supported.
   897  type CheckoutSessionCustomFieldParams struct {
   898  	// Configuration for `type=dropdown` fields.
   899  	Dropdown *CheckoutSessionCustomFieldDropdownParams `form:"dropdown"`
   900  	// String of your choice that your integration can use to reconcile this field. Must be unique to this field, alphanumeric, and up to 200 characters.
   901  	Key *string `form:"key"`
   902  	// The label for the field, displayed to the customer.
   903  	Label *CheckoutSessionCustomFieldLabelParams `form:"label"`
   904  	// Configuration for `type=numeric` fields.
   905  	Numeric *CheckoutSessionCustomFieldNumericParams `form:"numeric"`
   906  	// Whether the customer is required to complete the field before completing the Checkout Session. Defaults to `false`.
   907  	Optional *bool `form:"optional"`
   908  	// Configuration for `type=text` fields.
   909  	Text *CheckoutSessionCustomFieldTextParams `form:"text"`
   910  	// The type of the field.
   911  	Type *string `form:"type"`
   912  }
   913  
   914  // Custom text that should be displayed after the payment confirmation button.
   915  type CheckoutSessionCustomTextAfterSubmitParams struct {
   916  	// Text may be up to 1200 characters in length.
   917  	Message *string `form:"message"`
   918  }
   919  
   920  // Custom text that should be displayed alongside shipping address collection.
   921  type CheckoutSessionCustomTextShippingAddressParams struct {
   922  	// Text may be up to 1200 characters in length.
   923  	Message *string `form:"message"`
   924  }
   925  
   926  // Custom text that should be displayed alongside the payment confirmation button.
   927  type CheckoutSessionCustomTextSubmitParams struct {
   928  	// Text may be up to 1200 characters in length.
   929  	Message *string `form:"message"`
   930  }
   931  
   932  // Custom text that should be displayed in place of the default terms of service agreement text.
   933  type CheckoutSessionCustomTextTermsOfServiceAcceptanceParams struct {
   934  	// Text may be up to 1200 characters in length.
   935  	Message *string `form:"message"`
   936  }
   937  
   938  // Display additional text for your customers using custom text.
   939  type CheckoutSessionCustomTextParams struct {
   940  	// Custom text that should be displayed after the payment confirmation button.
   941  	AfterSubmit *CheckoutSessionCustomTextAfterSubmitParams `form:"after_submit"`
   942  	// Custom text that should be displayed alongside shipping address collection.
   943  	ShippingAddress *CheckoutSessionCustomTextShippingAddressParams `form:"shipping_address"`
   944  	// Custom text that should be displayed alongside the payment confirmation button.
   945  	Submit *CheckoutSessionCustomTextSubmitParams `form:"submit"`
   946  	// Custom text that should be displayed in place of the default terms of service agreement text.
   947  	TermsOfServiceAcceptance *CheckoutSessionCustomTextTermsOfServiceAcceptanceParams `form:"terms_of_service_acceptance"`
   948  }
   949  
   950  // Controls what fields on Customer can be updated by the Checkout Session. Can only be provided when `customer` is provided.
   951  type CheckoutSessionCustomerUpdateParams struct {
   952  	// Describes whether Checkout saves the billing address onto `customer.address`.
   953  	// To always collect a full billing address, use `billing_address_collection`. Defaults to `never`.
   954  	Address *string `form:"address"`
   955  	// Describes whether Checkout saves the name onto `customer.name`. Defaults to `never`.
   956  	Name *string `form:"name"`
   957  	// Describes whether Checkout saves shipping information onto `customer.shipping`.
   958  	// To collect shipping information, use `shipping_address_collection`. Defaults to `never`.
   959  	Shipping *string `form:"shipping"`
   960  }
   961  
   962  // The coupon or promotion code to apply to this Session. Currently, only up to one may be specified.
   963  type CheckoutSessionDiscountParams struct {
   964  	// The ID of the coupon to apply to this Session.
   965  	Coupon *string `form:"coupon"`
   966  	// The ID of a promotion code to apply to this Session.
   967  	PromotionCode *string `form:"promotion_code"`
   968  }
   969  
   970  // Default custom fields to be displayed on invoices for this customer.
   971  type CheckoutSessionInvoiceCreationInvoiceDataCustomFieldParams struct {
   972  	// The name of the custom field. This may be up to 40 characters.
   973  	Name *string `form:"name"`
   974  	// The value of the custom field. This may be up to 140 characters.
   975  	Value *string `form:"value"`
   976  }
   977  
   978  // The connected account that issues the invoice. The invoice is presented with the branding and support information of the specified account.
   979  type CheckoutSessionInvoiceCreationInvoiceDataIssuerParams struct {
   980  	// The connected account being referenced when `type` is `account`.
   981  	Account *string `form:"account"`
   982  	// Type of the account referenced in the request.
   983  	Type *string `form:"type"`
   984  }
   985  
   986  // Default options for invoice PDF rendering for this customer.
   987  type CheckoutSessionInvoiceCreationInvoiceDataRenderingOptionsParams struct {
   988  	// How line-item prices and amounts will be displayed with respect to tax on invoice PDFs. One of `exclude_tax` or `include_inclusive_tax`. `include_inclusive_tax` will include inclusive tax (and exclude exclusive tax) in invoice PDF amounts. `exclude_tax` will exclude all tax (inclusive and exclusive alike) from invoice PDF amounts.
   989  	AmountTaxDisplay *string `form:"amount_tax_display"`
   990  }
   991  
   992  // Parameters passed when creating invoices for payment-mode Checkout Sessions.
   993  type CheckoutSessionInvoiceCreationInvoiceDataParams struct {
   994  	// The account tax IDs associated with the invoice.
   995  	AccountTaxIDs []*string `form:"account_tax_ids"`
   996  	// Default custom fields to be displayed on invoices for this customer.
   997  	CustomFields []*CheckoutSessionInvoiceCreationInvoiceDataCustomFieldParams `form:"custom_fields"`
   998  	// An arbitrary string attached to the object. Often useful for displaying to users.
   999  	Description *string `form:"description"`
  1000  	// Default footer to be displayed on invoices for this customer.
  1001  	Footer *string `form:"footer"`
  1002  	// The connected account that issues the invoice. The invoice is presented with the branding and support information of the specified account.
  1003  	Issuer *CheckoutSessionInvoiceCreationInvoiceDataIssuerParams `form:"issuer"`
  1004  	// 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`.
  1005  	Metadata map[string]string `form:"metadata"`
  1006  	// Default options for invoice PDF rendering for this customer.
  1007  	RenderingOptions *CheckoutSessionInvoiceCreationInvoiceDataRenderingOptionsParams `form:"rendering_options"`
  1008  }
  1009  
  1010  // AddMetadata adds a new key-value pair to the Metadata.
  1011  func (p *CheckoutSessionInvoiceCreationInvoiceDataParams) AddMetadata(key string, value string) {
  1012  	if p.Metadata == nil {
  1013  		p.Metadata = make(map[string]string)
  1014  	}
  1015  
  1016  	p.Metadata[key] = value
  1017  }
  1018  
  1019  // Generate a post-purchase Invoice for one-time payments.
  1020  type CheckoutSessionInvoiceCreationParams struct {
  1021  	// Set to `true` to enable invoice creation.
  1022  	Enabled *bool `form:"enabled"`
  1023  	// Parameters passed when creating invoices for payment-mode Checkout Sessions.
  1024  	InvoiceData *CheckoutSessionInvoiceCreationInvoiceDataParams `form:"invoice_data"`
  1025  }
  1026  
  1027  // When set, provides configuration for this item's quantity to be adjusted by the customer during Checkout.
  1028  type CheckoutSessionLineItemAdjustableQuantityParams struct {
  1029  	// Set to true if the quantity can be adjusted to any non-negative integer. By default customers will be able to remove the line item by setting the quantity to 0.
  1030  	Enabled *bool `form:"enabled"`
  1031  	// The maximum quantity the customer can purchase for the Checkout Session. By default this value is 99. You can specify a value up to 999999.
  1032  	Maximum *int64 `form:"maximum"`
  1033  	// The minimum quantity the customer must purchase for the Checkout Session. By default this value is 0.
  1034  	Minimum *int64 `form:"minimum"`
  1035  }
  1036  
  1037  // Data used to generate a new product object inline. One of `product` or `product_data` is required.
  1038  type CheckoutSessionLineItemPriceDataProductDataParams struct {
  1039  	// The product's description, meant to be displayable to the customer. Use this field to optionally store a long form explanation of the product being sold for your own rendering purposes.
  1040  	Description *string `form:"description"`
  1041  	// A list of up to 8 URLs of images for this product, meant to be displayable to the customer.
  1042  	Images []*string `form:"images"`
  1043  	// 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`.
  1044  	Metadata map[string]string `form:"metadata"`
  1045  	// The product's name, meant to be displayable to the customer.
  1046  	Name *string `form:"name"`
  1047  	// A [tax code](https://stripe.com/docs/tax/tax-categories) ID.
  1048  	TaxCode *string `form:"tax_code"`
  1049  }
  1050  
  1051  // AddMetadata adds a new key-value pair to the Metadata.
  1052  func (p *CheckoutSessionLineItemPriceDataProductDataParams) AddMetadata(key string, value string) {
  1053  	if p.Metadata == nil {
  1054  		p.Metadata = make(map[string]string)
  1055  	}
  1056  
  1057  	p.Metadata[key] = value
  1058  }
  1059  
  1060  // The recurring components of a price such as `interval` and `interval_count`.
  1061  type CheckoutSessionLineItemPriceDataRecurringParams struct {
  1062  	// Specifies billing frequency. Either `day`, `week`, `month` or `year`.
  1063  	Interval *string `form:"interval"`
  1064  	// The number of intervals between subscription billings. For example, `interval=month` and `interval_count=3` bills every 3 months. Maximum of three years interval allowed (3 years, 36 months, or 156 weeks).
  1065  	IntervalCount *int64 `form:"interval_count"`
  1066  }
  1067  
  1068  // Data used to generate a new [Price](https://stripe.com/docs/api/prices) object inline. One of `price` or `price_data` is required.
  1069  type CheckoutSessionLineItemPriceDataParams struct {
  1070  	// Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).
  1071  	Currency *string `form:"currency"`
  1072  	// The ID of the product that this price will belong to. One of `product` or `product_data` is required.
  1073  	Product *string `form:"product"`
  1074  	// Data used to generate a new product object inline. One of `product` or `product_data` is required.
  1075  	ProductData *CheckoutSessionLineItemPriceDataProductDataParams `form:"product_data"`
  1076  	// The recurring components of a price such as `interval` and `interval_count`.
  1077  	Recurring *CheckoutSessionLineItemPriceDataRecurringParams `form:"recurring"`
  1078  	// Only required if a [default tax behavior](https://stripe.com/docs/tax/products-prices-tax-categories-tax-behavior#setting-a-default-tax-behavior-(recommended)) was not provided in the Stripe Tax settings. Specifies whether the price is considered inclusive of taxes or exclusive of taxes. One of `inclusive`, `exclusive`, or `unspecified`. Once specified as either `inclusive` or `exclusive`, it cannot be changed.
  1079  	TaxBehavior *string `form:"tax_behavior"`
  1080  	// A non-negative integer in cents (or local equivalent) representing how much to charge. One of `unit_amount` or `unit_amount_decimal` is required.
  1081  	UnitAmount *int64 `form:"unit_amount"`
  1082  	// Same as `unit_amount`, but accepts a decimal value in cents (or local equivalent) with at most 12 decimal places. Only one of `unit_amount` and `unit_amount_decimal` can be set.
  1083  	UnitAmountDecimal *float64 `form:"unit_amount_decimal,high_precision"`
  1084  }
  1085  
  1086  // A list of items the customer is purchasing. Use this parameter to pass one-time or recurring [Prices](https://stripe.com/docs/api/prices).
  1087  //
  1088  // For `payment` mode, there is a maximum of 100 line items, however it is recommended to consolidate line items if there are more than a few dozen.
  1089  //
  1090  // For `subscription` mode, there is a maximum of 20 line items with recurring Prices and 20 line items with one-time Prices. Line items with one-time Prices will be on the initial invoice only.
  1091  type CheckoutSessionLineItemParams struct {
  1092  	// When set, provides configuration for this item's quantity to be adjusted by the customer during Checkout.
  1093  	AdjustableQuantity *CheckoutSessionLineItemAdjustableQuantityParams `form:"adjustable_quantity"`
  1094  	// The [tax rates](https://stripe.com/docs/api/tax_rates) that will be applied to this line item depending on the customer's billing/shipping address. We currently support the following countries: US, GB, AU, and all countries in the EU.
  1095  	DynamicTaxRates []*string `form:"dynamic_tax_rates"`
  1096  	// The ID of the [Price](https://stripe.com/docs/api/prices) or [Plan](https://stripe.com/docs/api/plans) object. One of `price` or `price_data` is required.
  1097  	Price *string `form:"price"`
  1098  	// Data used to generate a new [Price](https://stripe.com/docs/api/prices) object inline. One of `price` or `price_data` is required.
  1099  	PriceData *CheckoutSessionLineItemPriceDataParams `form:"price_data"`
  1100  	// The quantity of the line item being purchased. Quantity should not be defined when `recurring.usage_type=metered`.
  1101  	Quantity *int64 `form:"quantity"`
  1102  	// The [tax rates](https://stripe.com/docs/api/tax_rates) which apply to this line item.
  1103  	TaxRates []*string `form:"tax_rates"`
  1104  }
  1105  
  1106  // The parameters used to automatically create a Transfer when the payment succeeds.
  1107  // For more information, see the PaymentIntents [use case for connected accounts](https://stripe.com/docs/payments/connected-accounts).
  1108  type CheckoutSessionPaymentIntentDataTransferDataParams struct {
  1109  	// The amount that will be transferred automatically when a charge succeeds.
  1110  	Amount *int64 `form:"amount"`
  1111  	// If specified, successful charges will be attributed to the destination
  1112  	// account for tax reporting, and the funds from charges will be transferred
  1113  	// to the destination account. The ID of the resulting transfer will be
  1114  	// returned on the successful charge's `transfer` field.
  1115  	Destination *string `form:"destination"`
  1116  }
  1117  
  1118  // A subset of parameters to be passed to PaymentIntent creation for Checkout Sessions in `payment` mode.
  1119  type CheckoutSessionPaymentIntentDataParams struct {
  1120  	// The amount of the application fee (if any) that will be requested to be applied to the payment and transferred to the application owner's Stripe account. The amount of the application fee collected will be capped at the total payment amount. For more information, see the PaymentIntents [use case for connected accounts](https://stripe.com/docs/payments/connected-accounts).
  1121  	ApplicationFeeAmount *int64 `form:"application_fee_amount"`
  1122  	// Controls when the funds will be captured from the customer's account.
  1123  	CaptureMethod *string `form:"capture_method"`
  1124  	// An arbitrary string attached to the object. Often useful for displaying to users.
  1125  	Description *string `form:"description"`
  1126  	// 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`.
  1127  	Metadata map[string]string `form:"metadata"`
  1128  	// The Stripe account ID for which these funds are intended. For details,
  1129  	// see the PaymentIntents [use case for connected
  1130  	// accounts](https://stripe.com/docs/payments/connected-accounts).
  1131  	OnBehalfOf *string `form:"on_behalf_of"`
  1132  	// Email address that the receipt for the resulting payment will be sent to. If `receipt_email` is specified for a payment in live mode, a receipt will be sent regardless of your [email settings](https://dashboard.stripe.com/account/emails).
  1133  	ReceiptEmail *string `form:"receipt_email"`
  1134  	// Indicates that you intend to [make future payments](https://stripe.com/docs/payments/payment-intents#future-usage) with the payment
  1135  	// method collected by this Checkout Session.
  1136  	//
  1137  	// When setting this to `on_session`, Checkout will show a notice to the
  1138  	// customer that their payment details will be saved.
  1139  	//
  1140  	// When setting this to `off_session`, Checkout will show a notice to the
  1141  	// customer that their payment details will be saved and used for future
  1142  	// payments.
  1143  	//
  1144  	// If a Customer has been provided or Checkout creates a new Customer,
  1145  	// Checkout will attach the payment method to the Customer.
  1146  	//
  1147  	// If Checkout does not create a Customer, the payment method is not attached
  1148  	// to a Customer. To reuse the payment method, you can retrieve it from the
  1149  	// Checkout Session's PaymentIntent.
  1150  	//
  1151  	// When processing card payments, Checkout also uses `setup_future_usage`
  1152  	// to dynamically optimize your payment flow and comply with regional
  1153  	// legislation and network rules, such as SCA.
  1154  	SetupFutureUsage *string `form:"setup_future_usage"`
  1155  	// Shipping information for this payment.
  1156  	Shipping *ShippingDetailsParams `form:"shipping"`
  1157  	// Extra information about the payment. This will appear on your
  1158  	// customer's statement when this payment succeeds in creating a charge.
  1159  	StatementDescriptor *string `form:"statement_descriptor"`
  1160  	// Provides information about the charge that customers see on their statements. Concatenated with the
  1161  	// prefix (shortened descriptor) or statement descriptor that's set on the account to form the complete
  1162  	// statement descriptor. Maximum 22 characters for the concatenated descriptor.
  1163  	StatementDescriptorSuffix *string `form:"statement_descriptor_suffix"`
  1164  	// The parameters used to automatically create a Transfer when the payment succeeds.
  1165  	// For more information, see the PaymentIntents [use case for connected accounts](https://stripe.com/docs/payments/connected-accounts).
  1166  	TransferData *CheckoutSessionPaymentIntentDataTransferDataParams `form:"transfer_data"`
  1167  	// A string that identifies the resulting payment as part of a group. See the PaymentIntents [use case for connected accounts](https://stripe.com/docs/connect/separate-charges-and-transfers) for details.
  1168  	TransferGroup *string `form:"transfer_group"`
  1169  }
  1170  
  1171  // AddMetadata adds a new key-value pair to the Metadata.
  1172  func (p *CheckoutSessionPaymentIntentDataParams) AddMetadata(key string, value string) {
  1173  	if p.Metadata == nil {
  1174  		p.Metadata = make(map[string]string)
  1175  	}
  1176  
  1177  	p.Metadata[key] = value
  1178  }
  1179  
  1180  // Additional fields for Mandate creation
  1181  type CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptionsParams struct {
  1182  	// A URL for custom mandate text to render during confirmation step.
  1183  	// The URL will be rendered with additional GET parameters `payment_intent` and `payment_intent_client_secret` when confirming a Payment Intent,
  1184  	// or `setup_intent` and `setup_intent_client_secret` when confirming a Setup Intent.
  1185  	CustomMandateURL *string `form:"custom_mandate_url"`
  1186  	// List of Stripe products where this mandate can be selected automatically. Only usable in `setup` mode.
  1187  	DefaultFor []*string `form:"default_for"`
  1188  	// Description of the mandate interval. Only required if 'payment_schedule' parameter is 'interval' or 'combined'.
  1189  	IntervalDescription *string `form:"interval_description"`
  1190  	// Payment schedule for the mandate.
  1191  	PaymentSchedule *string `form:"payment_schedule"`
  1192  	// Transaction type of the mandate.
  1193  	TransactionType *string `form:"transaction_type"`
  1194  }
  1195  
  1196  // contains details about the ACSS Debit payment method options.
  1197  type CheckoutSessionPaymentMethodOptionsACSSDebitParams struct {
  1198  	// Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies). This is only accepted for Checkout Sessions in `setup` mode.
  1199  	Currency *string `form:"currency"`
  1200  	// Additional fields for Mandate creation
  1201  	MandateOptions *CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptionsParams `form:"mandate_options"`
  1202  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1203  	//
  1204  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1205  	//
  1206  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1207  	SetupFutureUsage *string `form:"setup_future_usage"`
  1208  	// Verification method for the intent
  1209  	VerificationMethod *string `form:"verification_method"`
  1210  }
  1211  
  1212  // contains details about the Affirm payment method options.
  1213  type CheckoutSessionPaymentMethodOptionsAffirmParams struct {
  1214  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1215  	//
  1216  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1217  	//
  1218  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1219  	SetupFutureUsage *string `form:"setup_future_usage"`
  1220  }
  1221  
  1222  // contains details about the Afterpay Clearpay payment method options.
  1223  type CheckoutSessionPaymentMethodOptionsAfterpayClearpayParams struct {
  1224  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1225  	//
  1226  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1227  	//
  1228  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1229  	SetupFutureUsage *string `form:"setup_future_usage"`
  1230  }
  1231  
  1232  // contains details about the Alipay payment method options.
  1233  type CheckoutSessionPaymentMethodOptionsAlipayParams struct {
  1234  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1235  	//
  1236  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1237  	//
  1238  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1239  	SetupFutureUsage *string `form:"setup_future_usage"`
  1240  }
  1241  
  1242  // contains details about the AU Becs Debit payment method options.
  1243  type CheckoutSessionPaymentMethodOptionsAUBECSDebitParams struct {
  1244  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1245  	//
  1246  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1247  	//
  1248  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1249  	SetupFutureUsage *string `form:"setup_future_usage"`
  1250  }
  1251  
  1252  // contains details about the Bacs Debit payment method options.
  1253  type CheckoutSessionPaymentMethodOptionsBACSDebitParams struct {
  1254  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1255  	//
  1256  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1257  	//
  1258  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1259  	SetupFutureUsage *string `form:"setup_future_usage"`
  1260  }
  1261  
  1262  // contains details about the Bancontact payment method options.
  1263  type CheckoutSessionPaymentMethodOptionsBancontactParams struct {
  1264  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1265  	//
  1266  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1267  	//
  1268  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1269  	SetupFutureUsage *string `form:"setup_future_usage"`
  1270  }
  1271  
  1272  // contains details about the Boleto payment method options.
  1273  type CheckoutSessionPaymentMethodOptionsBoletoParams struct {
  1274  	// The number of calendar days before a Boleto voucher expires. For example, if you create a Boleto voucher on Monday and you set expires_after_days to 2, the Boleto invoice will expire on Wednesday at 23:59 America/Sao_Paulo time.
  1275  	ExpiresAfterDays *int64 `form:"expires_after_days"`
  1276  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1277  	//
  1278  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1279  	//
  1280  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1281  	SetupFutureUsage *string `form:"setup_future_usage"`
  1282  }
  1283  
  1284  // Installment options for card payments
  1285  type CheckoutSessionPaymentMethodOptionsCardInstallmentsParams struct {
  1286  	// Setting to true enables installments for this Checkout Session.
  1287  	// Setting to false will prevent any installment plan from applying to a payment.
  1288  	Enabled *bool `form:"enabled"`
  1289  }
  1290  
  1291  // contains details about the Card payment method options.
  1292  type CheckoutSessionPaymentMethodOptionsCardParams struct {
  1293  	// Installment options for card payments
  1294  	Installments *CheckoutSessionPaymentMethodOptionsCardInstallmentsParams `form:"installments"`
  1295  	// We strongly recommend that you rely on our SCA Engine to automatically prompt your customers for authentication based on risk level and [other requirements](https://stripe.com/docs/strong-customer-authentication). However, if you wish to request 3D Secure based on logic from your own fraud engine, provide this option. If not provided, this value defaults to `automatic`. Read our guide on [manually requesting 3D Secure](https://stripe.com/docs/payments/3d-secure/authentication-flow#manual-three-ds) for more information on how this configuration interacts with Radar and our SCA Engine.
  1296  	RequestThreeDSecure *string `form:"request_three_d_secure"`
  1297  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1298  	//
  1299  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1300  	//
  1301  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1302  	SetupFutureUsage *string `form:"setup_future_usage"`
  1303  	// Provides information about a card payment that customers see on their statements. Concatenated with the Kana prefix (shortened Kana descriptor) or Kana statement descriptor that's set on the account to form the complete statement descriptor. Maximum 22 characters. On card statements, the *concatenation* of both prefix and suffix (including separators) will appear truncated to 22 characters.
  1304  	StatementDescriptorSuffixKana *string `form:"statement_descriptor_suffix_kana"`
  1305  	// Provides information about a card payment that customers see on their statements. Concatenated with the Kanji prefix (shortened Kanji descriptor) or Kanji statement descriptor that's set on the account to form the complete statement descriptor. Maximum 17 characters. On card statements, the *concatenation* of both prefix and suffix (including separators) will appear truncated to 17 characters.
  1306  	StatementDescriptorSuffixKanji *string `form:"statement_descriptor_suffix_kanji"`
  1307  }
  1308  
  1309  // contains details about the Cashapp Pay payment method options.
  1310  type CheckoutSessionPaymentMethodOptionsCashAppParams struct {
  1311  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1312  	//
  1313  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1314  	//
  1315  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1316  	SetupFutureUsage *string `form:"setup_future_usage"`
  1317  }
  1318  
  1319  // Configuration for eu_bank_transfer funding type.
  1320  type CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferEUBankTransferParams struct {
  1321  	// The desired country code of the bank account information. Permitted values include: `BE`, `DE`, `ES`, `FR`, `IE`, or `NL`.
  1322  	Country *string `form:"country"`
  1323  }
  1324  
  1325  // Configuration for the bank transfer funding type, if the `funding_type` is set to `bank_transfer`.
  1326  type CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferParams struct {
  1327  	// Configuration for eu_bank_transfer funding type.
  1328  	EUBankTransfer *CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferEUBankTransferParams `form:"eu_bank_transfer"`
  1329  	// List of address types that should be returned in the financial_addresses response. If not specified, all valid types will be returned.
  1330  	//
  1331  	// Permitted values include: `sort_code`, `zengin`, `iban`, or `spei`.
  1332  	RequestedAddressTypes []*string `form:"requested_address_types"`
  1333  	// The list of bank transfer types that this PaymentIntent is allowed to use for funding.
  1334  	Type *string `form:"type"`
  1335  }
  1336  
  1337  // contains details about the Customer Balance payment method options.
  1338  type CheckoutSessionPaymentMethodOptionsCustomerBalanceParams struct {
  1339  	// Configuration for the bank transfer funding type, if the `funding_type` is set to `bank_transfer`.
  1340  	BankTransfer *CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferParams `form:"bank_transfer"`
  1341  	// The funding method type to be used when there are not enough funds in the customer balance. Permitted values include: `bank_transfer`.
  1342  	FundingType *string `form:"funding_type"`
  1343  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1344  	//
  1345  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1346  	//
  1347  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1348  	SetupFutureUsage *string `form:"setup_future_usage"`
  1349  }
  1350  
  1351  // contains details about the EPS payment method options.
  1352  type CheckoutSessionPaymentMethodOptionsEPSParams struct {
  1353  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1354  	//
  1355  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1356  	//
  1357  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1358  	SetupFutureUsage *string `form:"setup_future_usage"`
  1359  }
  1360  
  1361  // contains details about the FPX payment method options.
  1362  type CheckoutSessionPaymentMethodOptionsFPXParams struct {
  1363  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1364  	//
  1365  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1366  	//
  1367  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1368  	SetupFutureUsage *string `form:"setup_future_usage"`
  1369  }
  1370  
  1371  // contains details about the Giropay payment method options.
  1372  type CheckoutSessionPaymentMethodOptionsGiropayParams struct {
  1373  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1374  	//
  1375  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1376  	//
  1377  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1378  	SetupFutureUsage *string `form:"setup_future_usage"`
  1379  }
  1380  
  1381  // contains details about the Grabpay payment method options.
  1382  type CheckoutSessionPaymentMethodOptionsGrabpayParams struct {
  1383  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1384  	//
  1385  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1386  	//
  1387  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1388  	SetupFutureUsage *string `form:"setup_future_usage"`
  1389  }
  1390  
  1391  // contains details about the Ideal payment method options.
  1392  type CheckoutSessionPaymentMethodOptionsIDEALParams struct {
  1393  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1394  	//
  1395  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1396  	//
  1397  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1398  	SetupFutureUsage *string `form:"setup_future_usage"`
  1399  }
  1400  
  1401  // contains details about the Klarna payment method options.
  1402  type CheckoutSessionPaymentMethodOptionsKlarnaParams struct {
  1403  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1404  	//
  1405  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1406  	//
  1407  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1408  	SetupFutureUsage *string `form:"setup_future_usage"`
  1409  }
  1410  
  1411  // contains details about the Konbini payment method options.
  1412  type CheckoutSessionPaymentMethodOptionsKonbiniParams struct {
  1413  	// The number of calendar days (between 1 and 60) after which Konbini payment instructions will expire. For example, if a PaymentIntent is confirmed with Konbini and `expires_after_days` set to 2 on Monday JST, the instructions will expire on Wednesday 23:59:59 JST. Defaults to 3 days.
  1414  	ExpiresAfterDays *int64 `form:"expires_after_days"`
  1415  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1416  	//
  1417  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1418  	//
  1419  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1420  	SetupFutureUsage *string `form:"setup_future_usage"`
  1421  }
  1422  
  1423  // contains details about the Link payment method options.
  1424  type CheckoutSessionPaymentMethodOptionsLinkParams struct {
  1425  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1426  	//
  1427  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1428  	//
  1429  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1430  	SetupFutureUsage *string `form:"setup_future_usage"`
  1431  }
  1432  
  1433  // contains details about the OXXO payment method options.
  1434  type CheckoutSessionPaymentMethodOptionsOXXOParams struct {
  1435  	// The number of calendar days before an OXXO voucher expires. For example, if you create an OXXO voucher on Monday and you set expires_after_days to 2, the OXXO invoice will expire on Wednesday at 23:59 America/Mexico_City time.
  1436  	ExpiresAfterDays *int64 `form:"expires_after_days"`
  1437  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1438  	//
  1439  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1440  	//
  1441  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1442  	SetupFutureUsage *string `form:"setup_future_usage"`
  1443  }
  1444  
  1445  // contains details about the P24 payment method options.
  1446  type CheckoutSessionPaymentMethodOptionsP24Params struct {
  1447  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1448  	//
  1449  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1450  	//
  1451  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1452  	SetupFutureUsage *string `form:"setup_future_usage"`
  1453  	// Confirm that the payer has accepted the P24 terms and conditions.
  1454  	TOSShownAndAccepted *bool `form:"tos_shown_and_accepted"`
  1455  }
  1456  
  1457  // contains details about the PayNow payment method options.
  1458  type CheckoutSessionPaymentMethodOptionsPayNowParams struct {
  1459  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1460  	//
  1461  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1462  	//
  1463  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1464  	SetupFutureUsage *string `form:"setup_future_usage"`
  1465  }
  1466  
  1467  // contains details about the PayPal payment method options.
  1468  type CheckoutSessionPaymentMethodOptionsPaypalParams struct {
  1469  	// Controls when the funds will be captured from the customer's account.
  1470  	CaptureMethod *string `form:"capture_method"`
  1471  	// [Preferred locale](https://stripe.com/docs/payments/paypal/supported-locales) of the PayPal checkout page that the customer is redirected to.
  1472  	PreferredLocale *string `form:"preferred_locale"`
  1473  	// A reference of the PayPal transaction visible to customer which is mapped to PayPal's invoice ID. This must be a globally unique ID if you have configured in your PayPal settings to block multiple payments per invoice ID.
  1474  	Reference *string `form:"reference"`
  1475  	// The risk correlation ID for an on-session payment using a saved PayPal payment method.
  1476  	RiskCorrelationID *string `form:"risk_correlation_id"`
  1477  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1478  	//
  1479  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1480  	//
  1481  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1482  	//
  1483  	// If `setup_future_usage` is already set and you are performing a request using a publishable key, you may only update the value from `on_session` to `off_session`.
  1484  	SetupFutureUsage *string `form:"setup_future_usage"`
  1485  }
  1486  
  1487  // contains details about the Pix payment method options.
  1488  type CheckoutSessionPaymentMethodOptionsPixParams struct {
  1489  	// The number of seconds (between 10 and 1209600) after which Pix payment will expire. Defaults to 86400 seconds.
  1490  	ExpiresAfterSeconds *int64 `form:"expires_after_seconds"`
  1491  }
  1492  
  1493  // contains details about the RevolutPay payment method options.
  1494  type CheckoutSessionPaymentMethodOptionsRevolutPayParams struct {
  1495  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1496  	//
  1497  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1498  	//
  1499  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1500  	SetupFutureUsage *string `form:"setup_future_usage"`
  1501  }
  1502  
  1503  // contains details about the Sepa Debit payment method options.
  1504  type CheckoutSessionPaymentMethodOptionsSEPADebitParams struct {
  1505  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1506  	//
  1507  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1508  	//
  1509  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1510  	SetupFutureUsage *string `form:"setup_future_usage"`
  1511  }
  1512  
  1513  // contains details about the Sofort payment method options.
  1514  type CheckoutSessionPaymentMethodOptionsSofortParams struct {
  1515  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1516  	//
  1517  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1518  	//
  1519  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1520  	SetupFutureUsage *string `form:"setup_future_usage"`
  1521  }
  1522  
  1523  // contains details about the Swish payment method options.
  1524  type CheckoutSessionPaymentMethodOptionsSwishParams struct {
  1525  	// The order reference that will be displayed to customers in the Swish application. Defaults to the `id` of the Payment Intent.
  1526  	Reference *string `form:"reference"`
  1527  }
  1528  
  1529  // Additional fields for Financial Connections Session creation
  1530  type CheckoutSessionPaymentMethodOptionsUSBankAccountFinancialConnectionsParams struct {
  1531  	// The list of permissions to request. If this parameter is passed, the `payment_method` permission must be included. Valid permissions include: `balances`, `ownership`, `payment_method`, and `transactions`.
  1532  	Permissions []*string `form:"permissions"`
  1533  	// List of data features that you would like to retrieve upon account creation.
  1534  	Prefetch []*string `form:"prefetch"`
  1535  }
  1536  
  1537  // contains details about the Us Bank Account payment method options.
  1538  type CheckoutSessionPaymentMethodOptionsUSBankAccountParams struct {
  1539  	// Additional fields for Financial Connections Session creation
  1540  	FinancialConnections *CheckoutSessionPaymentMethodOptionsUSBankAccountFinancialConnectionsParams `form:"financial_connections"`
  1541  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1542  	//
  1543  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1544  	//
  1545  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1546  	SetupFutureUsage *string `form:"setup_future_usage"`
  1547  	// Verification method for the intent
  1548  	VerificationMethod *string `form:"verification_method"`
  1549  }
  1550  
  1551  // contains details about the WeChat Pay payment method options.
  1552  type CheckoutSessionPaymentMethodOptionsWeChatPayParams struct {
  1553  	// The app ID registered with WeChat Pay. Only required when client is ios or android.
  1554  	AppID *string `form:"app_id"`
  1555  	// The client type that the end customer will pay from
  1556  	Client *string `form:"client"`
  1557  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  1558  	//
  1559  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  1560  	//
  1561  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  1562  	SetupFutureUsage *string `form:"setup_future_usage"`
  1563  }
  1564  
  1565  // Payment-method-specific configuration.
  1566  type CheckoutSessionPaymentMethodOptionsParams struct {
  1567  	// contains details about the ACSS Debit payment method options.
  1568  	ACSSDebit *CheckoutSessionPaymentMethodOptionsACSSDebitParams `form:"acss_debit"`
  1569  	// contains details about the Affirm payment method options.
  1570  	Affirm *CheckoutSessionPaymentMethodOptionsAffirmParams `form:"affirm"`
  1571  	// contains details about the Afterpay Clearpay payment method options.
  1572  	AfterpayClearpay *CheckoutSessionPaymentMethodOptionsAfterpayClearpayParams `form:"afterpay_clearpay"`
  1573  	// contains details about the Alipay payment method options.
  1574  	Alipay *CheckoutSessionPaymentMethodOptionsAlipayParams `form:"alipay"`
  1575  	// contains details about the AU Becs Debit payment method options.
  1576  	AUBECSDebit *CheckoutSessionPaymentMethodOptionsAUBECSDebitParams `form:"au_becs_debit"`
  1577  	// contains details about the Bacs Debit payment method options.
  1578  	BACSDebit *CheckoutSessionPaymentMethodOptionsBACSDebitParams `form:"bacs_debit"`
  1579  	// contains details about the Bancontact payment method options.
  1580  	Bancontact *CheckoutSessionPaymentMethodOptionsBancontactParams `form:"bancontact"`
  1581  	// contains details about the Boleto payment method options.
  1582  	Boleto *CheckoutSessionPaymentMethodOptionsBoletoParams `form:"boleto"`
  1583  	// contains details about the Card payment method options.
  1584  	Card *CheckoutSessionPaymentMethodOptionsCardParams `form:"card"`
  1585  	// contains details about the Cashapp Pay payment method options.
  1586  	CashApp *CheckoutSessionPaymentMethodOptionsCashAppParams `form:"cashapp"`
  1587  	// contains details about the Customer Balance payment method options.
  1588  	CustomerBalance *CheckoutSessionPaymentMethodOptionsCustomerBalanceParams `form:"customer_balance"`
  1589  	// contains details about the EPS payment method options.
  1590  	EPS *CheckoutSessionPaymentMethodOptionsEPSParams `form:"eps"`
  1591  	// contains details about the FPX payment method options.
  1592  	FPX *CheckoutSessionPaymentMethodOptionsFPXParams `form:"fpx"`
  1593  	// contains details about the Giropay payment method options.
  1594  	Giropay *CheckoutSessionPaymentMethodOptionsGiropayParams `form:"giropay"`
  1595  	// contains details about the Grabpay payment method options.
  1596  	Grabpay *CheckoutSessionPaymentMethodOptionsGrabpayParams `form:"grabpay"`
  1597  	// contains details about the Ideal payment method options.
  1598  	IDEAL *CheckoutSessionPaymentMethodOptionsIDEALParams `form:"ideal"`
  1599  	// contains details about the Klarna payment method options.
  1600  	Klarna *CheckoutSessionPaymentMethodOptionsKlarnaParams `form:"klarna"`
  1601  	// contains details about the Konbini payment method options.
  1602  	Konbini *CheckoutSessionPaymentMethodOptionsKonbiniParams `form:"konbini"`
  1603  	// contains details about the Link payment method options.
  1604  	Link *CheckoutSessionPaymentMethodOptionsLinkParams `form:"link"`
  1605  	// contains details about the OXXO payment method options.
  1606  	OXXO *CheckoutSessionPaymentMethodOptionsOXXOParams `form:"oxxo"`
  1607  	// contains details about the P24 payment method options.
  1608  	P24 *CheckoutSessionPaymentMethodOptionsP24Params `form:"p24"`
  1609  	// contains details about the PayNow payment method options.
  1610  	PayNow *CheckoutSessionPaymentMethodOptionsPayNowParams `form:"paynow"`
  1611  	// contains details about the PayPal payment method options.
  1612  	Paypal *CheckoutSessionPaymentMethodOptionsPaypalParams `form:"paypal"`
  1613  	// contains details about the Pix payment method options.
  1614  	Pix *CheckoutSessionPaymentMethodOptionsPixParams `form:"pix"`
  1615  	// contains details about the RevolutPay payment method options.
  1616  	RevolutPay *CheckoutSessionPaymentMethodOptionsRevolutPayParams `form:"revolut_pay"`
  1617  	// contains details about the Sepa Debit payment method options.
  1618  	SEPADebit *CheckoutSessionPaymentMethodOptionsSEPADebitParams `form:"sepa_debit"`
  1619  	// contains details about the Sofort payment method options.
  1620  	Sofort *CheckoutSessionPaymentMethodOptionsSofortParams `form:"sofort"`
  1621  	// contains details about the Swish payment method options.
  1622  	Swish *CheckoutSessionPaymentMethodOptionsSwishParams `form:"swish"`
  1623  	// contains details about the Us Bank Account payment method options.
  1624  	USBankAccount *CheckoutSessionPaymentMethodOptionsUSBankAccountParams `form:"us_bank_account"`
  1625  	// contains details about the WeChat Pay payment method options.
  1626  	WeChatPay *CheckoutSessionPaymentMethodOptionsWeChatPayParams `form:"wechat_pay"`
  1627  }
  1628  
  1629  // Controls phone number collection settings for the session.
  1630  //
  1631  // We recommend that you review your privacy policy and check with your legal contacts
  1632  // before using this feature. Learn more about [collecting phone numbers with Checkout](https://stripe.com/docs/payments/checkout/phone-numbers).
  1633  type CheckoutSessionPhoneNumberCollectionParams struct {
  1634  	// Set to `true` to enable phone number collection.
  1635  	Enabled *bool `form:"enabled"`
  1636  }
  1637  
  1638  // A subset of parameters to be passed to SetupIntent creation for Checkout Sessions in `setup` mode.
  1639  type CheckoutSessionSetupIntentDataParams struct {
  1640  	// An arbitrary string attached to the object. Often useful for displaying to users.
  1641  	Description *string `form:"description"`
  1642  	// 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`.
  1643  	Metadata map[string]string `form:"metadata"`
  1644  	// The Stripe account for which the setup is intended.
  1645  	OnBehalfOf *string `form:"on_behalf_of"`
  1646  }
  1647  
  1648  // AddMetadata adds a new key-value pair to the Metadata.
  1649  func (p *CheckoutSessionSetupIntentDataParams) AddMetadata(key string, value string) {
  1650  	if p.Metadata == nil {
  1651  		p.Metadata = make(map[string]string)
  1652  	}
  1653  
  1654  	p.Metadata[key] = value
  1655  }
  1656  
  1657  // When set, provides configuration for Checkout to collect a shipping address from a customer.
  1658  type CheckoutSessionShippingAddressCollectionParams struct {
  1659  	// An array of two-letter ISO country codes representing which countries Checkout should provide as options for
  1660  	// shipping locations. Unsupported country codes: `AS, CX, CC, CU, HM, IR, KP, MH, FM, NF, MP, PW, SD, SY, UM, VI`.
  1661  	AllowedCountries []*string `form:"allowed_countries"`
  1662  }
  1663  
  1664  // The upper bound of the estimated range. If empty, represents no upper bound i.e., infinite.
  1665  type CheckoutSessionShippingOptionShippingRateDataDeliveryEstimateMaximumParams struct {
  1666  	// A unit of time.
  1667  	Unit *string `form:"unit"`
  1668  	// Must be greater than 0.
  1669  	Value *int64 `form:"value"`
  1670  }
  1671  
  1672  // The lower bound of the estimated range. If empty, represents no lower bound.
  1673  type CheckoutSessionShippingOptionShippingRateDataDeliveryEstimateMinimumParams struct {
  1674  	// A unit of time.
  1675  	Unit *string `form:"unit"`
  1676  	// Must be greater than 0.
  1677  	Value *int64 `form:"value"`
  1678  }
  1679  
  1680  // The estimated range for how long shipping will take, meant to be displayable to the customer. This will appear on CheckoutSessions.
  1681  type CheckoutSessionShippingOptionShippingRateDataDeliveryEstimateParams struct {
  1682  	// The upper bound of the estimated range. If empty, represents no upper bound i.e., infinite.
  1683  	Maximum *CheckoutSessionShippingOptionShippingRateDataDeliveryEstimateMaximumParams `form:"maximum"`
  1684  	// The lower bound of the estimated range. If empty, represents no lower bound.
  1685  	Minimum *CheckoutSessionShippingOptionShippingRateDataDeliveryEstimateMinimumParams `form:"minimum"`
  1686  }
  1687  
  1688  // Shipping rates defined in each available currency option. Each key must be a three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html) and a [supported currency](https://stripe.com/docs/currencies).
  1689  type CheckoutSessionShippingOptionShippingRateDataFixedAmountCurrencyOptionsParams struct {
  1690  	// A non-negative integer in cents representing how much to charge.
  1691  	Amount *int64 `form:"amount"`
  1692  	// Specifies whether the rate is considered inclusive of taxes or exclusive of taxes. One of `inclusive`, `exclusive`, or `unspecified`.
  1693  	TaxBehavior *string `form:"tax_behavior"`
  1694  }
  1695  
  1696  // Describes a fixed amount to charge for shipping. Must be present if type is `fixed_amount`.
  1697  type CheckoutSessionShippingOptionShippingRateDataFixedAmountParams struct {
  1698  	// A non-negative integer in cents representing how much to charge.
  1699  	Amount *int64 `form:"amount"`
  1700  	// Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).
  1701  	Currency *string `form:"currency"`
  1702  	// Shipping rates defined in each available currency option. Each key must be a three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html) and a [supported currency](https://stripe.com/docs/currencies).
  1703  	CurrencyOptions map[string]*CheckoutSessionShippingOptionShippingRateDataFixedAmountCurrencyOptionsParams `form:"currency_options"`
  1704  }
  1705  
  1706  // Parameters to be passed to Shipping Rate creation for this shipping option
  1707  type CheckoutSessionShippingOptionShippingRateDataParams struct {
  1708  	// The estimated range for how long shipping will take, meant to be displayable to the customer. This will appear on CheckoutSessions.
  1709  	DeliveryEstimate *CheckoutSessionShippingOptionShippingRateDataDeliveryEstimateParams `form:"delivery_estimate"`
  1710  	// The name of the shipping rate, meant to be displayable to the customer. This will appear on CheckoutSessions.
  1711  	DisplayName *string `form:"display_name"`
  1712  	// Describes a fixed amount to charge for shipping. Must be present if type is `fixed_amount`.
  1713  	FixedAmount *CheckoutSessionShippingOptionShippingRateDataFixedAmountParams `form:"fixed_amount"`
  1714  	// 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`.
  1715  	Metadata map[string]string `form:"metadata"`
  1716  	// Specifies whether the rate is considered inclusive of taxes or exclusive of taxes. One of `inclusive`, `exclusive`, or `unspecified`.
  1717  	TaxBehavior *string `form:"tax_behavior"`
  1718  	// A [tax code](https://stripe.com/docs/tax/tax-categories) ID. The Shipping tax code is `txcd_92010001`.
  1719  	TaxCode *string `form:"tax_code"`
  1720  	// The type of calculation to use on the shipping rate. Can only be `fixed_amount` for now.
  1721  	Type *string `form:"type"`
  1722  }
  1723  
  1724  // AddMetadata adds a new key-value pair to the Metadata.
  1725  func (p *CheckoutSessionShippingOptionShippingRateDataParams) AddMetadata(key string, value string) {
  1726  	if p.Metadata == nil {
  1727  		p.Metadata = make(map[string]string)
  1728  	}
  1729  
  1730  	p.Metadata[key] = value
  1731  }
  1732  
  1733  // The shipping rate options to apply to this Session. Up to a maximum of 5.
  1734  type CheckoutSessionShippingOptionParams struct {
  1735  	// The ID of the Shipping Rate to use for this shipping option.
  1736  	ShippingRate *string `form:"shipping_rate"`
  1737  	// Parameters to be passed to Shipping Rate creation for this shipping option
  1738  	ShippingRateData *CheckoutSessionShippingOptionShippingRateDataParams `form:"shipping_rate_data"`
  1739  }
  1740  
  1741  // The connected account that issues the invoice. The invoice is presented with the branding and support information of the specified account.
  1742  type CheckoutSessionSubscriptionDataInvoiceSettingsIssuerParams struct {
  1743  	// The connected account being referenced when `type` is `account`.
  1744  	Account *string `form:"account"`
  1745  	// Type of the account referenced in the request.
  1746  	Type *string `form:"type"`
  1747  }
  1748  
  1749  // All invoices will be billed using the specified settings.
  1750  type CheckoutSessionSubscriptionDataInvoiceSettingsParams struct {
  1751  	// The connected account that issues the invoice. The invoice is presented with the branding and support information of the specified account.
  1752  	Issuer *CheckoutSessionSubscriptionDataInvoiceSettingsIssuerParams `form:"issuer"`
  1753  }
  1754  
  1755  // If specified, the funds from the subscription's invoices will be transferred to the destination and the ID of the resulting transfers will be found on the resulting charges.
  1756  type CheckoutSessionSubscriptionDataTransferDataParams struct {
  1757  	// A non-negative decimal between 0 and 100, with at most two decimal places. This represents the percentage of the subscription invoice total that will be transferred to the destination account. By default, the entire amount is transferred to the destination.
  1758  	AmountPercent *float64 `form:"amount_percent"`
  1759  	// ID of an existing, connected Stripe account.
  1760  	Destination *string `form:"destination"`
  1761  }
  1762  
  1763  // Defines how the subscription should behave when the user's free trial ends.
  1764  type CheckoutSessionSubscriptionDataTrialSettingsEndBehaviorParams struct {
  1765  	// Indicates how the subscription should change when the trial ends if the user did not provide a payment method.
  1766  	MissingPaymentMethod *string `form:"missing_payment_method"`
  1767  }
  1768  
  1769  // Settings related to subscription trials.
  1770  type CheckoutSessionSubscriptionDataTrialSettingsParams struct {
  1771  	// Defines how the subscription should behave when the user's free trial ends.
  1772  	EndBehavior *CheckoutSessionSubscriptionDataTrialSettingsEndBehaviorParams `form:"end_behavior"`
  1773  }
  1774  
  1775  // A subset of parameters to be passed to subscription creation for Checkout Sessions in `subscription` mode.
  1776  type CheckoutSessionSubscriptionDataParams struct {
  1777  	// A non-negative decimal between 0 and 100, with at most two decimal places. This represents the percentage of the subscription invoice total that will be transferred to the application owner's Stripe account. To use an application fee percent, the request must be made on behalf of another account, using the `Stripe-Account` header or an OAuth key. For more information, see the application fees [documentation](https://stripe.com/docs/connect/subscriptions#collecting-fees-on-subscriptions).
  1778  	ApplicationFeePercent *float64 `form:"application_fee_percent"`
  1779  	// A future timestamp to anchor the subscription's billing cycle for new subscriptions.
  1780  	BillingCycleAnchor *int64 `form:"billing_cycle_anchor"`
  1781  	// The tax rates that will apply to any subscription item that does not have
  1782  	// `tax_rates` set. Invoices created will have their `default_tax_rates` populated
  1783  	// from the subscription.
  1784  	DefaultTaxRates []*string `form:"default_tax_rates"`
  1785  	// The subscription's description, meant to be displayable to the customer.
  1786  	// Use this field to optionally store an explanation of the subscription
  1787  	// for rendering in the [customer portal](https://stripe.com/docs/customer-management).
  1788  	Description *string `form:"description"`
  1789  	// All invoices will be billed using the specified settings.
  1790  	InvoiceSettings *CheckoutSessionSubscriptionDataInvoiceSettingsParams `form:"invoice_settings"`
  1791  	// 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`.
  1792  	Metadata map[string]string `form:"metadata"`
  1793  	// The account on behalf of which to charge, for each of the subscription's invoices.
  1794  	OnBehalfOf *string `form:"on_behalf_of"`
  1795  	// Determines how to handle prorations resulting from the `billing_cycle_anchor`. If no value is passed, the default is `create_prorations`.
  1796  	ProrationBehavior *string `form:"proration_behavior"`
  1797  	// If specified, the funds from the subscription's invoices will be transferred to the destination and the ID of the resulting transfers will be found on the resulting charges.
  1798  	TransferData *CheckoutSessionSubscriptionDataTransferDataParams `form:"transfer_data"`
  1799  	// Unix timestamp representing the end of the trial period the customer
  1800  	// will get before being charged for the first time. Has to be at least
  1801  	// 48 hours in the future.
  1802  	TrialEnd *int64 `form:"trial_end"`
  1803  	// Integer representing the number of trial period days before the
  1804  	// customer is charged for the first time. Has to be at least 1.
  1805  	TrialPeriodDays *int64 `form:"trial_period_days"`
  1806  	// Settings related to subscription trials.
  1807  	TrialSettings *CheckoutSessionSubscriptionDataTrialSettingsParams `form:"trial_settings"`
  1808  }
  1809  
  1810  // AddMetadata adds a new key-value pair to the Metadata.
  1811  func (p *CheckoutSessionSubscriptionDataParams) AddMetadata(key string, value string) {
  1812  	if p.Metadata == nil {
  1813  		p.Metadata = make(map[string]string)
  1814  	}
  1815  
  1816  	p.Metadata[key] = value
  1817  }
  1818  
  1819  // Controls tax ID collection settings for the session.
  1820  type CheckoutSessionTaxIDCollectionParams struct {
  1821  	// Set to true to enable Tax ID collection.
  1822  	Enabled *bool `form:"enabled"`
  1823  }
  1824  
  1825  // Creates a Session object.
  1826  type CheckoutSessionParams struct {
  1827  	Params `form:"*"`
  1828  	// Configure actions after a Checkout Session has expired.
  1829  	AfterExpiration *CheckoutSessionAfterExpirationParams `form:"after_expiration"`
  1830  	// Enables user redeemable promotion codes.
  1831  	AllowPromotionCodes *bool `form:"allow_promotion_codes"`
  1832  	// Settings for automatic tax lookup for this session and resulting payments, invoices, and subscriptions.
  1833  	AutomaticTax *CheckoutSessionAutomaticTaxParams `form:"automatic_tax"`
  1834  	// Specify whether Checkout should collect the customer's billing address. Defaults to `auto`.
  1835  	BillingAddressCollection *string `form:"billing_address_collection"`
  1836  	// If set, Checkout displays a back button and customers will be directed to this URL if they decide to cancel payment and return to your website.
  1837  	CancelURL *string `form:"cancel_url"`
  1838  	// A unique string to reference the Checkout Session. This can be a
  1839  	// customer ID, a cart ID, or similar, and can be used to reconcile the
  1840  	// session with your internal systems.
  1841  	ClientReferenceID *string `form:"client_reference_id"`
  1842  	// Configure fields for the Checkout Session to gather active consent from customers.
  1843  	ConsentCollection *CheckoutSessionConsentCollectionParams `form:"consent_collection"`
  1844  	// Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies). Required in `setup` mode when `payment_method_types` is not set.
  1845  	Currency *string `form:"currency"`
  1846  	// ID of an existing Customer, if one exists. In `payment` mode, the customer's most recently saved card
  1847  	// payment method will be used to prefill the email, name, card details, and billing address
  1848  	// on the Checkout page. In `subscription` mode, the customer's [default payment method](https://stripe.com/docs/api/customers/update#update_customer-invoice_settings-default_payment_method)
  1849  	// will be used if it's a card, otherwise the most recently saved card will be used. A valid billing address, billing name and billing email are required on the payment method for Checkout to prefill the customer's card details.
  1850  	//
  1851  	// If the Customer already has a valid [email](https://stripe.com/docs/api/customers/object#customer_object-email) set, the email will be prefilled and not editable in Checkout.
  1852  	// If the Customer does not have a valid `email`, Checkout will set the email entered during the session on the Customer.
  1853  	//
  1854  	// If blank for Checkout Sessions in `subscription` mode or with `customer_creation` set as `always` in `payment` mode, Checkout will create a new Customer object based on information provided during the payment flow.
  1855  	//
  1856  	// You can set [`payment_intent_data.setup_future_usage`](https://stripe.com/docs/api/checkout/sessions/create#create_checkout_session-payment_intent_data-setup_future_usage) to have Checkout automatically attach the payment method to the Customer you pass in for future reuse.
  1857  	Customer *string `form:"customer"`
  1858  	// Configure whether a Checkout Session creates a [Customer](https://stripe.com/docs/api/customers) during Session confirmation.
  1859  	//
  1860  	// When a Customer is not created, you can still retrieve email, address, and other customer data entered in Checkout
  1861  	// with [customer_details](https://stripe.com/docs/api/checkout/sessions/object#checkout_session_object-customer_details).
  1862  	//
  1863  	// Sessions that don't create Customers instead are grouped by [guest customers](https://stripe.com/docs/payments/checkout/guest-customers)
  1864  	// in the Dashboard. Promotion codes limited to first time customers will return invalid for these Sessions.
  1865  	//
  1866  	// Can only be set in `payment` and `setup` mode.
  1867  	CustomerCreation *string `form:"customer_creation"`
  1868  	// If provided, this value will be used when the Customer object is created.
  1869  	// If not provided, customers will be asked to enter their email address.
  1870  	// Use this parameter to prefill customer data if you already have an email
  1871  	// on file. To access information about the customer once a session is
  1872  	// complete, use the `customer` field.
  1873  	CustomerEmail *string `form:"customer_email"`
  1874  	// Controls what fields on Customer can be updated by the Checkout Session. Can only be provided when `customer` is provided.
  1875  	CustomerUpdate *CheckoutSessionCustomerUpdateParams `form:"customer_update"`
  1876  	// Collect additional information from your customer using custom fields. Up to 3 fields are supported.
  1877  	CustomFields []*CheckoutSessionCustomFieldParams `form:"custom_fields"`
  1878  	// Display additional text for your customers using custom text.
  1879  	CustomText *CheckoutSessionCustomTextParams `form:"custom_text"`
  1880  	// The coupon or promotion code to apply to this Session. Currently, only up to one may be specified.
  1881  	Discounts []*CheckoutSessionDiscountParams `form:"discounts"`
  1882  	// Specifies which fields in the response should be expanded.
  1883  	Expand []*string `form:"expand"`
  1884  	// The Epoch time in seconds at which the Checkout Session will expire. It can be anywhere from 30 minutes to 24 hours after Checkout Session creation. By default, this value is 24 hours from creation.
  1885  	ExpiresAt *int64 `form:"expires_at"`
  1886  	// Generate a post-purchase Invoice for one-time payments.
  1887  	InvoiceCreation *CheckoutSessionInvoiceCreationParams `form:"invoice_creation"`
  1888  	// A list of items the customer is purchasing. Use this parameter to pass one-time or recurring [Prices](https://stripe.com/docs/api/prices).
  1889  	//
  1890  	// For `payment` mode, there is a maximum of 100 line items, however it is recommended to consolidate line items if there are more than a few dozen.
  1891  	//
  1892  	// For `subscription` mode, there is a maximum of 20 line items with recurring Prices and 20 line items with one-time Prices. Line items with one-time Prices will be on the initial invoice only.
  1893  	LineItems []*CheckoutSessionLineItemParams `form:"line_items"`
  1894  	// The IETF language tag of the locale Checkout is displayed in. If blank or `auto`, the browser's locale is used.
  1895  	Locale *string `form:"locale"`
  1896  	// 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`.
  1897  	Metadata map[string]string `form:"metadata"`
  1898  	// The mode of the Checkout Session. Pass `subscription` if the Checkout Session includes at least one recurring item.
  1899  	Mode *string `form:"mode"`
  1900  	// A subset of parameters to be passed to PaymentIntent creation for Checkout Sessions in `payment` mode.
  1901  	PaymentIntentData *CheckoutSessionPaymentIntentDataParams `form:"payment_intent_data"`
  1902  	// Specify whether Checkout should collect a payment method. When set to `if_required`, Checkout will not collect a payment method when the total due for the session is 0.
  1903  	// This may occur if the Checkout Session includes a free trial or a discount.
  1904  	//
  1905  	// Can only be set in `subscription` mode. Defaults to `always`.
  1906  	//
  1907  	// If you'd like information on how to collect a payment method outside of Checkout, read the guide on configuring [subscriptions with a free trial](https://stripe.com/docs/payments/checkout/free-trials).
  1908  	PaymentMethodCollection *string `form:"payment_method_collection"`
  1909  	// The ID of the payment method configuration to use with this Checkout session.
  1910  	PaymentMethodConfiguration *string `form:"payment_method_configuration"`
  1911  	// Payment-method-specific configuration.
  1912  	PaymentMethodOptions *CheckoutSessionPaymentMethodOptionsParams `form:"payment_method_options"`
  1913  	// A list of the types of payment methods (e.g., `card`) this Checkout Session can accept.
  1914  	//
  1915  	// You can omit this attribute to manage your payment methods from the [Stripe Dashboard](https://dashboard.stripe.com/settings/payment_methods).
  1916  	// See [Dynamic Payment Methods](https://stripe.com/docs/payments/payment-methods/integration-options#using-dynamic-payment-methods) for more details.
  1917  	//
  1918  	// Read more about the supported payment methods and their requirements in our [payment
  1919  	// method details guide](https://stripe.com/docs/payments/checkout/payment-methods).
  1920  	//
  1921  	// If multiple payment methods are passed, Checkout will dynamically reorder them to
  1922  	// prioritize the most relevant payment methods based on the customer's location and
  1923  	// other characteristics.
  1924  	PaymentMethodTypes []*string `form:"payment_method_types"`
  1925  	// Controls phone number collection settings for the session.
  1926  	//
  1927  	// We recommend that you review your privacy policy and check with your legal contacts
  1928  	// before using this feature. Learn more about [collecting phone numbers with Checkout](https://stripe.com/docs/payments/checkout/phone-numbers).
  1929  	PhoneNumberCollection *CheckoutSessionPhoneNumberCollectionParams `form:"phone_number_collection"`
  1930  	// This parameter applies to `ui_mode: embedded`. Learn more about the [redirect behavior](https://stripe.com/docs/payments/checkout/custom-redirect-behavior) of embedded sessions. Defaults to `always`.
  1931  	RedirectOnCompletion *string `form:"redirect_on_completion"`
  1932  	// The URL to redirect your customer back to after they authenticate or cancel their payment on the
  1933  	// payment method's app or site. This parameter is required if ui_mode is `embedded`
  1934  	// and redirect-based payment methods are enabled on the session.
  1935  	ReturnURL *string `form:"return_url"`
  1936  	// A subset of parameters to be passed to SetupIntent creation for Checkout Sessions in `setup` mode.
  1937  	SetupIntentData *CheckoutSessionSetupIntentDataParams `form:"setup_intent_data"`
  1938  	// When set, provides configuration for Checkout to collect a shipping address from a customer.
  1939  	ShippingAddressCollection *CheckoutSessionShippingAddressCollectionParams `form:"shipping_address_collection"`
  1940  	// The shipping rate options to apply to this Session. Up to a maximum of 5.
  1941  	ShippingOptions []*CheckoutSessionShippingOptionParams `form:"shipping_options"`
  1942  	// Describes the type of transaction being performed by Checkout in order to customize
  1943  	// relevant text on the page, such as the submit button. `submit_type` can only be
  1944  	// specified on Checkout Sessions in `payment` mode. If blank or `auto`, `pay` is used.
  1945  	SubmitType *string `form:"submit_type"`
  1946  	// A subset of parameters to be passed to subscription creation for Checkout Sessions in `subscription` mode.
  1947  	SubscriptionData *CheckoutSessionSubscriptionDataParams `form:"subscription_data"`
  1948  	// The URL to which Stripe should send customers when payment or setup
  1949  	// is complete.
  1950  	// This parameter is not allowed if ui_mode is `embedded`. If you'd like to use
  1951  	// information from the successful Checkout Session on your page, read the
  1952  	// guide on [customizing your success page](https://stripe.com/docs/payments/checkout/custom-success-page).
  1953  	SuccessURL *string `form:"success_url"`
  1954  	// Controls tax ID collection settings for the session.
  1955  	TaxIDCollection *CheckoutSessionTaxIDCollectionParams `form:"tax_id_collection"`
  1956  	// The UI mode of the Session. Defaults to `hosted`.
  1957  	UIMode *string `form:"ui_mode"`
  1958  }
  1959  
  1960  // AddExpand appends a new field to expand.
  1961  func (p *CheckoutSessionParams) AddExpand(f string) {
  1962  	p.Expand = append(p.Expand, &f)
  1963  }
  1964  
  1965  // AddMetadata adds a new key-value pair to the Metadata.
  1966  func (p *CheckoutSessionParams) AddMetadata(key string, value string) {
  1967  	if p.Metadata == nil {
  1968  		p.Metadata = make(map[string]string)
  1969  	}
  1970  
  1971  	p.Metadata[key] = value
  1972  }
  1973  
  1974  // When retrieving a Checkout Session, there is an includable line_items property containing the first handful of those items. There is also a URL where you can retrieve the full (paginated) list of line items.
  1975  type CheckoutSessionListLineItemsParams struct {
  1976  	ListParams `form:"*"`
  1977  	Session    *string `form:"-"` // Included in URL
  1978  	// Specifies which fields in the response should be expanded.
  1979  	Expand []*string `form:"expand"`
  1980  }
  1981  
  1982  // AddExpand appends a new field to expand.
  1983  func (p *CheckoutSessionListLineItemsParams) AddExpand(f string) {
  1984  	p.Expand = append(p.Expand, &f)
  1985  }
  1986  
  1987  // A Session can be expired when it is in one of these statuses: open
  1988  //
  1989  // After it expires, a customer can't complete a Session and customers loading the Session see a message saying the Session is expired.
  1990  type CheckoutSessionExpireParams struct {
  1991  	Params `form:"*"`
  1992  	// Specifies which fields in the response should be expanded.
  1993  	Expand []*string `form:"expand"`
  1994  }
  1995  
  1996  // AddExpand appends a new field to expand.
  1997  func (p *CheckoutSessionExpireParams) AddExpand(f string) {
  1998  	p.Expand = append(p.Expand, &f)
  1999  }
  2000  
  2001  // When set, configuration used to recover the Checkout Session on expiry.
  2002  type CheckoutSessionAfterExpirationRecovery struct {
  2003  	// Enables user redeemable promotion codes on the recovered Checkout Sessions. Defaults to `false`
  2004  	AllowPromotionCodes bool `json:"allow_promotion_codes"`
  2005  	// If `true`, a recovery url will be generated to recover this Checkout Session if it
  2006  	// expires before a transaction is completed. It will be attached to the
  2007  	// Checkout Session object upon expiration.
  2008  	Enabled bool `json:"enabled"`
  2009  	// The timestamp at which the recovery URL will expire.
  2010  	ExpiresAt int64 `json:"expires_at"`
  2011  	// URL that creates a new Checkout Session when clicked that is a copy of this expired Checkout Session
  2012  	URL string `json:"url"`
  2013  }
  2014  
  2015  // When set, provides configuration for actions to take if this Checkout Session expires.
  2016  type CheckoutSessionAfterExpiration struct {
  2017  	// When set, configuration used to recover the Checkout Session on expiry.
  2018  	Recovery *CheckoutSessionAfterExpirationRecovery `json:"recovery"`
  2019  }
  2020  
  2021  // The account that's liable for tax. If set, the business address and tax registrations required to perform the tax calculation are loaded from this account. The tax transaction is returned in the report of the connected account.
  2022  type CheckoutSessionAutomaticTaxLiability struct {
  2023  	// The connected account being referenced when `type` is `account`.
  2024  	Account *Account `json:"account"`
  2025  	// Type of the account referenced.
  2026  	Type CheckoutSessionAutomaticTaxLiabilityType `json:"type"`
  2027  }
  2028  type CheckoutSessionAutomaticTax struct {
  2029  	// Indicates whether automatic tax is enabled for the session
  2030  	Enabled bool `json:"enabled"`
  2031  	// The account that's liable for tax. If set, the business address and tax registrations required to perform the tax calculation are loaded from this account. The tax transaction is returned in the report of the connected account.
  2032  	Liability *CheckoutSessionAutomaticTaxLiability `json:"liability"`
  2033  	// The status of the most recent automated tax calculation for this session.
  2034  	Status CheckoutSessionAutomaticTaxStatus `json:"status"`
  2035  }
  2036  
  2037  // Results of `consent_collection` for this session.
  2038  type CheckoutSessionConsent struct {
  2039  	// If `opt_in`, the customer consents to receiving promotional communications
  2040  	// from the merchant about this Checkout Session.
  2041  	Promotions CheckoutSessionConsentPromotions `json:"promotions"`
  2042  	// If `accepted`, the customer in this Checkout Session has agreed to the merchant's terms of service.
  2043  	TermsOfService CheckoutSessionConsentTermsOfService `json:"terms_of_service"`
  2044  }
  2045  
  2046  // If set to `hidden`, it will hide legal text related to the reuse of a payment method.
  2047  type CheckoutSessionConsentCollectionPaymentMethodReuseAgreement struct {
  2048  	// Determines the position and visibility of the payment method reuse agreement in the UI. When set to `auto`, Stripe's defaults will be used.
  2049  	//
  2050  	// When set to `hidden`, the payment method reuse agreement text will always be hidden in the UI.
  2051  	Position CheckoutSessionConsentCollectionPaymentMethodReuseAgreementPosition `json:"position"`
  2052  }
  2053  
  2054  // When set, provides configuration for the Checkout Session to gather active consent from customers.
  2055  type CheckoutSessionConsentCollection struct {
  2056  	// If set to `hidden`, it will hide legal text related to the reuse of a payment method.
  2057  	PaymentMethodReuseAgreement *CheckoutSessionConsentCollectionPaymentMethodReuseAgreement `json:"payment_method_reuse_agreement"`
  2058  	// If set to `auto`, enables the collection of customer consent for promotional communications. The Checkout
  2059  	// Session will determine whether to display an option to opt into promotional communication
  2060  	// from the merchant depending on the customer's locale. Only available to US merchants.
  2061  	Promotions CheckoutSessionConsentCollectionPromotions `json:"promotions"`
  2062  	// If set to `required`, it requires customers to accept the terms of service before being able to pay.
  2063  	TermsOfService CheckoutSessionConsentCollectionTermsOfService `json:"terms_of_service"`
  2064  }
  2065  
  2066  // Currency conversion details for automatic currency conversion sessions
  2067  type CheckoutSessionCurrencyConversion struct {
  2068  	// Total of all items in source currency before discounts or taxes are applied.
  2069  	AmountSubtotal int64 `json:"amount_subtotal"`
  2070  	// Total of all items in source currency after discounts and taxes are applied.
  2071  	AmountTotal int64 `json:"amount_total"`
  2072  	// Exchange rate used to convert source currency amounts to customer currency amounts
  2073  	FxRate float64 `json:"fx_rate,string"`
  2074  	// Creation currency of the CheckoutSession before localization
  2075  	SourceCurrency Currency `json:"source_currency"`
  2076  }
  2077  
  2078  // The options available for the customer to select. Up to 200 options allowed.
  2079  type CheckoutSessionCustomFieldDropdownOption struct {
  2080  	// The label for the option, displayed to the customer. Up to 100 characters.
  2081  	Label string `json:"label"`
  2082  	// The value for this option, not displayed to the customer, used by your integration to reconcile the option selected by the customer. Must be unique to this option, alphanumeric, and up to 100 characters.
  2083  	Value string `json:"value"`
  2084  }
  2085  type CheckoutSessionCustomFieldDropdown struct {
  2086  	// The options available for the customer to select. Up to 200 options allowed.
  2087  	Options []*CheckoutSessionCustomFieldDropdownOption `json:"options"`
  2088  	// The option selected by the customer. This will be the `value` for the option.
  2089  	Value string `json:"value"`
  2090  }
  2091  type CheckoutSessionCustomFieldLabel struct {
  2092  	// Custom text for the label, displayed to the customer. Up to 50 characters.
  2093  	Custom string `json:"custom"`
  2094  	// The type of the label.
  2095  	Type CheckoutSessionCustomFieldLabelType `json:"type"`
  2096  }
  2097  type CheckoutSessionCustomFieldNumeric struct {
  2098  	// The maximum character length constraint for the customer's input.
  2099  	MaximumLength int64 `json:"maximum_length"`
  2100  	// The minimum character length requirement for the customer's input.
  2101  	MinimumLength int64 `json:"minimum_length"`
  2102  	// The value entered by the customer, containing only digits.
  2103  	Value string `json:"value"`
  2104  }
  2105  type CheckoutSessionCustomFieldText struct {
  2106  	// The maximum character length constraint for the customer's input.
  2107  	MaximumLength int64 `json:"maximum_length"`
  2108  	// The minimum character length requirement for the customer's input.
  2109  	MinimumLength int64 `json:"minimum_length"`
  2110  	// The value entered by the customer.
  2111  	Value string `json:"value"`
  2112  }
  2113  
  2114  // Collect additional information from your customer using custom fields. Up to 3 fields are supported.
  2115  type CheckoutSessionCustomField struct {
  2116  	Dropdown *CheckoutSessionCustomFieldDropdown `json:"dropdown"`
  2117  	// String of your choice that your integration can use to reconcile this field. Must be unique to this field, alphanumeric, and up to 200 characters.
  2118  	Key     string                             `json:"key"`
  2119  	Label   *CheckoutSessionCustomFieldLabel   `json:"label"`
  2120  	Numeric *CheckoutSessionCustomFieldNumeric `json:"numeric"`
  2121  	// Whether the customer is required to complete the field before completing the Checkout Session. Defaults to `false`.
  2122  	Optional bool                            `json:"optional"`
  2123  	Text     *CheckoutSessionCustomFieldText `json:"text"`
  2124  	// The type of the field.
  2125  	Type CheckoutSessionCustomFieldType `json:"type"`
  2126  }
  2127  
  2128  // Custom text that should be displayed after the payment confirmation button.
  2129  type CheckoutSessionCustomTextAfterSubmit struct {
  2130  	// Text may be up to 1200 characters in length.
  2131  	Message string `json:"message"`
  2132  }
  2133  
  2134  // Custom text that should be displayed alongside shipping address collection.
  2135  type CheckoutSessionCustomTextShippingAddress struct {
  2136  	// Text may be up to 1200 characters in length.
  2137  	Message string `json:"message"`
  2138  }
  2139  
  2140  // Custom text that should be displayed alongside the payment confirmation button.
  2141  type CheckoutSessionCustomTextSubmit struct {
  2142  	// Text may be up to 1200 characters in length.
  2143  	Message string `json:"message"`
  2144  }
  2145  
  2146  // Custom text that should be displayed in place of the default terms of service agreement text.
  2147  type CheckoutSessionCustomTextTermsOfServiceAcceptance struct {
  2148  	// Text may be up to 1200 characters in length.
  2149  	Message string `json:"message"`
  2150  }
  2151  type CheckoutSessionCustomText struct {
  2152  	// Custom text that should be displayed after the payment confirmation button.
  2153  	AfterSubmit *CheckoutSessionCustomTextAfterSubmit `json:"after_submit"`
  2154  	// Custom text that should be displayed alongside shipping address collection.
  2155  	ShippingAddress *CheckoutSessionCustomTextShippingAddress `json:"shipping_address"`
  2156  	// Custom text that should be displayed alongside the payment confirmation button.
  2157  	Submit *CheckoutSessionCustomTextSubmit `json:"submit"`
  2158  	// Custom text that should be displayed in place of the default terms of service agreement text.
  2159  	TermsOfServiceAcceptance *CheckoutSessionCustomTextTermsOfServiceAcceptance `json:"terms_of_service_acceptance"`
  2160  }
  2161  
  2162  // The customer's tax IDs after a completed Checkout Session.
  2163  type CheckoutSessionCustomerDetailsTaxID struct {
  2164  	// The type of the tax ID, one of `ad_nrt`, `ar_cuit`, `eu_vat`, `bo_tin`, `br_cnpj`, `br_cpf`, `cn_tin`, `co_nit`, `cr_tin`, `do_rcn`, `ec_ruc`, `eu_oss_vat`, `pe_ruc`, `ro_tin`, `rs_pib`, `sv_nit`, `uy_ruc`, `ve_rif`, `vn_tin`, `gb_vat`, `nz_gst`, `au_abn`, `au_arn`, `in_gst`, `no_vat`, `no_voec`, `za_vat`, `ch_vat`, `mx_rfc`, `sg_uen`, `ru_inn`, `ru_kpp`, `ca_bn`, `hk_br`, `es_cif`, `tw_vat`, `th_vat`, `jp_cn`, `jp_rn`, `jp_trn`, `li_uid`, `my_itn`, `us_ein`, `kr_brn`, `ca_qst`, `ca_gst_hst`, `ca_pst_bc`, `ca_pst_mb`, `ca_pst_sk`, `my_sst`, `sg_gst`, `ae_trn`, `cl_tin`, `sa_vat`, `id_npwp`, `my_frp`, `il_vat`, `ge_vat`, `ua_vat`, `is_vat`, `bg_uic`, `hu_tin`, `si_tin`, `ke_pin`, `tr_tin`, `eg_tin`, `ph_tin`, or `unknown`
  2165  	Type CheckoutSessionCustomerDetailsTaxIDType `json:"type"`
  2166  	// The value of the tax ID.
  2167  	Value string `json:"value"`
  2168  }
  2169  
  2170  // The customer details including the customer's tax exempt status and the customer's tax IDs. Customer's address details are not present on Sessions in `setup` mode.
  2171  type CheckoutSessionCustomerDetails struct {
  2172  	// The customer's address after a completed Checkout Session. Note: This property is populated only for sessions on or after March 30, 2022.
  2173  	Address *Address `json:"address"`
  2174  	// The email associated with the Customer, if one exists, on the Checkout Session after a completed Checkout Session or at time of session expiry.
  2175  	// Otherwise, if the customer has consented to promotional content, this value is the most recent valid email provided by the customer on the Checkout form.
  2176  	Email string `json:"email"`
  2177  	// The customer's name after a completed Checkout Session. Note: This property is populated only for sessions on or after March 30, 2022.
  2178  	Name string `json:"name"`
  2179  	// The customer's phone number after a completed Checkout Session.
  2180  	Phone string `json:"phone"`
  2181  	// The customer's tax exempt status after a completed Checkout Session.
  2182  	TaxExempt CheckoutSessionCustomerDetailsTaxExempt `json:"tax_exempt"`
  2183  	// The customer's tax IDs after a completed Checkout Session.
  2184  	TaxIDs []*CheckoutSessionCustomerDetailsTaxID `json:"tax_ids"`
  2185  }
  2186  
  2187  // Custom fields displayed on the invoice.
  2188  type CheckoutSessionInvoiceCreationInvoiceDataCustomField struct {
  2189  	// The name of the custom field.
  2190  	Name string `json:"name"`
  2191  	// The value of the custom field.
  2192  	Value string `json:"value"`
  2193  }
  2194  
  2195  // The connected account that issues the invoice. The invoice is presented with the branding and support information of the specified account.
  2196  type CheckoutSessionInvoiceCreationInvoiceDataIssuer struct {
  2197  	// The connected account being referenced when `type` is `account`.
  2198  	Account *Account `json:"account"`
  2199  	// Type of the account referenced.
  2200  	Type CheckoutSessionInvoiceCreationInvoiceDataIssuerType `json:"type"`
  2201  }
  2202  
  2203  // Options for invoice PDF rendering.
  2204  type CheckoutSessionInvoiceCreationInvoiceDataRenderingOptions struct {
  2205  	// How line-item prices and amounts will be displayed with respect to tax on invoice PDFs.
  2206  	AmountTaxDisplay string `json:"amount_tax_display"`
  2207  }
  2208  type CheckoutSessionInvoiceCreationInvoiceData struct {
  2209  	// The account tax IDs associated with the invoice.
  2210  	AccountTaxIDs []*TaxID `json:"account_tax_ids"`
  2211  	// Custom fields displayed on the invoice.
  2212  	CustomFields []*CheckoutSessionInvoiceCreationInvoiceDataCustomField `json:"custom_fields"`
  2213  	// An arbitrary string attached to the object. Often useful for displaying to users.
  2214  	Description string `json:"description"`
  2215  	// Footer displayed on the invoice.
  2216  	Footer string `json:"footer"`
  2217  	// The connected account that issues the invoice. The invoice is presented with the branding and support information of the specified account.
  2218  	Issuer *CheckoutSessionInvoiceCreationInvoiceDataIssuer `json:"issuer"`
  2219  	// 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.
  2220  	Metadata map[string]string `json:"metadata"`
  2221  	// Options for invoice PDF rendering.
  2222  	RenderingOptions *CheckoutSessionInvoiceCreationInvoiceDataRenderingOptions `json:"rendering_options"`
  2223  }
  2224  
  2225  // Details on the state of invoice creation for the Checkout Session.
  2226  type CheckoutSessionInvoiceCreation struct {
  2227  	// Indicates whether invoice creation is enabled for the Checkout Session.
  2228  	Enabled     bool                                       `json:"enabled"`
  2229  	InvoiceData *CheckoutSessionInvoiceCreationInvoiceData `json:"invoice_data"`
  2230  }
  2231  
  2232  // Information about the payment method configuration used for this Checkout session if using dynamic payment methods.
  2233  type CheckoutSessionPaymentMethodConfigurationDetails struct {
  2234  	// ID of the payment method configuration used.
  2235  	ID string `json:"id"`
  2236  	// ID of the parent payment method configuration used.
  2237  	Parent string `json:"parent"`
  2238  }
  2239  type CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptions struct {
  2240  	// A URL for custom mandate text
  2241  	CustomMandateURL string `json:"custom_mandate_url"`
  2242  	// List of Stripe products where this mandate can be selected automatically. Returned when the Session is in `setup` mode.
  2243  	DefaultFor []CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptionsDefaultFor `json:"default_for"`
  2244  	// Description of the interval. Only required if the 'payment_schedule' parameter is 'interval' or 'combined'.
  2245  	IntervalDescription string `json:"interval_description"`
  2246  	// Payment schedule for the mandate.
  2247  	PaymentSchedule CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptionsPaymentSchedule `json:"payment_schedule"`
  2248  	// Transaction type of the mandate.
  2249  	TransactionType CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptionsTransactionType `json:"transaction_type"`
  2250  }
  2251  type CheckoutSessionPaymentMethodOptionsACSSDebit struct {
  2252  	Currency       string                                                      `json:"currency"`
  2253  	MandateOptions *CheckoutSessionPaymentMethodOptionsACSSDebitMandateOptions `json:"mandate_options"`
  2254  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2255  	//
  2256  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2257  	//
  2258  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2259  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsACSSDebitSetupFutureUsage `json:"setup_future_usage"`
  2260  	// Bank account verification method.
  2261  	VerificationMethod CheckoutSessionPaymentMethodOptionsACSSDebitVerificationMethod `json:"verification_method"`
  2262  }
  2263  type CheckoutSessionPaymentMethodOptionsAffirm struct {
  2264  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2265  	//
  2266  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2267  	//
  2268  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2269  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsAffirmSetupFutureUsage `json:"setup_future_usage"`
  2270  }
  2271  type CheckoutSessionPaymentMethodOptionsAfterpayClearpay struct {
  2272  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2273  	//
  2274  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2275  	//
  2276  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2277  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsAfterpayClearpaySetupFutureUsage `json:"setup_future_usage"`
  2278  }
  2279  type CheckoutSessionPaymentMethodOptionsAlipay struct {
  2280  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2281  	//
  2282  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2283  	//
  2284  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2285  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsAlipaySetupFutureUsage `json:"setup_future_usage"`
  2286  }
  2287  type CheckoutSessionPaymentMethodOptionsAUBECSDebit struct {
  2288  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2289  	//
  2290  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2291  	//
  2292  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2293  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsAUBECSDebitSetupFutureUsage `json:"setup_future_usage"`
  2294  }
  2295  type CheckoutSessionPaymentMethodOptionsBACSDebit struct {
  2296  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2297  	//
  2298  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2299  	//
  2300  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2301  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsBACSDebitSetupFutureUsage `json:"setup_future_usage"`
  2302  }
  2303  type CheckoutSessionPaymentMethodOptionsBancontact struct {
  2304  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2305  	//
  2306  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2307  	//
  2308  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2309  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsBancontactSetupFutureUsage `json:"setup_future_usage"`
  2310  }
  2311  type CheckoutSessionPaymentMethodOptionsBoleto struct {
  2312  	// The number of calendar days before a Boleto voucher expires. For example, if you create a Boleto voucher on Monday and you set expires_after_days to 2, the Boleto voucher will expire on Wednesday at 23:59 America/Sao_Paulo time.
  2313  	ExpiresAfterDays int64 `json:"expires_after_days"`
  2314  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2315  	//
  2316  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2317  	//
  2318  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2319  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsBoletoSetupFutureUsage `json:"setup_future_usage"`
  2320  }
  2321  type CheckoutSessionPaymentMethodOptionsCardInstallments struct {
  2322  	// Indicates if installments are enabled
  2323  	Enabled bool `json:"enabled"`
  2324  }
  2325  type CheckoutSessionPaymentMethodOptionsCard struct {
  2326  	Installments *CheckoutSessionPaymentMethodOptionsCardInstallments `json:"installments"`
  2327  	// We strongly recommend that you rely on our SCA Engine to automatically prompt your customers for authentication based on risk level and [other requirements](https://stripe.com/docs/strong-customer-authentication). However, if you wish to request 3D Secure based on logic from your own fraud engine, provide this option. If not provided, this value defaults to `automatic`. Read our guide on [manually requesting 3D Secure](https://stripe.com/docs/payments/3d-secure/authentication-flow#manual-three-ds) for more information on how this configuration interacts with Radar and our SCA Engine.
  2328  	RequestThreeDSecure CheckoutSessionPaymentMethodOptionsCardRequestThreeDSecure `json:"request_three_d_secure"`
  2329  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2330  	//
  2331  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2332  	//
  2333  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2334  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsCardSetupFutureUsage `json:"setup_future_usage"`
  2335  	// Provides information about a card payment that customers see on their statements. Concatenated with the Kana prefix (shortened Kana descriptor) or Kana statement descriptor that's set on the account to form the complete statement descriptor. Maximum 22 characters. On card statements, the *concatenation* of both prefix and suffix (including separators) will appear truncated to 22 characters.
  2336  	StatementDescriptorSuffixKana string `json:"statement_descriptor_suffix_kana"`
  2337  	// Provides information about a card payment that customers see on their statements. Concatenated with the Kanji prefix (shortened Kanji descriptor) or Kanji statement descriptor that's set on the account to form the complete statement descriptor. Maximum 17 characters. On card statements, the *concatenation* of both prefix and suffix (including separators) will appear truncated to 17 characters.
  2338  	StatementDescriptorSuffixKanji string `json:"statement_descriptor_suffix_kanji"`
  2339  }
  2340  type CheckoutSessionPaymentMethodOptionsCashApp struct {
  2341  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2342  	//
  2343  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2344  	//
  2345  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2346  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsCashAppSetupFutureUsage `json:"setup_future_usage"`
  2347  }
  2348  type CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferEUBankTransfer struct {
  2349  	// The desired country code of the bank account information. Permitted values include: `BE`, `DE`, `ES`, `FR`, `IE`, or `NL`.
  2350  	Country string `json:"country"`
  2351  }
  2352  type CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransfer struct {
  2353  	EUBankTransfer *CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferEUBankTransfer `json:"eu_bank_transfer"`
  2354  	// List of address types that should be returned in the financial_addresses response. If not specified, all valid types will be returned.
  2355  	//
  2356  	// Permitted values include: `sort_code`, `zengin`, `iban`, or `spei`.
  2357  	RequestedAddressTypes []CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferRequestedAddressType `json:"requested_address_types"`
  2358  	// The bank transfer type that this PaymentIntent is allowed to use for funding Permitted values include: `eu_bank_transfer`, `gb_bank_transfer`, `jp_bank_transfer`, `mx_bank_transfer`, or `us_bank_transfer`.
  2359  	Type CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransferType `json:"type"`
  2360  }
  2361  type CheckoutSessionPaymentMethodOptionsCustomerBalance struct {
  2362  	BankTransfer *CheckoutSessionPaymentMethodOptionsCustomerBalanceBankTransfer `json:"bank_transfer"`
  2363  	// The funding method type to be used when there are not enough funds in the customer balance. Permitted values include: `bank_transfer`.
  2364  	FundingType CheckoutSessionPaymentMethodOptionsCustomerBalanceFundingType `json:"funding_type"`
  2365  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2366  	//
  2367  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2368  	//
  2369  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2370  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsCustomerBalanceSetupFutureUsage `json:"setup_future_usage"`
  2371  }
  2372  type CheckoutSessionPaymentMethodOptionsEPS struct {
  2373  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2374  	//
  2375  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2376  	//
  2377  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2378  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsEPSSetupFutureUsage `json:"setup_future_usage"`
  2379  }
  2380  type CheckoutSessionPaymentMethodOptionsFPX struct {
  2381  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2382  	//
  2383  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2384  	//
  2385  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2386  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsFPXSetupFutureUsage `json:"setup_future_usage"`
  2387  }
  2388  type CheckoutSessionPaymentMethodOptionsGiropay struct {
  2389  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2390  	//
  2391  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2392  	//
  2393  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2394  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsGiropaySetupFutureUsage `json:"setup_future_usage"`
  2395  }
  2396  type CheckoutSessionPaymentMethodOptionsGrabpay struct {
  2397  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2398  	//
  2399  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2400  	//
  2401  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2402  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsGrabpaySetupFutureUsage `json:"setup_future_usage"`
  2403  }
  2404  type CheckoutSessionPaymentMethodOptionsIDEAL struct {
  2405  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2406  	//
  2407  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2408  	//
  2409  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2410  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsIDEALSetupFutureUsage `json:"setup_future_usage"`
  2411  }
  2412  type CheckoutSessionPaymentMethodOptionsKlarna struct {
  2413  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2414  	//
  2415  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2416  	//
  2417  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2418  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsKlarnaSetupFutureUsage `json:"setup_future_usage"`
  2419  }
  2420  type CheckoutSessionPaymentMethodOptionsKonbini struct {
  2421  	// The number of calendar days (between 1 and 60) after which Konbini payment instructions will expire. For example, if a PaymentIntent is confirmed with Konbini and `expires_after_days` set to 2 on Monday JST, the instructions will expire on Wednesday 23:59:59 JST.
  2422  	ExpiresAfterDays int64 `json:"expires_after_days"`
  2423  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2424  	//
  2425  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2426  	//
  2427  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2428  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsKonbiniSetupFutureUsage `json:"setup_future_usage"`
  2429  }
  2430  type CheckoutSessionPaymentMethodOptionsLink struct {
  2431  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2432  	//
  2433  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2434  	//
  2435  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2436  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsLinkSetupFutureUsage `json:"setup_future_usage"`
  2437  }
  2438  type CheckoutSessionPaymentMethodOptionsOXXO struct {
  2439  	// The number of calendar days before an OXXO invoice expires. For example, if you create an OXXO invoice on Monday and you set expires_after_days to 2, the OXXO invoice will expire on Wednesday at 23:59 America/Mexico_City time.
  2440  	ExpiresAfterDays int64 `json:"expires_after_days"`
  2441  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2442  	//
  2443  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2444  	//
  2445  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2446  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsOXXOSetupFutureUsage `json:"setup_future_usage"`
  2447  }
  2448  type CheckoutSessionPaymentMethodOptionsP24 struct {
  2449  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2450  	//
  2451  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2452  	//
  2453  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2454  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsP24SetupFutureUsage `json:"setup_future_usage"`
  2455  }
  2456  type CheckoutSessionPaymentMethodOptionsPayNow struct {
  2457  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2458  	//
  2459  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2460  	//
  2461  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2462  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsPayNowSetupFutureUsage `json:"setup_future_usage"`
  2463  }
  2464  type CheckoutSessionPaymentMethodOptionsPaypal struct {
  2465  	// Controls when the funds will be captured from the customer's account.
  2466  	CaptureMethod CheckoutSessionPaymentMethodOptionsPaypalCaptureMethod `json:"capture_method"`
  2467  	// Preferred locale of the PayPal checkout page that the customer is redirected to.
  2468  	PreferredLocale string `json:"preferred_locale"`
  2469  	// A reference of the PayPal transaction visible to customer which is mapped to PayPal's invoice ID. This must be a globally unique ID if you have configured in your PayPal settings to block multiple payments per invoice ID.
  2470  	Reference string `json:"reference"`
  2471  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2472  	//
  2473  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2474  	//
  2475  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2476  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsPaypalSetupFutureUsage `json:"setup_future_usage"`
  2477  }
  2478  type CheckoutSessionPaymentMethodOptionsPix struct {
  2479  	// The number of seconds after which Pix payment will expire.
  2480  	ExpiresAfterSeconds int64 `json:"expires_after_seconds"`
  2481  }
  2482  type CheckoutSessionPaymentMethodOptionsRevolutPay struct{}
  2483  type CheckoutSessionPaymentMethodOptionsSEPADebit struct {
  2484  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2485  	//
  2486  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2487  	//
  2488  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2489  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsSEPADebitSetupFutureUsage `json:"setup_future_usage"`
  2490  }
  2491  type CheckoutSessionPaymentMethodOptionsSofort struct {
  2492  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2493  	//
  2494  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2495  	//
  2496  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2497  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsSofortSetupFutureUsage `json:"setup_future_usage"`
  2498  }
  2499  type CheckoutSessionPaymentMethodOptionsSwish struct {
  2500  	// The order reference that will be displayed to customers in the Swish application. Defaults to the `id` of the Payment Intent.
  2501  	Reference string `json:"reference"`
  2502  }
  2503  type CheckoutSessionPaymentMethodOptionsUSBankAccountFinancialConnections struct {
  2504  	// The list of permissions to request. The `payment_method` permission must be included.
  2505  	Permissions []CheckoutSessionPaymentMethodOptionsUSBankAccountFinancialConnectionsPermission `json:"permissions"`
  2506  	// Data features requested to be retrieved upon account creation.
  2507  	Prefetch []CheckoutSessionPaymentMethodOptionsUSBankAccountFinancialConnectionsPrefetch `json:"prefetch"`
  2508  	// For webview integrations only. Upon completing OAuth login in the native browser, the user will be redirected to this URL to return to your app.
  2509  	ReturnURL string `json:"return_url"`
  2510  }
  2511  type CheckoutSessionPaymentMethodOptionsUSBankAccount struct {
  2512  	FinancialConnections *CheckoutSessionPaymentMethodOptionsUSBankAccountFinancialConnections `json:"financial_connections"`
  2513  	// Indicates that you intend to make future payments with this PaymentIntent's payment method.
  2514  	//
  2515  	// Providing this parameter will [attach the payment method](https://stripe.com/docs/payments/save-during-payment) to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be [attached](https://stripe.com/docs/api/payment_methods/attach) to a Customer after the transaction completes.
  2516  	//
  2517  	// When processing card payments, Stripe also uses `setup_future_usage` to dynamically optimize your payment flow and comply with regional legislation and network rules, such as [SCA](https://stripe.com/docs/strong-customer-authentication).
  2518  	SetupFutureUsage CheckoutSessionPaymentMethodOptionsUSBankAccountSetupFutureUsage `json:"setup_future_usage"`
  2519  	// Bank account verification method.
  2520  	VerificationMethod CheckoutSessionPaymentMethodOptionsUSBankAccountVerificationMethod `json:"verification_method"`
  2521  }
  2522  
  2523  // Payment-method-specific configuration for the PaymentIntent or SetupIntent of this CheckoutSession.
  2524  type CheckoutSessionPaymentMethodOptions struct {
  2525  	ACSSDebit        *CheckoutSessionPaymentMethodOptionsACSSDebit        `json:"acss_debit"`
  2526  	Affirm           *CheckoutSessionPaymentMethodOptionsAffirm           `json:"affirm"`
  2527  	AfterpayClearpay *CheckoutSessionPaymentMethodOptionsAfterpayClearpay `json:"afterpay_clearpay"`
  2528  	Alipay           *CheckoutSessionPaymentMethodOptionsAlipay           `json:"alipay"`
  2529  	AUBECSDebit      *CheckoutSessionPaymentMethodOptionsAUBECSDebit      `json:"au_becs_debit"`
  2530  	BACSDebit        *CheckoutSessionPaymentMethodOptionsBACSDebit        `json:"bacs_debit"`
  2531  	Bancontact       *CheckoutSessionPaymentMethodOptionsBancontact       `json:"bancontact"`
  2532  	Boleto           *CheckoutSessionPaymentMethodOptionsBoleto           `json:"boleto"`
  2533  	Card             *CheckoutSessionPaymentMethodOptionsCard             `json:"card"`
  2534  	CashApp          *CheckoutSessionPaymentMethodOptionsCashApp          `json:"cashapp"`
  2535  	CustomerBalance  *CheckoutSessionPaymentMethodOptionsCustomerBalance  `json:"customer_balance"`
  2536  	EPS              *CheckoutSessionPaymentMethodOptionsEPS              `json:"eps"`
  2537  	FPX              *CheckoutSessionPaymentMethodOptionsFPX              `json:"fpx"`
  2538  	Giropay          *CheckoutSessionPaymentMethodOptionsGiropay          `json:"giropay"`
  2539  	Grabpay          *CheckoutSessionPaymentMethodOptionsGrabpay          `json:"grabpay"`
  2540  	IDEAL            *CheckoutSessionPaymentMethodOptionsIDEAL            `json:"ideal"`
  2541  	Klarna           *CheckoutSessionPaymentMethodOptionsKlarna           `json:"klarna"`
  2542  	Konbini          *CheckoutSessionPaymentMethodOptionsKonbini          `json:"konbini"`
  2543  	Link             *CheckoutSessionPaymentMethodOptionsLink             `json:"link"`
  2544  	OXXO             *CheckoutSessionPaymentMethodOptionsOXXO             `json:"oxxo"`
  2545  	P24              *CheckoutSessionPaymentMethodOptionsP24              `json:"p24"`
  2546  	PayNow           *CheckoutSessionPaymentMethodOptionsPayNow           `json:"paynow"`
  2547  	Paypal           *CheckoutSessionPaymentMethodOptionsPaypal           `json:"paypal"`
  2548  	Pix              *CheckoutSessionPaymentMethodOptionsPix              `json:"pix"`
  2549  	RevolutPay       *CheckoutSessionPaymentMethodOptionsRevolutPay       `json:"revolut_pay"`
  2550  	SEPADebit        *CheckoutSessionPaymentMethodOptionsSEPADebit        `json:"sepa_debit"`
  2551  	Sofort           *CheckoutSessionPaymentMethodOptionsSofort           `json:"sofort"`
  2552  	Swish            *CheckoutSessionPaymentMethodOptionsSwish            `json:"swish"`
  2553  	USBankAccount    *CheckoutSessionPaymentMethodOptionsUSBankAccount    `json:"us_bank_account"`
  2554  }
  2555  type CheckoutSessionPhoneNumberCollection struct {
  2556  	// Indicates whether phone number collection is enabled for the session
  2557  	Enabled bool `json:"enabled"`
  2558  }
  2559  
  2560  // When set, provides configuration for Checkout to collect a shipping address from a customer.
  2561  type CheckoutSessionShippingAddressCollection struct {
  2562  	// An array of two-letter ISO country codes representing which countries Checkout should provide as options for
  2563  	// shipping locations. Unsupported country codes: `AS, CX, CC, CU, HM, IR, KP, MH, FM, NF, MP, PW, SD, SY, UM, VI`.
  2564  	AllowedCountries []string `json:"allowed_countries"`
  2565  }
  2566  
  2567  // The taxes applied to the shipping rate.
  2568  type CheckoutSessionShippingCostTax struct {
  2569  	// Amount of tax applied for this rate.
  2570  	Amount int64 `json:"amount"`
  2571  	// Tax rates can be applied to [invoices](https://stripe.com/docs/billing/invoices/tax-rates), [subscriptions](https://stripe.com/docs/billing/subscriptions/taxes) and [Checkout Sessions](https://stripe.com/docs/payments/checkout/set-up-a-subscription#tax-rates) to collect tax.
  2572  	//
  2573  	// Related guide: [Tax rates](https://stripe.com/docs/billing/taxes/tax-rates)
  2574  	Rate *TaxRate `json:"rate"`
  2575  	// The reasoning behind this tax, for example, if the product is tax exempt. The possible values for this field may be extended as new tax rules are supported.
  2576  	TaxabilityReason CheckoutSessionShippingCostTaxTaxabilityReason `json:"taxability_reason"`
  2577  	// The amount on which tax is calculated, in cents (or local equivalent).
  2578  	TaxableAmount int64 `json:"taxable_amount"`
  2579  }
  2580  
  2581  // The details of the customer cost of shipping, including the customer chosen ShippingRate.
  2582  type CheckoutSessionShippingCost struct {
  2583  	// Total shipping cost before any discounts or taxes are applied.
  2584  	AmountSubtotal int64 `json:"amount_subtotal"`
  2585  	// Total tax amount applied due to shipping costs. If no tax was applied, defaults to 0.
  2586  	AmountTax int64 `json:"amount_tax"`
  2587  	// Total shipping cost after discounts and taxes are applied.
  2588  	AmountTotal int64 `json:"amount_total"`
  2589  	// The ID of the ShippingRate for this order.
  2590  	ShippingRate *ShippingRate `json:"shipping_rate"`
  2591  	// The taxes applied to the shipping rate.
  2592  	Taxes []*CheckoutSessionShippingCostTax `json:"taxes"`
  2593  }
  2594  
  2595  // The shipping rate options applied to this Session.
  2596  type CheckoutSessionShippingOption struct {
  2597  	// A non-negative integer in cents representing how much to charge.
  2598  	ShippingAmount int64 `json:"shipping_amount"`
  2599  	// The shipping rate.
  2600  	ShippingRate *ShippingRate `json:"shipping_rate"`
  2601  }
  2602  type CheckoutSessionTaxIDCollection struct {
  2603  	// Indicates whether tax ID collection is enabled for the session
  2604  	Enabled bool `json:"enabled"`
  2605  }
  2606  
  2607  // The aggregated discounts.
  2608  type CheckoutSessionTotalDetailsBreakdownDiscount struct {
  2609  	// The amount discounted.
  2610  	Amount int64 `json:"amount"`
  2611  	// A discount represents the actual application of a [coupon](https://stripe.com/docs/api#coupons) or [promotion code](https://stripe.com/docs/api#promotion_codes).
  2612  	// It contains information about when the discount began, when it will end, and what it is applied to.
  2613  	//
  2614  	// Related guide: [Applying discounts to subscriptions](https://stripe.com/docs/billing/subscriptions/discounts)
  2615  	Discount *Discount `json:"discount"`
  2616  }
  2617  
  2618  // The aggregated tax amounts by rate.
  2619  type CheckoutSessionTotalDetailsBreakdownTax struct {
  2620  	// Amount of tax applied for this rate.
  2621  	Amount int64 `json:"amount"`
  2622  	// Tax rates can be applied to [invoices](https://stripe.com/docs/billing/invoices/tax-rates), [subscriptions](https://stripe.com/docs/billing/subscriptions/taxes) and [Checkout Sessions](https://stripe.com/docs/payments/checkout/set-up-a-subscription#tax-rates) to collect tax.
  2623  	//
  2624  	// Related guide: [Tax rates](https://stripe.com/docs/billing/taxes/tax-rates)
  2625  	Rate *TaxRate `json:"rate"`
  2626  	// The reasoning behind this tax, for example, if the product is tax exempt. The possible values for this field may be extended as new tax rules are supported.
  2627  	TaxabilityReason CheckoutSessionTotalDetailsBreakdownTaxTaxabilityReason `json:"taxability_reason"`
  2628  	// The amount on which tax is calculated, in cents (or local equivalent).
  2629  	TaxableAmount int64 `json:"taxable_amount"`
  2630  }
  2631  type CheckoutSessionTotalDetailsBreakdown struct {
  2632  	// The aggregated discounts.
  2633  	Discounts []*CheckoutSessionTotalDetailsBreakdownDiscount `json:"discounts"`
  2634  	// The aggregated tax amounts by rate.
  2635  	Taxes []*CheckoutSessionTotalDetailsBreakdownTax `json:"taxes"`
  2636  }
  2637  
  2638  // Tax and discount details for the computed total amount.
  2639  type CheckoutSessionTotalDetails struct {
  2640  	// This is the sum of all the discounts.
  2641  	AmountDiscount int64 `json:"amount_discount"`
  2642  	// This is the sum of all the shipping amounts.
  2643  	AmountShipping int64 `json:"amount_shipping"`
  2644  	// This is the sum of all the tax amounts.
  2645  	AmountTax int64                                 `json:"amount_tax"`
  2646  	Breakdown *CheckoutSessionTotalDetailsBreakdown `json:"breakdown"`
  2647  }
  2648  
  2649  // A Checkout Session represents your customer's session as they pay for
  2650  // one-time purchases or subscriptions through [Checkout](https://stripe.com/docs/payments/checkout)
  2651  // or [Payment Links](https://stripe.com/docs/payments/payment-links). We recommend creating a
  2652  // new Session each time your customer attempts to pay.
  2653  //
  2654  // Once payment is successful, the Checkout Session will contain a reference
  2655  // to the [Customer](https://stripe.com/docs/api/customers), and either the successful
  2656  // [PaymentIntent](https://stripe.com/docs/api/payment_intents) or an active
  2657  // [Subscription](https://stripe.com/docs/api/subscriptions).
  2658  //
  2659  // You can create a Checkout Session on your server and redirect to its URL
  2660  // to begin Checkout.
  2661  //
  2662  // Related guide: [Checkout quickstart](https://stripe.com/docs/checkout/quickstart)
  2663  type CheckoutSession struct {
  2664  	APIResource
  2665  	// When set, provides configuration for actions to take if this Checkout Session expires.
  2666  	AfterExpiration *CheckoutSessionAfterExpiration `json:"after_expiration"`
  2667  	// Enables user redeemable promotion codes.
  2668  	AllowPromotionCodes bool `json:"allow_promotion_codes"`
  2669  	// Total of all items before discounts or taxes are applied.
  2670  	AmountSubtotal int64 `json:"amount_subtotal"`
  2671  	// Total of all items after discounts and taxes are applied.
  2672  	AmountTotal  int64                        `json:"amount_total"`
  2673  	AutomaticTax *CheckoutSessionAutomaticTax `json:"automatic_tax"`
  2674  	// Describes whether Checkout should collect the customer's billing address. Defaults to `auto`.
  2675  	BillingAddressCollection CheckoutSessionBillingAddressCollection `json:"billing_address_collection"`
  2676  	// If set, Checkout displays a back button and customers will be directed to this URL if they decide to cancel payment and return to your website.
  2677  	CancelURL string `json:"cancel_url"`
  2678  	// A unique string to reference the Checkout Session. This can be a
  2679  	// customer ID, a cart ID, or similar, and can be used to reconcile the
  2680  	// Session with your internal systems.
  2681  	ClientReferenceID string `json:"client_reference_id"`
  2682  	// Client secret to be used when initializing Stripe.js embedded checkout.
  2683  	ClientSecret string `json:"client_secret"`
  2684  	// Results of `consent_collection` for this session.
  2685  	Consent *CheckoutSessionConsent `json:"consent"`
  2686  	// When set, provides configuration for the Checkout Session to gather active consent from customers.
  2687  	ConsentCollection *CheckoutSessionConsentCollection `json:"consent_collection"`
  2688  	// Time at which the object was created. Measured in seconds since the Unix epoch.
  2689  	Created int64 `json:"created"`
  2690  	// Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).
  2691  	Currency Currency `json:"currency"`
  2692  	// Currency conversion details for automatic currency conversion sessions
  2693  	CurrencyConversion *CheckoutSessionCurrencyConversion `json:"currency_conversion"`
  2694  	// The ID of the customer for this Session.
  2695  	// For Checkout Sessions in `subscription` mode or Checkout Sessions with `customer_creation` set as `always` in `payment` mode, Checkout
  2696  	// will create a new customer object based on information provided
  2697  	// during the payment flow unless an existing customer was provided when
  2698  	// the Session was created.
  2699  	Customer *Customer `json:"customer"`
  2700  	// Configure whether a Checkout Session creates a Customer when the Checkout Session completes.
  2701  	CustomerCreation CheckoutSessionCustomerCreation `json:"customer_creation"`
  2702  	// The customer details including the customer's tax exempt status and the customer's tax IDs. Customer's address details are not present on Sessions in `setup` mode.
  2703  	CustomerDetails *CheckoutSessionCustomerDetails `json:"customer_details"`
  2704  	// If provided, this value will be used when the Customer object is created.
  2705  	// If not provided, customers will be asked to enter their email address.
  2706  	// Use this parameter to prefill customer data if you already have an email
  2707  	// on file. To access information about the customer once the payment flow is
  2708  	// complete, use the `customer` attribute.
  2709  	CustomerEmail string `json:"customer_email"`
  2710  	// Collect additional information from your customer using custom fields. Up to 3 fields are supported.
  2711  	CustomFields []*CheckoutSessionCustomField `json:"custom_fields"`
  2712  	CustomText   *CheckoutSessionCustomText    `json:"custom_text"`
  2713  	// The timestamp at which the Checkout Session will expire.
  2714  	ExpiresAt int64 `json:"expires_at"`
  2715  	// Unique identifier for the object.
  2716  	ID string `json:"id"`
  2717  	// ID of the invoice created by the Checkout Session, if it exists.
  2718  	Invoice *Invoice `json:"invoice"`
  2719  	// Details on the state of invoice creation for the Checkout Session.
  2720  	InvoiceCreation *CheckoutSessionInvoiceCreation `json:"invoice_creation"`
  2721  	// The line items purchased by the customer.
  2722  	LineItems *LineItemList `json:"line_items"`
  2723  	// Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.
  2724  	Livemode bool `json:"livemode"`
  2725  	// The IETF language tag of the locale Checkout is displayed in. If blank or `auto`, the browser's locale is used.
  2726  	Locale string `json:"locale"`
  2727  	// 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.
  2728  	Metadata map[string]string `json:"metadata"`
  2729  	// The mode of the Checkout Session.
  2730  	Mode CheckoutSessionMode `json:"mode"`
  2731  	// String representing the object's type. Objects of the same type share the same value.
  2732  	Object string `json:"object"`
  2733  	// The ID of the PaymentIntent for Checkout Sessions in `payment` mode.
  2734  	PaymentIntent *PaymentIntent `json:"payment_intent"`
  2735  	// The ID of the Payment Link that created this Session.
  2736  	PaymentLink *PaymentLink `json:"payment_link"`
  2737  	// Configure whether a Checkout Session should collect a payment method. Defaults to `always`.
  2738  	PaymentMethodCollection CheckoutSessionPaymentMethodCollection `json:"payment_method_collection"`
  2739  	// Information about the payment method configuration used for this Checkout session if using dynamic payment methods.
  2740  	PaymentMethodConfigurationDetails *CheckoutSessionPaymentMethodConfigurationDetails `json:"payment_method_configuration_details"`
  2741  	// Payment-method-specific configuration for the PaymentIntent or SetupIntent of this CheckoutSession.
  2742  	PaymentMethodOptions *CheckoutSessionPaymentMethodOptions `json:"payment_method_options"`
  2743  	// A list of the types of payment methods (e.g. card) this Checkout
  2744  	// Session is allowed to accept.
  2745  	PaymentMethodTypes []string `json:"payment_method_types"`
  2746  	// The payment status of the Checkout Session, one of `paid`, `unpaid`, or `no_payment_required`.
  2747  	// You can use this value to decide when to fulfill your customer's order.
  2748  	PaymentStatus         CheckoutSessionPaymentStatus          `json:"payment_status"`
  2749  	PhoneNumberCollection *CheckoutSessionPhoneNumberCollection `json:"phone_number_collection"`
  2750  	// The ID of the original expired Checkout Session that triggered the recovery flow.
  2751  	RecoveredFrom string `json:"recovered_from"`
  2752  	// This parameter applies to `ui_mode: embedded`. Learn more about the [redirect behavior](https://stripe.com/docs/payments/checkout/custom-redirect-behavior) of embedded sessions. Defaults to `always`.
  2753  	RedirectOnCompletion CheckoutSessionRedirectOnCompletion `json:"redirect_on_completion"`
  2754  	// Applies to Checkout Sessions with `ui_mode: embedded`. The URL to redirect your customer back to after they authenticate or cancel their payment on the payment method's app or site.
  2755  	ReturnURL string `json:"return_url"`
  2756  	// The ID of the SetupIntent for Checkout Sessions in `setup` mode.
  2757  	SetupIntent *SetupIntent `json:"setup_intent"`
  2758  	// When set, provides configuration for Checkout to collect a shipping address from a customer.
  2759  	ShippingAddressCollection *CheckoutSessionShippingAddressCollection `json:"shipping_address_collection"`
  2760  	// The details of the customer cost of shipping, including the customer chosen ShippingRate.
  2761  	ShippingCost *CheckoutSessionShippingCost `json:"shipping_cost"`
  2762  	// Shipping information for this Checkout Session.
  2763  	ShippingDetails *ShippingDetails `json:"shipping_details"`
  2764  	// The shipping rate options applied to this Session.
  2765  	ShippingOptions []*CheckoutSessionShippingOption `json:"shipping_options"`
  2766  	// The status of the Checkout Session, one of `open`, `complete`, or `expired`.
  2767  	Status CheckoutSessionStatus `json:"status"`
  2768  	// Describes the type of transaction being performed by Checkout in order to customize
  2769  	// relevant text on the page, such as the submit button. `submit_type` can only be
  2770  	// specified on Checkout Sessions in `payment` mode. If blank or `auto`, `pay` is used.
  2771  	SubmitType CheckoutSessionSubmitType `json:"submit_type"`
  2772  	// The ID of the subscription for Checkout Sessions in `subscription` mode.
  2773  	Subscription *Subscription `json:"subscription"`
  2774  	// The URL the customer will be directed to after the payment or
  2775  	// subscription creation is successful.
  2776  	SuccessURL      string                          `json:"success_url"`
  2777  	TaxIDCollection *CheckoutSessionTaxIDCollection `json:"tax_id_collection"`
  2778  	// Tax and discount details for the computed total amount.
  2779  	TotalDetails *CheckoutSessionTotalDetails `json:"total_details"`
  2780  	// The UI mode of the Session. Defaults to `hosted`.
  2781  	UIMode CheckoutSessionUIMode `json:"ui_mode"`
  2782  	// The URL to the Checkout Session. Redirect customers to this URL to take them to Checkout. If you're using [Custom Domains](https://stripe.com/docs/payments/checkout/custom-domains), the URL will use your subdomain. Otherwise, it'll use `checkout.stripe.com.`
  2783  	// This value is only present when the session is active.
  2784  	URL string `json:"url"`
  2785  }
  2786  
  2787  // CheckoutSessionList is a list of Sessions as retrieved from a list endpoint.
  2788  type CheckoutSessionList struct {
  2789  	APIResource
  2790  	ListMeta
  2791  	Data []*CheckoutSession `json:"data"`
  2792  }