diff --git a/API_VERSION b/API_VERSION
index fb72506858..8cbec87ebf 100644
--- a/API_VERSION
+++ b/API_VERSION
@@ -1 +1 @@
-2025-09-30.clover
\ No newline at end of file
+b7d9dec4da43fdbe727b3b4d8007a7099aa61beb
\ No newline at end of file
diff --git a/OPENAPI_VERSION b/OPENAPI_VERSION
index f0bb0d526f..8a7edbe682 100644
--- a/OPENAPI_VERSION
+++ b/OPENAPI_VERSION
@@ -1 +1 @@
-v2028
\ No newline at end of file
+v2100
\ No newline at end of file
diff --git a/src/Stripe.net/Constants/ApiVersion.cs b/src/Stripe.net/Constants/ApiVersion.cs
index 2f577f2080..3fd1388ce4 100644
--- a/src/Stripe.net/Constants/ApiVersion.cs
+++ b/src/Stripe.net/Constants/ApiVersion.cs
@@ -3,7 +3,7 @@ namespace Stripe
{
internal class ApiVersion
{
- public const string Current = "2025-09-30.clover";
+ public const string Current = "2025-10-29.clover";
public const string CurrentMajor = "clover";
}
}
\ No newline at end of file
diff --git a/src/Stripe.net/Constants/EventTypes.cs b/src/Stripe.net/Constants/EventTypes.cs
index 64fd5cf654..c5488baa38 100644
--- a/src/Stripe.net/Constants/EventTypes.cs
+++ b/src/Stripe.net/Constants/EventTypes.cs
@@ -54,6 +54,11 @@ public static class EventTypes
///
public const string ApplicationFeeRefunded = "application_fee.refunded";
+ ///
+ /// Occurs whenever a balance settings status or property has changed.
+ ///
+ public const string BalanceSettingsUpdated = "balance_settings.updated";
+
///
/// Occurs whenever your Stripe balance has been updated (e.g., when a charge is available
/// to be paid out). By default, Stripe automatically transfers funds in your balance to
@@ -546,6 +551,12 @@ public static class EventTypes
///
public const string InvoicePaymentActionRequired = "invoice.payment_action_required";
+ ///
+ /// Occurs when an invoice requires a payment using a payment method that cannot be
+ /// processed by Stripe.
+ ///
+ public const string InvoicePaymentAttemptRequired = "invoice.payment_attempt_required";
+
///
/// Occurs whenever an invoice payment attempt fails, due to either a declined payment,
/// including soft decline, or to the lack of a stored payment method.
diff --git a/src/Stripe.net/Constants/FilePurpose.cs b/src/Stripe.net/Constants/FilePurpose.cs
index b1d8112359..eb0738cffb 100644
--- a/src/Stripe.net/Constants/FilePurpose.cs
+++ b/src/Stripe.net/Constants/FilePurpose.cs
@@ -29,6 +29,8 @@ public static class FilePurpose
public const string PciDocument = "pci_document";
+ public const string PlatformTermsOfService = "platform_terms_of_service";
+
public const string Selfie = "selfie";
public const string SigmaScheduledQuery = "sigma_scheduled_query";
diff --git a/src/Stripe.net/Entities/Accounts/AccountCompany.cs b/src/Stripe.net/Entities/Accounts/AccountCompany.cs
index a8933b7d82..a7e851cfe1 100644
--- a/src/Stripe.net/Entities/Accounts/AccountCompany.cs
+++ b/src/Stripe.net/Entities/Accounts/AccountCompany.cs
@@ -177,6 +177,16 @@ public class AccountCompany : StripeEntity
#endif
public AccountCompanyRegistrationDate RegistrationDate { get; set; }
+ ///
+ /// This hash is used to attest that the representative is authorized to act as the
+ /// representative of their legal entity.
+ ///
+ [JsonProperty("representative_declaration")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("representative_declaration")]
+#endif
+ public AccountCompanyRepresentativeDeclaration RepresentativeDeclaration { get; set; }
+
///
/// The category identifying the legal structure of the company or legal entity. Also
/// available for accounts where
+ {
+ ///
+ /// The Unix timestamp marking when the representative declaration attestation was made.
+ ///
+ [JsonProperty("date")]
+ [JsonConverter(typeof(UnixDateTimeConverter))]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("date")]
+ [STJS.JsonConverter(typeof(STJUnixDateTimeConverter))]
+#endif
+ public DateTime? Date { get; set; }
+
+ ///
+ /// The IP address from which the representative declaration attestation was made.
+ ///
+ [JsonProperty("ip")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("ip")]
+#endif
+ public string Ip { get; set; }
+
+ ///
+ /// The user-agent string from the browser where the representative declaration attestation
+ /// was made.
+ ///
+ [JsonProperty("user_agent")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("user_agent")]
+#endif
+ public string UserAgent { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/BillingPortal/Configurations/Configuration.cs b/src/Stripe.net/Entities/BillingPortal/Configurations/Configuration.cs
index cf7986ff93..d295989483 100644
--- a/src/Stripe.net/Entities/BillingPortal/Configurations/Configuration.cs
+++ b/src/Stripe.net/Entities/BillingPortal/Configurations/Configuration.cs
@@ -10,7 +10,10 @@ namespace Stripe.BillingPortal
#endif
///
- /// A portal configuration describes the functionality and behavior of a portal session.
+ /// A portal configuration describes the functionality and behavior you embed in a portal
+ /// session. Related guide: Configure the customer
+ /// portal.
///
#if NET6_0_OR_GREATER
[STJS.JsonConverter(typeof(STJMemberSerializationOptIn))]
diff --git a/src/Stripe.net/Entities/Charges/ChargePaymentMethodDetailsCrypto.cs b/src/Stripe.net/Entities/Charges/ChargePaymentMethodDetailsCrypto.cs
index 48c7844bd5..731225fc48 100644
--- a/src/Stripe.net/Entities/Charges/ChargePaymentMethodDetailsCrypto.cs
+++ b/src/Stripe.net/Entities/Charges/ChargePaymentMethodDetailsCrypto.cs
@@ -19,7 +19,7 @@ public class ChargePaymentMethodDetailsCrypto : StripeEntity
/// The blockchain network that the transaction was sent on.
- /// One of: base, ethereum, or polygon.
+ /// One of: base, ethereum, polygon, or solana.
///
[JsonProperty("network")]
#if NET6_0_OR_GREATER
diff --git a/src/Stripe.net/Entities/Checkout/Sessions/SessionPaymentMethodOptions.cs b/src/Stripe.net/Entities/Checkout/Sessions/SessionPaymentMethodOptions.cs
index f2966d8d77..193a5335f1 100644
--- a/src/Stripe.net/Entities/Checkout/Sessions/SessionPaymentMethodOptions.cs
+++ b/src/Stripe.net/Entities/Checkout/Sessions/SessionPaymentMethodOptions.cs
@@ -242,6 +242,12 @@ public class SessionPaymentMethodOptions : StripeEntity
+ {
+ ///
+ /// Indicates that you intend to make future payments with this PaymentIntent's payment
+ /// method.
+ ///
+ /// If you provide a Customer with the PaymentIntent, you can use this parameter to attach the payment method to
+ /// the Customer after the PaymentIntent is confirmed and the customer completes any
+ /// required actions. If you don't provide a Customer, you can still attach the payment method to a
+ /// Customer after the transaction completes.
+ ///
+ /// If the payment method is card_present and isn't a digital wallet, Stripe creates
+ /// and attaches a generated_card
+ /// payment method representing the card to the Customer instead.
+ ///
+ /// When processing card payments, Stripe uses setup_future_usage to help you comply
+ /// with regional legislation and network rules, such as SCA.
+ ///
+ [JsonProperty("setup_future_usage")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("setup_future_usage")]
+#endif
+ public string SetupFutureUsage { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/ConfirmationTokens/ConfirmationTokenPaymentMethodPreview.cs b/src/Stripe.net/Entities/ConfirmationTokens/ConfirmationTokenPaymentMethodPreview.cs
index 0c1815308b..b0e56f94d7 100644
--- a/src/Stripe.net/Entities/ConfirmationTokens/ConfirmationTokenPaymentMethodPreview.cs
+++ b/src/Stripe.net/Entities/ConfirmationTokens/ConfirmationTokenPaymentMethodPreview.cs
@@ -369,14 +369,15 @@ public Customer Customer
/// One of: acss_debit, affirm, afterpay_clearpay, alipay,
/// alma, amazon_pay, au_becs_debit, bacs_debit,
/// bancontact, billie, blik, boleto, card,
- /// card_present, cashapp, crypto, customer_balance, eps,
- /// fpx, giropay, grabpay, ideal, interac_present,
- /// kakao_pay, klarna, konbini, kr_card, link,
- /// mb_way, mobilepay, multibanco, naver_pay,
- /// nz_bank_account, oxxo, p24, pay_by_bank, payco,
- /// paynow, paypal, pix, promptpay, revolut_pay,
- /// samsung_pay, satispay, sepa_debit, sofort, swish,
- /// twint, us_bank_account, wechat_pay, or zip.
+ /// card_present, cashapp, crypto, custom,
+ /// customer_balance, eps, fpx, giropay, grabpay,
+ /// ideal, interac_present, kakao_pay, klarna, konbini,
+ /// kr_card, link, mb_way, mobilepay, multibanco,
+ /// naver_pay, nz_bank_account, oxxo, p24, pay_by_bank,
+ /// payco, paynow, paypal, pix, promptpay,
+ /// revolut_pay, samsung_pay, satispay, sepa_debit,
+ /// sofort, swish, twint, us_bank_account, wechat_pay, or
+ /// zip.
///
[JsonProperty("type")]
#if NET6_0_OR_GREATER
diff --git a/src/Stripe.net/Entities/CreditNotes/CreditNoteRefund.cs b/src/Stripe.net/Entities/CreditNotes/CreditNoteRefund.cs
index 1c85661012..e1da026531 100644
--- a/src/Stripe.net/Entities/CreditNotes/CreditNoteRefund.cs
+++ b/src/Stripe.net/Entities/CreditNotes/CreditNoteRefund.cs
@@ -21,6 +21,15 @@ public class CreditNoteRefund : StripeEntity
#endif
public long AmountRefunded { get; set; }
+ ///
+ /// The PaymentRecord refund details associated with this credit note refund.
+ ///
+ [JsonProperty("payment_record_refund")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payment_record_refund")]
+#endif
+ public CreditNoteRefundPaymentRecordRefund PaymentRecordRefund { get; set; }
+
#region Expandable Refund
///
@@ -61,5 +70,15 @@ public Refund Refund
#endif
internal ExpandableField InternalRefund { get; set; }
#endregion
+
+ ///
+ /// Type of the refund, one of refund or payment_record_refund.
+ /// One of: payment_record_refund, or refund.
+ ///
+ [JsonProperty("type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("type")]
+#endif
+ public string Type { get; set; }
}
}
diff --git a/src/Stripe.net/Entities/CreditNotes/CreditNoteRefundPaymentRecordRefund.cs b/src/Stripe.net/Entities/CreditNotes/CreditNoteRefundPaymentRecordRefund.cs
new file mode 100644
index 0000000000..0e677c2e0e
--- /dev/null
+++ b/src/Stripe.net/Entities/CreditNotes/CreditNoteRefundPaymentRecordRefund.cs
@@ -0,0 +1,29 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class CreditNoteRefundPaymentRecordRefund : StripeEntity
+ {
+ ///
+ /// ID of the payment record.
+ ///
+ [JsonProperty("payment_record")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payment_record")]
+#endif
+ public string PaymentRecord { get; set; }
+
+ ///
+ /// ID of the refund group.
+ ///
+ [JsonProperty("refund_group")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("refund_group")]
+#endif
+ public string RefundGroup { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/CustomerSessions/CustomerSessionComponents.cs b/src/Stripe.net/Entities/CustomerSessions/CustomerSessionComponents.cs
index 6192c24efb..a29d4b1214 100644
--- a/src/Stripe.net/Entities/CustomerSessions/CustomerSessionComponents.cs
+++ b/src/Stripe.net/Entities/CustomerSessions/CustomerSessionComponents.cs
@@ -17,6 +17,25 @@ public class CustomerSessionComponents : StripeEntity
#endif
public CustomerSessionComponentsBuyButton BuyButton { get; set; }
+ ///
+ /// This hash contains whether the customer sheet is enabled and the features it supports.
+ ///
+ [JsonProperty("customer_sheet")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("customer_sheet")]
+#endif
+ public CustomerSessionComponentsCustomerSheet CustomerSheet { get; set; }
+
+ ///
+ /// This hash contains whether the mobile payment element is enabled and the features it
+ /// supports.
+ ///
+ [JsonProperty("mobile_payment_element")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("mobile_payment_element")]
+#endif
+ public CustomerSessionComponentsMobilePaymentElement MobilePaymentElement { get; set; }
+
///
/// This hash contains whether the Payment Element is enabled and the features it supports.
///
diff --git a/src/Stripe.net/Entities/CustomerSessions/CustomerSessionComponentsCustomerSheet.cs b/src/Stripe.net/Entities/CustomerSessions/CustomerSessionComponentsCustomerSheet.cs
new file mode 100644
index 0000000000..8d09e933cc
--- /dev/null
+++ b/src/Stripe.net/Entities/CustomerSessions/CustomerSessionComponentsCustomerSheet.cs
@@ -0,0 +1,29 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class CustomerSessionComponentsCustomerSheet : StripeEntity
+ {
+ ///
+ /// Whether the customer sheet is enabled.
+ ///
+ [JsonProperty("enabled")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("enabled")]
+#endif
+ public bool Enabled { get; set; }
+
+ ///
+ /// This hash defines whether the customer sheet supports certain features.
+ ///
+ [JsonProperty("features")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("features")]
+#endif
+ public CustomerSessionComponentsCustomerSheetFeatures Features { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/CustomerSessions/CustomerSessionComponentsCustomerSheetFeatures.cs b/src/Stripe.net/Entities/CustomerSessions/CustomerSessionComponentsCustomerSheetFeatures.cs
new file mode 100644
index 0000000000..3e4eaae646
--- /dev/null
+++ b/src/Stripe.net/Entities/CustomerSessions/CustomerSessionComponentsCustomerSheetFeatures.cs
@@ -0,0 +1,46 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using System.Collections.Generic;
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class CustomerSessionComponentsCustomerSheetFeatures : StripeEntity
+ {
+ ///
+ /// A list of allow_redisplay
+ /// values that controls which saved payment methods the customer sheet displays by
+ /// filtering to only show payment methods with an allow_redisplay value that is
+ /// present in this list.
+ ///
+ /// If not specified, defaults to ["always"]. In order to display all saved payment methods,
+ /// specify ["always", "limited", "unspecified"].
+ /// One of: always, limited, or unspecified.
+ ///
+ [JsonProperty("payment_method_allow_redisplay_filters")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payment_method_allow_redisplay_filters")]
+#endif
+ public List PaymentMethodAllowRedisplayFilters { get; set; }
+
+ ///
+ /// Controls whether the customer sheet displays the option to remove a saved payment
+ /// method.".
+ ///
+ /// Allowing buyers to remove their saved payment methods impacts subscriptions that depend
+ /// on that payment method. Removing the payment method detaches the customer
+ /// object from that PaymentMethod.
+ /// One of: disabled, or enabled.
+ ///
+ [JsonProperty("payment_method_remove")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payment_method_remove")]
+#endif
+ public string PaymentMethodRemove { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/CustomerSessions/CustomerSessionComponentsMobilePaymentElement.cs b/src/Stripe.net/Entities/CustomerSessions/CustomerSessionComponentsMobilePaymentElement.cs
new file mode 100644
index 0000000000..d53f6455bb
--- /dev/null
+++ b/src/Stripe.net/Entities/CustomerSessions/CustomerSessionComponentsMobilePaymentElement.cs
@@ -0,0 +1,29 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class CustomerSessionComponentsMobilePaymentElement : StripeEntity
+ {
+ ///
+ /// Whether the mobile payment element is enabled.
+ ///
+ [JsonProperty("enabled")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("enabled")]
+#endif
+ public bool Enabled { get; set; }
+
+ ///
+ /// This hash defines whether the mobile payment element supports certain features.
+ ///
+ [JsonProperty("features")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("features")]
+#endif
+ public CustomerSessionComponentsMobilePaymentElementFeatures Features { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/CustomerSessions/CustomerSessionComponentsMobilePaymentElementFeatures.cs b/src/Stripe.net/Entities/CustomerSessions/CustomerSessionComponentsMobilePaymentElementFeatures.cs
new file mode 100644
index 0000000000..d30bbd9d9e
--- /dev/null
+++ b/src/Stripe.net/Entities/CustomerSessions/CustomerSessionComponentsMobilePaymentElementFeatures.cs
@@ -0,0 +1,88 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using System.Collections.Generic;
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class CustomerSessionComponentsMobilePaymentElementFeatures : StripeEntity
+ {
+ ///
+ /// A list of allow_redisplay
+ /// values that controls which saved payment methods the mobile payment element displays by
+ /// filtering to only show payment methods with an allow_redisplay value that is
+ /// present in this list.
+ ///
+ /// If not specified, defaults to ["always"]. In order to display all saved payment methods,
+ /// specify ["always", "limited", "unspecified"].
+ /// One of: always, limited, or unspecified.
+ ///
+ [JsonProperty("payment_method_allow_redisplay_filters")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payment_method_allow_redisplay_filters")]
+#endif
+ public List PaymentMethodAllowRedisplayFilters { get; set; }
+
+ ///
+ /// Controls whether or not the mobile payment element shows saved payment methods.
+ /// One of: disabled, or enabled.
+ ///
+ [JsonProperty("payment_method_redisplay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payment_method_redisplay")]
+#endif
+ public string PaymentMethodRedisplay { get; set; }
+
+ ///
+ /// Controls whether the mobile payment element displays the option to remove a saved
+ /// payment method.".
+ ///
+ /// Allowing buyers to remove their saved payment methods impacts subscriptions that depend
+ /// on that payment method. Removing the payment method detaches the customer
+ /// object from that PaymentMethod.
+ /// One of: disabled, or enabled.
+ ///
+ [JsonProperty("payment_method_remove")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payment_method_remove")]
+#endif
+ public string PaymentMethodRemove { get; set; }
+
+ ///
+ /// Controls whether the mobile payment element displays a checkbox offering to save a new
+ /// payment method.
+ ///
+ /// If a customer checks the box, the allow_redisplay
+ /// value on the PaymentMethod is set to 'always' at confirmation time. For
+ /// PaymentIntents, the setup_future_usage
+ /// value is also set to the value defined in payment_method_save_usage.
+ /// One of: disabled, or enabled.
+ ///
+ [JsonProperty("payment_method_save")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payment_method_save")]
+#endif
+ public string PaymentMethodSave { get; set; }
+
+ ///
+ /// Allows overriding the value of allow_override when saving a new payment method when
+ /// payment_method_save is set to disabled. Use values: "always", "limited", or
+ /// "unspecified".
+ ///
+ /// If not specified, defaults to nil (no override value).
+ /// One of: always, limited, or unspecified.
+ ///
+ [JsonProperty("payment_method_save_allow_redisplay_override")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payment_method_save_allow_redisplay_override")]
+#endif
+ public string PaymentMethodSaveAllowRedisplayOverride { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/Customers/CustomerTax.cs b/src/Stripe.net/Entities/Customers/CustomerTax.cs
index df24d7c5b0..b735cbbec5 100644
--- a/src/Stripe.net/Entities/Customers/CustomerTax.cs
+++ b/src/Stripe.net/Entities/Customers/CustomerTax.cs
@@ -37,5 +37,17 @@ public class CustomerTax : StripeEntity
[STJS.JsonPropertyName("location")]
#endif
public CustomerTaxLocation Location { get; set; }
+
+ ///
+ /// The tax calculation provider used for location resolution. Defaults to stripe
+ /// when not using a third-party
+ /// provider.
+ /// One of: anrok, avalara, sphere, or stripe.
+ ///
+ [JsonProperty("provider")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("provider")]
+#endif
+ public string Provider { get; set; }
}
}
diff --git a/src/Stripe.net/Entities/Events/Event.cs b/src/Stripe.net/Entities/Events/Event.cs
index 4fe42927e7..4bd3e41c81 100644
--- a/src/Stripe.net/Entities/Events/Event.cs
+++ b/src/Stripe.net/Entities/Events/Event.cs
@@ -138,7 +138,8 @@ public class Event : StripeEntity, IHasId, IHasObject
/// account.external_account.updated, account.updated,
/// application_fee.created, application_fee.refund.updated,
/// application_fee.refunded, balance.available,
- /// billing.alert.triggered, billing_portal.configuration.created,
+ /// balance_settings.updated, billing.alert.triggered,
+ /// billing_portal.configuration.created,
/// billing_portal.configuration.updated, billing_portal.session.created,
/// capability.updated, cash_balance.funds_available, charge.captured,
/// charge.dispute.closed, charge.dispute.created,
@@ -183,17 +184,17 @@ public class Event : StripeEntity, IHasId, IHasObject
/// invoice.deleted, invoice.finalization_failed, invoice.finalized,
/// invoice.marked_uncollectible, invoice.overdue, invoice.overpaid,
/// invoice.paid, invoice.payment_action_required,
- /// invoice.payment_failed, invoice.payment_succeeded, invoice.sent,
- /// invoice.upcoming, invoice.updated, invoice.voided,
- /// invoice.will_be_due, invoice_payment.paid, invoiceitem.created,
- /// invoiceitem.deleted, issuing_authorization.created,
- /// issuing_authorization.request, issuing_authorization.updated,
- /// issuing_card.created, issuing_card.updated,
- /// issuing_cardholder.created, issuing_cardholder.updated,
- /// issuing_dispute.closed, issuing_dispute.created,
- /// issuing_dispute.funds_reinstated, issuing_dispute.funds_rescinded,
- /// issuing_dispute.submitted, issuing_dispute.updated,
- /// issuing_personalization_design.activated,
+ /// invoice.payment_attempt_required, invoice.payment_failed,
+ /// invoice.payment_succeeded, invoice.sent, invoice.upcoming,
+ /// invoice.updated, invoice.voided, invoice.will_be_due,
+ /// invoice_payment.paid, invoiceitem.created, invoiceitem.deleted,
+ /// issuing_authorization.created, issuing_authorization.request,
+ /// issuing_authorization.updated, issuing_card.created,
+ /// issuing_card.updated, issuing_cardholder.created,
+ /// issuing_cardholder.updated, issuing_dispute.closed,
+ /// issuing_dispute.created, issuing_dispute.funds_reinstated,
+ /// issuing_dispute.funds_rescinded, issuing_dispute.submitted,
+ /// issuing_dispute.updated, issuing_personalization_design.activated,
/// issuing_personalization_design.deactivated,
/// issuing_personalization_design.rejected,
/// issuing_personalization_design.updated, issuing_token.created,
diff --git a/src/Stripe.net/Entities/Files/File.cs b/src/Stripe.net/Entities/Files/File.cs
index 2e4d276c08..19f228fa55 100644
--- a/src/Stripe.net/Entities/Files/File.cs
+++ b/src/Stripe.net/Entities/Files/File.cs
@@ -86,9 +86,9 @@ public class File : StripeEntity, IHasId, IHasObject
/// dispute_evidence, document_provider_identity_document,
/// finance_report_run, financial_account_statement, identity_document,
/// identity_document_downloadable, issuing_regulatory_reporting,
- /// pci_document, selfie, sigma_scheduled_query,
- /// tax_document_user_upload, terminal_android_apk, or
- /// terminal_reader_splashscreen.
+ /// pci_document, platform_terms_of_service, selfie,
+ /// sigma_scheduled_query, tax_document_user_upload,
+ /// terminal_android_apk, or terminal_reader_splashscreen.
///
[JsonProperty("purpose")]
#if NET6_0_OR_GREATER
diff --git a/src/Stripe.net/Entities/InvoicePayments/InvoicePaymentPayment.cs b/src/Stripe.net/Entities/InvoicePayments/InvoicePaymentPayment.cs
index 413564c5be..51e078c47a 100644
--- a/src/Stripe.net/Entities/InvoicePayments/InvoicePaymentPayment.cs
+++ b/src/Stripe.net/Entities/InvoicePayments/InvoicePaymentPayment.cs
@@ -104,6 +104,49 @@ public PaymentIntent PaymentIntent
internal ExpandableField InternalPaymentIntent { get; set; }
#endregion
+ #region Expandable PaymentRecord
+
+ ///
+ /// (ID of the PaymentRecord)
+ /// ID of the PaymentRecord associated with this payment when type is
+ /// payment_record.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public string PaymentRecordId
+ {
+ get => this.InternalPaymentRecord?.Id;
+ set => this.InternalPaymentRecord = SetExpandableFieldId(value, this.InternalPaymentRecord);
+ }
+
+ ///
+ /// (Expanded)
+ /// ID of the PaymentRecord associated with this payment when type is
+ /// payment_record.
+ ///
+ /// For more information, see the expand documentation.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public PaymentRecord PaymentRecord
+ {
+ get => this.InternalPaymentRecord?.ExpandedObject;
+ set => this.InternalPaymentRecord = SetExpandableFieldObject(value, this.InternalPaymentRecord);
+ }
+
+ [JsonProperty("payment_record")]
+ [JsonConverter(typeof(ExpandableFieldConverter))]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payment_record")]
+ [STJS.JsonConverter(typeof(STJExpandableFieldConverter))]
+#endif
+ internal ExpandableField InternalPaymentRecord { get; set; }
+ #endregion
+
///
/// Type of payment object associated with this invoice payment.
/// One of: charge, or payment_intent.
diff --git a/src/Stripe.net/Entities/Invoices/InvoicePaymentSettings.cs b/src/Stripe.net/Entities/Invoices/InvoicePaymentSettings.cs
index 35fc36adfc..168d4a7728 100644
--- a/src/Stripe.net/Entities/Invoices/InvoicePaymentSettings.cs
+++ b/src/Stripe.net/Entities/Invoices/InvoicePaymentSettings.cs
@@ -38,10 +38,10 @@ public class InvoicePaymentSettings : StripeEntity
/// settings.
/// One of: ach_credit_transfer, ach_debit, acss_debit, affirm,
/// amazon_pay, au_becs_debit, bacs_debit, bancontact,
- /// boleto, card, cashapp, crypto, customer_balance,
- /// eps, fpx, giropay, grabpay, ideal,
- /// jp_credit_transfer, kakao_pay, klarna, konbini,
- /// kr_card, link, multibanco, naver_pay,
+ /// boleto, card, cashapp, crypto, custom,
+ /// customer_balance, eps, fpx, giropay, grabpay,
+ /// ideal, jp_credit_transfer, kakao_pay, klarna,
+ /// konbini, kr_card, link, multibanco, naver_pay,
/// nz_bank_account, p24, payco, paynow, paypal,
/// promptpay, revolut_pay, sepa_credit_transfer, sepa_debit,
/// sofort, swish, us_bank_account, or wechat_pay.
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecord.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecord.cs
new file mode 100644
index 0000000000..98d1bfdb6f
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecord.cs
@@ -0,0 +1,216 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using System;
+ using System.Collections.Generic;
+ using Newtonsoft.Json;
+ using Stripe.Infrastructure;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ ///
+ /// A Payment Attempt Record represents an individual attempt at making a payment, on or off
+ /// Stripe. Each payment attempt tries to collect a fixed amount of money from a fixed
+ /// customer and payment method. Payment Attempt Records are attached to Payment Records.
+ /// Only one attempt per Payment Record can have guaranteed funds.
+ ///
+ public class PaymentAttemptRecord : StripeEntity, IHasId, IHasMetadata, IHasObject
+ {
+ ///
+ /// Unique identifier for the object.
+ ///
+ [JsonProperty("id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("id")]
+#endif
+ public string Id { get; set; }
+
+ ///
+ /// String representing the object's type. Objects of the same type share the same value.
+ ///
+ [JsonProperty("object")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("object")]
+#endif
+ public string Object { get; set; }
+
+ ///
+ /// A representation of an amount of money, consisting of an amount and a currency.
+ ///
+ [JsonProperty("amount")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("amount")]
+#endif
+ public PaymentAttemptRecordAmount Amount { get; set; }
+
+ ///
+ /// A representation of an amount of money, consisting of an amount and a currency.
+ ///
+ [JsonProperty("amount_authorized")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("amount_authorized")]
+#endif
+ public PaymentAttemptRecordAmountAuthorized AmountAuthorized { get; set; }
+
+ ///
+ /// A representation of an amount of money, consisting of an amount and a currency.
+ ///
+ [JsonProperty("amount_canceled")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("amount_canceled")]
+#endif
+ public PaymentAttemptRecordAmountCanceled AmountCanceled { get; set; }
+
+ ///
+ /// A representation of an amount of money, consisting of an amount and a currency.
+ ///
+ [JsonProperty("amount_failed")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("amount_failed")]
+#endif
+ public PaymentAttemptRecordAmountFailed AmountFailed { get; set; }
+
+ ///
+ /// A representation of an amount of money, consisting of an amount and a currency.
+ ///
+ [JsonProperty("amount_guaranteed")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("amount_guaranteed")]
+#endif
+ public PaymentAttemptRecordAmountGuaranteed AmountGuaranteed { get; set; }
+
+ ///
+ /// A representation of an amount of money, consisting of an amount and a currency.
+ ///
+ [JsonProperty("amount_refunded")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("amount_refunded")]
+#endif
+ public PaymentAttemptRecordAmountRefunded AmountRefunded { get; set; }
+
+ ///
+ /// A representation of an amount of money, consisting of an amount and a currency.
+ ///
+ [JsonProperty("amount_requested")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("amount_requested")]
+#endif
+ public PaymentAttemptRecordAmountRequested AmountRequested { get; set; }
+
+ ///
+ /// ID of the Connect application that created the PaymentAttemptRecord.
+ ///
+ [JsonProperty("application")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("application")]
+#endif
+ public string Application { get; set; }
+
+ ///
+ /// Time at which the object was created. Measured in seconds since the Unix epoch.
+ ///
+ [JsonProperty("created")]
+ [JsonConverter(typeof(UnixDateTimeConverter))]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("created")]
+ [STJS.JsonConverter(typeof(STJUnixDateTimeConverter))]
+#endif
+ public DateTime Created { get; set; } = Stripe.Infrastructure.DateTimeUtils.UnixEpoch;
+
+ ///
+ /// Customer information for this payment.
+ ///
+ [JsonProperty("customer_details")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("customer_details")]
+#endif
+ public PaymentAttemptRecordCustomerDetails CustomerDetails { get; set; }
+
+ ///
+ /// Indicates whether the customer was present in your checkout flow during this payment.
+ /// One of: off_session, or on_session.
+ ///
+ [JsonProperty("customer_presence")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("customer_presence")]
+#endif
+ public string CustomerPresence { get; set; }
+
+ ///
+ /// An arbitrary string attached to the object. Often useful for displaying to users.
+ ///
+ [JsonProperty("description")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("description")]
+#endif
+ public string Description { get; set; }
+
+ ///
+ /// Has the value true if the object exists in live mode or the value false if
+ /// the object exists in test mode.
+ ///
+ [JsonProperty("livemode")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("livemode")]
+#endif
+ public bool Livemode { get; set; }
+
+ ///
+ /// Set of key-value pairs that you can
+ /// attach to an object. This can be useful for storing additional information about the
+ /// object in a structured format.
+ ///
+ [JsonProperty("metadata")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("metadata")]
+#endif
+ public Dictionary Metadata { get; set; }
+
+ ///
+ /// Information about the Payment Method debited for this payment.
+ ///
+ [JsonProperty("payment_method_details")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payment_method_details")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetails PaymentMethodDetails { get; set; }
+
+ ///
+ /// ID of the Payment Record this Payment Attempt Record belongs to.
+ ///
+ [JsonProperty("payment_record")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payment_record")]
+#endif
+ public string PaymentRecord { get; set; }
+
+ ///
+ /// Processor information associated with this payment.
+ ///
+ [JsonProperty("processor_details")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("processor_details")]
+#endif
+ public PaymentAttemptRecordProcessorDetails ProcessorDetails { get; set; }
+
+ ///
+ /// Indicates who reported the payment.
+ /// One of: self, or stripe.
+ ///
+ [JsonProperty("reported_by")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("reported_by")]
+#endif
+ public string ReportedBy { get; set; }
+
+ ///
+ /// Shipping information for this payment.
+ ///
+ [JsonProperty("shipping_details")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("shipping_details")]
+#endif
+ public PaymentAttemptRecordShippingDetails ShippingDetails { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordAmount.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordAmount.cs
new file mode 100644
index 0000000000..d7e37e3dcc
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordAmount.cs
@@ -0,0 +1,33 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordAmount : StripeEntity
+ {
+ ///
+ /// Three-letter ISO currency
+ /// code, in lowercase. Must be a supported
+ /// currency.
+ ///
+ [JsonProperty("currency")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("currency")]
+#endif
+ public string Currency { get; set; }
+
+ ///
+ /// A positive integer representing the amount in the currency's minor unit. For example,
+ /// 100 can represent 1 USD or 100 JPY.
+ ///
+ [JsonProperty("value")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("value")]
+#endif
+ public long Value { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordAmountAuthorized.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordAmountAuthorized.cs
new file mode 100644
index 0000000000..1c51574a8d
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordAmountAuthorized.cs
@@ -0,0 +1,33 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordAmountAuthorized : StripeEntity
+ {
+ ///
+ /// Three-letter ISO currency
+ /// code, in lowercase. Must be a supported
+ /// currency.
+ ///
+ [JsonProperty("currency")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("currency")]
+#endif
+ public string Currency { get; set; }
+
+ ///
+ /// A positive integer representing the amount in the currency's minor unit. For example,
+ /// 100 can represent 1 USD or 100 JPY.
+ ///
+ [JsonProperty("value")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("value")]
+#endif
+ public long Value { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordAmountCanceled.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordAmountCanceled.cs
new file mode 100644
index 0000000000..4d60c508d9
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordAmountCanceled.cs
@@ -0,0 +1,33 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordAmountCanceled : StripeEntity
+ {
+ ///
+ /// Three-letter ISO currency
+ /// code, in lowercase. Must be a supported
+ /// currency.
+ ///
+ [JsonProperty("currency")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("currency")]
+#endif
+ public string Currency { get; set; }
+
+ ///
+ /// A positive integer representing the amount in the currency's minor unit. For example,
+ /// 100 can represent 1 USD or 100 JPY.
+ ///
+ [JsonProperty("value")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("value")]
+#endif
+ public long Value { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordAmountFailed.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordAmountFailed.cs
new file mode 100644
index 0000000000..a1244e63d2
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordAmountFailed.cs
@@ -0,0 +1,33 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordAmountFailed : StripeEntity
+ {
+ ///
+ /// Three-letter ISO currency
+ /// code, in lowercase. Must be a supported
+ /// currency.
+ ///
+ [JsonProperty("currency")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("currency")]
+#endif
+ public string Currency { get; set; }
+
+ ///
+ /// A positive integer representing the amount in the currency's minor unit. For example,
+ /// 100 can represent 1 USD or 100 JPY.
+ ///
+ [JsonProperty("value")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("value")]
+#endif
+ public long Value { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordAmountGuaranteed.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordAmountGuaranteed.cs
new file mode 100644
index 0000000000..ebd770d66a
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordAmountGuaranteed.cs
@@ -0,0 +1,33 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordAmountGuaranteed : StripeEntity
+ {
+ ///
+ /// Three-letter ISO currency
+ /// code, in lowercase. Must be a supported
+ /// currency.
+ ///
+ [JsonProperty("currency")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("currency")]
+#endif
+ public string Currency { get; set; }
+
+ ///
+ /// A positive integer representing the amount in the currency's minor unit. For example,
+ /// 100 can represent 1 USD or 100 JPY.
+ ///
+ [JsonProperty("value")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("value")]
+#endif
+ public long Value { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordAmountRefunded.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordAmountRefunded.cs
new file mode 100644
index 0000000000..ba3898cd59
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordAmountRefunded.cs
@@ -0,0 +1,33 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordAmountRefunded : StripeEntity
+ {
+ ///
+ /// Three-letter ISO currency
+ /// code, in lowercase. Must be a supported
+ /// currency.
+ ///
+ [JsonProperty("currency")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("currency")]
+#endif
+ public string Currency { get; set; }
+
+ ///
+ /// A positive integer representing the amount in the currency's minor unit. For example,
+ /// 100 can represent 1 USD or 100 JPY.
+ ///
+ [JsonProperty("value")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("value")]
+#endif
+ public long Value { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordAmountRequested.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordAmountRequested.cs
new file mode 100644
index 0000000000..65f3277ca1
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordAmountRequested.cs
@@ -0,0 +1,33 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordAmountRequested : StripeEntity
+ {
+ ///
+ /// Three-letter ISO currency
+ /// code, in lowercase. Must be a supported
+ /// currency.
+ ///
+ [JsonProperty("currency")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("currency")]
+#endif
+ public string Currency { get; set; }
+
+ ///
+ /// A positive integer representing the amount in the currency's minor unit. For example,
+ /// 100 can represent 1 USD or 100 JPY.
+ ///
+ [JsonProperty("value")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("value")]
+#endif
+ public long Value { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordCustomerDetails.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordCustomerDetails.cs
new file mode 100644
index 0000000000..81c3441119
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordCustomerDetails.cs
@@ -0,0 +1,47 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordCustomerDetails : StripeEntity
+ {
+ ///
+ /// ID of the Stripe Customer associated with this payment.
+ ///
+ [JsonProperty("customer")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("customer")]
+#endif
+ public string Customer { get; set; }
+
+ ///
+ /// The customer's email address.
+ ///
+ [JsonProperty("email")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("email")]
+#endif
+ public string Email { get; set; }
+
+ ///
+ /// The customer's name.
+ ///
+ [JsonProperty("name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("name")]
+#endif
+ public string Name { get; set; }
+
+ ///
+ /// The customer's phone number.
+ ///
+ [JsonProperty("phone")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("phone")]
+#endif
+ public string Phone { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetails.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetails.cs
new file mode 100644
index 0000000000..2cf4480a6b
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetails.cs
@@ -0,0 +1,396 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetails : StripeEntity
+ {
+ [JsonProperty("ach_credit_transfer")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("ach_credit_transfer")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsAchCreditTransfer AchCreditTransfer { get; set; }
+
+ [JsonProperty("ach_debit")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("ach_debit")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsAchDebit AchDebit { get; set; }
+
+ [JsonProperty("acss_debit")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("acss_debit")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsAcssDebit AcssDebit { get; set; }
+
+ [JsonProperty("affirm")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("affirm")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsAffirm Affirm { get; set; }
+
+ [JsonProperty("afterpay_clearpay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("afterpay_clearpay")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsAfterpayClearpay AfterpayClearpay { get; set; }
+
+ [JsonProperty("alipay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("alipay")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsAlipay Alipay { get; set; }
+
+ [JsonProperty("alma")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("alma")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsAlma Alma { get; set; }
+
+ [JsonProperty("amazon_pay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("amazon_pay")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsAmazonPay AmazonPay { get; set; }
+
+ [JsonProperty("au_becs_debit")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("au_becs_debit")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsAuBecsDebit AuBecsDebit { get; set; }
+
+ [JsonProperty("bacs_debit")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bacs_debit")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsBacsDebit BacsDebit { get; set; }
+
+ [JsonProperty("bancontact")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bancontact")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsBancontact Bancontact { get; set; }
+
+ [JsonProperty("billie")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("billie")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsBillie Billie { get; set; }
+
+ ///
+ /// The billing details associated with the method of payment.
+ ///
+ [JsonProperty("billing_details")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("billing_details")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsBillingDetails BillingDetails { get; set; }
+
+ [JsonProperty("blik")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("blik")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsBlik Blik { get; set; }
+
+ [JsonProperty("boleto")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("boleto")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsBoleto Boleto { get; set; }
+
+ ///
+ /// Details of the card used for this payment attempt.
+ ///
+ [JsonProperty("card")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("card")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsCard Card { get; set; }
+
+ [JsonProperty("card_present")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("card_present")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsCardPresent CardPresent { get; set; }
+
+ [JsonProperty("cashapp")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("cashapp")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsCashapp Cashapp { get; set; }
+
+ [JsonProperty("crypto")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("crypto")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsCrypto Crypto { get; set; }
+
+ ///
+ /// Custom Payment Methods represent Payment Method types not modeled directly in the Stripe
+ /// API. This resource consists of details about the custom payment method used for this
+ /// payment attempt.
+ ///
+ [JsonProperty("custom")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("custom")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsCustom Custom { get; set; }
+
+ [JsonProperty("customer_balance")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("customer_balance")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsCustomerBalance CustomerBalance { get; set; }
+
+ [JsonProperty("eps")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("eps")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsEps Eps { get; set; }
+
+ [JsonProperty("fpx")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("fpx")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsFpx Fpx { get; set; }
+
+ [JsonProperty("giropay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("giropay")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsGiropay Giropay { get; set; }
+
+ [JsonProperty("grabpay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("grabpay")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsGrabpay Grabpay { get; set; }
+
+ [JsonProperty("ideal")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("ideal")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsIdeal Ideal { get; set; }
+
+ [JsonProperty("interac_present")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("interac_present")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsInteracPresent InteracPresent { get; set; }
+
+ [JsonProperty("kakao_pay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("kakao_pay")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsKakaoPay KakaoPay { get; set; }
+
+ [JsonProperty("klarna")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("klarna")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsKlarna Klarna { get; set; }
+
+ [JsonProperty("konbini")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("konbini")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsKonbini Konbini { get; set; }
+
+ [JsonProperty("kr_card")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("kr_card")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsKrCard KrCard { get; set; }
+
+ [JsonProperty("link")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("link")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsLink Link { get; set; }
+
+ [JsonProperty("mb_way")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("mb_way")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsMbWay MbWay { get; set; }
+
+ [JsonProperty("mobilepay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("mobilepay")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsMobilepay Mobilepay { get; set; }
+
+ [JsonProperty("multibanco")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("multibanco")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsMultibanco Multibanco { get; set; }
+
+ [JsonProperty("naver_pay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("naver_pay")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsNaverPay NaverPay { get; set; }
+
+ [JsonProperty("nz_bank_account")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("nz_bank_account")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsNzBankAccount NzBankAccount { get; set; }
+
+ [JsonProperty("oxxo")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("oxxo")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsOxxo Oxxo { get; set; }
+
+ [JsonProperty("p24")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("p24")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsP24 P24 { get; set; }
+
+ [JsonProperty("pay_by_bank")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("pay_by_bank")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsPayByBank PayByBank { get; set; }
+
+ [JsonProperty("payco")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payco")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsPayco Payco { get; set; }
+
+ ///
+ /// ID of the Stripe PaymentMethod used to make this payment.
+ ///
+ [JsonProperty("payment_method")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payment_method")]
+#endif
+ public string PaymentMethod { get; set; }
+
+ [JsonProperty("paynow")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("paynow")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsPaynow Paynow { get; set; }
+
+ [JsonProperty("paypal")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("paypal")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsPaypal Paypal { get; set; }
+
+ [JsonProperty("pix")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("pix")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsPix Pix { get; set; }
+
+ [JsonProperty("promptpay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("promptpay")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsPromptpay Promptpay { get; set; }
+
+ [JsonProperty("revolut_pay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("revolut_pay")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsRevolutPay RevolutPay { get; set; }
+
+ [JsonProperty("samsung_pay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("samsung_pay")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsSamsungPay SamsungPay { get; set; }
+
+ [JsonProperty("satispay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("satispay")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsSatispay Satispay { get; set; }
+
+ [JsonProperty("sepa_credit_transfer")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("sepa_credit_transfer")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsSepaCreditTransfer SepaCreditTransfer { get; set; }
+
+ [JsonProperty("sepa_debit")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("sepa_debit")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsSepaDebit SepaDebit { get; set; }
+
+ [JsonProperty("sofort")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("sofort")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsSofort Sofort { get; set; }
+
+ [JsonProperty("stripe_account")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("stripe_account")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsStripeAccount StripeAccount { get; set; }
+
+ [JsonProperty("swish")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("swish")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsSwish Swish { get; set; }
+
+ [JsonProperty("twint")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("twint")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsTwint Twint { get; set; }
+
+ ///
+ /// The type of transaction-specific details of the payment method used in the payment. See
+ /// PaymentMethod.type
+ /// for the full list of possible types. An additional hash is included on
+ /// payment_method_details with a name matching this value. It contains information
+ /// specific to the payment method.
+ ///
+ [JsonProperty("type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("type")]
+#endif
+ public string Type { get; set; }
+
+ ///
+ /// Details of the US Bank Account used for this payment attempt.
+ ///
+ [JsonProperty("us_bank_account")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("us_bank_account")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsUsBankAccount UsBankAccount { get; set; }
+
+ [JsonProperty("wechat")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("wechat")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsWechat Wechat { get; set; }
+
+ [JsonProperty("wechat_pay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("wechat_pay")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsWechatPay WechatPay { get; set; }
+
+ [JsonProperty("zip")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("zip")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsZip Zip { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAchCreditTransfer.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAchCreditTransfer.cs
new file mode 100644
index 0000000000..3fc5059941
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAchCreditTransfer.cs
@@ -0,0 +1,47 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsAchCreditTransfer : StripeEntity
+ {
+ ///
+ /// Account number to transfer funds to.
+ ///
+ [JsonProperty("account_number")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("account_number")]
+#endif
+ public string AccountNumber { get; set; }
+
+ ///
+ /// Name of the bank associated with the routing number.
+ ///
+ [JsonProperty("bank_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_name")]
+#endif
+ public string BankName { get; set; }
+
+ ///
+ /// Routing transit number for the bank account to transfer funds to.
+ ///
+ [JsonProperty("routing_number")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("routing_number")]
+#endif
+ public string RoutingNumber { get; set; }
+
+ ///
+ /// SWIFT code of the bank associated with the routing number.
+ ///
+ [JsonProperty("swift_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("swift_code")]
+#endif
+ public string SwiftCode { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAchDebit.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAchDebit.cs
new file mode 100644
index 0000000000..dcd3ca760e
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAchDebit.cs
@@ -0,0 +1,68 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsAchDebit : StripeEntity
+ {
+ ///
+ /// Type of entity that holds the account. This can be either individual or
+ /// company.
+ /// One of: company, or individual.
+ ///
+ [JsonProperty("account_holder_type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("account_holder_type")]
+#endif
+ public string AccountHolderType { get; set; }
+
+ ///
+ /// Name of the bank associated with the bank account.
+ ///
+ [JsonProperty("bank_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_name")]
+#endif
+ public string BankName { get; set; }
+
+ ///
+ /// Two-letter ISO code representing the country the bank account is located in.
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+
+ ///
+ /// Uniquely identifies this particular bank account. You can use this attribute to check
+ /// whether two bank accounts are the same.
+ ///
+ [JsonProperty("fingerprint")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("fingerprint")]
+#endif
+ public string Fingerprint { get; set; }
+
+ ///
+ /// Last four digits of the bank account number.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+
+ ///
+ /// Routing transit number of the bank account.
+ ///
+ [JsonProperty("routing_number")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("routing_number")]
+#endif
+ public string RoutingNumber { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAcssDebit.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAcssDebit.cs
new file mode 100644
index 0000000000..15dc865bc7
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAcssDebit.cs
@@ -0,0 +1,66 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsAcssDebit : StripeEntity
+ {
+ ///
+ /// Name of the bank associated with the bank account.
+ ///
+ [JsonProperty("bank_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_name")]
+#endif
+ public string BankName { get; set; }
+
+ ///
+ /// Uniquely identifies this particular bank account. You can use this attribute to check
+ /// whether two bank accounts are the same.
+ ///
+ [JsonProperty("fingerprint")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("fingerprint")]
+#endif
+ public string Fingerprint { get; set; }
+
+ ///
+ /// Institution number of the bank account.
+ ///
+ [JsonProperty("institution_number")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("institution_number")]
+#endif
+ public string InstitutionNumber { get; set; }
+
+ ///
+ /// Last four digits of the bank account number.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+
+ ///
+ /// ID of the mandate used to make this payment.
+ ///
+ [JsonProperty("mandate")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("mandate")]
+#endif
+ public string Mandate { get; set; }
+
+ ///
+ /// Transit number of the bank account.
+ ///
+ [JsonProperty("transit_number")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transit_number")]
+#endif
+ public string TransitNumber { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAffirm.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAffirm.cs
new file mode 100644
index 0000000000..92a2f41a54
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAffirm.cs
@@ -0,0 +1,40 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsAffirm : StripeEntity
+ {
+ ///
+ /// ID of the location that
+ /// this transaction's reader is assigned to.
+ ///
+ [JsonProperty("location")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("location")]
+#endif
+ public string Location { get; set; }
+
+ ///
+ /// ID of the reader this
+ /// transaction was made on.
+ ///
+ [JsonProperty("reader")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("reader")]
+#endif
+ public string Reader { get; set; }
+
+ ///
+ /// The Affirm transaction ID associated with this payment.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAfterpayClearpay.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAfterpayClearpay.cs
new file mode 100644
index 0000000000..cd7e73896b
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAfterpayClearpay.cs
@@ -0,0 +1,29 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsAfterpayClearpay : StripeEntity
+ {
+ ///
+ /// The Afterpay order ID associated with this payment intent.
+ ///
+ [JsonProperty("order_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("order_id")]
+#endif
+ public string OrderId { get; set; }
+
+ ///
+ /// Order identifier shown to the merchant in Afterpay’s online portal.
+ ///
+ [JsonProperty("reference")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("reference")]
+#endif
+ public string Reference { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAlipay.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAlipay.cs
new file mode 100644
index 0000000000..d9df7a1589
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAlipay.cs
@@ -0,0 +1,40 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsAlipay : StripeEntity
+ {
+ ///
+ /// Uniquely identifies this particular Alipay account. You can use this attribute to check
+ /// whether two Alipay accounts are the same.
+ ///
+ [JsonProperty("buyer_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("buyer_id")]
+#endif
+ public string BuyerId { get; set; }
+
+ ///
+ /// Uniquely identifies this particular Alipay account. You can use this attribute to check
+ /// whether two Alipay accounts are the same.
+ ///
+ [JsonProperty("fingerprint")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("fingerprint")]
+#endif
+ public string Fingerprint { get; set; }
+
+ ///
+ /// Transaction ID of this particular Alipay transaction.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAlma.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAlma.cs
new file mode 100644
index 0000000000..8da7be0e41
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAlma.cs
@@ -0,0 +1,26 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsAlma : StripeEntity
+ {
+ [JsonProperty("installments")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("installments")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsAlmaInstallments Installments { get; set; }
+
+ ///
+ /// The Alma transaction ID associated with this payment.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAlmaInstallments.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAlmaInstallments.cs
new file mode 100644
index 0000000000..8a60335e7a
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAlmaInstallments.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsAlmaInstallments : StripeEntity
+ {
+ ///
+ /// The number of installments.
+ ///
+ [JsonProperty("count")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("count")]
+#endif
+ public long Count { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAmazonPay.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAmazonPay.cs
new file mode 100644
index 0000000000..807c597ce2
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAmazonPay.cs
@@ -0,0 +1,26 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsAmazonPay : StripeEntity
+ {
+ [JsonProperty("funding")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("funding")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsAmazonPayFunding Funding { get; set; }
+
+ ///
+ /// The Amazon Pay transaction ID associated with this payment.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAmazonPayFunding.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAmazonPayFunding.cs
new file mode 100644
index 0000000000..8a9a6dcf2e
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAmazonPayFunding.cs
@@ -0,0 +1,26 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsAmazonPayFunding : StripeEntity
+ {
+ [JsonProperty("card")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("card")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsAmazonPayFundingCard Card { get; set; }
+
+ ///
+ /// funding type of the underlying payment method.
+ ///
+ [JsonProperty("type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("type")]
+#endif
+ public string Type { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAmazonPayFundingCard.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAmazonPayFundingCard.cs
new file mode 100644
index 0000000000..3f1f717e99
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAmazonPayFundingCard.cs
@@ -0,0 +1,69 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsAmazonPayFundingCard : StripeEntity
+ {
+ ///
+ /// Card brand. Can be amex, cartes_bancaires, diners, discover,
+ /// eftpos_au, jcb, link, mastercard, unionpay,
+ /// visa or unknown.
+ ///
+ [JsonProperty("brand")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("brand")]
+#endif
+ public string Brand { get; set; }
+
+ ///
+ /// Two-letter ISO code representing the country of the card. You could use this attribute
+ /// to get a sense of the international breakdown of cards you've collected.
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+
+ ///
+ /// Two-digit number representing the card's expiration month.
+ ///
+ [JsonProperty("exp_month")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("exp_month")]
+#endif
+ public long? ExpMonth { get; set; }
+
+ ///
+ /// Four-digit number representing the card's expiration year.
+ ///
+ [JsonProperty("exp_year")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("exp_year")]
+#endif
+ public long? ExpYear { get; set; }
+
+ ///
+ /// Card funding type. Can be credit, debit, prepaid, or
+ /// unknown.
+ ///
+ [JsonProperty("funding")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("funding")]
+#endif
+ public string Funding { get; set; }
+
+ ///
+ /// The last four digits of the card.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAuBecsDebit.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAuBecsDebit.cs
new file mode 100644
index 0000000000..37c21720a7
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsAuBecsDebit.cs
@@ -0,0 +1,48 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsAuBecsDebit : StripeEntity
+ {
+ ///
+ /// Bank-State-Branch number of the bank account.
+ ///
+ [JsonProperty("bsb_number")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bsb_number")]
+#endif
+ public string BsbNumber { get; set; }
+
+ ///
+ /// Uniquely identifies this particular bank account. You can use this attribute to check
+ /// whether two bank accounts are the same.
+ ///
+ [JsonProperty("fingerprint")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("fingerprint")]
+#endif
+ public string Fingerprint { get; set; }
+
+ ///
+ /// Last four digits of the bank account number.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+
+ ///
+ /// ID of the mandate used to make this payment.
+ ///
+ [JsonProperty("mandate")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("mandate")]
+#endif
+ public string Mandate { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsBacsDebit.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsBacsDebit.cs
new file mode 100644
index 0000000000..c668237321
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsBacsDebit.cs
@@ -0,0 +1,48 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsBacsDebit : StripeEntity
+ {
+ ///
+ /// Uniquely identifies this particular bank account. You can use this attribute to check
+ /// whether two bank accounts are the same.
+ ///
+ [JsonProperty("fingerprint")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("fingerprint")]
+#endif
+ public string Fingerprint { get; set; }
+
+ ///
+ /// Last four digits of the bank account number.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+
+ ///
+ /// ID of the mandate used to make this payment.
+ ///
+ [JsonProperty("mandate")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("mandate")]
+#endif
+ public string Mandate { get; set; }
+
+ ///
+ /// Sort code of the bank account. (e.g., 10-20-30).
+ ///
+ [JsonProperty("sort_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("sort_code")]
+#endif
+ public string SortCode { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsBancontact.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsBancontact.cs
new file mode 100644
index 0000000000..18c5600725
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsBancontact.cs
@@ -0,0 +1,154 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+ using Stripe.Infrastructure;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+#if NET6_0_OR_GREATER
+ [STJS.JsonConverter(typeof(STJMemberSerializationOptIn))]
+#endif
+ public class PaymentAttemptRecordPaymentMethodDetailsBancontact : StripeEntity
+ {
+ ///
+ /// Bank code of bank associated with the bank account.
+ ///
+ [JsonProperty("bank_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_code")]
+#endif
+ public string BankCode { get; set; }
+
+ ///
+ /// Name of the bank associated with the bank account.
+ ///
+ [JsonProperty("bank_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_name")]
+#endif
+ public string BankName { get; set; }
+
+ ///
+ /// Bank Identifier Code of the bank associated with the bank account.
+ ///
+ [JsonProperty("bic")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bic")]
+#endif
+ public string Bic { get; set; }
+
+ #region Expandable GeneratedSepaDebit
+
+ ///
+ /// (ID of the PaymentMethod)
+ /// The ID of the SEPA Direct Debit PaymentMethod which was generated by this Charge.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public string GeneratedSepaDebitId
+ {
+ get => this.InternalGeneratedSepaDebit?.Id;
+ set => this.InternalGeneratedSepaDebit = SetExpandableFieldId(value, this.InternalGeneratedSepaDebit);
+ }
+
+ ///
+ /// (Expanded)
+ /// The ID of the SEPA Direct Debit PaymentMethod which was generated by this Charge.
+ ///
+ /// For more information, see the expand documentation.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public PaymentMethod GeneratedSepaDebit
+ {
+ get => this.InternalGeneratedSepaDebit?.ExpandedObject;
+ set => this.InternalGeneratedSepaDebit = SetExpandableFieldObject(value, this.InternalGeneratedSepaDebit);
+ }
+
+ [JsonProperty("generated_sepa_debit")]
+ [JsonConverter(typeof(ExpandableFieldConverter))]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("generated_sepa_debit")]
+ [STJS.JsonConverter(typeof(STJExpandableFieldConverter))]
+#endif
+ internal ExpandableField InternalGeneratedSepaDebit { get; set; }
+ #endregion
+
+ #region Expandable GeneratedSepaDebitMandate
+
+ ///
+ /// (ID of the Mandate)
+ /// The mandate for the SEPA Direct Debit PaymentMethod which was generated by this Charge.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public string GeneratedSepaDebitMandateId
+ {
+ get => this.InternalGeneratedSepaDebitMandate?.Id;
+ set => this.InternalGeneratedSepaDebitMandate = SetExpandableFieldId(value, this.InternalGeneratedSepaDebitMandate);
+ }
+
+ ///
+ /// (Expanded)
+ /// The mandate for the SEPA Direct Debit PaymentMethod which was generated by this Charge.
+ ///
+ /// For more information, see the expand documentation.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public Mandate GeneratedSepaDebitMandate
+ {
+ get => this.InternalGeneratedSepaDebitMandate?.ExpandedObject;
+ set => this.InternalGeneratedSepaDebitMandate = SetExpandableFieldObject(value, this.InternalGeneratedSepaDebitMandate);
+ }
+
+ [JsonProperty("generated_sepa_debit_mandate")]
+ [JsonConverter(typeof(ExpandableFieldConverter))]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("generated_sepa_debit_mandate")]
+ [STJS.JsonConverter(typeof(STJExpandableFieldConverter))]
+#endif
+ internal ExpandableField InternalGeneratedSepaDebitMandate { get; set; }
+ #endregion
+
+ ///
+ /// Last four characters of the IBAN.
+ ///
+ [JsonProperty("iban_last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("iban_last4")]
+#endif
+ public string IbanLast4 { get; set; }
+
+ ///
+ /// Preferred language of the Bancontact authorization page that the customer is redirected
+ /// to. Can be one of en, de, fr, or nl.
+ /// One of: de, en, fr, or nl.
+ ///
+ [JsonProperty("preferred_language")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("preferred_language")]
+#endif
+ public string PreferredLanguage { get; set; }
+
+ ///
+ /// Owner's verified full name. Values are verified or provided by Bancontact directly (if
+ /// supported) at the time of authorization or settlement. They cannot be set or mutated.
+ ///
+ [JsonProperty("verified_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("verified_name")]
+#endif
+ public string VerifiedName { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsBillie.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsBillie.cs
new file mode 100644
index 0000000000..f218930940
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsBillie.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsBillie : StripeEntity
+ {
+ ///
+ /// The Billie transaction ID associated with this payment.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsBillingDetails.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsBillingDetails.cs
new file mode 100644
index 0000000000..26d5815e5c
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsBillingDetails.cs
@@ -0,0 +1,47 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsBillingDetails : StripeEntity
+ {
+ ///
+ /// A representation of a physical address.
+ ///
+ [JsonProperty("address")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("address")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsBillingDetailsAddress Address { get; set; }
+
+ ///
+ /// The billing email associated with the method of payment.
+ ///
+ [JsonProperty("email")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("email")]
+#endif
+ public string Email { get; set; }
+
+ ///
+ /// The billing name associated with the method of payment.
+ ///
+ [JsonProperty("name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("name")]
+#endif
+ public string Name { get; set; }
+
+ ///
+ /// The billing phone number associated with the method of payment.
+ ///
+ [JsonProperty("phone")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("phone")]
+#endif
+ public string Phone { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsBillingDetailsAddress.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsBillingDetailsAddress.cs
new file mode 100644
index 0000000000..0ca47e3589
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsBillingDetailsAddress.cs
@@ -0,0 +1,66 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsBillingDetailsAddress : StripeEntity
+ {
+ ///
+ /// City, district, suburb, town, or village.
+ ///
+ [JsonProperty("city")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("city")]
+#endif
+ public string City { get; set; }
+
+ ///
+ /// Two-letter country code (ISO
+ /// 3166-1 alpha-2).
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+
+ ///
+ /// Address line 1, such as the street, PO Box, or company name.
+ ///
+ [JsonProperty("line1")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("line1")]
+#endif
+ public string Line1 { get; set; }
+
+ ///
+ /// Address line 2, such as the apartment, suite, unit, or building.
+ ///
+ [JsonProperty("line2")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("line2")]
+#endif
+ public string Line2 { get; set; }
+
+ ///
+ /// ZIP or postal code.
+ ///
+ [JsonProperty("postal_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("postal_code")]
+#endif
+ public string PostalCode { get; set; }
+
+ ///
+ /// State, county, province, or region.
+ ///
+ [JsonProperty("state")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("state")]
+#endif
+ public string State { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsBlik.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsBlik.cs
new file mode 100644
index 0000000000..cd6176919f
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsBlik.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsBlik : StripeEntity
+ {
+ ///
+ /// A unique and immutable identifier assigned by BLIK to every buyer.
+ ///
+ [JsonProperty("buyer_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("buyer_id")]
+#endif
+ public string BuyerId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsBoleto.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsBoleto.cs
new file mode 100644
index 0000000000..03575a0d61
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsBoleto.cs
@@ -0,0 +1,21 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsBoleto : StripeEntity
+ {
+ ///
+ /// The tax ID of the customer (CPF for individuals consumers or CNPJ for businesses
+ /// consumers).
+ ///
+ [JsonProperty("tax_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("tax_id")]
+#endif
+ public string TaxId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCard.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCard.cs
new file mode 100644
index 0000000000..de8b905b74
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCard.cs
@@ -0,0 +1,175 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using System;
+ using Newtonsoft.Json;
+ using Stripe.Infrastructure;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsCard : StripeEntity
+ {
+ ///
+ /// Card brand. Can be amex, cartes_bancaires, diners, discover,
+ /// eftpos_au, jcb, link, mastercard, unionpay,
+ /// visa or unknown.
+ /// One of: amex, cartes_bancaires, diners, discover,
+ /// eftpos_au, interac, jcb, link, mastercard,
+ /// unionpay, unknown, or visa.
+ ///
+ [JsonProperty("brand")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("brand")]
+#endif
+ public string Brand { get; set; }
+
+ ///
+ /// When using manual capture, a future timestamp at which the charge will be automatically
+ /// refunded if uncaptured.
+ ///
+ [JsonProperty("capture_before")]
+ [JsonConverter(typeof(UnixDateTimeConverter))]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("capture_before")]
+ [STJS.JsonConverter(typeof(STJUnixDateTimeConverter))]
+#endif
+ public DateTime CaptureBefore { get; set; } = Stripe.Infrastructure.DateTimeUtils.UnixEpoch;
+
+ ///
+ /// Check results by Card networks on Card address and CVC at time of payment.
+ ///
+ [JsonProperty("checks")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("checks")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsCardChecks Checks { get; set; }
+
+ ///
+ /// Two-letter ISO code representing the country of the card. You could use this attribute
+ /// to get a sense of the international breakdown of cards you've collected.
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+
+ ///
+ /// Two-digit number representing the card's expiration month.
+ ///
+ [JsonProperty("exp_month")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("exp_month")]
+#endif
+ public long ExpMonth { get; set; }
+
+ ///
+ /// Four-digit number representing the card's expiration year.
+ ///
+ [JsonProperty("exp_year")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("exp_year")]
+#endif
+ public long ExpYear { get; set; }
+
+ ///
+ /// Uniquely identifies this particular card number. You can use this attribute to check
+ /// whether two customers who’ve signed up with you are using the same card number, for
+ /// example. For payment methods that tokenize card information (Apple Pay, Google Pay), the
+ /// tokenized number might be provided instead of the underlying card number.
+ ///
+ /// As of May 1, 2021, card fingerprint in India for Connect changed to allow two
+ /// fingerprints for the same card---one for India and one for the rest of the world..
+ ///
+ [JsonProperty("fingerprint")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("fingerprint")]
+#endif
+ public string Fingerprint { get; set; }
+
+ ///
+ /// Card funding type. Can be credit, debit, prepaid, or
+ /// unknown.
+ /// One of: credit, debit, prepaid, or unknown.
+ ///
+ [JsonProperty("funding")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("funding")]
+#endif
+ public string Funding { get; set; }
+
+ ///
+ /// The last four digits of the card.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+
+ ///
+ /// True if this payment was marked as MOTO and out of scope for SCA.
+ ///
+ [JsonProperty("moto")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("moto")]
+#endif
+ public bool Moto { get; set; }
+
+ ///
+ /// Identifies which network this charge was processed on. Can be amex,
+ /// cartes_bancaires, diners, discover, eftpos_au,
+ /// interac, jcb, link, mastercard, unionpay,
+ /// visa, or unknown.
+ /// One of: amex, cartes_bancaires, diners, discover,
+ /// eftpos_au, interac, jcb, link, mastercard,
+ /// unionpay, unknown, or visa.
+ ///
+ [JsonProperty("network")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("network")]
+#endif
+ public string Network { get; set; }
+
+ ///
+ /// If this card has network token credentials, this contains the details of the network
+ /// token credentials.
+ ///
+ [JsonProperty("network_token")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("network_token")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsCardNetworkToken NetworkToken { get; set; }
+
+ ///
+ /// This is used by the financial networks to identify a transaction. Visa calls this the
+ /// Transaction ID, Mastercard calls this the Trace ID, and American Express calls this the
+ /// Acquirer Reference Data. This value will be present if it is returned by the financial
+ /// network in the authorization response, and null otherwise.
+ ///
+ [JsonProperty("network_transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("network_transaction_id")]
+#endif
+ public string NetworkTransactionId { get; set; }
+
+ ///
+ /// Populated if this transaction used 3D Secure authentication.
+ ///
+ [JsonProperty("three_d_secure")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("three_d_secure")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsCardThreeDSecure ThreeDSecure { get; set; }
+
+ ///
+ /// If this Card is part of a card wallet, this contains the details of the card wallet.
+ ///
+ [JsonProperty("wallet")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("wallet")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsCardWallet Wallet { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardChecks.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardChecks.cs
new file mode 100644
index 0000000000..ed24e8d833
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardChecks.cs
@@ -0,0 +1,38 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsCardChecks : StripeEntity
+ {
+ ///
+ /// One of: fail, pass, unavailable, or unchecked.
+ ///
+ [JsonProperty("address_line1_check")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("address_line1_check")]
+#endif
+ public string AddressLine1Check { get; set; }
+
+ ///
+ /// One of: fail, pass, unavailable, or unchecked.
+ ///
+ [JsonProperty("address_postal_code_check")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("address_postal_code_check")]
+#endif
+ public string AddressPostalCodeCheck { get; set; }
+
+ ///
+ /// One of: fail, pass, unavailable, or unchecked.
+ ///
+ [JsonProperty("cvc_check")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("cvc_check")]
+#endif
+ public string CvcCheck { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardNetworkToken.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardNetworkToken.cs
new file mode 100644
index 0000000000..ff63a3d4ce
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardNetworkToken.cs
@@ -0,0 +1,21 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsCardNetworkToken : StripeEntity
+ {
+ ///
+ /// Indicates if Stripe used a network token, either user provided or Stripe managed when
+ /// processing the transaction.
+ ///
+ [JsonProperty("used")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("used")]
+#endif
+ public bool Used { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardPresent.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardPresent.cs
new file mode 100644
index 0000000000..4ab40f7813
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardPresent.cs
@@ -0,0 +1,273 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using System;
+ using System.Collections.Generic;
+ using Newtonsoft.Json;
+ using Stripe.Infrastructure;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsCardPresent : StripeEntity
+ {
+ ///
+ /// The authorized amount.
+ ///
+ [JsonProperty("amount_authorized")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("amount_authorized")]
+#endif
+ public long? AmountAuthorized { get; set; }
+
+ ///
+ /// Card brand. Can be amex, cartes_bancaires, diners, discover,
+ /// eftpos_au, jcb, link, mastercard, unionpay,
+ /// visa or unknown.
+ ///
+ [JsonProperty("brand")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("brand")]
+#endif
+ public string Brand { get; set; }
+
+ ///
+ /// The product code that
+ /// identifies the specific program or product associated with a card.
+ ///
+ [JsonProperty("brand_product")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("brand_product")]
+#endif
+ public string BrandProduct { get; set; }
+
+ ///
+ /// When using manual capture, a future timestamp after which the charge will be
+ /// automatically refunded if uncaptured.
+ ///
+ [JsonProperty("capture_before")]
+ [JsonConverter(typeof(UnixDateTimeConverter))]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("capture_before")]
+ [STJS.JsonConverter(typeof(STJUnixDateTimeConverter))]
+#endif
+ public DateTime CaptureBefore { get; set; } = Stripe.Infrastructure.DateTimeUtils.UnixEpoch;
+
+ ///
+ /// The cardholder name as read from the card, in ISO 7813 format. May include
+ /// alphanumeric characters, special characters and first/last name separator (/). In
+ /// some cases, the cardholder name may not be available depending on how the issuer has
+ /// configured the card. Cardholder name is typically not available on swipe or contactless
+ /// payments, such as those made with Apple Pay and Google Pay.
+ ///
+ [JsonProperty("cardholder_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("cardholder_name")]
+#endif
+ public string CardholderName { get; set; }
+
+ ///
+ /// Two-letter ISO code representing the country of the card. You could use this attribute
+ /// to get a sense of the international breakdown of cards you've collected.
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+
+ ///
+ /// A high-level description of the type of cards issued in this range. (For internal use
+ /// only and not typically available in standard API requests.).
+ ///
+ [JsonProperty("description")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("description")]
+#endif
+ public string Description { get; set; }
+
+ ///
+ /// Authorization response cryptogram.
+ ///
+ [JsonProperty("emv_auth_data")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("emv_auth_data")]
+#endif
+ public string EmvAuthData { get; set; }
+
+ ///
+ /// Two-digit number representing the card's expiration month.
+ ///
+ [JsonProperty("exp_month")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("exp_month")]
+#endif
+ public long ExpMonth { get; set; }
+
+ ///
+ /// Four-digit number representing the card's expiration year.
+ ///
+ [JsonProperty("exp_year")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("exp_year")]
+#endif
+ public long ExpYear { get; set; }
+
+ ///
+ /// Uniquely identifies this particular card number. You can use this attribute to check
+ /// whether two customers who’ve signed up with you are using the same card number, for
+ /// example. For payment methods that tokenize card information (Apple Pay, Google Pay), the
+ /// tokenized number might be provided instead of the underlying card number.
+ ///
+ /// As of May 1, 2021, card fingerprint in India for Connect changed to allow two
+ /// fingerprints for the same card---one for India and one for the rest of the world..
+ ///
+ [JsonProperty("fingerprint")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("fingerprint")]
+#endif
+ public string Fingerprint { get; set; }
+
+ ///
+ /// Card funding type. Can be credit, debit, prepaid, or
+ /// unknown.
+ ///
+ [JsonProperty("funding")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("funding")]
+#endif
+ public string Funding { get; set; }
+
+ ///
+ /// ID of a card PaymentMethod generated from the card_present PaymentMethod that may be
+ /// attached to a Customer for future transactions. Only present if it was possible to
+ /// generate a card PaymentMethod.
+ ///
+ [JsonProperty("generated_card")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("generated_card")]
+#endif
+ public string GeneratedCard { get; set; }
+
+ ///
+ /// Issuer identification number of the card. (For internal use only and not typically
+ /// available in standard API requests.).
+ ///
+ [JsonProperty("iin")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("iin")]
+#endif
+ public string Iin { get; set; }
+
+ ///
+ /// Whether this PaymentIntent is
+ /// eligible for incremental authorizations. Request support using request_incremental_authorization_support.
+ ///
+ [JsonProperty("incremental_authorization_supported")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("incremental_authorization_supported")]
+#endif
+ public bool IncrementalAuthorizationSupported { get; set; }
+
+ ///
+ /// The name of the card's issuing bank. (For internal use only and not typically available
+ /// in standard API requests.).
+ ///
+ [JsonProperty("issuer")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("issuer")]
+#endif
+ public string Issuer { get; set; }
+
+ ///
+ /// The last four digits of the card.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+
+ ///
+ /// Identifies which network this charge was processed on. Can be amex,
+ /// cartes_bancaires, diners, discover, eftpos_au,
+ /// interac, jcb, link, mastercard, unionpay,
+ /// visa, or unknown.
+ ///
+ [JsonProperty("network")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("network")]
+#endif
+ public string Network { get; set; }
+
+ ///
+ /// This is used by the financial networks to identify a transaction. Visa calls this the
+ /// Transaction ID, Mastercard calls this the Trace ID, and American Express calls this the
+ /// Acquirer Reference Data. This value will be present if it is returned by the financial
+ /// network in the authorization response, and null otherwise.
+ ///
+ [JsonProperty("network_transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("network_transaction_id")]
+#endif
+ public string NetworkTransactionId { get; set; }
+
+ ///
+ /// Details about payments collected offline.
+ ///
+ [JsonProperty("offline")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("offline")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsCardPresentOffline Offline { get; set; }
+
+ ///
+ /// Defines whether the authorized amount can be over-captured or not.
+ ///
+ [JsonProperty("overcapture_supported")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("overcapture_supported")]
+#endif
+ public bool OvercaptureSupported { get; set; }
+
+ ///
+ /// The languages that the issuing bank recommends using for localizing any customer-facing
+ /// text, as read from the card. Referenced from EMV tag 5F2D, data encoded on the card's
+ /// chip.
+ ///
+ [JsonProperty("preferred_locales")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("preferred_locales")]
+#endif
+ public List PreferredLocales { get; set; }
+
+ ///
+ /// How card details were read in this transaction.
+ /// One of: contact_emv, contactless_emv, contactless_magstripe_mode,
+ /// magnetic_stripe_fallback, or magnetic_stripe_track2.
+ ///
+ [JsonProperty("read_method")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("read_method")]
+#endif
+ public string ReadMethod { get; set; }
+
+ ///
+ /// A collection of fields required to be displayed on receipts. Only required for EMV
+ /// transactions.
+ ///
+ [JsonProperty("receipt")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("receipt")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsCardPresentReceipt Receipt { get; set; }
+
+ [JsonProperty("wallet")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("wallet")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsCardPresentWallet Wallet { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardPresentOffline.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardPresentOffline.cs
new file mode 100644
index 0000000000..a16eb61673
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardPresentOffline.cs
@@ -0,0 +1,33 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using System;
+ using Newtonsoft.Json;
+ using Stripe.Infrastructure;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsCardPresentOffline : StripeEntity
+ {
+ ///
+ /// Time at which the payment was collected while offline.
+ ///
+ [JsonProperty("stored_at")]
+ [JsonConverter(typeof(UnixDateTimeConverter))]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("stored_at")]
+ [STJS.JsonConverter(typeof(STJUnixDateTimeConverter))]
+#endif
+ public DateTime? StoredAt { get; set; }
+
+ ///
+ /// The method used to process this payment method offline. Only deferred is allowed.
+ ///
+ [JsonProperty("type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("type")]
+#endif
+ public string Type { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardPresentReceipt.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardPresentReceipt.cs
new file mode 100644
index 0000000000..91196f0d17
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardPresentReceipt.cs
@@ -0,0 +1,102 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsCardPresentReceipt : StripeEntity
+ {
+ ///
+ /// The type of account being debited or credited.
+ /// One of: checking, credit, prepaid, or unknown.
+ ///
+ [JsonProperty("account_type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("account_type")]
+#endif
+ public string AccountType { get; set; }
+
+ ///
+ /// The Application Cryptogram, a unique value generated by the card to authenticate the
+ /// transaction with issuers.
+ ///
+ [JsonProperty("application_cryptogram")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("application_cryptogram")]
+#endif
+ public string ApplicationCryptogram { get; set; }
+
+ ///
+ /// The Application Identifier (AID) on the card used to determine which networks are
+ /// eligible to process the transaction. Referenced from EMV tag 9F12, data encoded on the
+ /// card's chip.
+ ///
+ [JsonProperty("application_preferred_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("application_preferred_name")]
+#endif
+ public string ApplicationPreferredName { get; set; }
+
+ ///
+ /// Identifier for this transaction.
+ ///
+ [JsonProperty("authorization_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("authorization_code")]
+#endif
+ public string AuthorizationCode { get; set; }
+
+ ///
+ /// EMV tag 8A. A code returned by the card issuer.
+ ///
+ [JsonProperty("authorization_response_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("authorization_response_code")]
+#endif
+ public string AuthorizationResponseCode { get; set; }
+
+ ///
+ /// Describes the method used by the cardholder to verify ownership of the card. One of the
+ /// following: approval, failure, none, offline_pin,
+ /// offline_pin_and_signature, online_pin, or signature.
+ ///
+ [JsonProperty("cardholder_verification_method")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("cardholder_verification_method")]
+#endif
+ public string CardholderVerificationMethod { get; set; }
+
+ ///
+ /// Similar to the application_preferred_name, identifying the applications (AIDs) available
+ /// on the card. Referenced from EMV tag 84.
+ ///
+ [JsonProperty("dedicated_file_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("dedicated_file_name")]
+#endif
+ public string DedicatedFileName { get; set; }
+
+ ///
+ /// A 5-byte string that records the checks and validations that occur between the card and
+ /// the terminal. These checks determine how the terminal processes the transaction and what
+ /// risk tolerance is acceptable. Referenced from EMV Tag 95.
+ ///
+ [JsonProperty("terminal_verification_results")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("terminal_verification_results")]
+#endif
+ public string TerminalVerificationResults { get; set; }
+
+ ///
+ /// An indication of which steps were completed during the card read process. Referenced
+ /// from EMV Tag 9B.
+ ///
+ [JsonProperty("transaction_status_information")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_status_information")]
+#endif
+ public string TransactionStatusInformation { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardPresentWallet.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardPresentWallet.cs
new file mode 100644
index 0000000000..96da6a347a
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardPresentWallet.cs
@@ -0,0 +1,22 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsCardPresentWallet : StripeEntity
+ {
+ ///
+ /// The type of mobile wallet, one of apple_pay, google_pay,
+ /// samsung_pay, or unknown.
+ /// One of: apple_pay, google_pay, samsung_pay, or unknown.
+ ///
+ [JsonProperty("type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("type")]
+#endif
+ public string Type { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardThreeDSecure.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardThreeDSecure.cs
new file mode 100644
index 0000000000..d7a9d046af
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardThreeDSecure.cs
@@ -0,0 +1,49 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsCardThreeDSecure : StripeEntity
+ {
+ ///
+ /// One of: challenge, or frictionless.
+ ///
+ [JsonProperty("authentication_flow")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("authentication_flow")]
+#endif
+ public string AuthenticationFlow { get; set; }
+
+ ///
+ /// One of: attempt_acknowledged, authenticated, exempted,
+ /// failed, not_supported, or processing_error.
+ ///
+ [JsonProperty("result")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("result")]
+#endif
+ public string Result { get; set; }
+
+ ///
+ /// One of: abandoned, bypassed, canceled, card_not_enrolled,
+ /// network_not_supported, protocol_error, or rejected.
+ ///
+ [JsonProperty("result_reason")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("result_reason")]
+#endif
+ public string ResultReason { get; set; }
+
+ ///
+ /// One of: 1.0.2, 2.1.0, or 2.2.0.
+ ///
+ [JsonProperty("version")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("version")]
+#endif
+ public string Version { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardWallet.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardWallet.cs
new file mode 100644
index 0000000000..136cd2a528
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardWallet.cs
@@ -0,0 +1,43 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsCardWallet : StripeEntity
+ {
+ [JsonProperty("apple_pay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("apple_pay")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsCardWalletApplePay ApplePay { get; set; }
+
+ ///
+ /// (For tokenized numbers only.) The last four digits of the device account number.
+ ///
+ [JsonProperty("dynamic_last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("dynamic_last4")]
+#endif
+ public string DynamicLast4 { get; set; }
+
+ [JsonProperty("google_pay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("google_pay")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsCardWalletGooglePay GooglePay { get; set; }
+
+ ///
+ /// The type of the card wallet, one of apple_pay or google_pay. An additional
+ /// hash is included on the Wallet subhash with a name matching this value. It contains
+ /// additional information specific to the card wallet type.
+ ///
+ [JsonProperty("type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("type")]
+#endif
+ public string Type { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardWalletApplePay.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardWalletApplePay.cs
new file mode 100644
index 0000000000..2dcdf4174a
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardWalletApplePay.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsCardWalletApplePay : StripeEntity
+ {
+ ///
+ /// Type of the apple_pay transaction, one of apple_pay or apple_pay_later.
+ ///
+ [JsonProperty("type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("type")]
+#endif
+ public string Type { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardWalletGooglePay.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardWalletGooglePay.cs
new file mode 100644
index 0000000000..271dc83ee1
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCardWalletGooglePay.cs
@@ -0,0 +1,7 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ public class PaymentAttemptRecordPaymentMethodDetailsCardWalletGooglePay : StripeEntity
+ {
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCashapp.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCashapp.cs
new file mode 100644
index 0000000000..32f122f929
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCashapp.cs
@@ -0,0 +1,38 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsCashapp : StripeEntity
+ {
+ ///
+ /// A unique and immutable identifier assigned by Cash App to every buyer.
+ ///
+ [JsonProperty("buyer_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("buyer_id")]
+#endif
+ public string BuyerId { get; set; }
+
+ ///
+ /// A public identifier for buyers using Cash App.
+ ///
+ [JsonProperty("cashtag")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("cashtag")]
+#endif
+ public string Cashtag { get; set; }
+
+ ///
+ /// A unique and immutable identifier of payments assigned by Cash App.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCrypto.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCrypto.cs
new file mode 100644
index 0000000000..f9487ba03d
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCrypto.cs
@@ -0,0 +1,49 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsCrypto : StripeEntity
+ {
+ ///
+ /// The wallet address of the customer.
+ ///
+ [JsonProperty("buyer_address")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("buyer_address")]
+#endif
+ public string BuyerAddress { get; set; }
+
+ ///
+ /// The blockchain network that the transaction was sent on.
+ /// One of: base, ethereum, polygon, or solana.
+ ///
+ [JsonProperty("network")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("network")]
+#endif
+ public string Network { get; set; }
+
+ ///
+ /// The token currency that the transaction was sent with.
+ /// One of: usdc, usdg, or usdp.
+ ///
+ [JsonProperty("token_currency")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("token_currency")]
+#endif
+ public string TokenCurrency { get; set; }
+
+ ///
+ /// The blockchain transaction hash of the crypto payment.
+ ///
+ [JsonProperty("transaction_hash")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_hash")]
+#endif
+ public string TransactionHash { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCustom.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCustom.cs
new file mode 100644
index 0000000000..190522682b
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCustom.cs
@@ -0,0 +1,30 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsCustom : StripeEntity
+ {
+ ///
+ /// Display name for the custom (user-defined) payment method type used to make this
+ /// payment.
+ ///
+ [JsonProperty("display_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("display_name")]
+#endif
+ public string DisplayName { get; set; }
+
+ ///
+ /// The custom payment method type associated with this payment.
+ ///
+ [JsonProperty("type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("type")]
+#endif
+ public string Type { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCustomerBalance.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCustomerBalance.cs
new file mode 100644
index 0000000000..de5ccea81d
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsCustomerBalance.cs
@@ -0,0 +1,7 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ public class PaymentAttemptRecordPaymentMethodDetailsCustomerBalance : StripeEntity
+ {
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsEps.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsEps.cs
new file mode 100644
index 0000000000..965231462d
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsEps.cs
@@ -0,0 +1,57 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsEps : StripeEntity
+ {
+ ///
+ /// The customer's bank. Should be one of arzte_und_apotheker_bank,
+ /// austrian_anadi_bank_ag, bank_austria, bankhaus_carl_spangler,
+ /// bankhaus_schelhammer_und_schattera_ag, bawag_psk_ag, bks_bank_ag,
+ /// brull_kallmus_bank_ag, btv_vier_lander_bank,
+ /// capital_bank_grawe_gruppe_ag, deutsche_bank_ag, dolomitenbank,
+ /// easybank_ag, erste_bank_und_sparkassen,
+ /// hypo_alpeadriabank_international_ag,
+ /// hypo_noe_lb_fur_niederosterreich_u_wien,
+ /// hypo_oberosterreich_salzburg_steiermark, hypo_tirol_bank_ag,
+ /// hypo_vorarlberg_bank_ag, hypo_bank_burgenland_aktiengesellschaft,
+ /// marchfelder_bank, oberbank_ag, raiffeisen_bankengruppe_osterreich,
+ /// schoellerbank_ag, sparda_bank_wien, volksbank_gruppe,
+ /// volkskreditbank_ag, or vr_bank_braunau.
+ /// One of: arzte_und_apotheker_bank, austrian_anadi_bank_ag,
+ /// bank_austria, bankhaus_carl_spangler,
+ /// bankhaus_schelhammer_und_schattera_ag, bawag_psk_ag, bks_bank_ag,
+ /// brull_kallmus_bank_ag, btv_vier_lander_bank,
+ /// capital_bank_grawe_gruppe_ag, deutsche_bank_ag, dolomitenbank,
+ /// easybank_ag, erste_bank_und_sparkassen,
+ /// hypo_alpeadriabank_international_ag,
+ /// hypo_bank_burgenland_aktiengesellschaft,
+ /// hypo_noe_lb_fur_niederosterreich_u_wien,
+ /// hypo_oberosterreich_salzburg_steiermark, hypo_tirol_bank_ag,
+ /// hypo_vorarlberg_bank_ag, marchfelder_bank, oberbank_ag,
+ /// raiffeisen_bankengruppe_osterreich, schoellerbank_ag,
+ /// sparda_bank_wien, volksbank_gruppe, volkskreditbank_ag, or
+ /// vr_bank_braunau.
+ ///
+ [JsonProperty("bank")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank")]
+#endif
+ public string Bank { get; set; }
+
+ ///
+ /// Owner's verified full name. Values are verified or provided by EPS directly (if
+ /// supported) at the time of authorization or settlement. They cannot be set or mutated.
+ /// EPS rarely provides this information so the attribute is usually empty.
+ ///
+ [JsonProperty("verified_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("verified_name")]
+#endif
+ public string VerifiedName { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsFpx.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsFpx.cs
new file mode 100644
index 0000000000..a47ffa6452
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsFpx.cs
@@ -0,0 +1,49 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsFpx : StripeEntity
+ {
+ ///
+ /// Account holder type, if provided. Can be one of individual or company.
+ /// One of: company, or individual.
+ ///
+ [JsonProperty("account_holder_type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("account_holder_type")]
+#endif
+ public string AccountHolderType { get; set; }
+
+ ///
+ /// The customer's bank. Can be one of affin_bank, agrobank,
+ /// alliance_bank, ambank, bank_islam, bank_muamalat,
+ /// bank_rakyat, bsn, cimb, hong_leong_bank, hsbc,
+ /// kfh, maybank2u, ocbc, public_bank, rhb,
+ /// standard_chartered, uob, deutsche_bank, maybank2e,
+ /// pb_enterprise, or bank_of_china.
+ /// One of: affin_bank, agrobank, alliance_bank, ambank,
+ /// bank_islam, bank_muamalat, bank_of_china, bank_rakyat,
+ /// bsn, cimb, deutsche_bank, hong_leong_bank, hsbc,
+ /// kfh, maybank2e, maybank2u, ocbc, pb_enterprise,
+ /// public_bank, rhb, standard_chartered, or uob.
+ ///
+ [JsonProperty("bank")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank")]
+#endif
+ public string Bank { get; set; }
+
+ ///
+ /// Unique transaction id generated by FPX for every request from the merchant.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsGiropay.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsGiropay.cs
new file mode 100644
index 0000000000..a849753d5c
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsGiropay.cs
@@ -0,0 +1,49 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsGiropay : StripeEntity
+ {
+ ///
+ /// Bank code of bank associated with the bank account.
+ ///
+ [JsonProperty("bank_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_code")]
+#endif
+ public string BankCode { get; set; }
+
+ ///
+ /// Name of the bank associated with the bank account.
+ ///
+ [JsonProperty("bank_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_name")]
+#endif
+ public string BankName { get; set; }
+
+ ///
+ /// Bank Identifier Code of the bank associated with the bank account.
+ ///
+ [JsonProperty("bic")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bic")]
+#endif
+ public string Bic { get; set; }
+
+ ///
+ /// Owner's verified full name. Values are verified or provided by Giropay directly (if
+ /// supported) at the time of authorization or settlement. They cannot be set or mutated.
+ /// Giropay rarely provides this information so the attribute is usually empty.
+ ///
+ [JsonProperty("verified_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("verified_name")]
+#endif
+ public string VerifiedName { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsGrabpay.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsGrabpay.cs
new file mode 100644
index 0000000000..6a9b3a2480
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsGrabpay.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsGrabpay : StripeEntity
+ {
+ ///
+ /// Unique transaction id generated by GrabPay.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsIdeal.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsIdeal.cs
new file mode 100644
index 0000000000..dd241bc1a2
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsIdeal.cs
@@ -0,0 +1,145 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+ using Stripe.Infrastructure;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+#if NET6_0_OR_GREATER
+ [STJS.JsonConverter(typeof(STJMemberSerializationOptIn))]
+#endif
+ public class PaymentAttemptRecordPaymentMethodDetailsIdeal : StripeEntity
+ {
+ ///
+ /// The customer's bank. Can be one of abn_amro, asn_bank, bunq,
+ /// buut, handelsbanken, ing, knab, moneyou, n26,
+ /// nn, rabobank, regiobank, revolut, sns_bank,
+ /// triodos_bank, van_lanschot, or yoursafe.
+ /// One of: abn_amro, asn_bank, bunq, buut,
+ /// handelsbanken, ing, knab, moneyou, n26, nn,
+ /// rabobank, regiobank, revolut, sns_bank, triodos_bank,
+ /// van_lanschot, or yoursafe.
+ ///
+ [JsonProperty("bank")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank")]
+#endif
+ public string Bank { get; set; }
+
+ ///
+ /// The Bank Identifier Code of the customer's bank.
+ /// One of: ABNANL2A, ASNBNL21, BITSNL2A, BUNQNL2A,
+ /// BUUTNL2A, FVLBNL22, HANDNL2A, INGBNL2A, KNABNL2H,
+ /// MOYONL21, NNBANL2G, NTSBDEB1, RABONL2U, RBRBNL21,
+ /// REVOIE23, REVOLT21, SNSBNL2A, or TRIONL2U.
+ ///
+ [JsonProperty("bic")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bic")]
+#endif
+ public string Bic { get; set; }
+
+ #region Expandable GeneratedSepaDebit
+
+ ///
+ /// (ID of the PaymentMethod)
+ /// The ID of the SEPA Direct Debit PaymentMethod which was generated by this Charge.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public string GeneratedSepaDebitId
+ {
+ get => this.InternalGeneratedSepaDebit?.Id;
+ set => this.InternalGeneratedSepaDebit = SetExpandableFieldId(value, this.InternalGeneratedSepaDebit);
+ }
+
+ ///
+ /// (Expanded)
+ /// The ID of the SEPA Direct Debit PaymentMethod which was generated by this Charge.
+ ///
+ /// For more information, see the expand documentation.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public PaymentMethod GeneratedSepaDebit
+ {
+ get => this.InternalGeneratedSepaDebit?.ExpandedObject;
+ set => this.InternalGeneratedSepaDebit = SetExpandableFieldObject(value, this.InternalGeneratedSepaDebit);
+ }
+
+ [JsonProperty("generated_sepa_debit")]
+ [JsonConverter(typeof(ExpandableFieldConverter))]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("generated_sepa_debit")]
+ [STJS.JsonConverter(typeof(STJExpandableFieldConverter))]
+#endif
+ internal ExpandableField InternalGeneratedSepaDebit { get; set; }
+ #endregion
+
+ #region Expandable GeneratedSepaDebitMandate
+
+ ///
+ /// (ID of the Mandate)
+ /// The mandate for the SEPA Direct Debit PaymentMethod which was generated by this Charge.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public string GeneratedSepaDebitMandateId
+ {
+ get => this.InternalGeneratedSepaDebitMandate?.Id;
+ set => this.InternalGeneratedSepaDebitMandate = SetExpandableFieldId(value, this.InternalGeneratedSepaDebitMandate);
+ }
+
+ ///
+ /// (Expanded)
+ /// The mandate for the SEPA Direct Debit PaymentMethod which was generated by this Charge.
+ ///
+ /// For more information, see the expand documentation.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public Mandate GeneratedSepaDebitMandate
+ {
+ get => this.InternalGeneratedSepaDebitMandate?.ExpandedObject;
+ set => this.InternalGeneratedSepaDebitMandate = SetExpandableFieldObject(value, this.InternalGeneratedSepaDebitMandate);
+ }
+
+ [JsonProperty("generated_sepa_debit_mandate")]
+ [JsonConverter(typeof(ExpandableFieldConverter))]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("generated_sepa_debit_mandate")]
+ [STJS.JsonConverter(typeof(STJExpandableFieldConverter))]
+#endif
+ internal ExpandableField InternalGeneratedSepaDebitMandate { get; set; }
+ #endregion
+
+ ///
+ /// Last four characters of the IBAN.
+ ///
+ [JsonProperty("iban_last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("iban_last4")]
+#endif
+ public string IbanLast4 { get; set; }
+
+ ///
+ /// Owner's verified full name. Values are verified or provided by iDEAL directly (if
+ /// supported) at the time of authorization or settlement. They cannot be set or mutated.
+ ///
+ [JsonProperty("verified_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("verified_name")]
+#endif
+ public string VerifiedName { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsInteracPresent.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsInteracPresent.cs
new file mode 100644
index 0000000000..3cf2b2a168
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsInteracPresent.cs
@@ -0,0 +1,203 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using System.Collections.Generic;
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsInteracPresent : StripeEntity
+ {
+ ///
+ /// Card brand. Can be interac, mastercard or visa.
+ ///
+ [JsonProperty("brand")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("brand")]
+#endif
+ public string Brand { get; set; }
+
+ ///
+ /// The cardholder name as read from the card, in ISO 7813 format. May include
+ /// alphanumeric characters, special characters and first/last name separator (/). In
+ /// some cases, the cardholder name may not be available depending on how the issuer has
+ /// configured the card. Cardholder name is typically not available on swipe or contactless
+ /// payments, such as those made with Apple Pay and Google Pay.
+ ///
+ [JsonProperty("cardholder_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("cardholder_name")]
+#endif
+ public string CardholderName { get; set; }
+
+ ///
+ /// Two-letter ISO code representing the country of the card. You could use this attribute
+ /// to get a sense of the international breakdown of cards you've collected.
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+
+ ///
+ /// A high-level description of the type of cards issued in this range. (For internal use
+ /// only and not typically available in standard API requests.).
+ ///
+ [JsonProperty("description")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("description")]
+#endif
+ public string Description { get; set; }
+
+ ///
+ /// Authorization response cryptogram.
+ ///
+ [JsonProperty("emv_auth_data")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("emv_auth_data")]
+#endif
+ public string EmvAuthData { get; set; }
+
+ ///
+ /// Two-digit number representing the card's expiration month.
+ ///
+ [JsonProperty("exp_month")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("exp_month")]
+#endif
+ public long ExpMonth { get; set; }
+
+ ///
+ /// Four-digit number representing the card's expiration year.
+ ///
+ [JsonProperty("exp_year")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("exp_year")]
+#endif
+ public long ExpYear { get; set; }
+
+ ///
+ /// Uniquely identifies this particular card number. You can use this attribute to check
+ /// whether two customers who’ve signed up with you are using the same card number, for
+ /// example. For payment methods that tokenize card information (Apple Pay, Google Pay), the
+ /// tokenized number might be provided instead of the underlying card number.
+ ///
+ /// As of May 1, 2021, card fingerprint in India for Connect changed to allow two
+ /// fingerprints for the same card---one for India and one for the rest of the world..
+ ///
+ [JsonProperty("fingerprint")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("fingerprint")]
+#endif
+ public string Fingerprint { get; set; }
+
+ ///
+ /// Card funding type. Can be credit, debit, prepaid, or
+ /// unknown.
+ ///
+ [JsonProperty("funding")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("funding")]
+#endif
+ public string Funding { get; set; }
+
+ ///
+ /// ID of a card PaymentMethod generated from the card_present PaymentMethod that may be
+ /// attached to a Customer for future transactions. Only present if it was possible to
+ /// generate a card PaymentMethod.
+ ///
+ [JsonProperty("generated_card")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("generated_card")]
+#endif
+ public string GeneratedCard { get; set; }
+
+ ///
+ /// Issuer identification number of the card. (For internal use only and not typically
+ /// available in standard API requests.).
+ ///
+ [JsonProperty("iin")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("iin")]
+#endif
+ public string Iin { get; set; }
+
+ ///
+ /// The name of the card's issuing bank. (For internal use only and not typically available
+ /// in standard API requests.).
+ ///
+ [JsonProperty("issuer")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("issuer")]
+#endif
+ public string Issuer { get; set; }
+
+ ///
+ /// The last four digits of the card.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+
+ ///
+ /// Identifies which network this charge was processed on. Can be amex,
+ /// cartes_bancaires, diners, discover, eftpos_au,
+ /// interac, jcb, link, mastercard, unionpay,
+ /// visa, or unknown.
+ ///
+ [JsonProperty("network")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("network")]
+#endif
+ public string Network { get; set; }
+
+ ///
+ /// This is used by the financial networks to identify a transaction. Visa calls this the
+ /// Transaction ID, Mastercard calls this the Trace ID, and American Express calls this the
+ /// Acquirer Reference Data. This value will be present if it is returned by the financial
+ /// network in the authorization response, and null otherwise.
+ ///
+ [JsonProperty("network_transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("network_transaction_id")]
+#endif
+ public string NetworkTransactionId { get; set; }
+
+ ///
+ /// The languages that the issuing bank recommends using for localizing any customer-facing
+ /// text, as read from the card. Referenced from EMV tag 5F2D, data encoded on the card's
+ /// chip.
+ ///
+ [JsonProperty("preferred_locales")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("preferred_locales")]
+#endif
+ public List PreferredLocales { get; set; }
+
+ ///
+ /// How card details were read in this transaction.
+ /// One of: contact_emv, contactless_emv, contactless_magstripe_mode,
+ /// magnetic_stripe_fallback, or magnetic_stripe_track2.
+ ///
+ [JsonProperty("read_method")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("read_method")]
+#endif
+ public string ReadMethod { get; set; }
+
+ ///
+ /// A collection of fields required to be displayed on receipts. Only required for EMV
+ /// transactions.
+ ///
+ [JsonProperty("receipt")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("receipt")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsInteracPresentReceipt Receipt { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsInteracPresentReceipt.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsInteracPresentReceipt.cs
new file mode 100644
index 0000000000..efa8119a1c
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsInteracPresentReceipt.cs
@@ -0,0 +1,102 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsInteracPresentReceipt : StripeEntity
+ {
+ ///
+ /// The type of account being debited or credited.
+ /// One of: checking, savings, or unknown.
+ ///
+ [JsonProperty("account_type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("account_type")]
+#endif
+ public string AccountType { get; set; }
+
+ ///
+ /// The Application Cryptogram, a unique value generated by the card to authenticate the
+ /// transaction with issuers.
+ ///
+ [JsonProperty("application_cryptogram")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("application_cryptogram")]
+#endif
+ public string ApplicationCryptogram { get; set; }
+
+ ///
+ /// The Application Identifier (AID) on the card used to determine which networks are
+ /// eligible to process the transaction. Referenced from EMV tag 9F12, data encoded on the
+ /// card's chip.
+ ///
+ [JsonProperty("application_preferred_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("application_preferred_name")]
+#endif
+ public string ApplicationPreferredName { get; set; }
+
+ ///
+ /// Identifier for this transaction.
+ ///
+ [JsonProperty("authorization_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("authorization_code")]
+#endif
+ public string AuthorizationCode { get; set; }
+
+ ///
+ /// EMV tag 8A. A code returned by the card issuer.
+ ///
+ [JsonProperty("authorization_response_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("authorization_response_code")]
+#endif
+ public string AuthorizationResponseCode { get; set; }
+
+ ///
+ /// Describes the method used by the cardholder to verify ownership of the card. One of the
+ /// following: approval, failure, none, offline_pin,
+ /// offline_pin_and_signature, online_pin, or signature.
+ ///
+ [JsonProperty("cardholder_verification_method")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("cardholder_verification_method")]
+#endif
+ public string CardholderVerificationMethod { get; set; }
+
+ ///
+ /// Similar to the application_preferred_name, identifying the applications (AIDs) available
+ /// on the card. Referenced from EMV tag 84.
+ ///
+ [JsonProperty("dedicated_file_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("dedicated_file_name")]
+#endif
+ public string DedicatedFileName { get; set; }
+
+ ///
+ /// A 5-byte string that records the checks and validations that occur between the card and
+ /// the terminal. These checks determine how the terminal processes the transaction and what
+ /// risk tolerance is acceptable. Referenced from EMV Tag 95.
+ ///
+ [JsonProperty("terminal_verification_results")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("terminal_verification_results")]
+#endif
+ public string TerminalVerificationResults { get; set; }
+
+ ///
+ /// An indication of which steps were completed during the card read process. Referenced
+ /// from EMV Tag 9B.
+ ///
+ [JsonProperty("transaction_status_information")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_status_information")]
+#endif
+ public string TransactionStatusInformation { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsKakaoPay.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsKakaoPay.cs
new file mode 100644
index 0000000000..8cb8862dbf
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsKakaoPay.cs
@@ -0,0 +1,29 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsKakaoPay : StripeEntity
+ {
+ ///
+ /// A unique identifier for the buyer as determined by the local payment processor.
+ ///
+ [JsonProperty("buyer_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("buyer_id")]
+#endif
+ public string BuyerId { get; set; }
+
+ ///
+ /// The Kakao Pay transaction ID associated with this payment.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsKlarna.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsKlarna.cs
new file mode 100644
index 0000000000..b84eeff656
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsKlarna.cs
@@ -0,0 +1,47 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsKlarna : StripeEntity
+ {
+ ///
+ /// The payer details for this transaction.
+ ///
+ [JsonProperty("payer_details")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payer_details")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsKlarnaPayerDetails PayerDetails { get; set; }
+
+ ///
+ /// The Klarna payment method used for this transaction. Can be one of pay_later,
+ /// pay_now, pay_with_financing, or pay_in_installments.
+ ///
+ [JsonProperty("payment_method_category")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payment_method_category")]
+#endif
+ public string PaymentMethodCategory { get; set; }
+
+ ///
+ /// Preferred language of the Klarna authorization page that the customer is redirected to.
+ /// Can be one of de-AT, en-AT, nl-BE, fr-BE, en-BE,
+ /// de-DE, en-DE, da-DK, en-DK, es-ES, en-ES,
+ /// fi-FI, sv-FI, en-FI, en-GB, en-IE, it-IT,
+ /// en-IT, nl-NL, en-NL, nb-NO, en-NO, sv-SE,
+ /// en-SE, en-US, es-US, fr-FR, en-FR, cs-CZ,
+ /// en-CZ, ro-RO, en-RO, el-GR, en-GR, en-AU,
+ /// en-NZ, en-CA, fr-CA, pl-PL, en-PL, pt-PT,
+ /// en-PT, de-CH, fr-CH, it-CH, or en-CH.
+ ///
+ [JsonProperty("preferred_locale")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("preferred_locale")]
+#endif
+ public string PreferredLocale { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsKlarnaPayerDetails.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsKlarnaPayerDetails.cs
new file mode 100644
index 0000000000..c7b62eae74
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsKlarnaPayerDetails.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsKlarnaPayerDetails : StripeEntity
+ {
+ ///
+ /// The payer's address.
+ ///
+ [JsonProperty("address")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("address")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsKlarnaPayerDetailsAddress Address { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsKlarnaPayerDetailsAddress.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsKlarnaPayerDetailsAddress.cs
new file mode 100644
index 0000000000..721aaa7b81
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsKlarnaPayerDetailsAddress.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsKlarnaPayerDetailsAddress : StripeEntity
+ {
+ ///
+ /// The payer address country.
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsKonbini.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsKonbini.cs
new file mode 100644
index 0000000000..dce6edc0ff
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsKonbini.cs
@@ -0,0 +1,21 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsKonbini : StripeEntity
+ {
+ ///
+ /// If the payment succeeded, this contains the details of the convenience store where the
+ /// payment was completed.
+ ///
+ [JsonProperty("store")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("store")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsKonbiniStore Store { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsKonbiniStore.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsKonbiniStore.cs
new file mode 100644
index 0000000000..a8042a311c
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsKonbiniStore.cs
@@ -0,0 +1,21 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsKonbiniStore : StripeEntity
+ {
+ ///
+ /// The name of the convenience store chain where the payment was completed.
+ /// One of: familymart, lawson, ministop, or seicomart.
+ ///
+ [JsonProperty("chain")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("chain")]
+#endif
+ public string Chain { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsKrCard.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsKrCard.cs
new file mode 100644
index 0000000000..270692aa9d
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsKrCard.cs
@@ -0,0 +1,52 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsKrCard : StripeEntity
+ {
+ ///
+ /// The local credit or debit card brand.
+ /// One of: bc, citi, hana, hyundai, jeju,
+ /// jeonbuk, kakaobank, kbank, kdbbank, kookmin,
+ /// kwangju, lotte, mg, nh, post, samsung,
+ /// savingsbank, shinhan, shinhyup, suhyup, tossbank, or
+ /// woori.
+ ///
+ [JsonProperty("brand")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("brand")]
+#endif
+ public string Brand { get; set; }
+
+ ///
+ /// A unique identifier for the buyer as determined by the local payment processor.
+ ///
+ [JsonProperty("buyer_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("buyer_id")]
+#endif
+ public string BuyerId { get; set; }
+
+ ///
+ /// The last four digits of the card. This may not be present for American Express cards.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+
+ ///
+ /// The Korean Card transaction ID associated with this payment.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsLink.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsLink.cs
new file mode 100644
index 0000000000..cc69c21bf5
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsLink.cs
@@ -0,0 +1,21 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsLink : StripeEntity
+ {
+ ///
+ /// Two-letter ISO code representing the funding source country beneath the Link payment.
+ /// You could use this attribute to get a sense of international fees.
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsMbWay.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsMbWay.cs
new file mode 100644
index 0000000000..515a4e8234
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsMbWay.cs
@@ -0,0 +1,7 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ public class PaymentAttemptRecordPaymentMethodDetailsMbWay : StripeEntity
+ {
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsMobilepay.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsMobilepay.cs
new file mode 100644
index 0000000000..fbeb467031
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsMobilepay.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsMobilepay : StripeEntity
+ {
+ ///
+ /// Internal card details.
+ ///
+ [JsonProperty("card")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("card")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsMobilepayCard Card { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsMobilepayCard.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsMobilepayCard.cs
new file mode 100644
index 0000000000..cc49dc11b9
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsMobilepayCard.cs
@@ -0,0 +1,56 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsMobilepayCard : StripeEntity
+ {
+ ///
+ /// Brand of the card used in the transaction.
+ ///
+ [JsonProperty("brand")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("brand")]
+#endif
+ public string Brand { get; set; }
+
+ ///
+ /// Two-letter ISO code representing the country of the card.
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+
+ ///
+ /// Two digit number representing the card's expiration month.
+ ///
+ [JsonProperty("exp_month")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("exp_month")]
+#endif
+ public long? ExpMonth { get; set; }
+
+ ///
+ /// Two digit number representing the card's expiration year.
+ ///
+ [JsonProperty("exp_year")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("exp_year")]
+#endif
+ public long? ExpYear { get; set; }
+
+ ///
+ /// The last 4 digits of the card.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsMultibanco.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsMultibanco.cs
new file mode 100644
index 0000000000..5b9c884804
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsMultibanco.cs
@@ -0,0 +1,29 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsMultibanco : StripeEntity
+ {
+ ///
+ /// Entity number associated with this Multibanco payment.
+ ///
+ [JsonProperty("entity")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("entity")]
+#endif
+ public string Entity { get; set; }
+
+ ///
+ /// Reference number associated with this Multibanco payment.
+ ///
+ [JsonProperty("reference")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("reference")]
+#endif
+ public string Reference { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsNaverPay.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsNaverPay.cs
new file mode 100644
index 0000000000..9e6e3073c7
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsNaverPay.cs
@@ -0,0 +1,29 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsNaverPay : StripeEntity
+ {
+ ///
+ /// A unique identifier for the buyer as determined by the local payment processor.
+ ///
+ [JsonProperty("buyer_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("buyer_id")]
+#endif
+ public string BuyerId { get; set; }
+
+ ///
+ /// The Naver Pay transaction ID associated with this payment.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsNzBankAccount.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsNzBankAccount.cs
new file mode 100644
index 0000000000..63b1e40810
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsNzBankAccount.cs
@@ -0,0 +1,66 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsNzBankAccount : StripeEntity
+ {
+ ///
+ /// The name on the bank account. Only present if the account holder name is different from
+ /// the name of the authorized signatory collected in the PaymentMethod’s billing details.
+ ///
+ [JsonProperty("account_holder_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("account_holder_name")]
+#endif
+ public string AccountHolderName { get; set; }
+
+ ///
+ /// The numeric code for the bank account's bank.
+ ///
+ [JsonProperty("bank_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_code")]
+#endif
+ public string BankCode { get; set; }
+
+ ///
+ /// The name of the bank.
+ ///
+ [JsonProperty("bank_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_name")]
+#endif
+ public string BankName { get; set; }
+
+ ///
+ /// The numeric code for the bank account's bank branch.
+ ///
+ [JsonProperty("branch_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("branch_code")]
+#endif
+ public string BranchCode { get; set; }
+
+ ///
+ /// Last four digits of the bank account number.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+
+ ///
+ /// The suffix of the bank account number.
+ ///
+ [JsonProperty("suffix")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("suffix")]
+#endif
+ public string Suffix { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsOxxo.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsOxxo.cs
new file mode 100644
index 0000000000..b554e3eff7
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsOxxo.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsOxxo : StripeEntity
+ {
+ ///
+ /// OXXO reference number.
+ ///
+ [JsonProperty("number")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("number")]
+#endif
+ public string Number { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsP24.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsP24.cs
new file mode 100644
index 0000000000..48fc17b79d
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsP24.cs
@@ -0,0 +1,55 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsP24 : StripeEntity
+ {
+ ///
+ /// The customer's bank. Can be one of ing, citi_handlowy,
+ /// tmobile_usbugi_bankowe, plus_bank, etransfer_pocztowy24,
+ /// banki_spbdzielcze, bank_nowy_bfg_sa, getin_bank, velobank,
+ /// blik, noble_pay, ideabank, envelobank,
+ /// santander_przelew24, nest_przelew, mbank_mtransfer,
+ /// inteligo, pbac_z_ipko, bnp_paribas, credit_agricole,
+ /// toyota_bank, bank_pekao_sa, volkswagen_bank,
+ /// bank_millennium, alior_bank, or boz.
+ /// One of: alior_bank, bank_millennium, bank_nowy_bfg_sa,
+ /// bank_pekao_sa, banki_spbdzielcze, blik, bnp_paribas,
+ /// boz, citi_handlowy, credit_agricole, envelobank,
+ /// etransfer_pocztowy24, getin_bank, ideabank, ing,
+ /// inteligo, mbank_mtransfer, nest_przelew, noble_pay,
+ /// pbac_z_ipko, plus_bank, santander_przelew24,
+ /// tmobile_usbugi_bankowe, toyota_bank, velobank, or
+ /// volkswagen_bank.
+ ///
+ [JsonProperty("bank")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank")]
+#endif
+ public string Bank { get; set; }
+
+ ///
+ /// Unique reference for this Przelewy24 payment.
+ ///
+ [JsonProperty("reference")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("reference")]
+#endif
+ public string Reference { get; set; }
+
+ ///
+ /// Owner's verified full name. Values are verified or provided by Przelewy24 directly (if
+ /// supported) at the time of authorization or settlement. They cannot be set or mutated.
+ /// Przelewy24 rarely provides this information so the attribute is usually empty.
+ ///
+ [JsonProperty("verified_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("verified_name")]
+#endif
+ public string VerifiedName { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsPayByBank.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsPayByBank.cs
new file mode 100644
index 0000000000..fa1ddbbc4f
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsPayByBank.cs
@@ -0,0 +1,7 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ public class PaymentAttemptRecordPaymentMethodDetailsPayByBank : StripeEntity
+ {
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsPayco.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsPayco.cs
new file mode 100644
index 0000000000..eeec8b6d6c
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsPayco.cs
@@ -0,0 +1,29 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsPayco : StripeEntity
+ {
+ ///
+ /// A unique identifier for the buyer as determined by the local payment processor.
+ ///
+ [JsonProperty("buyer_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("buyer_id")]
+#endif
+ public string BuyerId { get; set; }
+
+ ///
+ /// The Payco transaction ID associated with this payment.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsPaynow.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsPaynow.cs
new file mode 100644
index 0000000000..b9a2c86679
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsPaynow.cs
@@ -0,0 +1,40 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsPaynow : StripeEntity
+ {
+ ///
+ /// ID of the location that
+ /// this transaction's reader is assigned to.
+ ///
+ [JsonProperty("location")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("location")]
+#endif
+ public string Location { get; set; }
+
+ ///
+ /// ID of the reader this
+ /// transaction was made on.
+ ///
+ [JsonProperty("reader")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("reader")]
+#endif
+ public string Reader { get; set; }
+
+ ///
+ /// Reference number associated with this PayNow payment.
+ ///
+ [JsonProperty("reference")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("reference")]
+#endif
+ public string Reference { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsPaypal.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsPaypal.cs
new file mode 100644
index 0000000000..22c5434f4c
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsPaypal.cs
@@ -0,0 +1,70 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsPaypal : StripeEntity
+ {
+ ///
+ /// Two-letter ISO code representing the buyer's country. Values are provided by PayPal
+ /// directly (if supported) at the time of authorization or settlement. They cannot be set
+ /// or mutated.
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+
+ ///
+ /// Owner's email. Values are provided by PayPal directly (if supported) at the time of
+ /// authorization or settlement. They cannot be set or mutated.
+ ///
+ [JsonProperty("payer_email")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payer_email")]
+#endif
+ public string PayerEmail { get; set; }
+
+ ///
+ /// PayPal account PayerID. This identifier uniquely identifies the PayPal customer.
+ ///
+ [JsonProperty("payer_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payer_id")]
+#endif
+ public string PayerId { get; set; }
+
+ ///
+ /// Owner's full name. Values provided by PayPal directly (if supported) at the time of
+ /// authorization or settlement. They cannot be set or mutated.
+ ///
+ [JsonProperty("payer_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payer_name")]
+#endif
+ public string PayerName { get; set; }
+
+ ///
+ /// The level of protection offered as defined by PayPal Seller Protection for Merchants,
+ /// for this transaction.
+ ///
+ [JsonProperty("seller_protection")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("seller_protection")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsPaypalSellerProtection SellerProtection { get; set; }
+
+ ///
+ /// A unique ID generated by PayPal for this transaction.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsPaypalSellerProtection.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsPaypalSellerProtection.cs
new file mode 100644
index 0000000000..3d457440a9
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsPaypalSellerProtection.cs
@@ -0,0 +1,32 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using System.Collections.Generic;
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsPaypalSellerProtection : StripeEntity
+ {
+ ///
+ /// An array of conditions that are covered for the transaction, if applicable.
+ /// One of: fraudulent, or product_not_received.
+ ///
+ [JsonProperty("dispute_categories")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("dispute_categories")]
+#endif
+ public List DisputeCategories { get; set; }
+
+ ///
+ /// Indicates whether the transaction is eligible for PayPal's seller protection.
+ /// One of: eligible, not_eligible, or partially_eligible.
+ ///
+ [JsonProperty("status")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("status")]
+#endif
+ public string Status { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsPix.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsPix.cs
new file mode 100644
index 0000000000..9102e73990
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsPix.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsPix : StripeEntity
+ {
+ ///
+ /// Unique transaction id generated by BCB.
+ ///
+ [JsonProperty("bank_transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_transaction_id")]
+#endif
+ public string BankTransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsPromptpay.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsPromptpay.cs
new file mode 100644
index 0000000000..81f9e937d9
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsPromptpay.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsPromptpay : StripeEntity
+ {
+ ///
+ /// Bill reference generated by PromptPay.
+ ///
+ [JsonProperty("reference")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("reference")]
+#endif
+ public string Reference { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsRevolutPay.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsRevolutPay.cs
new file mode 100644
index 0000000000..7dd9c1e0cf
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsRevolutPay.cs
@@ -0,0 +1,26 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsRevolutPay : StripeEntity
+ {
+ [JsonProperty("funding")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("funding")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsRevolutPayFunding Funding { get; set; }
+
+ ///
+ /// The Revolut Pay transaction ID associated with this payment.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsRevolutPayFunding.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsRevolutPayFunding.cs
new file mode 100644
index 0000000000..f1bbb39b8d
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsRevolutPayFunding.cs
@@ -0,0 +1,26 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsRevolutPayFunding : StripeEntity
+ {
+ [JsonProperty("card")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("card")]
+#endif
+ public PaymentAttemptRecordPaymentMethodDetailsRevolutPayFundingCard Card { get; set; }
+
+ ///
+ /// funding type of the underlying payment method.
+ ///
+ [JsonProperty("type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("type")]
+#endif
+ public string Type { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsRevolutPayFundingCard.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsRevolutPayFundingCard.cs
new file mode 100644
index 0000000000..86b6528be6
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsRevolutPayFundingCard.cs
@@ -0,0 +1,69 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsRevolutPayFundingCard : StripeEntity
+ {
+ ///
+ /// Card brand. Can be amex, cartes_bancaires, diners, discover,
+ /// eftpos_au, jcb, link, mastercard, unionpay,
+ /// visa or unknown.
+ ///
+ [JsonProperty("brand")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("brand")]
+#endif
+ public string Brand { get; set; }
+
+ ///
+ /// Two-letter ISO code representing the country of the card. You could use this attribute
+ /// to get a sense of the international breakdown of cards you've collected.
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+
+ ///
+ /// Two-digit number representing the card's expiration month.
+ ///
+ [JsonProperty("exp_month")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("exp_month")]
+#endif
+ public long? ExpMonth { get; set; }
+
+ ///
+ /// Four-digit number representing the card's expiration year.
+ ///
+ [JsonProperty("exp_year")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("exp_year")]
+#endif
+ public long? ExpYear { get; set; }
+
+ ///
+ /// Card funding type. Can be credit, debit, prepaid, or
+ /// unknown.
+ ///
+ [JsonProperty("funding")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("funding")]
+#endif
+ public string Funding { get; set; }
+
+ ///
+ /// The last four digits of the card.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsSamsungPay.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsSamsungPay.cs
new file mode 100644
index 0000000000..66cefceb65
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsSamsungPay.cs
@@ -0,0 +1,29 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsSamsungPay : StripeEntity
+ {
+ ///
+ /// A unique identifier for the buyer as determined by the local payment processor.
+ ///
+ [JsonProperty("buyer_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("buyer_id")]
+#endif
+ public string BuyerId { get; set; }
+
+ ///
+ /// The Samsung Pay transaction ID associated with this payment.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsSatispay.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsSatispay.cs
new file mode 100644
index 0000000000..54037f6891
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsSatispay.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsSatispay : StripeEntity
+ {
+ ///
+ /// The Satispay transaction ID associated with this payment.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsSepaCreditTransfer.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsSepaCreditTransfer.cs
new file mode 100644
index 0000000000..4c5dd48911
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsSepaCreditTransfer.cs
@@ -0,0 +1,38 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsSepaCreditTransfer : StripeEntity
+ {
+ ///
+ /// Name of the bank associated with the bank account.
+ ///
+ [JsonProperty("bank_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_name")]
+#endif
+ public string BankName { get; set; }
+
+ ///
+ /// Bank Identifier Code of the bank associated with the bank account.
+ ///
+ [JsonProperty("bic")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bic")]
+#endif
+ public string Bic { get; set; }
+
+ ///
+ /// IBAN of the bank account to transfer funds to.
+ ///
+ [JsonProperty("iban")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("iban")]
+#endif
+ public string Iban { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsSepaDebit.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsSepaDebit.cs
new file mode 100644
index 0000000000..a20882ee35
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsSepaDebit.cs
@@ -0,0 +1,69 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsSepaDebit : StripeEntity
+ {
+ ///
+ /// Bank code of bank associated with the bank account.
+ ///
+ [JsonProperty("bank_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_code")]
+#endif
+ public string BankCode { get; set; }
+
+ ///
+ /// Branch code of bank associated with the bank account.
+ ///
+ [JsonProperty("branch_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("branch_code")]
+#endif
+ public string BranchCode { get; set; }
+
+ ///
+ /// Two-letter ISO code representing the country the bank account is located in.
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+
+ ///
+ /// Uniquely identifies this particular bank account. You can use this attribute to check
+ /// whether two bank accounts are the same.
+ ///
+ [JsonProperty("fingerprint")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("fingerprint")]
+#endif
+ public string Fingerprint { get; set; }
+
+ ///
+ /// Last four characters of the IBAN.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+
+ ///
+ /// Find the ID of the mandate used for this payment under the payment_method_details.sepa_debit.mandate
+ /// property on the Charge. Use this mandate ID to retrieve the Mandate.
+ ///
+ [JsonProperty("mandate")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("mandate")]
+#endif
+ public string Mandate { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsSofort.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsSofort.cs
new file mode 100644
index 0000000000..5f4312090d
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsSofort.cs
@@ -0,0 +1,164 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+ using Stripe.Infrastructure;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+#if NET6_0_OR_GREATER
+ [STJS.JsonConverter(typeof(STJMemberSerializationOptIn))]
+#endif
+ public class PaymentAttemptRecordPaymentMethodDetailsSofort : StripeEntity
+ {
+ ///
+ /// Bank code of bank associated with the bank account.
+ ///
+ [JsonProperty("bank_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_code")]
+#endif
+ public string BankCode { get; set; }
+
+ ///
+ /// Name of the bank associated with the bank account.
+ ///
+ [JsonProperty("bank_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_name")]
+#endif
+ public string BankName { get; set; }
+
+ ///
+ /// Bank Identifier Code of the bank associated with the bank account.
+ ///
+ [JsonProperty("bic")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bic")]
+#endif
+ public string Bic { get; set; }
+
+ ///
+ /// Two-letter ISO code representing the country the bank account is located in.
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+
+ #region Expandable GeneratedSepaDebit
+
+ ///
+ /// (ID of the PaymentMethod)
+ /// The ID of the SEPA Direct Debit PaymentMethod which was generated by this Charge.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public string GeneratedSepaDebitId
+ {
+ get => this.InternalGeneratedSepaDebit?.Id;
+ set => this.InternalGeneratedSepaDebit = SetExpandableFieldId(value, this.InternalGeneratedSepaDebit);
+ }
+
+ ///
+ /// (Expanded)
+ /// The ID of the SEPA Direct Debit PaymentMethod which was generated by this Charge.
+ ///
+ /// For more information, see the expand documentation.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public PaymentMethod GeneratedSepaDebit
+ {
+ get => this.InternalGeneratedSepaDebit?.ExpandedObject;
+ set => this.InternalGeneratedSepaDebit = SetExpandableFieldObject(value, this.InternalGeneratedSepaDebit);
+ }
+
+ [JsonProperty("generated_sepa_debit")]
+ [JsonConverter(typeof(ExpandableFieldConverter))]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("generated_sepa_debit")]
+ [STJS.JsonConverter(typeof(STJExpandableFieldConverter))]
+#endif
+ internal ExpandableField InternalGeneratedSepaDebit { get; set; }
+ #endregion
+
+ #region Expandable GeneratedSepaDebitMandate
+
+ ///
+ /// (ID of the Mandate)
+ /// The mandate for the SEPA Direct Debit PaymentMethod which was generated by this Charge.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public string GeneratedSepaDebitMandateId
+ {
+ get => this.InternalGeneratedSepaDebitMandate?.Id;
+ set => this.InternalGeneratedSepaDebitMandate = SetExpandableFieldId(value, this.InternalGeneratedSepaDebitMandate);
+ }
+
+ ///
+ /// (Expanded)
+ /// The mandate for the SEPA Direct Debit PaymentMethod which was generated by this Charge.
+ ///
+ /// For more information, see the expand documentation.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public Mandate GeneratedSepaDebitMandate
+ {
+ get => this.InternalGeneratedSepaDebitMandate?.ExpandedObject;
+ set => this.InternalGeneratedSepaDebitMandate = SetExpandableFieldObject(value, this.InternalGeneratedSepaDebitMandate);
+ }
+
+ [JsonProperty("generated_sepa_debit_mandate")]
+ [JsonConverter(typeof(ExpandableFieldConverter))]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("generated_sepa_debit_mandate")]
+ [STJS.JsonConverter(typeof(STJExpandableFieldConverter))]
+#endif
+ internal ExpandableField InternalGeneratedSepaDebitMandate { get; set; }
+ #endregion
+
+ ///
+ /// Last four characters of the IBAN.
+ ///
+ [JsonProperty("iban_last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("iban_last4")]
+#endif
+ public string IbanLast4 { get; set; }
+
+ ///
+ /// Preferred language of the SOFORT authorization page that the customer is redirected to.
+ /// Can be one of de, en, es, fr, it, nl, or
+ /// pl.
+ /// One of: de, en, es, fr, it, nl, or pl.
+ ///
+ [JsonProperty("preferred_language")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("preferred_language")]
+#endif
+ public string PreferredLanguage { get; set; }
+
+ ///
+ /// Owner's verified full name. Values are verified or provided by SOFORT directly (if
+ /// supported) at the time of authorization or settlement. They cannot be set or mutated.
+ ///
+ [JsonProperty("verified_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("verified_name")]
+#endif
+ public string VerifiedName { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsStripeAccount.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsStripeAccount.cs
new file mode 100644
index 0000000000..59386a3e58
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsStripeAccount.cs
@@ -0,0 +1,7 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ public class PaymentAttemptRecordPaymentMethodDetailsStripeAccount : StripeEntity
+ {
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsSwish.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsSwish.cs
new file mode 100644
index 0000000000..ce3d7941cd
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsSwish.cs
@@ -0,0 +1,39 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsSwish : StripeEntity
+ {
+ ///
+ /// Uniquely identifies the payer's Swish account. You can use this attribute to check
+ /// whether two Swish transactions were paid for by the same payer.
+ ///
+ [JsonProperty("fingerprint")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("fingerprint")]
+#endif
+ public string Fingerprint { get; set; }
+
+ ///
+ /// Payer bank reference number for the payment.
+ ///
+ [JsonProperty("payment_reference")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payment_reference")]
+#endif
+ public string PaymentReference { get; set; }
+
+ ///
+ /// The last four digits of the Swish account phone number.
+ ///
+ [JsonProperty("verified_phone_last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("verified_phone_last4")]
+#endif
+ public string VerifiedPhoneLast4 { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsTwint.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsTwint.cs
new file mode 100644
index 0000000000..f3515f9b34
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsTwint.cs
@@ -0,0 +1,7 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ public class PaymentAttemptRecordPaymentMethodDetailsTwint : StripeEntity
+ {
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsUsBankAccount.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsUsBankAccount.cs
new file mode 100644
index 0000000000..5d64c89d8d
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsUsBankAccount.cs
@@ -0,0 +1,120 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+ using Stripe.Infrastructure;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+#if NET6_0_OR_GREATER
+ [STJS.JsonConverter(typeof(STJMemberSerializationOptIn))]
+#endif
+ public class PaymentAttemptRecordPaymentMethodDetailsUsBankAccount : StripeEntity
+ {
+ ///
+ /// One of: company, or individual.
+ ///
+ [JsonProperty("account_holder_type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("account_holder_type")]
+#endif
+ public string AccountHolderType { get; set; }
+
+ ///
+ /// One of: checking, or savings.
+ ///
+ [JsonProperty("account_type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("account_type")]
+#endif
+ public string AccountType { get; set; }
+
+ ///
+ /// Name of the bank associated with the bank account.
+ ///
+ [JsonProperty("bank_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_name")]
+#endif
+ public string BankName { get; set; }
+
+ ///
+ /// Uniquely identifies this particular bank account. You can use this attribute to check
+ /// whether two bank accounts are the same.
+ ///
+ [JsonProperty("fingerprint")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("fingerprint")]
+#endif
+ public string Fingerprint { get; set; }
+
+ ///
+ /// Last four digits of the bank account number.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+
+ #region Expandable Mandate
+
+ ///
+ /// (ID of the Mandate)
+ /// ID of the mandate used to make this payment.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public string MandateId
+ {
+ get => this.InternalMandate?.Id;
+ set => this.InternalMandate = SetExpandableFieldId(value, this.InternalMandate);
+ }
+
+ ///
+ /// (Expanded)
+ /// ID of the mandate used to make this payment.
+ ///
+ /// For more information, see the expand documentation.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public Mandate Mandate
+ {
+ get => this.InternalMandate?.ExpandedObject;
+ set => this.InternalMandate = SetExpandableFieldObject(value, this.InternalMandate);
+ }
+
+ [JsonProperty("mandate")]
+ [JsonConverter(typeof(ExpandableFieldConverter))]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("mandate")]
+ [STJS.JsonConverter(typeof(STJExpandableFieldConverter))]
+#endif
+ internal ExpandableField InternalMandate { get; set; }
+ #endregion
+
+ ///
+ /// Reference number to locate ACH payments with customer’s bank.
+ ///
+ [JsonProperty("payment_reference")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payment_reference")]
+#endif
+ public string PaymentReference { get; set; }
+
+ ///
+ /// Routing number of the bank account.
+ ///
+ [JsonProperty("routing_number")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("routing_number")]
+#endif
+ public string RoutingNumber { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsWechat.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsWechat.cs
new file mode 100644
index 0000000000..b61ddd9d1d
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsWechat.cs
@@ -0,0 +1,7 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ public class PaymentAttemptRecordPaymentMethodDetailsWechat : StripeEntity
+ {
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsWechatPay.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsWechatPay.cs
new file mode 100644
index 0000000000..0ead641a86
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsWechatPay.cs
@@ -0,0 +1,50 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordPaymentMethodDetailsWechatPay : StripeEntity
+ {
+ ///
+ /// Uniquely identifies this particular WeChat Pay account. You can use this attribute to
+ /// check whether two WeChat accounts are the same.
+ ///
+ [JsonProperty("fingerprint")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("fingerprint")]
+#endif
+ public string Fingerprint { get; set; }
+
+ ///
+ /// ID of the location that
+ /// this transaction's reader is assigned to.
+ ///
+ [JsonProperty("location")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("location")]
+#endif
+ public string Location { get; set; }
+
+ ///
+ /// ID of the reader this
+ /// transaction was made on.
+ ///
+ [JsonProperty("reader")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("reader")]
+#endif
+ public string Reader { get; set; }
+
+ ///
+ /// Transaction ID of this particular WeChat Pay transaction.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsZip.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsZip.cs
new file mode 100644
index 0000000000..f946dbdfac
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordPaymentMethodDetailsZip.cs
@@ -0,0 +1,7 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ public class PaymentAttemptRecordPaymentMethodDetailsZip : StripeEntity
+ {
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordProcessorDetails.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordProcessorDetails.cs
new file mode 100644
index 0000000000..cacf236e5a
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordProcessorDetails.cs
@@ -0,0 +1,31 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordProcessorDetails : StripeEntity
+ {
+ ///
+ /// Custom processors represent payment processors not modeled directly in the Stripe API.
+ /// This resource consists of details about the custom processor used for this payment
+ /// attempt.
+ ///
+ [JsonProperty("custom")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("custom")]
+#endif
+ public PaymentAttemptRecordProcessorDetailsCustom Custom { get; set; }
+
+ ///
+ /// The processor used for this payment attempt.
+ ///
+ [JsonProperty("type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("type")]
+#endif
+ public string Type { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordProcessorDetailsCustom.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordProcessorDetailsCustom.cs
new file mode 100644
index 0000000000..ccc930dedd
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordProcessorDetailsCustom.cs
@@ -0,0 +1,21 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordProcessorDetailsCustom : StripeEntity
+ {
+ ///
+ /// An opaque string for manual reconciliation of this payment, for example a check number
+ /// or a payment processor ID.
+ ///
+ [JsonProperty("payment_reference")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payment_reference")]
+#endif
+ public string PaymentReference { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordShippingDetails.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordShippingDetails.cs
new file mode 100644
index 0000000000..ab30bf7011
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordShippingDetails.cs
@@ -0,0 +1,38 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordShippingDetails : StripeEntity
+ {
+ ///
+ /// A representation of a physical address.
+ ///
+ [JsonProperty("address")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("address")]
+#endif
+ public PaymentAttemptRecordShippingDetailsAddress Address { get; set; }
+
+ ///
+ /// The shipping recipient's name.
+ ///
+ [JsonProperty("name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("name")]
+#endif
+ public string Name { get; set; }
+
+ ///
+ /// The shipping recipient's phone number.
+ ///
+ [JsonProperty("phone")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("phone")]
+#endif
+ public string Phone { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordShippingDetailsAddress.cs b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordShippingDetailsAddress.cs
new file mode 100644
index 0000000000..aae4dab913
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentAttemptRecords/PaymentAttemptRecordShippingDetailsAddress.cs
@@ -0,0 +1,66 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentAttemptRecordShippingDetailsAddress : StripeEntity
+ {
+ ///
+ /// City, district, suburb, town, or village.
+ ///
+ [JsonProperty("city")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("city")]
+#endif
+ public string City { get; set; }
+
+ ///
+ /// Two-letter country code (ISO
+ /// 3166-1 alpha-2).
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+
+ ///
+ /// Address line 1, such as the street, PO Box, or company name.
+ ///
+ [JsonProperty("line1")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("line1")]
+#endif
+ public string Line1 { get; set; }
+
+ ///
+ /// Address line 2, such as the apartment, suite, unit, or building.
+ ///
+ [JsonProperty("line2")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("line2")]
+#endif
+ public string Line2 { get; set; }
+
+ ///
+ /// ZIP or postal code.
+ ///
+ [JsonProperty("postal_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("postal_code")]
+#endif
+ public string PostalCode { get; set; }
+
+ ///
+ /// State, county, province, or region.
+ ///
+ [JsonProperty("state")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("state")]
+#endif
+ public string State { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentIntentAmountDetailsLineItems/PaymentIntentAmountDetailsLineItem.cs b/src/Stripe.net/Entities/PaymentIntentAmountDetailsLineItems/PaymentIntentAmountDetailsLineItem.cs
new file mode 100644
index 0000000000..c5317d2a8a
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentIntentAmountDetailsLineItems/PaymentIntentAmountDetailsLineItem.cs
@@ -0,0 +1,101 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentIntentAmountDetailsLineItem : StripeEntity, IHasId, IHasObject
+ {
+ ///
+ /// Unique identifier for the object.
+ ///
+ [JsonProperty("id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("id")]
+#endif
+ public string Id { get; set; }
+
+ ///
+ /// String representing the object's type. Objects of the same type share the same value.
+ ///
+ [JsonProperty("object")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("object")]
+#endif
+ public string Object { get; set; }
+
+ ///
+ /// The amount an item was discounted for. Positive integer.
+ ///
+ [JsonProperty("discount_amount")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("discount_amount")]
+#endif
+ public long? DiscountAmount { get; set; }
+
+ ///
+ /// Payment method-specific information for line items.
+ ///
+ [JsonProperty("payment_method_options")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payment_method_options")]
+#endif
+ public PaymentIntentAmountDetailsLineItemPaymentMethodOptions PaymentMethodOptions { get; set; }
+
+ ///
+ /// Unique identifier of the product. At most 12 characters long.
+ ///
+ [JsonProperty("product_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("product_code")]
+#endif
+ public string ProductCode { get; set; }
+
+ ///
+ /// Name of the product. At most 100 characters long.
+ ///
+ [JsonProperty("product_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("product_name")]
+#endif
+ public string ProductName { get; set; }
+
+ ///
+ /// Number of items of the product. Positive integer.
+ ///
+ [JsonProperty("quantity")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("quantity")]
+#endif
+ public long Quantity { get; set; }
+
+ ///
+ /// Contains information about the tax on the item.
+ ///
+ [JsonProperty("tax")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("tax")]
+#endif
+ public PaymentIntentAmountDetailsLineItemTax Tax { get; set; }
+
+ ///
+ /// Cost of the product. Non-negative integer.
+ ///
+ [JsonProperty("unit_cost")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("unit_cost")]
+#endif
+ public long UnitCost { get; set; }
+
+ ///
+ /// A unit of measure for the line item, such as gallons, feet, meters, etc.
+ ///
+ [JsonProperty("unit_of_measure")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("unit_of_measure")]
+#endif
+ public string UnitOfMeasure { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentIntentAmountDetailsLineItems/PaymentIntentAmountDetailsLineItemPaymentMethodOptions.cs b/src/Stripe.net/Entities/PaymentIntentAmountDetailsLineItems/PaymentIntentAmountDetailsLineItemPaymentMethodOptions.cs
new file mode 100644
index 0000000000..0016369092
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentIntentAmountDetailsLineItems/PaymentIntentAmountDetailsLineItemPaymentMethodOptions.cs
@@ -0,0 +1,35 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentIntentAmountDetailsLineItemPaymentMethodOptions : StripeEntity
+ {
+ [JsonProperty("card")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("card")]
+#endif
+ public PaymentIntentAmountDetailsLineItemPaymentMethodOptionsCard Card { get; set; }
+
+ [JsonProperty("card_present")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("card_present")]
+#endif
+ public PaymentIntentAmountDetailsLineItemPaymentMethodOptionsCardPresent CardPresent { get; set; }
+
+ [JsonProperty("klarna")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("klarna")]
+#endif
+ public PaymentIntentAmountDetailsLineItemPaymentMethodOptionsKlarna Klarna { get; set; }
+
+ [JsonProperty("paypal")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("paypal")]
+#endif
+ public PaymentIntentAmountDetailsLineItemPaymentMethodOptionsPaypal Paypal { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentIntentAmountDetailsLineItems/PaymentIntentAmountDetailsLineItemPaymentMethodOptionsCard.cs b/src/Stripe.net/Entities/PaymentIntentAmountDetailsLineItems/PaymentIntentAmountDetailsLineItemPaymentMethodOptionsCard.cs
new file mode 100644
index 0000000000..fe6b5bff36
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentIntentAmountDetailsLineItems/PaymentIntentAmountDetailsLineItemPaymentMethodOptionsCard.cs
@@ -0,0 +1,17 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentIntentAmountDetailsLineItemPaymentMethodOptionsCard : StripeEntity
+ {
+ [JsonProperty("commodity_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("commodity_code")]
+#endif
+ public string CommodityCode { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentIntentAmountDetailsLineItems/PaymentIntentAmountDetailsLineItemPaymentMethodOptionsCardPresent.cs b/src/Stripe.net/Entities/PaymentIntentAmountDetailsLineItems/PaymentIntentAmountDetailsLineItemPaymentMethodOptionsCardPresent.cs
new file mode 100644
index 0000000000..75230f4a68
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentIntentAmountDetailsLineItems/PaymentIntentAmountDetailsLineItemPaymentMethodOptionsCardPresent.cs
@@ -0,0 +1,17 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentIntentAmountDetailsLineItemPaymentMethodOptionsCardPresent : StripeEntity
+ {
+ [JsonProperty("commodity_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("commodity_code")]
+#endif
+ public string CommodityCode { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentIntentAmountDetailsLineItems/PaymentIntentAmountDetailsLineItemPaymentMethodOptionsKlarna.cs b/src/Stripe.net/Entities/PaymentIntentAmountDetailsLineItems/PaymentIntentAmountDetailsLineItemPaymentMethodOptionsKlarna.cs
new file mode 100644
index 0000000000..d9d9bea92c
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentIntentAmountDetailsLineItems/PaymentIntentAmountDetailsLineItemPaymentMethodOptionsKlarna.cs
@@ -0,0 +1,35 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentIntentAmountDetailsLineItemPaymentMethodOptionsKlarna : StripeEntity
+ {
+ [JsonProperty("image_url")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("image_url")]
+#endif
+ public string ImageUrl { get; set; }
+
+ [JsonProperty("product_url")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("product_url")]
+#endif
+ public string ProductUrl { get; set; }
+
+ [JsonProperty("reference")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("reference")]
+#endif
+ public string Reference { get; set; }
+
+ [JsonProperty("subscription_reference")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("subscription_reference")]
+#endif
+ public string SubscriptionReference { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentIntentAmountDetailsLineItems/PaymentIntentAmountDetailsLineItemPaymentMethodOptionsPaypal.cs b/src/Stripe.net/Entities/PaymentIntentAmountDetailsLineItems/PaymentIntentAmountDetailsLineItemPaymentMethodOptionsPaypal.cs
new file mode 100644
index 0000000000..ecbc150420
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentIntentAmountDetailsLineItems/PaymentIntentAmountDetailsLineItemPaymentMethodOptionsPaypal.cs
@@ -0,0 +1,42 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentIntentAmountDetailsLineItemPaymentMethodOptionsPaypal : StripeEntity
+ {
+ ///
+ /// Type of the line item.
+ /// One of: digital_goods, donation, or physical_goods.
+ ///
+ [JsonProperty("category")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("category")]
+#endif
+ public string Category { get; set; }
+
+ ///
+ /// Description of the line item.
+ ///
+ [JsonProperty("description")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("description")]
+#endif
+ public string Description { get; set; }
+
+ ///
+ /// The Stripe account ID of the connected account that sells the item. This is only needed
+ /// when using Separate Charges
+ /// and Transfers.
+ ///
+ [JsonProperty("sold_by")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("sold_by")]
+#endif
+ public string SoldBy { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentIntentAmountDetailsLineItems/PaymentIntentAmountDetailsLineItemTax.cs b/src/Stripe.net/Entities/PaymentIntentAmountDetailsLineItems/PaymentIntentAmountDetailsLineItemTax.cs
new file mode 100644
index 0000000000..85e738bb82
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentIntentAmountDetailsLineItems/PaymentIntentAmountDetailsLineItemTax.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentIntentAmountDetailsLineItemTax : StripeEntity
+ {
+ ///
+ /// Total portion of the amount that is for tax.
+ ///
+ [JsonProperty("total_tax_amount")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("total_tax_amount")]
+#endif
+ public long TotalTaxAmount { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentIntents/PaymentIntent.cs b/src/Stripe.net/Entities/PaymentIntents/PaymentIntent.cs
index 341caec997..209931ce23 100644
--- a/src/Stripe.net/Entities/PaymentIntents/PaymentIntent.cs
+++ b/src/Stripe.net/Entities/PaymentIntents/PaymentIntent.cs
@@ -464,6 +464,12 @@ public Account OnBehalfOf
internal ExpandableField InternalOnBehalfOf { get; set; }
#endregion
+ [JsonProperty("payment_details")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payment_details")]
+#endif
+ public PaymentIntentPaymentDetails PaymentDetails { get; set; }
+
#region Expandable PaymentMethod
///
diff --git a/src/Stripe.net/Entities/PaymentIntents/PaymentIntentAmountDetails.cs b/src/Stripe.net/Entities/PaymentIntents/PaymentIntentAmountDetails.cs
index 1f305f7dcf..7823738c9d 100644
--- a/src/Stripe.net/Entities/PaymentIntents/PaymentIntentAmountDetails.cs
+++ b/src/Stripe.net/Entities/PaymentIntents/PaymentIntentAmountDetails.cs
@@ -8,6 +8,37 @@ namespace Stripe
public class PaymentIntentAmountDetails : StripeEntity
{
+ ///
+ /// The total discount applied on the transaction.
+ ///
+ [JsonProperty("discount_amount")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("discount_amount")]
+#endif
+ public long DiscountAmount { get; set; }
+
+ ///
+ /// A list of line items, each containing information about a product in the PaymentIntent.
+ /// There is a maximum of 100 line items.
+ ///
+ [JsonProperty("line_items")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("line_items")]
+#endif
+ public StripeList LineItems { get; set; }
+
+ [JsonProperty("shipping")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("shipping")]
+#endif
+ public PaymentIntentAmountDetailsShipping Shipping { get; set; }
+
+ [JsonProperty("tax")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("tax")]
+#endif
+ public PaymentIntentAmountDetailsTax Tax { get; set; }
+
[JsonProperty("tip")]
#if NET6_0_OR_GREATER
[STJS.JsonPropertyName("tip")]
diff --git a/src/Stripe.net/Entities/PaymentIntents/PaymentIntentAmountDetailsShipping.cs b/src/Stripe.net/Entities/PaymentIntents/PaymentIntentAmountDetailsShipping.cs
new file mode 100644
index 0000000000..8986103afe
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentIntents/PaymentIntentAmountDetailsShipping.cs
@@ -0,0 +1,38 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentIntentAmountDetailsShipping : StripeEntity
+ {
+ ///
+ /// Portion of the amount that is for shipping.
+ ///
+ [JsonProperty("amount")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("amount")]
+#endif
+ public long? Amount { get; set; }
+
+ ///
+ /// The postal code that represents the shipping source.
+ ///
+ [JsonProperty("from_postal_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("from_postal_code")]
+#endif
+ public string FromPostalCode { get; set; }
+
+ ///
+ /// The postal code that represents the shipping destination.
+ ///
+ [JsonProperty("to_postal_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("to_postal_code")]
+#endif
+ public string ToPostalCode { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentIntents/PaymentIntentAmountDetailsTax.cs b/src/Stripe.net/Entities/PaymentIntents/PaymentIntentAmountDetailsTax.cs
new file mode 100644
index 0000000000..4f3e2af519
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentIntents/PaymentIntentAmountDetailsTax.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentIntentAmountDetailsTax : StripeEntity
+ {
+ ///
+ /// Total portion of the amount that is for tax.
+ ///
+ [JsonProperty("total_tax_amount")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("total_tax_amount")]
+#endif
+ public long? TotalTaxAmount { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentIntents/PaymentIntentPaymentDetails.cs b/src/Stripe.net/Entities/PaymentIntents/PaymentIntentPaymentDetails.cs
new file mode 100644
index 0000000000..ec72b29769
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentIntents/PaymentIntentPaymentDetails.cs
@@ -0,0 +1,30 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentIntentPaymentDetails : StripeEntity
+ {
+ ///
+ /// Some customers might be required by their company or organization to provide this
+ /// information. If so, provide this value. Otherwise you can ignore this field.
+ ///
+ [JsonProperty("customer_reference")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("customer_reference")]
+#endif
+ public string CustomerReference { get; set; }
+
+ ///
+ /// A unique value assigned by the business to identify the transaction.
+ ///
+ [JsonProperty("order_reference")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("order_reference")]
+#endif
+ public string OrderReference { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentLinks/PaymentLink.cs b/src/Stripe.net/Entities/PaymentLinks/PaymentLink.cs
index 23d7a0bc6c..bce7db4db2 100644
--- a/src/Stripe.net/Entities/PaymentLinks/PaymentLink.cs
+++ b/src/Stripe.net/Entities/PaymentLinks/PaymentLink.cs
@@ -240,6 +240,12 @@ public Application Application
#endif
public Dictionary Metadata { get; set; }
+ [JsonProperty("name_collection")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("name_collection")]
+#endif
+ public PaymentLinkNameCollection NameCollection { get; set; }
+
#region Expandable OnBehalfOf
///
@@ -322,7 +328,7 @@ public Account OnBehalfOf
/// One of: affirm, afterpay_clearpay, alipay, alma,
/// au_becs_debit, bacs_debit, bancontact, billie, blik,
/// boleto, card, cashapp, eps, fpx, giropay,
- /// grabpay, ideal, klarna, konbini, link,
+ /// grabpay, ideal, klarna, konbini, link, mb_way,
/// mobilepay, multibanco, oxxo, p24, pay_by_bank,
/// paynow, paypal, pix, promptpay, satispay,
/// sepa_debit, sofort, swish, twint, us_bank_account,
diff --git a/src/Stripe.net/Entities/PaymentLinks/PaymentLinkNameCollection.cs b/src/Stripe.net/Entities/PaymentLinks/PaymentLinkNameCollection.cs
new file mode 100644
index 0000000000..a14f7ecc8e
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentLinks/PaymentLinkNameCollection.cs
@@ -0,0 +1,23 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentLinkNameCollection : StripeEntity
+ {
+ [JsonProperty("business")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("business")]
+#endif
+ public PaymentLinkNameCollectionBusiness Business { get; set; }
+
+ [JsonProperty("individual")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("individual")]
+#endif
+ public PaymentLinkNameCollectionIndividual Individual { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentLinks/PaymentLinkNameCollectionBusiness.cs b/src/Stripe.net/Entities/PaymentLinks/PaymentLinkNameCollectionBusiness.cs
new file mode 100644
index 0000000000..4d69b826f2
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentLinks/PaymentLinkNameCollectionBusiness.cs
@@ -0,0 +1,30 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentLinkNameCollectionBusiness : StripeEntity
+ {
+ ///
+ /// Indicates whether business name collection is enabled for the payment link.
+ ///
+ [JsonProperty("enabled")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("enabled")]
+#endif
+ public bool Enabled { get; set; }
+
+ ///
+ /// Whether the customer is required to complete the field before checking out. Defaults to
+ /// false.
+ ///
+ [JsonProperty("optional")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("optional")]
+#endif
+ public bool Optional { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentLinks/PaymentLinkNameCollectionIndividual.cs b/src/Stripe.net/Entities/PaymentLinks/PaymentLinkNameCollectionIndividual.cs
new file mode 100644
index 0000000000..8c6f95ebca
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentLinks/PaymentLinkNameCollectionIndividual.cs
@@ -0,0 +1,30 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentLinkNameCollectionIndividual : StripeEntity
+ {
+ ///
+ /// Indicates whether individual name collection is enabled for the payment link.
+ ///
+ [JsonProperty("enabled")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("enabled")]
+#endif
+ public bool Enabled { get; set; }
+
+ ///
+ /// Whether the customer is required to complete the field before checking out. Defaults to
+ /// false.
+ ///
+ [JsonProperty("optional")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("optional")]
+#endif
+ public bool Optional { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentMethodConfigurations/PaymentMethodConfiguration.cs b/src/Stripe.net/Entities/PaymentMethodConfigurations/PaymentMethodConfiguration.cs
index dd83520e13..39402f6ab5 100644
--- a/src/Stripe.net/Entities/PaymentMethodConfigurations/PaymentMethodConfiguration.cs
+++ b/src/Stripe.net/Entities/PaymentMethodConfigurations/PaymentMethodConfiguration.cs
@@ -170,6 +170,12 @@ public class PaymentMethodConfiguration : StripeEntity
+ {
+ ///
+ /// Whether this payment method may be offered at checkout. True if
+ /// display_preference is on and the payment method's capability is active.
+ ///
+ [JsonProperty("available")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("available")]
+#endif
+ public bool Available { get; set; }
+
+ [JsonProperty("display_preference")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("display_preference")]
+#endif
+ public PaymentMethodConfigurationCryptoDisplayPreference DisplayPreference { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentMethodConfigurations/PaymentMethodConfigurationCryptoDisplayPreference.cs b/src/Stripe.net/Entities/PaymentMethodConfigurations/PaymentMethodConfigurationCryptoDisplayPreference.cs
new file mode 100644
index 0000000000..9ffe4f3e5f
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentMethodConfigurations/PaymentMethodConfigurationCryptoDisplayPreference.cs
@@ -0,0 +1,41 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentMethodConfigurationCryptoDisplayPreference : StripeEntity
+ {
+ ///
+ /// For child configs, whether or not the account's preference will be observed. If
+ /// false, the parent configuration's default is used.
+ ///
+ [JsonProperty("overridable")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("overridable")]
+#endif
+ public bool? Overridable { get; set; }
+
+ ///
+ /// The account's display preference.
+ /// One of: none, off, or on.
+ ///
+ [JsonProperty("preference")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("preference")]
+#endif
+ public string Preference { get; set; }
+
+ ///
+ /// The effective display preference value.
+ /// One of: off, or on.
+ ///
+ [JsonProperty("value")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("value")]
+#endif
+ public string Value { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentMethodConfigurations/PaymentMethodConfigurationMbWay.cs b/src/Stripe.net/Entities/PaymentMethodConfigurations/PaymentMethodConfigurationMbWay.cs
new file mode 100644
index 0000000000..84959fbff3
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentMethodConfigurations/PaymentMethodConfigurationMbWay.cs
@@ -0,0 +1,27 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentMethodConfigurationMbWay : StripeEntity
+ {
+ ///
+ /// Whether this payment method may be offered at checkout. True if
+ /// display_preference is on and the payment method's capability is active.
+ ///
+ [JsonProperty("available")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("available")]
+#endif
+ public bool Available { get; set; }
+
+ [JsonProperty("display_preference")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("display_preference")]
+#endif
+ public PaymentMethodConfigurationMbWayDisplayPreference DisplayPreference { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentMethodConfigurations/PaymentMethodConfigurationMbWayDisplayPreference.cs b/src/Stripe.net/Entities/PaymentMethodConfigurations/PaymentMethodConfigurationMbWayDisplayPreference.cs
new file mode 100644
index 0000000000..825e6fe18b
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentMethodConfigurations/PaymentMethodConfigurationMbWayDisplayPreference.cs
@@ -0,0 +1,41 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentMethodConfigurationMbWayDisplayPreference : StripeEntity
+ {
+ ///
+ /// For child configs, whether or not the account's preference will be observed. If
+ /// false, the parent configuration's default is used.
+ ///
+ [JsonProperty("overridable")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("overridable")]
+#endif
+ public bool? Overridable { get; set; }
+
+ ///
+ /// The account's display preference.
+ /// One of: none, off, or on.
+ ///
+ [JsonProperty("preference")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("preference")]
+#endif
+ public string Preference { get; set; }
+
+ ///
+ /// The effective display preference value.
+ /// One of: off, or on.
+ ///
+ [JsonProperty("value")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("value")]
+#endif
+ public string Value { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentMethods/PaymentMethod.cs b/src/Stripe.net/Entities/PaymentMethods/PaymentMethod.cs
index b837554ce5..629c2b7240 100644
--- a/src/Stripe.net/Entities/PaymentMethods/PaymentMethod.cs
+++ b/src/Stripe.net/Entities/PaymentMethods/PaymentMethod.cs
@@ -168,6 +168,12 @@ public class PaymentMethod : StripeEntity, IHasId, IHasMetadata,
#endif
public PaymentMethodCrypto Crypto { get; set; }
+ [JsonProperty("custom")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("custom")]
+#endif
+ public PaymentMethodCustom Custom { get; set; }
+
#region Expandable Customer
///
@@ -442,14 +448,15 @@ public Customer Customer
/// One of: acss_debit, affirm, afterpay_clearpay, alipay,
/// alma, amazon_pay, au_becs_debit, bacs_debit,
/// bancontact, billie, blik, boleto, card,
- /// card_present, cashapp, crypto, customer_balance, eps,
- /// fpx, giropay, grabpay, ideal, interac_present,
- /// kakao_pay, klarna, konbini, kr_card, link,
- /// mb_way, mobilepay, multibanco, naver_pay,
- /// nz_bank_account, oxxo, p24, pay_by_bank, payco,
- /// paynow, paypal, pix, promptpay, revolut_pay,
- /// samsung_pay, satispay, sepa_debit, sofort, swish,
- /// twint, us_bank_account, wechat_pay, or zip.
+ /// card_present, cashapp, crypto, custom,
+ /// customer_balance, eps, fpx, giropay, grabpay,
+ /// ideal, interac_present, kakao_pay, klarna, konbini,
+ /// kr_card, link, mb_way, mobilepay, multibanco,
+ /// naver_pay, nz_bank_account, oxxo, p24, pay_by_bank,
+ /// payco, paynow, paypal, pix, promptpay,
+ /// revolut_pay, samsung_pay, satispay, sepa_debit,
+ /// sofort, swish, twint, us_bank_account, wechat_pay, or
+ /// zip.
///
[JsonProperty("type")]
#if NET6_0_OR_GREATER
diff --git a/src/Stripe.net/Entities/PaymentMethods/PaymentMethodCustom.cs b/src/Stripe.net/Entities/PaymentMethods/PaymentMethodCustom.cs
new file mode 100644
index 0000000000..72d48d1cd5
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentMethods/PaymentMethodCustom.cs
@@ -0,0 +1,38 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentMethodCustom : StripeEntity
+ {
+ ///
+ /// Display name of the Dashboard-only CustomPaymentMethodType.
+ ///
+ [JsonProperty("display_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("display_name")]
+#endif
+ public string DisplayName { get; set; }
+
+ ///
+ /// Contains information about the Dashboard-only CustomPaymentMethodType logo.
+ ///
+ [JsonProperty("logo")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("logo")]
+#endif
+ public PaymentMethodCustomLogo Logo { get; set; }
+
+ ///
+ /// ID of the Dashboard-only CustomPaymentMethodType. Not expandable.
+ ///
+ [JsonProperty("type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("type")]
+#endif
+ public string Type { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentMethods/PaymentMethodCustomLogo.cs b/src/Stripe.net/Entities/PaymentMethods/PaymentMethodCustomLogo.cs
new file mode 100644
index 0000000000..8d85e1ba94
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentMethods/PaymentMethodCustomLogo.cs
@@ -0,0 +1,29 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentMethodCustomLogo : StripeEntity
+ {
+ ///
+ /// Content type of the Dashboard-only CustomPaymentMethodType logo.
+ ///
+ [JsonProperty("content_type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("content_type")]
+#endif
+ public string ContentType { get; set; }
+
+ ///
+ /// URL of the Dashboard-only CustomPaymentMethodType logo.
+ ///
+ [JsonProperty("url")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("url")]
+#endif
+ public string Url { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecord.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecord.cs
new file mode 100644
index 0000000000..c1d4598b08
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecord.cs
@@ -0,0 +1,207 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using System;
+ using System.Collections.Generic;
+ using Newtonsoft.Json;
+ using Stripe.Infrastructure;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ ///
+ /// A Payment Record is a resource that allows you to represent payments that occur on- or
+ /// off-Stripe. For example, you can create a Payment Record to model a payment made on a
+ /// different payment processor, in order to mark an Invoice as paid and a Subscription as
+ /// active. Payment Records consist of one or more Payment Attempt Records, which represent
+ /// individual attempts made on a payment network.
+ ///
+ public class PaymentRecord : StripeEntity, IHasId, IHasMetadata, IHasObject
+ {
+ ///
+ /// Unique identifier for the object.
+ ///
+ [JsonProperty("id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("id")]
+#endif
+ public string Id { get; set; }
+
+ ///
+ /// String representing the object's type. Objects of the same type share the same value.
+ ///
+ [JsonProperty("object")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("object")]
+#endif
+ public string Object { get; set; }
+
+ ///
+ /// A representation of an amount of money, consisting of an amount and a currency.
+ ///
+ [JsonProperty("amount")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("amount")]
+#endif
+ public PaymentRecordAmount Amount { get; set; }
+
+ ///
+ /// A representation of an amount of money, consisting of an amount and a currency.
+ ///
+ [JsonProperty("amount_authorized")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("amount_authorized")]
+#endif
+ public PaymentRecordAmountAuthorized AmountAuthorized { get; set; }
+
+ ///
+ /// A representation of an amount of money, consisting of an amount and a currency.
+ ///
+ [JsonProperty("amount_canceled")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("amount_canceled")]
+#endif
+ public PaymentRecordAmountCanceled AmountCanceled { get; set; }
+
+ ///
+ /// A representation of an amount of money, consisting of an amount and a currency.
+ ///
+ [JsonProperty("amount_failed")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("amount_failed")]
+#endif
+ public PaymentRecordAmountFailed AmountFailed { get; set; }
+
+ ///
+ /// A representation of an amount of money, consisting of an amount and a currency.
+ ///
+ [JsonProperty("amount_guaranteed")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("amount_guaranteed")]
+#endif
+ public PaymentRecordAmountGuaranteed AmountGuaranteed { get; set; }
+
+ ///
+ /// A representation of an amount of money, consisting of an amount and a currency.
+ ///
+ [JsonProperty("amount_refunded")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("amount_refunded")]
+#endif
+ public PaymentRecordAmountRefunded AmountRefunded { get; set; }
+
+ ///
+ /// A representation of an amount of money, consisting of an amount and a currency.
+ ///
+ [JsonProperty("amount_requested")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("amount_requested")]
+#endif
+ public PaymentRecordAmountRequested AmountRequested { get; set; }
+
+ ///
+ /// ID of the Connect application that created the PaymentRecord.
+ ///
+ [JsonProperty("application")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("application")]
+#endif
+ public string Application { get; set; }
+
+ ///
+ /// Time at which the object was created. Measured in seconds since the Unix epoch.
+ ///
+ [JsonProperty("created")]
+ [JsonConverter(typeof(UnixDateTimeConverter))]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("created")]
+ [STJS.JsonConverter(typeof(STJUnixDateTimeConverter))]
+#endif
+ public DateTime Created { get; set; } = Stripe.Infrastructure.DateTimeUtils.UnixEpoch;
+
+ ///
+ /// Customer information for this payment.
+ ///
+ [JsonProperty("customer_details")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("customer_details")]
+#endif
+ public PaymentRecordCustomerDetails CustomerDetails { get; set; }
+
+ ///
+ /// Indicates whether the customer was present in your checkout flow during this payment.
+ /// One of: off_session, or on_session.
+ ///
+ [JsonProperty("customer_presence")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("customer_presence")]
+#endif
+ public string CustomerPresence { get; set; }
+
+ ///
+ /// An arbitrary string attached to the object. Often useful for displaying to users.
+ ///
+ [JsonProperty("description")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("description")]
+#endif
+ public string Description { get; set; }
+
+ ///
+ /// ID of the latest Payment Attempt Record attached to this Payment Record.
+ ///
+ [JsonProperty("latest_payment_attempt_record")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("latest_payment_attempt_record")]
+#endif
+ public string LatestPaymentAttemptRecord { get; set; }
+
+ ///
+ /// Has the value true if the object exists in live mode or the value false if
+ /// the object exists in test mode.
+ ///
+ [JsonProperty("livemode")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("livemode")]
+#endif
+ public bool Livemode { get; set; }
+
+ ///
+ /// Set of key-value pairs that you can
+ /// attach to an object. This can be useful for storing additional information about the
+ /// object in a structured format.
+ ///
+ [JsonProperty("metadata")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("metadata")]
+#endif
+ public Dictionary Metadata { get; set; }
+
+ ///
+ /// Information about the Payment Method debited for this payment.
+ ///
+ [JsonProperty("payment_method_details")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payment_method_details")]
+#endif
+ public PaymentRecordPaymentMethodDetails PaymentMethodDetails { get; set; }
+
+ ///
+ /// Processor information associated with this payment.
+ ///
+ [JsonProperty("processor_details")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("processor_details")]
+#endif
+ public PaymentRecordProcessorDetails ProcessorDetails { get; set; }
+
+ ///
+ /// Shipping information for this payment.
+ ///
+ [JsonProperty("shipping_details")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("shipping_details")]
+#endif
+ public PaymentRecordShippingDetails ShippingDetails { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordAmount.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordAmount.cs
new file mode 100644
index 0000000000..47e1df7339
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordAmount.cs
@@ -0,0 +1,33 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordAmount : StripeEntity
+ {
+ ///
+ /// Three-letter ISO currency
+ /// code, in lowercase. Must be a supported
+ /// currency.
+ ///
+ [JsonProperty("currency")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("currency")]
+#endif
+ public string Currency { get; set; }
+
+ ///
+ /// A positive integer representing the amount in the currency's minor unit. For example,
+ /// 100 can represent 1 USD or 100 JPY.
+ ///
+ [JsonProperty("value")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("value")]
+#endif
+ public long Value { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordAmountAuthorized.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordAmountAuthorized.cs
new file mode 100644
index 0000000000..31c6e2fc1b
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordAmountAuthorized.cs
@@ -0,0 +1,33 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordAmountAuthorized : StripeEntity
+ {
+ ///
+ /// Three-letter ISO currency
+ /// code, in lowercase. Must be a supported
+ /// currency.
+ ///
+ [JsonProperty("currency")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("currency")]
+#endif
+ public string Currency { get; set; }
+
+ ///
+ /// A positive integer representing the amount in the currency's minor unit. For example,
+ /// 100 can represent 1 USD or 100 JPY.
+ ///
+ [JsonProperty("value")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("value")]
+#endif
+ public long Value { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordAmountCanceled.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordAmountCanceled.cs
new file mode 100644
index 0000000000..9b79530c70
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordAmountCanceled.cs
@@ -0,0 +1,33 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordAmountCanceled : StripeEntity
+ {
+ ///
+ /// Three-letter ISO currency
+ /// code, in lowercase. Must be a supported
+ /// currency.
+ ///
+ [JsonProperty("currency")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("currency")]
+#endif
+ public string Currency { get; set; }
+
+ ///
+ /// A positive integer representing the amount in the currency's minor unit. For example,
+ /// 100 can represent 1 USD or 100 JPY.
+ ///
+ [JsonProperty("value")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("value")]
+#endif
+ public long Value { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordAmountFailed.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordAmountFailed.cs
new file mode 100644
index 0000000000..0fc5c933c3
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordAmountFailed.cs
@@ -0,0 +1,33 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordAmountFailed : StripeEntity
+ {
+ ///
+ /// Three-letter ISO currency
+ /// code, in lowercase. Must be a supported
+ /// currency.
+ ///
+ [JsonProperty("currency")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("currency")]
+#endif
+ public string Currency { get; set; }
+
+ ///
+ /// A positive integer representing the amount in the currency's minor unit. For example,
+ /// 100 can represent 1 USD or 100 JPY.
+ ///
+ [JsonProperty("value")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("value")]
+#endif
+ public long Value { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordAmountGuaranteed.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordAmountGuaranteed.cs
new file mode 100644
index 0000000000..c948b6ec8e
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordAmountGuaranteed.cs
@@ -0,0 +1,33 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordAmountGuaranteed : StripeEntity
+ {
+ ///
+ /// Three-letter ISO currency
+ /// code, in lowercase. Must be a supported
+ /// currency.
+ ///
+ [JsonProperty("currency")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("currency")]
+#endif
+ public string Currency { get; set; }
+
+ ///
+ /// A positive integer representing the amount in the currency's minor unit. For example,
+ /// 100 can represent 1 USD or 100 JPY.
+ ///
+ [JsonProperty("value")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("value")]
+#endif
+ public long Value { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordAmountRefunded.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordAmountRefunded.cs
new file mode 100644
index 0000000000..6bb55bbb0b
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordAmountRefunded.cs
@@ -0,0 +1,33 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordAmountRefunded : StripeEntity
+ {
+ ///
+ /// Three-letter ISO currency
+ /// code, in lowercase. Must be a supported
+ /// currency.
+ ///
+ [JsonProperty("currency")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("currency")]
+#endif
+ public string Currency { get; set; }
+
+ ///
+ /// A positive integer representing the amount in the currency's minor unit. For example,
+ /// 100 can represent 1 USD or 100 JPY.
+ ///
+ [JsonProperty("value")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("value")]
+#endif
+ public long Value { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordAmountRequested.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordAmountRequested.cs
new file mode 100644
index 0000000000..c2aa5b39db
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordAmountRequested.cs
@@ -0,0 +1,33 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordAmountRequested : StripeEntity
+ {
+ ///
+ /// Three-letter ISO currency
+ /// code, in lowercase. Must be a supported
+ /// currency.
+ ///
+ [JsonProperty("currency")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("currency")]
+#endif
+ public string Currency { get; set; }
+
+ ///
+ /// A positive integer representing the amount in the currency's minor unit. For example,
+ /// 100 can represent 1 USD or 100 JPY.
+ ///
+ [JsonProperty("value")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("value")]
+#endif
+ public long Value { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordCustomerDetails.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordCustomerDetails.cs
new file mode 100644
index 0000000000..6bcfa75160
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordCustomerDetails.cs
@@ -0,0 +1,47 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordCustomerDetails : StripeEntity
+ {
+ ///
+ /// ID of the Stripe Customer associated with this payment.
+ ///
+ [JsonProperty("customer")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("customer")]
+#endif
+ public string Customer { get; set; }
+
+ ///
+ /// The customer's email address.
+ ///
+ [JsonProperty("email")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("email")]
+#endif
+ public string Email { get; set; }
+
+ ///
+ /// The customer's name.
+ ///
+ [JsonProperty("name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("name")]
+#endif
+ public string Name { get; set; }
+
+ ///
+ /// The customer's phone number.
+ ///
+ [JsonProperty("phone")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("phone")]
+#endif
+ public string Phone { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetails.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetails.cs
new file mode 100644
index 0000000000..62057a1416
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetails.cs
@@ -0,0 +1,396 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetails : StripeEntity
+ {
+ [JsonProperty("ach_credit_transfer")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("ach_credit_transfer")]
+#endif
+ public PaymentRecordPaymentMethodDetailsAchCreditTransfer AchCreditTransfer { get; set; }
+
+ [JsonProperty("ach_debit")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("ach_debit")]
+#endif
+ public PaymentRecordPaymentMethodDetailsAchDebit AchDebit { get; set; }
+
+ [JsonProperty("acss_debit")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("acss_debit")]
+#endif
+ public PaymentRecordPaymentMethodDetailsAcssDebit AcssDebit { get; set; }
+
+ [JsonProperty("affirm")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("affirm")]
+#endif
+ public PaymentRecordPaymentMethodDetailsAffirm Affirm { get; set; }
+
+ [JsonProperty("afterpay_clearpay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("afterpay_clearpay")]
+#endif
+ public PaymentRecordPaymentMethodDetailsAfterpayClearpay AfterpayClearpay { get; set; }
+
+ [JsonProperty("alipay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("alipay")]
+#endif
+ public PaymentRecordPaymentMethodDetailsAlipay Alipay { get; set; }
+
+ [JsonProperty("alma")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("alma")]
+#endif
+ public PaymentRecordPaymentMethodDetailsAlma Alma { get; set; }
+
+ [JsonProperty("amazon_pay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("amazon_pay")]
+#endif
+ public PaymentRecordPaymentMethodDetailsAmazonPay AmazonPay { get; set; }
+
+ [JsonProperty("au_becs_debit")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("au_becs_debit")]
+#endif
+ public PaymentRecordPaymentMethodDetailsAuBecsDebit AuBecsDebit { get; set; }
+
+ [JsonProperty("bacs_debit")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bacs_debit")]
+#endif
+ public PaymentRecordPaymentMethodDetailsBacsDebit BacsDebit { get; set; }
+
+ [JsonProperty("bancontact")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bancontact")]
+#endif
+ public PaymentRecordPaymentMethodDetailsBancontact Bancontact { get; set; }
+
+ [JsonProperty("billie")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("billie")]
+#endif
+ public PaymentRecordPaymentMethodDetailsBillie Billie { get; set; }
+
+ ///
+ /// The billing details associated with the method of payment.
+ ///
+ [JsonProperty("billing_details")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("billing_details")]
+#endif
+ public PaymentRecordPaymentMethodDetailsBillingDetails BillingDetails { get; set; }
+
+ [JsonProperty("blik")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("blik")]
+#endif
+ public PaymentRecordPaymentMethodDetailsBlik Blik { get; set; }
+
+ [JsonProperty("boleto")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("boleto")]
+#endif
+ public PaymentRecordPaymentMethodDetailsBoleto Boleto { get; set; }
+
+ ///
+ /// Details of the card used for this payment attempt.
+ ///
+ [JsonProperty("card")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("card")]
+#endif
+ public PaymentRecordPaymentMethodDetailsCard Card { get; set; }
+
+ [JsonProperty("card_present")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("card_present")]
+#endif
+ public PaymentRecordPaymentMethodDetailsCardPresent CardPresent { get; set; }
+
+ [JsonProperty("cashapp")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("cashapp")]
+#endif
+ public PaymentRecordPaymentMethodDetailsCashapp Cashapp { get; set; }
+
+ [JsonProperty("crypto")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("crypto")]
+#endif
+ public PaymentRecordPaymentMethodDetailsCrypto Crypto { get; set; }
+
+ ///
+ /// Custom Payment Methods represent Payment Method types not modeled directly in the Stripe
+ /// API. This resource consists of details about the custom payment method used for this
+ /// payment attempt.
+ ///
+ [JsonProperty("custom")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("custom")]
+#endif
+ public PaymentRecordPaymentMethodDetailsCustom Custom { get; set; }
+
+ [JsonProperty("customer_balance")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("customer_balance")]
+#endif
+ public PaymentRecordPaymentMethodDetailsCustomerBalance CustomerBalance { get; set; }
+
+ [JsonProperty("eps")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("eps")]
+#endif
+ public PaymentRecordPaymentMethodDetailsEps Eps { get; set; }
+
+ [JsonProperty("fpx")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("fpx")]
+#endif
+ public PaymentRecordPaymentMethodDetailsFpx Fpx { get; set; }
+
+ [JsonProperty("giropay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("giropay")]
+#endif
+ public PaymentRecordPaymentMethodDetailsGiropay Giropay { get; set; }
+
+ [JsonProperty("grabpay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("grabpay")]
+#endif
+ public PaymentRecordPaymentMethodDetailsGrabpay Grabpay { get; set; }
+
+ [JsonProperty("ideal")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("ideal")]
+#endif
+ public PaymentRecordPaymentMethodDetailsIdeal Ideal { get; set; }
+
+ [JsonProperty("interac_present")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("interac_present")]
+#endif
+ public PaymentRecordPaymentMethodDetailsInteracPresent InteracPresent { get; set; }
+
+ [JsonProperty("kakao_pay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("kakao_pay")]
+#endif
+ public PaymentRecordPaymentMethodDetailsKakaoPay KakaoPay { get; set; }
+
+ [JsonProperty("klarna")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("klarna")]
+#endif
+ public PaymentRecordPaymentMethodDetailsKlarna Klarna { get; set; }
+
+ [JsonProperty("konbini")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("konbini")]
+#endif
+ public PaymentRecordPaymentMethodDetailsKonbini Konbini { get; set; }
+
+ [JsonProperty("kr_card")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("kr_card")]
+#endif
+ public PaymentRecordPaymentMethodDetailsKrCard KrCard { get; set; }
+
+ [JsonProperty("link")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("link")]
+#endif
+ public PaymentRecordPaymentMethodDetailsLink Link { get; set; }
+
+ [JsonProperty("mb_way")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("mb_way")]
+#endif
+ public PaymentRecordPaymentMethodDetailsMbWay MbWay { get; set; }
+
+ [JsonProperty("mobilepay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("mobilepay")]
+#endif
+ public PaymentRecordPaymentMethodDetailsMobilepay Mobilepay { get; set; }
+
+ [JsonProperty("multibanco")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("multibanco")]
+#endif
+ public PaymentRecordPaymentMethodDetailsMultibanco Multibanco { get; set; }
+
+ [JsonProperty("naver_pay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("naver_pay")]
+#endif
+ public PaymentRecordPaymentMethodDetailsNaverPay NaverPay { get; set; }
+
+ [JsonProperty("nz_bank_account")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("nz_bank_account")]
+#endif
+ public PaymentRecordPaymentMethodDetailsNzBankAccount NzBankAccount { get; set; }
+
+ [JsonProperty("oxxo")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("oxxo")]
+#endif
+ public PaymentRecordPaymentMethodDetailsOxxo Oxxo { get; set; }
+
+ [JsonProperty("p24")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("p24")]
+#endif
+ public PaymentRecordPaymentMethodDetailsP24 P24 { get; set; }
+
+ [JsonProperty("pay_by_bank")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("pay_by_bank")]
+#endif
+ public PaymentRecordPaymentMethodDetailsPayByBank PayByBank { get; set; }
+
+ [JsonProperty("payco")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payco")]
+#endif
+ public PaymentRecordPaymentMethodDetailsPayco Payco { get; set; }
+
+ ///
+ /// ID of the Stripe PaymentMethod used to make this payment.
+ ///
+ [JsonProperty("payment_method")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payment_method")]
+#endif
+ public string PaymentMethod { get; set; }
+
+ [JsonProperty("paynow")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("paynow")]
+#endif
+ public PaymentRecordPaymentMethodDetailsPaynow Paynow { get; set; }
+
+ [JsonProperty("paypal")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("paypal")]
+#endif
+ public PaymentRecordPaymentMethodDetailsPaypal Paypal { get; set; }
+
+ [JsonProperty("pix")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("pix")]
+#endif
+ public PaymentRecordPaymentMethodDetailsPix Pix { get; set; }
+
+ [JsonProperty("promptpay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("promptpay")]
+#endif
+ public PaymentRecordPaymentMethodDetailsPromptpay Promptpay { get; set; }
+
+ [JsonProperty("revolut_pay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("revolut_pay")]
+#endif
+ public PaymentRecordPaymentMethodDetailsRevolutPay RevolutPay { get; set; }
+
+ [JsonProperty("samsung_pay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("samsung_pay")]
+#endif
+ public PaymentRecordPaymentMethodDetailsSamsungPay SamsungPay { get; set; }
+
+ [JsonProperty("satispay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("satispay")]
+#endif
+ public PaymentRecordPaymentMethodDetailsSatispay Satispay { get; set; }
+
+ [JsonProperty("sepa_credit_transfer")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("sepa_credit_transfer")]
+#endif
+ public PaymentRecordPaymentMethodDetailsSepaCreditTransfer SepaCreditTransfer { get; set; }
+
+ [JsonProperty("sepa_debit")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("sepa_debit")]
+#endif
+ public PaymentRecordPaymentMethodDetailsSepaDebit SepaDebit { get; set; }
+
+ [JsonProperty("sofort")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("sofort")]
+#endif
+ public PaymentRecordPaymentMethodDetailsSofort Sofort { get; set; }
+
+ [JsonProperty("stripe_account")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("stripe_account")]
+#endif
+ public PaymentRecordPaymentMethodDetailsStripeAccount StripeAccount { get; set; }
+
+ [JsonProperty("swish")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("swish")]
+#endif
+ public PaymentRecordPaymentMethodDetailsSwish Swish { get; set; }
+
+ [JsonProperty("twint")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("twint")]
+#endif
+ public PaymentRecordPaymentMethodDetailsTwint Twint { get; set; }
+
+ ///
+ /// The type of transaction-specific details of the payment method used in the payment. See
+ /// PaymentMethod.type
+ /// for the full list of possible types. An additional hash is included on
+ /// payment_method_details with a name matching this value. It contains information
+ /// specific to the payment method.
+ ///
+ [JsonProperty("type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("type")]
+#endif
+ public string Type { get; set; }
+
+ ///
+ /// Details of the US Bank Account used for this payment attempt.
+ ///
+ [JsonProperty("us_bank_account")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("us_bank_account")]
+#endif
+ public PaymentRecordPaymentMethodDetailsUsBankAccount UsBankAccount { get; set; }
+
+ [JsonProperty("wechat")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("wechat")]
+#endif
+ public PaymentRecordPaymentMethodDetailsWechat Wechat { get; set; }
+
+ [JsonProperty("wechat_pay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("wechat_pay")]
+#endif
+ public PaymentRecordPaymentMethodDetailsWechatPay WechatPay { get; set; }
+
+ [JsonProperty("zip")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("zip")]
+#endif
+ public PaymentRecordPaymentMethodDetailsZip Zip { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAchCreditTransfer.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAchCreditTransfer.cs
new file mode 100644
index 0000000000..99f60b5820
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAchCreditTransfer.cs
@@ -0,0 +1,47 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsAchCreditTransfer : StripeEntity
+ {
+ ///
+ /// Account number to transfer funds to.
+ ///
+ [JsonProperty("account_number")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("account_number")]
+#endif
+ public string AccountNumber { get; set; }
+
+ ///
+ /// Name of the bank associated with the routing number.
+ ///
+ [JsonProperty("bank_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_name")]
+#endif
+ public string BankName { get; set; }
+
+ ///
+ /// Routing transit number for the bank account to transfer funds to.
+ ///
+ [JsonProperty("routing_number")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("routing_number")]
+#endif
+ public string RoutingNumber { get; set; }
+
+ ///
+ /// SWIFT code of the bank associated with the routing number.
+ ///
+ [JsonProperty("swift_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("swift_code")]
+#endif
+ public string SwiftCode { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAchDebit.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAchDebit.cs
new file mode 100644
index 0000000000..efb89567a4
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAchDebit.cs
@@ -0,0 +1,68 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsAchDebit : StripeEntity
+ {
+ ///
+ /// Type of entity that holds the account. This can be either individual or
+ /// company.
+ /// One of: company, or individual.
+ ///
+ [JsonProperty("account_holder_type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("account_holder_type")]
+#endif
+ public string AccountHolderType { get; set; }
+
+ ///
+ /// Name of the bank associated with the bank account.
+ ///
+ [JsonProperty("bank_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_name")]
+#endif
+ public string BankName { get; set; }
+
+ ///
+ /// Two-letter ISO code representing the country the bank account is located in.
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+
+ ///
+ /// Uniquely identifies this particular bank account. You can use this attribute to check
+ /// whether two bank accounts are the same.
+ ///
+ [JsonProperty("fingerprint")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("fingerprint")]
+#endif
+ public string Fingerprint { get; set; }
+
+ ///
+ /// Last four digits of the bank account number.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+
+ ///
+ /// Routing transit number of the bank account.
+ ///
+ [JsonProperty("routing_number")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("routing_number")]
+#endif
+ public string RoutingNumber { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAcssDebit.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAcssDebit.cs
new file mode 100644
index 0000000000..ca434c17bc
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAcssDebit.cs
@@ -0,0 +1,66 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsAcssDebit : StripeEntity
+ {
+ ///
+ /// Name of the bank associated with the bank account.
+ ///
+ [JsonProperty("bank_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_name")]
+#endif
+ public string BankName { get; set; }
+
+ ///
+ /// Uniquely identifies this particular bank account. You can use this attribute to check
+ /// whether two bank accounts are the same.
+ ///
+ [JsonProperty("fingerprint")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("fingerprint")]
+#endif
+ public string Fingerprint { get; set; }
+
+ ///
+ /// Institution number of the bank account.
+ ///
+ [JsonProperty("institution_number")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("institution_number")]
+#endif
+ public string InstitutionNumber { get; set; }
+
+ ///
+ /// Last four digits of the bank account number.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+
+ ///
+ /// ID of the mandate used to make this payment.
+ ///
+ [JsonProperty("mandate")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("mandate")]
+#endif
+ public string Mandate { get; set; }
+
+ ///
+ /// Transit number of the bank account.
+ ///
+ [JsonProperty("transit_number")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transit_number")]
+#endif
+ public string TransitNumber { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAffirm.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAffirm.cs
new file mode 100644
index 0000000000..02deb6c3f6
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAffirm.cs
@@ -0,0 +1,40 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsAffirm : StripeEntity
+ {
+ ///
+ /// ID of the location that
+ /// this transaction's reader is assigned to.
+ ///
+ [JsonProperty("location")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("location")]
+#endif
+ public string Location { get; set; }
+
+ ///
+ /// ID of the reader this
+ /// transaction was made on.
+ ///
+ [JsonProperty("reader")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("reader")]
+#endif
+ public string Reader { get; set; }
+
+ ///
+ /// The Affirm transaction ID associated with this payment.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAfterpayClearpay.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAfterpayClearpay.cs
new file mode 100644
index 0000000000..e1c30446be
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAfterpayClearpay.cs
@@ -0,0 +1,29 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsAfterpayClearpay : StripeEntity
+ {
+ ///
+ /// The Afterpay order ID associated with this payment intent.
+ ///
+ [JsonProperty("order_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("order_id")]
+#endif
+ public string OrderId { get; set; }
+
+ ///
+ /// Order identifier shown to the merchant in Afterpay’s online portal.
+ ///
+ [JsonProperty("reference")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("reference")]
+#endif
+ public string Reference { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAlipay.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAlipay.cs
new file mode 100644
index 0000000000..d08602e53b
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAlipay.cs
@@ -0,0 +1,40 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsAlipay : StripeEntity
+ {
+ ///
+ /// Uniquely identifies this particular Alipay account. You can use this attribute to check
+ /// whether two Alipay accounts are the same.
+ ///
+ [JsonProperty("buyer_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("buyer_id")]
+#endif
+ public string BuyerId { get; set; }
+
+ ///
+ /// Uniquely identifies this particular Alipay account. You can use this attribute to check
+ /// whether two Alipay accounts are the same.
+ ///
+ [JsonProperty("fingerprint")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("fingerprint")]
+#endif
+ public string Fingerprint { get; set; }
+
+ ///
+ /// Transaction ID of this particular Alipay transaction.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAlma.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAlma.cs
new file mode 100644
index 0000000000..d6fbedddbc
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAlma.cs
@@ -0,0 +1,26 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsAlma : StripeEntity
+ {
+ [JsonProperty("installments")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("installments")]
+#endif
+ public PaymentRecordPaymentMethodDetailsAlmaInstallments Installments { get; set; }
+
+ ///
+ /// The Alma transaction ID associated with this payment.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAlmaInstallments.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAlmaInstallments.cs
new file mode 100644
index 0000000000..dd176ab9d4
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAlmaInstallments.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsAlmaInstallments : StripeEntity
+ {
+ ///
+ /// The number of installments.
+ ///
+ [JsonProperty("count")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("count")]
+#endif
+ public long Count { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAmazonPay.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAmazonPay.cs
new file mode 100644
index 0000000000..6e05519df1
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAmazonPay.cs
@@ -0,0 +1,26 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsAmazonPay : StripeEntity
+ {
+ [JsonProperty("funding")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("funding")]
+#endif
+ public PaymentRecordPaymentMethodDetailsAmazonPayFunding Funding { get; set; }
+
+ ///
+ /// The Amazon Pay transaction ID associated with this payment.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAmazonPayFunding.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAmazonPayFunding.cs
new file mode 100644
index 0000000000..c318a8ffe6
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAmazonPayFunding.cs
@@ -0,0 +1,26 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsAmazonPayFunding : StripeEntity
+ {
+ [JsonProperty("card")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("card")]
+#endif
+ public PaymentRecordPaymentMethodDetailsAmazonPayFundingCard Card { get; set; }
+
+ ///
+ /// funding type of the underlying payment method.
+ ///
+ [JsonProperty("type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("type")]
+#endif
+ public string Type { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAmazonPayFundingCard.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAmazonPayFundingCard.cs
new file mode 100644
index 0000000000..5a81878a4e
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAmazonPayFundingCard.cs
@@ -0,0 +1,69 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsAmazonPayFundingCard : StripeEntity
+ {
+ ///
+ /// Card brand. Can be amex, cartes_bancaires, diners, discover,
+ /// eftpos_au, jcb, link, mastercard, unionpay,
+ /// visa or unknown.
+ ///
+ [JsonProperty("brand")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("brand")]
+#endif
+ public string Brand { get; set; }
+
+ ///
+ /// Two-letter ISO code representing the country of the card. You could use this attribute
+ /// to get a sense of the international breakdown of cards you've collected.
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+
+ ///
+ /// Two-digit number representing the card's expiration month.
+ ///
+ [JsonProperty("exp_month")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("exp_month")]
+#endif
+ public long? ExpMonth { get; set; }
+
+ ///
+ /// Four-digit number representing the card's expiration year.
+ ///
+ [JsonProperty("exp_year")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("exp_year")]
+#endif
+ public long? ExpYear { get; set; }
+
+ ///
+ /// Card funding type. Can be credit, debit, prepaid, or
+ /// unknown.
+ ///
+ [JsonProperty("funding")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("funding")]
+#endif
+ public string Funding { get; set; }
+
+ ///
+ /// The last four digits of the card.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAuBecsDebit.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAuBecsDebit.cs
new file mode 100644
index 0000000000..95b26055d9
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsAuBecsDebit.cs
@@ -0,0 +1,48 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsAuBecsDebit : StripeEntity
+ {
+ ///
+ /// Bank-State-Branch number of the bank account.
+ ///
+ [JsonProperty("bsb_number")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bsb_number")]
+#endif
+ public string BsbNumber { get; set; }
+
+ ///
+ /// Uniquely identifies this particular bank account. You can use this attribute to check
+ /// whether two bank accounts are the same.
+ ///
+ [JsonProperty("fingerprint")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("fingerprint")]
+#endif
+ public string Fingerprint { get; set; }
+
+ ///
+ /// Last four digits of the bank account number.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+
+ ///
+ /// ID of the mandate used to make this payment.
+ ///
+ [JsonProperty("mandate")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("mandate")]
+#endif
+ public string Mandate { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsBacsDebit.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsBacsDebit.cs
new file mode 100644
index 0000000000..e54a9497ba
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsBacsDebit.cs
@@ -0,0 +1,48 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsBacsDebit : StripeEntity
+ {
+ ///
+ /// Uniquely identifies this particular bank account. You can use this attribute to check
+ /// whether two bank accounts are the same.
+ ///
+ [JsonProperty("fingerprint")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("fingerprint")]
+#endif
+ public string Fingerprint { get; set; }
+
+ ///
+ /// Last four digits of the bank account number.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+
+ ///
+ /// ID of the mandate used to make this payment.
+ ///
+ [JsonProperty("mandate")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("mandate")]
+#endif
+ public string Mandate { get; set; }
+
+ ///
+ /// Sort code of the bank account. (e.g., 10-20-30).
+ ///
+ [JsonProperty("sort_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("sort_code")]
+#endif
+ public string SortCode { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsBancontact.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsBancontact.cs
new file mode 100644
index 0000000000..cb77ac39d1
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsBancontact.cs
@@ -0,0 +1,154 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+ using Stripe.Infrastructure;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+#if NET6_0_OR_GREATER
+ [STJS.JsonConverter(typeof(STJMemberSerializationOptIn))]
+#endif
+ public class PaymentRecordPaymentMethodDetailsBancontact : StripeEntity
+ {
+ ///
+ /// Bank code of bank associated with the bank account.
+ ///
+ [JsonProperty("bank_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_code")]
+#endif
+ public string BankCode { get; set; }
+
+ ///
+ /// Name of the bank associated with the bank account.
+ ///
+ [JsonProperty("bank_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_name")]
+#endif
+ public string BankName { get; set; }
+
+ ///
+ /// Bank Identifier Code of the bank associated with the bank account.
+ ///
+ [JsonProperty("bic")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bic")]
+#endif
+ public string Bic { get; set; }
+
+ #region Expandable GeneratedSepaDebit
+
+ ///
+ /// (ID of the PaymentMethod)
+ /// The ID of the SEPA Direct Debit PaymentMethod which was generated by this Charge.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public string GeneratedSepaDebitId
+ {
+ get => this.InternalGeneratedSepaDebit?.Id;
+ set => this.InternalGeneratedSepaDebit = SetExpandableFieldId(value, this.InternalGeneratedSepaDebit);
+ }
+
+ ///
+ /// (Expanded)
+ /// The ID of the SEPA Direct Debit PaymentMethod which was generated by this Charge.
+ ///
+ /// For more information, see the expand documentation.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public PaymentMethod GeneratedSepaDebit
+ {
+ get => this.InternalGeneratedSepaDebit?.ExpandedObject;
+ set => this.InternalGeneratedSepaDebit = SetExpandableFieldObject(value, this.InternalGeneratedSepaDebit);
+ }
+
+ [JsonProperty("generated_sepa_debit")]
+ [JsonConverter(typeof(ExpandableFieldConverter))]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("generated_sepa_debit")]
+ [STJS.JsonConverter(typeof(STJExpandableFieldConverter))]
+#endif
+ internal ExpandableField InternalGeneratedSepaDebit { get; set; }
+ #endregion
+
+ #region Expandable GeneratedSepaDebitMandate
+
+ ///
+ /// (ID of the Mandate)
+ /// The mandate for the SEPA Direct Debit PaymentMethod which was generated by this Charge.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public string GeneratedSepaDebitMandateId
+ {
+ get => this.InternalGeneratedSepaDebitMandate?.Id;
+ set => this.InternalGeneratedSepaDebitMandate = SetExpandableFieldId(value, this.InternalGeneratedSepaDebitMandate);
+ }
+
+ ///
+ /// (Expanded)
+ /// The mandate for the SEPA Direct Debit PaymentMethod which was generated by this Charge.
+ ///
+ /// For more information, see the expand documentation.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public Mandate GeneratedSepaDebitMandate
+ {
+ get => this.InternalGeneratedSepaDebitMandate?.ExpandedObject;
+ set => this.InternalGeneratedSepaDebitMandate = SetExpandableFieldObject(value, this.InternalGeneratedSepaDebitMandate);
+ }
+
+ [JsonProperty("generated_sepa_debit_mandate")]
+ [JsonConverter(typeof(ExpandableFieldConverter))]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("generated_sepa_debit_mandate")]
+ [STJS.JsonConverter(typeof(STJExpandableFieldConverter))]
+#endif
+ internal ExpandableField InternalGeneratedSepaDebitMandate { get; set; }
+ #endregion
+
+ ///
+ /// Last four characters of the IBAN.
+ ///
+ [JsonProperty("iban_last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("iban_last4")]
+#endif
+ public string IbanLast4 { get; set; }
+
+ ///
+ /// Preferred language of the Bancontact authorization page that the customer is redirected
+ /// to. Can be one of en, de, fr, or nl.
+ /// One of: de, en, fr, or nl.
+ ///
+ [JsonProperty("preferred_language")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("preferred_language")]
+#endif
+ public string PreferredLanguage { get; set; }
+
+ ///
+ /// Owner's verified full name. Values are verified or provided by Bancontact directly (if
+ /// supported) at the time of authorization or settlement. They cannot be set or mutated.
+ ///
+ [JsonProperty("verified_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("verified_name")]
+#endif
+ public string VerifiedName { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsBillie.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsBillie.cs
new file mode 100644
index 0000000000..32d98156c1
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsBillie.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsBillie : StripeEntity
+ {
+ ///
+ /// The Billie transaction ID associated with this payment.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsBillingDetails.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsBillingDetails.cs
new file mode 100644
index 0000000000..b8fe0a74bf
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsBillingDetails.cs
@@ -0,0 +1,47 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsBillingDetails : StripeEntity
+ {
+ ///
+ /// A representation of a physical address.
+ ///
+ [JsonProperty("address")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("address")]
+#endif
+ public PaymentRecordPaymentMethodDetailsBillingDetailsAddress Address { get; set; }
+
+ ///
+ /// The billing email associated with the method of payment.
+ ///
+ [JsonProperty("email")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("email")]
+#endif
+ public string Email { get; set; }
+
+ ///
+ /// The billing name associated with the method of payment.
+ ///
+ [JsonProperty("name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("name")]
+#endif
+ public string Name { get; set; }
+
+ ///
+ /// The billing phone number associated with the method of payment.
+ ///
+ [JsonProperty("phone")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("phone")]
+#endif
+ public string Phone { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsBillingDetailsAddress.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsBillingDetailsAddress.cs
new file mode 100644
index 0000000000..67e853084c
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsBillingDetailsAddress.cs
@@ -0,0 +1,66 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsBillingDetailsAddress : StripeEntity
+ {
+ ///
+ /// City, district, suburb, town, or village.
+ ///
+ [JsonProperty("city")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("city")]
+#endif
+ public string City { get; set; }
+
+ ///
+ /// Two-letter country code (ISO
+ /// 3166-1 alpha-2).
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+
+ ///
+ /// Address line 1, such as the street, PO Box, or company name.
+ ///
+ [JsonProperty("line1")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("line1")]
+#endif
+ public string Line1 { get; set; }
+
+ ///
+ /// Address line 2, such as the apartment, suite, unit, or building.
+ ///
+ [JsonProperty("line2")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("line2")]
+#endif
+ public string Line2 { get; set; }
+
+ ///
+ /// ZIP or postal code.
+ ///
+ [JsonProperty("postal_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("postal_code")]
+#endif
+ public string PostalCode { get; set; }
+
+ ///
+ /// State, county, province, or region.
+ ///
+ [JsonProperty("state")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("state")]
+#endif
+ public string State { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsBlik.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsBlik.cs
new file mode 100644
index 0000000000..fbfbb8fdcd
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsBlik.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsBlik : StripeEntity
+ {
+ ///
+ /// A unique and immutable identifier assigned by BLIK to every buyer.
+ ///
+ [JsonProperty("buyer_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("buyer_id")]
+#endif
+ public string BuyerId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsBoleto.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsBoleto.cs
new file mode 100644
index 0000000000..d4f4c36823
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsBoleto.cs
@@ -0,0 +1,21 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsBoleto : StripeEntity
+ {
+ ///
+ /// The tax ID of the customer (CPF for individuals consumers or CNPJ for businesses
+ /// consumers).
+ ///
+ [JsonProperty("tax_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("tax_id")]
+#endif
+ public string TaxId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCard.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCard.cs
new file mode 100644
index 0000000000..23835868a7
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCard.cs
@@ -0,0 +1,175 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using System;
+ using Newtonsoft.Json;
+ using Stripe.Infrastructure;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsCard : StripeEntity
+ {
+ ///
+ /// Card brand. Can be amex, cartes_bancaires, diners, discover,
+ /// eftpos_au, jcb, link, mastercard, unionpay,
+ /// visa or unknown.
+ /// One of: amex, cartes_bancaires, diners, discover,
+ /// eftpos_au, interac, jcb, link, mastercard,
+ /// unionpay, unknown, or visa.
+ ///
+ [JsonProperty("brand")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("brand")]
+#endif
+ public string Brand { get; set; }
+
+ ///
+ /// When using manual capture, a future timestamp at which the charge will be automatically
+ /// refunded if uncaptured.
+ ///
+ [JsonProperty("capture_before")]
+ [JsonConverter(typeof(UnixDateTimeConverter))]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("capture_before")]
+ [STJS.JsonConverter(typeof(STJUnixDateTimeConverter))]
+#endif
+ public DateTime CaptureBefore { get; set; } = Stripe.Infrastructure.DateTimeUtils.UnixEpoch;
+
+ ///
+ /// Check results by Card networks on Card address and CVC at time of payment.
+ ///
+ [JsonProperty("checks")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("checks")]
+#endif
+ public PaymentRecordPaymentMethodDetailsCardChecks Checks { get; set; }
+
+ ///
+ /// Two-letter ISO code representing the country of the card. You could use this attribute
+ /// to get a sense of the international breakdown of cards you've collected.
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+
+ ///
+ /// Two-digit number representing the card's expiration month.
+ ///
+ [JsonProperty("exp_month")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("exp_month")]
+#endif
+ public long ExpMonth { get; set; }
+
+ ///
+ /// Four-digit number representing the card's expiration year.
+ ///
+ [JsonProperty("exp_year")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("exp_year")]
+#endif
+ public long ExpYear { get; set; }
+
+ ///
+ /// Uniquely identifies this particular card number. You can use this attribute to check
+ /// whether two customers who’ve signed up with you are using the same card number, for
+ /// example. For payment methods that tokenize card information (Apple Pay, Google Pay), the
+ /// tokenized number might be provided instead of the underlying card number.
+ ///
+ /// As of May 1, 2021, card fingerprint in India for Connect changed to allow two
+ /// fingerprints for the same card---one for India and one for the rest of the world..
+ ///
+ [JsonProperty("fingerprint")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("fingerprint")]
+#endif
+ public string Fingerprint { get; set; }
+
+ ///
+ /// Card funding type. Can be credit, debit, prepaid, or
+ /// unknown.
+ /// One of: credit, debit, prepaid, or unknown.
+ ///
+ [JsonProperty("funding")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("funding")]
+#endif
+ public string Funding { get; set; }
+
+ ///
+ /// The last four digits of the card.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+
+ ///
+ /// True if this payment was marked as MOTO and out of scope for SCA.
+ ///
+ [JsonProperty("moto")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("moto")]
+#endif
+ public bool Moto { get; set; }
+
+ ///
+ /// Identifies which network this charge was processed on. Can be amex,
+ /// cartes_bancaires, diners, discover, eftpos_au,
+ /// interac, jcb, link, mastercard, unionpay,
+ /// visa, or unknown.
+ /// One of: amex, cartes_bancaires, diners, discover,
+ /// eftpos_au, interac, jcb, link, mastercard,
+ /// unionpay, unknown, or visa.
+ ///
+ [JsonProperty("network")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("network")]
+#endif
+ public string Network { get; set; }
+
+ ///
+ /// If this card has network token credentials, this contains the details of the network
+ /// token credentials.
+ ///
+ [JsonProperty("network_token")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("network_token")]
+#endif
+ public PaymentRecordPaymentMethodDetailsCardNetworkToken NetworkToken { get; set; }
+
+ ///
+ /// This is used by the financial networks to identify a transaction. Visa calls this the
+ /// Transaction ID, Mastercard calls this the Trace ID, and American Express calls this the
+ /// Acquirer Reference Data. This value will be present if it is returned by the financial
+ /// network in the authorization response, and null otherwise.
+ ///
+ [JsonProperty("network_transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("network_transaction_id")]
+#endif
+ public string NetworkTransactionId { get; set; }
+
+ ///
+ /// Populated if this transaction used 3D Secure authentication.
+ ///
+ [JsonProperty("three_d_secure")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("three_d_secure")]
+#endif
+ public PaymentRecordPaymentMethodDetailsCardThreeDSecure ThreeDSecure { get; set; }
+
+ ///
+ /// If this Card is part of a card wallet, this contains the details of the card wallet.
+ ///
+ [JsonProperty("wallet")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("wallet")]
+#endif
+ public PaymentRecordPaymentMethodDetailsCardWallet Wallet { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardChecks.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardChecks.cs
new file mode 100644
index 0000000000..27f6964fcf
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardChecks.cs
@@ -0,0 +1,38 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsCardChecks : StripeEntity
+ {
+ ///
+ /// One of: fail, pass, unavailable, or unchecked.
+ ///
+ [JsonProperty("address_line1_check")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("address_line1_check")]
+#endif
+ public string AddressLine1Check { get; set; }
+
+ ///
+ /// One of: fail, pass, unavailable, or unchecked.
+ ///
+ [JsonProperty("address_postal_code_check")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("address_postal_code_check")]
+#endif
+ public string AddressPostalCodeCheck { get; set; }
+
+ ///
+ /// One of: fail, pass, unavailable, or unchecked.
+ ///
+ [JsonProperty("cvc_check")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("cvc_check")]
+#endif
+ public string CvcCheck { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardNetworkToken.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardNetworkToken.cs
new file mode 100644
index 0000000000..7b37b63be6
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardNetworkToken.cs
@@ -0,0 +1,21 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsCardNetworkToken : StripeEntity
+ {
+ ///
+ /// Indicates if Stripe used a network token, either user provided or Stripe managed when
+ /// processing the transaction.
+ ///
+ [JsonProperty("used")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("used")]
+#endif
+ public bool Used { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardPresent.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardPresent.cs
new file mode 100644
index 0000000000..4b8181c73c
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardPresent.cs
@@ -0,0 +1,273 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using System;
+ using System.Collections.Generic;
+ using Newtonsoft.Json;
+ using Stripe.Infrastructure;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsCardPresent : StripeEntity
+ {
+ ///
+ /// The authorized amount.
+ ///
+ [JsonProperty("amount_authorized")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("amount_authorized")]
+#endif
+ public long? AmountAuthorized { get; set; }
+
+ ///
+ /// Card brand. Can be amex, cartes_bancaires, diners, discover,
+ /// eftpos_au, jcb, link, mastercard, unionpay,
+ /// visa or unknown.
+ ///
+ [JsonProperty("brand")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("brand")]
+#endif
+ public string Brand { get; set; }
+
+ ///
+ /// The product code that
+ /// identifies the specific program or product associated with a card.
+ ///
+ [JsonProperty("brand_product")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("brand_product")]
+#endif
+ public string BrandProduct { get; set; }
+
+ ///
+ /// When using manual capture, a future timestamp after which the charge will be
+ /// automatically refunded if uncaptured.
+ ///
+ [JsonProperty("capture_before")]
+ [JsonConverter(typeof(UnixDateTimeConverter))]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("capture_before")]
+ [STJS.JsonConverter(typeof(STJUnixDateTimeConverter))]
+#endif
+ public DateTime CaptureBefore { get; set; } = Stripe.Infrastructure.DateTimeUtils.UnixEpoch;
+
+ ///
+ /// The cardholder name as read from the card, in ISO 7813 format. May include
+ /// alphanumeric characters, special characters and first/last name separator (/). In
+ /// some cases, the cardholder name may not be available depending on how the issuer has
+ /// configured the card. Cardholder name is typically not available on swipe or contactless
+ /// payments, such as those made with Apple Pay and Google Pay.
+ ///
+ [JsonProperty("cardholder_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("cardholder_name")]
+#endif
+ public string CardholderName { get; set; }
+
+ ///
+ /// Two-letter ISO code representing the country of the card. You could use this attribute
+ /// to get a sense of the international breakdown of cards you've collected.
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+
+ ///
+ /// A high-level description of the type of cards issued in this range. (For internal use
+ /// only and not typically available in standard API requests.).
+ ///
+ [JsonProperty("description")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("description")]
+#endif
+ public string Description { get; set; }
+
+ ///
+ /// Authorization response cryptogram.
+ ///
+ [JsonProperty("emv_auth_data")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("emv_auth_data")]
+#endif
+ public string EmvAuthData { get; set; }
+
+ ///
+ /// Two-digit number representing the card's expiration month.
+ ///
+ [JsonProperty("exp_month")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("exp_month")]
+#endif
+ public long ExpMonth { get; set; }
+
+ ///
+ /// Four-digit number representing the card's expiration year.
+ ///
+ [JsonProperty("exp_year")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("exp_year")]
+#endif
+ public long ExpYear { get; set; }
+
+ ///
+ /// Uniquely identifies this particular card number. You can use this attribute to check
+ /// whether two customers who’ve signed up with you are using the same card number, for
+ /// example. For payment methods that tokenize card information (Apple Pay, Google Pay), the
+ /// tokenized number might be provided instead of the underlying card number.
+ ///
+ /// As of May 1, 2021, card fingerprint in India for Connect changed to allow two
+ /// fingerprints for the same card---one for India and one for the rest of the world..
+ ///
+ [JsonProperty("fingerprint")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("fingerprint")]
+#endif
+ public string Fingerprint { get; set; }
+
+ ///
+ /// Card funding type. Can be credit, debit, prepaid, or
+ /// unknown.
+ ///
+ [JsonProperty("funding")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("funding")]
+#endif
+ public string Funding { get; set; }
+
+ ///
+ /// ID of a card PaymentMethod generated from the card_present PaymentMethod that may be
+ /// attached to a Customer for future transactions. Only present if it was possible to
+ /// generate a card PaymentMethod.
+ ///
+ [JsonProperty("generated_card")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("generated_card")]
+#endif
+ public string GeneratedCard { get; set; }
+
+ ///
+ /// Issuer identification number of the card. (For internal use only and not typically
+ /// available in standard API requests.).
+ ///
+ [JsonProperty("iin")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("iin")]
+#endif
+ public string Iin { get; set; }
+
+ ///
+ /// Whether this PaymentIntent is
+ /// eligible for incremental authorizations. Request support using request_incremental_authorization_support.
+ ///
+ [JsonProperty("incremental_authorization_supported")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("incremental_authorization_supported")]
+#endif
+ public bool IncrementalAuthorizationSupported { get; set; }
+
+ ///
+ /// The name of the card's issuing bank. (For internal use only and not typically available
+ /// in standard API requests.).
+ ///
+ [JsonProperty("issuer")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("issuer")]
+#endif
+ public string Issuer { get; set; }
+
+ ///
+ /// The last four digits of the card.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+
+ ///
+ /// Identifies which network this charge was processed on. Can be amex,
+ /// cartes_bancaires, diners, discover, eftpos_au,
+ /// interac, jcb, link, mastercard, unionpay,
+ /// visa, or unknown.
+ ///
+ [JsonProperty("network")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("network")]
+#endif
+ public string Network { get; set; }
+
+ ///
+ /// This is used by the financial networks to identify a transaction. Visa calls this the
+ /// Transaction ID, Mastercard calls this the Trace ID, and American Express calls this the
+ /// Acquirer Reference Data. This value will be present if it is returned by the financial
+ /// network in the authorization response, and null otherwise.
+ ///
+ [JsonProperty("network_transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("network_transaction_id")]
+#endif
+ public string NetworkTransactionId { get; set; }
+
+ ///
+ /// Details about payments collected offline.
+ ///
+ [JsonProperty("offline")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("offline")]
+#endif
+ public PaymentRecordPaymentMethodDetailsCardPresentOffline Offline { get; set; }
+
+ ///
+ /// Defines whether the authorized amount can be over-captured or not.
+ ///
+ [JsonProperty("overcapture_supported")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("overcapture_supported")]
+#endif
+ public bool OvercaptureSupported { get; set; }
+
+ ///
+ /// The languages that the issuing bank recommends using for localizing any customer-facing
+ /// text, as read from the card. Referenced from EMV tag 5F2D, data encoded on the card's
+ /// chip.
+ ///
+ [JsonProperty("preferred_locales")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("preferred_locales")]
+#endif
+ public List PreferredLocales { get; set; }
+
+ ///
+ /// How card details were read in this transaction.
+ /// One of: contact_emv, contactless_emv, contactless_magstripe_mode,
+ /// magnetic_stripe_fallback, or magnetic_stripe_track2.
+ ///
+ [JsonProperty("read_method")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("read_method")]
+#endif
+ public string ReadMethod { get; set; }
+
+ ///
+ /// A collection of fields required to be displayed on receipts. Only required for EMV
+ /// transactions.
+ ///
+ [JsonProperty("receipt")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("receipt")]
+#endif
+ public PaymentRecordPaymentMethodDetailsCardPresentReceipt Receipt { get; set; }
+
+ [JsonProperty("wallet")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("wallet")]
+#endif
+ public PaymentRecordPaymentMethodDetailsCardPresentWallet Wallet { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardPresentOffline.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardPresentOffline.cs
new file mode 100644
index 0000000000..54129ab8cb
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardPresentOffline.cs
@@ -0,0 +1,33 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using System;
+ using Newtonsoft.Json;
+ using Stripe.Infrastructure;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsCardPresentOffline : StripeEntity
+ {
+ ///
+ /// Time at which the payment was collected while offline.
+ ///
+ [JsonProperty("stored_at")]
+ [JsonConverter(typeof(UnixDateTimeConverter))]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("stored_at")]
+ [STJS.JsonConverter(typeof(STJUnixDateTimeConverter))]
+#endif
+ public DateTime? StoredAt { get; set; }
+
+ ///
+ /// The method used to process this payment method offline. Only deferred is allowed.
+ ///
+ [JsonProperty("type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("type")]
+#endif
+ public string Type { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardPresentReceipt.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardPresentReceipt.cs
new file mode 100644
index 0000000000..217d3ca403
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardPresentReceipt.cs
@@ -0,0 +1,102 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsCardPresentReceipt : StripeEntity
+ {
+ ///
+ /// The type of account being debited or credited.
+ /// One of: checking, credit, prepaid, or unknown.
+ ///
+ [JsonProperty("account_type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("account_type")]
+#endif
+ public string AccountType { get; set; }
+
+ ///
+ /// The Application Cryptogram, a unique value generated by the card to authenticate the
+ /// transaction with issuers.
+ ///
+ [JsonProperty("application_cryptogram")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("application_cryptogram")]
+#endif
+ public string ApplicationCryptogram { get; set; }
+
+ ///
+ /// The Application Identifier (AID) on the card used to determine which networks are
+ /// eligible to process the transaction. Referenced from EMV tag 9F12, data encoded on the
+ /// card's chip.
+ ///
+ [JsonProperty("application_preferred_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("application_preferred_name")]
+#endif
+ public string ApplicationPreferredName { get; set; }
+
+ ///
+ /// Identifier for this transaction.
+ ///
+ [JsonProperty("authorization_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("authorization_code")]
+#endif
+ public string AuthorizationCode { get; set; }
+
+ ///
+ /// EMV tag 8A. A code returned by the card issuer.
+ ///
+ [JsonProperty("authorization_response_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("authorization_response_code")]
+#endif
+ public string AuthorizationResponseCode { get; set; }
+
+ ///
+ /// Describes the method used by the cardholder to verify ownership of the card. One of the
+ /// following: approval, failure, none, offline_pin,
+ /// offline_pin_and_signature, online_pin, or signature.
+ ///
+ [JsonProperty("cardholder_verification_method")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("cardholder_verification_method")]
+#endif
+ public string CardholderVerificationMethod { get; set; }
+
+ ///
+ /// Similar to the application_preferred_name, identifying the applications (AIDs) available
+ /// on the card. Referenced from EMV tag 84.
+ ///
+ [JsonProperty("dedicated_file_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("dedicated_file_name")]
+#endif
+ public string DedicatedFileName { get; set; }
+
+ ///
+ /// A 5-byte string that records the checks and validations that occur between the card and
+ /// the terminal. These checks determine how the terminal processes the transaction and what
+ /// risk tolerance is acceptable. Referenced from EMV Tag 95.
+ ///
+ [JsonProperty("terminal_verification_results")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("terminal_verification_results")]
+#endif
+ public string TerminalVerificationResults { get; set; }
+
+ ///
+ /// An indication of which steps were completed during the card read process. Referenced
+ /// from EMV Tag 9B.
+ ///
+ [JsonProperty("transaction_status_information")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_status_information")]
+#endif
+ public string TransactionStatusInformation { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardPresentWallet.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardPresentWallet.cs
new file mode 100644
index 0000000000..7461602906
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardPresentWallet.cs
@@ -0,0 +1,22 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsCardPresentWallet : StripeEntity
+ {
+ ///
+ /// The type of mobile wallet, one of apple_pay, google_pay,
+ /// samsung_pay, or unknown.
+ /// One of: apple_pay, google_pay, samsung_pay, or unknown.
+ ///
+ [JsonProperty("type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("type")]
+#endif
+ public string Type { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardThreeDSecure.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardThreeDSecure.cs
new file mode 100644
index 0000000000..0aaf45b173
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardThreeDSecure.cs
@@ -0,0 +1,49 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsCardThreeDSecure : StripeEntity
+ {
+ ///
+ /// One of: challenge, or frictionless.
+ ///
+ [JsonProperty("authentication_flow")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("authentication_flow")]
+#endif
+ public string AuthenticationFlow { get; set; }
+
+ ///
+ /// One of: attempt_acknowledged, authenticated, exempted,
+ /// failed, not_supported, or processing_error.
+ ///
+ [JsonProperty("result")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("result")]
+#endif
+ public string Result { get; set; }
+
+ ///
+ /// One of: abandoned, bypassed, canceled, card_not_enrolled,
+ /// network_not_supported, protocol_error, or rejected.
+ ///
+ [JsonProperty("result_reason")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("result_reason")]
+#endif
+ public string ResultReason { get; set; }
+
+ ///
+ /// One of: 1.0.2, 2.1.0, or 2.2.0.
+ ///
+ [JsonProperty("version")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("version")]
+#endif
+ public string Version { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardWallet.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardWallet.cs
new file mode 100644
index 0000000000..105f1509ce
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardWallet.cs
@@ -0,0 +1,43 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsCardWallet : StripeEntity
+ {
+ [JsonProperty("apple_pay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("apple_pay")]
+#endif
+ public PaymentRecordPaymentMethodDetailsCardWalletApplePay ApplePay { get; set; }
+
+ ///
+ /// (For tokenized numbers only.) The last four digits of the device account number.
+ ///
+ [JsonProperty("dynamic_last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("dynamic_last4")]
+#endif
+ public string DynamicLast4 { get; set; }
+
+ [JsonProperty("google_pay")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("google_pay")]
+#endif
+ public PaymentRecordPaymentMethodDetailsCardWalletGooglePay GooglePay { get; set; }
+
+ ///
+ /// The type of the card wallet, one of apple_pay or google_pay. An additional
+ /// hash is included on the Wallet subhash with a name matching this value. It contains
+ /// additional information specific to the card wallet type.
+ ///
+ [JsonProperty("type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("type")]
+#endif
+ public string Type { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardWalletApplePay.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardWalletApplePay.cs
new file mode 100644
index 0000000000..e7d049a916
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardWalletApplePay.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsCardWalletApplePay : StripeEntity
+ {
+ ///
+ /// Type of the apple_pay transaction, one of apple_pay or apple_pay_later.
+ ///
+ [JsonProperty("type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("type")]
+#endif
+ public string Type { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardWalletGooglePay.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardWalletGooglePay.cs
new file mode 100644
index 0000000000..9c9488811d
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCardWalletGooglePay.cs
@@ -0,0 +1,7 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ public class PaymentRecordPaymentMethodDetailsCardWalletGooglePay : StripeEntity
+ {
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCashapp.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCashapp.cs
new file mode 100644
index 0000000000..ac41e7ea49
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCashapp.cs
@@ -0,0 +1,38 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsCashapp : StripeEntity
+ {
+ ///
+ /// A unique and immutable identifier assigned by Cash App to every buyer.
+ ///
+ [JsonProperty("buyer_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("buyer_id")]
+#endif
+ public string BuyerId { get; set; }
+
+ ///
+ /// A public identifier for buyers using Cash App.
+ ///
+ [JsonProperty("cashtag")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("cashtag")]
+#endif
+ public string Cashtag { get; set; }
+
+ ///
+ /// A unique and immutable identifier of payments assigned by Cash App.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCrypto.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCrypto.cs
new file mode 100644
index 0000000000..325faf4e61
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCrypto.cs
@@ -0,0 +1,49 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsCrypto : StripeEntity
+ {
+ ///
+ /// The wallet address of the customer.
+ ///
+ [JsonProperty("buyer_address")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("buyer_address")]
+#endif
+ public string BuyerAddress { get; set; }
+
+ ///
+ /// The blockchain network that the transaction was sent on.
+ /// One of: base, ethereum, polygon, or solana.
+ ///
+ [JsonProperty("network")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("network")]
+#endif
+ public string Network { get; set; }
+
+ ///
+ /// The token currency that the transaction was sent with.
+ /// One of: usdc, usdg, or usdp.
+ ///
+ [JsonProperty("token_currency")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("token_currency")]
+#endif
+ public string TokenCurrency { get; set; }
+
+ ///
+ /// The blockchain transaction hash of the crypto payment.
+ ///
+ [JsonProperty("transaction_hash")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_hash")]
+#endif
+ public string TransactionHash { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCustom.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCustom.cs
new file mode 100644
index 0000000000..aa24880e8b
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCustom.cs
@@ -0,0 +1,30 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsCustom : StripeEntity
+ {
+ ///
+ /// Display name for the custom (user-defined) payment method type used to make this
+ /// payment.
+ ///
+ [JsonProperty("display_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("display_name")]
+#endif
+ public string DisplayName { get; set; }
+
+ ///
+ /// The custom payment method type associated with this payment.
+ ///
+ [JsonProperty("type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("type")]
+#endif
+ public string Type { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCustomerBalance.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCustomerBalance.cs
new file mode 100644
index 0000000000..5027cce204
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsCustomerBalance.cs
@@ -0,0 +1,7 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ public class PaymentRecordPaymentMethodDetailsCustomerBalance : StripeEntity
+ {
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsEps.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsEps.cs
new file mode 100644
index 0000000000..01a6ea305d
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsEps.cs
@@ -0,0 +1,57 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsEps : StripeEntity
+ {
+ ///
+ /// The customer's bank. Should be one of arzte_und_apotheker_bank,
+ /// austrian_anadi_bank_ag, bank_austria, bankhaus_carl_spangler,
+ /// bankhaus_schelhammer_und_schattera_ag, bawag_psk_ag, bks_bank_ag,
+ /// brull_kallmus_bank_ag, btv_vier_lander_bank,
+ /// capital_bank_grawe_gruppe_ag, deutsche_bank_ag, dolomitenbank,
+ /// easybank_ag, erste_bank_und_sparkassen,
+ /// hypo_alpeadriabank_international_ag,
+ /// hypo_noe_lb_fur_niederosterreich_u_wien,
+ /// hypo_oberosterreich_salzburg_steiermark, hypo_tirol_bank_ag,
+ /// hypo_vorarlberg_bank_ag, hypo_bank_burgenland_aktiengesellschaft,
+ /// marchfelder_bank, oberbank_ag, raiffeisen_bankengruppe_osterreich,
+ /// schoellerbank_ag, sparda_bank_wien, volksbank_gruppe,
+ /// volkskreditbank_ag, or vr_bank_braunau.
+ /// One of: arzte_und_apotheker_bank, austrian_anadi_bank_ag,
+ /// bank_austria, bankhaus_carl_spangler,
+ /// bankhaus_schelhammer_und_schattera_ag, bawag_psk_ag, bks_bank_ag,
+ /// brull_kallmus_bank_ag, btv_vier_lander_bank,
+ /// capital_bank_grawe_gruppe_ag, deutsche_bank_ag, dolomitenbank,
+ /// easybank_ag, erste_bank_und_sparkassen,
+ /// hypo_alpeadriabank_international_ag,
+ /// hypo_bank_burgenland_aktiengesellschaft,
+ /// hypo_noe_lb_fur_niederosterreich_u_wien,
+ /// hypo_oberosterreich_salzburg_steiermark, hypo_tirol_bank_ag,
+ /// hypo_vorarlberg_bank_ag, marchfelder_bank, oberbank_ag,
+ /// raiffeisen_bankengruppe_osterreich, schoellerbank_ag,
+ /// sparda_bank_wien, volksbank_gruppe, volkskreditbank_ag, or
+ /// vr_bank_braunau.
+ ///
+ [JsonProperty("bank")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank")]
+#endif
+ public string Bank { get; set; }
+
+ ///
+ /// Owner's verified full name. Values are verified or provided by EPS directly (if
+ /// supported) at the time of authorization or settlement. They cannot be set or mutated.
+ /// EPS rarely provides this information so the attribute is usually empty.
+ ///
+ [JsonProperty("verified_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("verified_name")]
+#endif
+ public string VerifiedName { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsFpx.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsFpx.cs
new file mode 100644
index 0000000000..11ebee2469
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsFpx.cs
@@ -0,0 +1,49 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsFpx : StripeEntity
+ {
+ ///
+ /// Account holder type, if provided. Can be one of individual or company.
+ /// One of: company, or individual.
+ ///
+ [JsonProperty("account_holder_type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("account_holder_type")]
+#endif
+ public string AccountHolderType { get; set; }
+
+ ///
+ /// The customer's bank. Can be one of affin_bank, agrobank,
+ /// alliance_bank, ambank, bank_islam, bank_muamalat,
+ /// bank_rakyat, bsn, cimb, hong_leong_bank, hsbc,
+ /// kfh, maybank2u, ocbc, public_bank, rhb,
+ /// standard_chartered, uob, deutsche_bank, maybank2e,
+ /// pb_enterprise, or bank_of_china.
+ /// One of: affin_bank, agrobank, alliance_bank, ambank,
+ /// bank_islam, bank_muamalat, bank_of_china, bank_rakyat,
+ /// bsn, cimb, deutsche_bank, hong_leong_bank, hsbc,
+ /// kfh, maybank2e, maybank2u, ocbc, pb_enterprise,
+ /// public_bank, rhb, standard_chartered, or uob.
+ ///
+ [JsonProperty("bank")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank")]
+#endif
+ public string Bank { get; set; }
+
+ ///
+ /// Unique transaction id generated by FPX for every request from the merchant.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsGiropay.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsGiropay.cs
new file mode 100644
index 0000000000..c2451537eb
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsGiropay.cs
@@ -0,0 +1,49 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsGiropay : StripeEntity
+ {
+ ///
+ /// Bank code of bank associated with the bank account.
+ ///
+ [JsonProperty("bank_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_code")]
+#endif
+ public string BankCode { get; set; }
+
+ ///
+ /// Name of the bank associated with the bank account.
+ ///
+ [JsonProperty("bank_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_name")]
+#endif
+ public string BankName { get; set; }
+
+ ///
+ /// Bank Identifier Code of the bank associated with the bank account.
+ ///
+ [JsonProperty("bic")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bic")]
+#endif
+ public string Bic { get; set; }
+
+ ///
+ /// Owner's verified full name. Values are verified or provided by Giropay directly (if
+ /// supported) at the time of authorization or settlement. They cannot be set or mutated.
+ /// Giropay rarely provides this information so the attribute is usually empty.
+ ///
+ [JsonProperty("verified_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("verified_name")]
+#endif
+ public string VerifiedName { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsGrabpay.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsGrabpay.cs
new file mode 100644
index 0000000000..06dfdefd16
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsGrabpay.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsGrabpay : StripeEntity
+ {
+ ///
+ /// Unique transaction id generated by GrabPay.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsIdeal.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsIdeal.cs
new file mode 100644
index 0000000000..a5a16582b6
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsIdeal.cs
@@ -0,0 +1,145 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+ using Stripe.Infrastructure;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+#if NET6_0_OR_GREATER
+ [STJS.JsonConverter(typeof(STJMemberSerializationOptIn))]
+#endif
+ public class PaymentRecordPaymentMethodDetailsIdeal : StripeEntity
+ {
+ ///
+ /// The customer's bank. Can be one of abn_amro, asn_bank, bunq,
+ /// buut, handelsbanken, ing, knab, moneyou, n26,
+ /// nn, rabobank, regiobank, revolut, sns_bank,
+ /// triodos_bank, van_lanschot, or yoursafe.
+ /// One of: abn_amro, asn_bank, bunq, buut,
+ /// handelsbanken, ing, knab, moneyou, n26, nn,
+ /// rabobank, regiobank, revolut, sns_bank, triodos_bank,
+ /// van_lanschot, or yoursafe.
+ ///
+ [JsonProperty("bank")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank")]
+#endif
+ public string Bank { get; set; }
+
+ ///
+ /// The Bank Identifier Code of the customer's bank.
+ /// One of: ABNANL2A, ASNBNL21, BITSNL2A, BUNQNL2A,
+ /// BUUTNL2A, FVLBNL22, HANDNL2A, INGBNL2A, KNABNL2H,
+ /// MOYONL21, NNBANL2G, NTSBDEB1, RABONL2U, RBRBNL21,
+ /// REVOIE23, REVOLT21, SNSBNL2A, or TRIONL2U.
+ ///
+ [JsonProperty("bic")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bic")]
+#endif
+ public string Bic { get; set; }
+
+ #region Expandable GeneratedSepaDebit
+
+ ///
+ /// (ID of the PaymentMethod)
+ /// The ID of the SEPA Direct Debit PaymentMethod which was generated by this Charge.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public string GeneratedSepaDebitId
+ {
+ get => this.InternalGeneratedSepaDebit?.Id;
+ set => this.InternalGeneratedSepaDebit = SetExpandableFieldId(value, this.InternalGeneratedSepaDebit);
+ }
+
+ ///
+ /// (Expanded)
+ /// The ID of the SEPA Direct Debit PaymentMethod which was generated by this Charge.
+ ///
+ /// For more information, see the expand documentation.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public PaymentMethod GeneratedSepaDebit
+ {
+ get => this.InternalGeneratedSepaDebit?.ExpandedObject;
+ set => this.InternalGeneratedSepaDebit = SetExpandableFieldObject(value, this.InternalGeneratedSepaDebit);
+ }
+
+ [JsonProperty("generated_sepa_debit")]
+ [JsonConverter(typeof(ExpandableFieldConverter))]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("generated_sepa_debit")]
+ [STJS.JsonConverter(typeof(STJExpandableFieldConverter))]
+#endif
+ internal ExpandableField InternalGeneratedSepaDebit { get; set; }
+ #endregion
+
+ #region Expandable GeneratedSepaDebitMandate
+
+ ///
+ /// (ID of the Mandate)
+ /// The mandate for the SEPA Direct Debit PaymentMethod which was generated by this Charge.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public string GeneratedSepaDebitMandateId
+ {
+ get => this.InternalGeneratedSepaDebitMandate?.Id;
+ set => this.InternalGeneratedSepaDebitMandate = SetExpandableFieldId(value, this.InternalGeneratedSepaDebitMandate);
+ }
+
+ ///
+ /// (Expanded)
+ /// The mandate for the SEPA Direct Debit PaymentMethod which was generated by this Charge.
+ ///
+ /// For more information, see the expand documentation.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public Mandate GeneratedSepaDebitMandate
+ {
+ get => this.InternalGeneratedSepaDebitMandate?.ExpandedObject;
+ set => this.InternalGeneratedSepaDebitMandate = SetExpandableFieldObject(value, this.InternalGeneratedSepaDebitMandate);
+ }
+
+ [JsonProperty("generated_sepa_debit_mandate")]
+ [JsonConverter(typeof(ExpandableFieldConverter))]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("generated_sepa_debit_mandate")]
+ [STJS.JsonConverter(typeof(STJExpandableFieldConverter))]
+#endif
+ internal ExpandableField InternalGeneratedSepaDebitMandate { get; set; }
+ #endregion
+
+ ///
+ /// Last four characters of the IBAN.
+ ///
+ [JsonProperty("iban_last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("iban_last4")]
+#endif
+ public string IbanLast4 { get; set; }
+
+ ///
+ /// Owner's verified full name. Values are verified or provided by iDEAL directly (if
+ /// supported) at the time of authorization or settlement. They cannot be set or mutated.
+ ///
+ [JsonProperty("verified_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("verified_name")]
+#endif
+ public string VerifiedName { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsInteracPresent.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsInteracPresent.cs
new file mode 100644
index 0000000000..c64488af7d
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsInteracPresent.cs
@@ -0,0 +1,203 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using System.Collections.Generic;
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsInteracPresent : StripeEntity
+ {
+ ///
+ /// Card brand. Can be interac, mastercard or visa.
+ ///
+ [JsonProperty("brand")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("brand")]
+#endif
+ public string Brand { get; set; }
+
+ ///
+ /// The cardholder name as read from the card, in ISO 7813 format. May include
+ /// alphanumeric characters, special characters and first/last name separator (/). In
+ /// some cases, the cardholder name may not be available depending on how the issuer has
+ /// configured the card. Cardholder name is typically not available on swipe or contactless
+ /// payments, such as those made with Apple Pay and Google Pay.
+ ///
+ [JsonProperty("cardholder_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("cardholder_name")]
+#endif
+ public string CardholderName { get; set; }
+
+ ///
+ /// Two-letter ISO code representing the country of the card. You could use this attribute
+ /// to get a sense of the international breakdown of cards you've collected.
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+
+ ///
+ /// A high-level description of the type of cards issued in this range. (For internal use
+ /// only and not typically available in standard API requests.).
+ ///
+ [JsonProperty("description")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("description")]
+#endif
+ public string Description { get; set; }
+
+ ///
+ /// Authorization response cryptogram.
+ ///
+ [JsonProperty("emv_auth_data")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("emv_auth_data")]
+#endif
+ public string EmvAuthData { get; set; }
+
+ ///
+ /// Two-digit number representing the card's expiration month.
+ ///
+ [JsonProperty("exp_month")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("exp_month")]
+#endif
+ public long ExpMonth { get; set; }
+
+ ///
+ /// Four-digit number representing the card's expiration year.
+ ///
+ [JsonProperty("exp_year")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("exp_year")]
+#endif
+ public long ExpYear { get; set; }
+
+ ///
+ /// Uniquely identifies this particular card number. You can use this attribute to check
+ /// whether two customers who’ve signed up with you are using the same card number, for
+ /// example. For payment methods that tokenize card information (Apple Pay, Google Pay), the
+ /// tokenized number might be provided instead of the underlying card number.
+ ///
+ /// As of May 1, 2021, card fingerprint in India for Connect changed to allow two
+ /// fingerprints for the same card---one for India and one for the rest of the world..
+ ///
+ [JsonProperty("fingerprint")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("fingerprint")]
+#endif
+ public string Fingerprint { get; set; }
+
+ ///
+ /// Card funding type. Can be credit, debit, prepaid, or
+ /// unknown.
+ ///
+ [JsonProperty("funding")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("funding")]
+#endif
+ public string Funding { get; set; }
+
+ ///
+ /// ID of a card PaymentMethod generated from the card_present PaymentMethod that may be
+ /// attached to a Customer for future transactions. Only present if it was possible to
+ /// generate a card PaymentMethod.
+ ///
+ [JsonProperty("generated_card")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("generated_card")]
+#endif
+ public string GeneratedCard { get; set; }
+
+ ///
+ /// Issuer identification number of the card. (For internal use only and not typically
+ /// available in standard API requests.).
+ ///
+ [JsonProperty("iin")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("iin")]
+#endif
+ public string Iin { get; set; }
+
+ ///
+ /// The name of the card's issuing bank. (For internal use only and not typically available
+ /// in standard API requests.).
+ ///
+ [JsonProperty("issuer")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("issuer")]
+#endif
+ public string Issuer { get; set; }
+
+ ///
+ /// The last four digits of the card.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+
+ ///
+ /// Identifies which network this charge was processed on. Can be amex,
+ /// cartes_bancaires, diners, discover, eftpos_au,
+ /// interac, jcb, link, mastercard, unionpay,
+ /// visa, or unknown.
+ ///
+ [JsonProperty("network")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("network")]
+#endif
+ public string Network { get; set; }
+
+ ///
+ /// This is used by the financial networks to identify a transaction. Visa calls this the
+ /// Transaction ID, Mastercard calls this the Trace ID, and American Express calls this the
+ /// Acquirer Reference Data. This value will be present if it is returned by the financial
+ /// network in the authorization response, and null otherwise.
+ ///
+ [JsonProperty("network_transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("network_transaction_id")]
+#endif
+ public string NetworkTransactionId { get; set; }
+
+ ///
+ /// The languages that the issuing bank recommends using for localizing any customer-facing
+ /// text, as read from the card. Referenced from EMV tag 5F2D, data encoded on the card's
+ /// chip.
+ ///
+ [JsonProperty("preferred_locales")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("preferred_locales")]
+#endif
+ public List PreferredLocales { get; set; }
+
+ ///
+ /// How card details were read in this transaction.
+ /// One of: contact_emv, contactless_emv, contactless_magstripe_mode,
+ /// magnetic_stripe_fallback, or magnetic_stripe_track2.
+ ///
+ [JsonProperty("read_method")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("read_method")]
+#endif
+ public string ReadMethod { get; set; }
+
+ ///
+ /// A collection of fields required to be displayed on receipts. Only required for EMV
+ /// transactions.
+ ///
+ [JsonProperty("receipt")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("receipt")]
+#endif
+ public PaymentRecordPaymentMethodDetailsInteracPresentReceipt Receipt { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsInteracPresentReceipt.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsInteracPresentReceipt.cs
new file mode 100644
index 0000000000..17881336e2
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsInteracPresentReceipt.cs
@@ -0,0 +1,102 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsInteracPresentReceipt : StripeEntity
+ {
+ ///
+ /// The type of account being debited or credited.
+ /// One of: checking, savings, or unknown.
+ ///
+ [JsonProperty("account_type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("account_type")]
+#endif
+ public string AccountType { get; set; }
+
+ ///
+ /// The Application Cryptogram, a unique value generated by the card to authenticate the
+ /// transaction with issuers.
+ ///
+ [JsonProperty("application_cryptogram")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("application_cryptogram")]
+#endif
+ public string ApplicationCryptogram { get; set; }
+
+ ///
+ /// The Application Identifier (AID) on the card used to determine which networks are
+ /// eligible to process the transaction. Referenced from EMV tag 9F12, data encoded on the
+ /// card's chip.
+ ///
+ [JsonProperty("application_preferred_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("application_preferred_name")]
+#endif
+ public string ApplicationPreferredName { get; set; }
+
+ ///
+ /// Identifier for this transaction.
+ ///
+ [JsonProperty("authorization_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("authorization_code")]
+#endif
+ public string AuthorizationCode { get; set; }
+
+ ///
+ /// EMV tag 8A. A code returned by the card issuer.
+ ///
+ [JsonProperty("authorization_response_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("authorization_response_code")]
+#endif
+ public string AuthorizationResponseCode { get; set; }
+
+ ///
+ /// Describes the method used by the cardholder to verify ownership of the card. One of the
+ /// following: approval, failure, none, offline_pin,
+ /// offline_pin_and_signature, online_pin, or signature.
+ ///
+ [JsonProperty("cardholder_verification_method")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("cardholder_verification_method")]
+#endif
+ public string CardholderVerificationMethod { get; set; }
+
+ ///
+ /// Similar to the application_preferred_name, identifying the applications (AIDs) available
+ /// on the card. Referenced from EMV tag 84.
+ ///
+ [JsonProperty("dedicated_file_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("dedicated_file_name")]
+#endif
+ public string DedicatedFileName { get; set; }
+
+ ///
+ /// A 5-byte string that records the checks and validations that occur between the card and
+ /// the terminal. These checks determine how the terminal processes the transaction and what
+ /// risk tolerance is acceptable. Referenced from EMV Tag 95.
+ ///
+ [JsonProperty("terminal_verification_results")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("terminal_verification_results")]
+#endif
+ public string TerminalVerificationResults { get; set; }
+
+ ///
+ /// An indication of which steps were completed during the card read process. Referenced
+ /// from EMV Tag 9B.
+ ///
+ [JsonProperty("transaction_status_information")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_status_information")]
+#endif
+ public string TransactionStatusInformation { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsKakaoPay.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsKakaoPay.cs
new file mode 100644
index 0000000000..2df48fe416
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsKakaoPay.cs
@@ -0,0 +1,29 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsKakaoPay : StripeEntity
+ {
+ ///
+ /// A unique identifier for the buyer as determined by the local payment processor.
+ ///
+ [JsonProperty("buyer_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("buyer_id")]
+#endif
+ public string BuyerId { get; set; }
+
+ ///
+ /// The Kakao Pay transaction ID associated with this payment.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsKlarna.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsKlarna.cs
new file mode 100644
index 0000000000..c3e7819abd
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsKlarna.cs
@@ -0,0 +1,47 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsKlarna : StripeEntity
+ {
+ ///
+ /// The payer details for this transaction.
+ ///
+ [JsonProperty("payer_details")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payer_details")]
+#endif
+ public PaymentRecordPaymentMethodDetailsKlarnaPayerDetails PayerDetails { get; set; }
+
+ ///
+ /// The Klarna payment method used for this transaction. Can be one of pay_later,
+ /// pay_now, pay_with_financing, or pay_in_installments.
+ ///
+ [JsonProperty("payment_method_category")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payment_method_category")]
+#endif
+ public string PaymentMethodCategory { get; set; }
+
+ ///
+ /// Preferred language of the Klarna authorization page that the customer is redirected to.
+ /// Can be one of de-AT, en-AT, nl-BE, fr-BE, en-BE,
+ /// de-DE, en-DE, da-DK, en-DK, es-ES, en-ES,
+ /// fi-FI, sv-FI, en-FI, en-GB, en-IE, it-IT,
+ /// en-IT, nl-NL, en-NL, nb-NO, en-NO, sv-SE,
+ /// en-SE, en-US, es-US, fr-FR, en-FR, cs-CZ,
+ /// en-CZ, ro-RO, en-RO, el-GR, en-GR, en-AU,
+ /// en-NZ, en-CA, fr-CA, pl-PL, en-PL, pt-PT,
+ /// en-PT, de-CH, fr-CH, it-CH, or en-CH.
+ ///
+ [JsonProperty("preferred_locale")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("preferred_locale")]
+#endif
+ public string PreferredLocale { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsKlarnaPayerDetails.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsKlarnaPayerDetails.cs
new file mode 100644
index 0000000000..1e8bc70f1b
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsKlarnaPayerDetails.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsKlarnaPayerDetails : StripeEntity
+ {
+ ///
+ /// The payer's address.
+ ///
+ [JsonProperty("address")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("address")]
+#endif
+ public PaymentRecordPaymentMethodDetailsKlarnaPayerDetailsAddress Address { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsKlarnaPayerDetailsAddress.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsKlarnaPayerDetailsAddress.cs
new file mode 100644
index 0000000000..abe5da27c4
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsKlarnaPayerDetailsAddress.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsKlarnaPayerDetailsAddress : StripeEntity
+ {
+ ///
+ /// The payer address country.
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsKonbini.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsKonbini.cs
new file mode 100644
index 0000000000..41d8c7eafa
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsKonbini.cs
@@ -0,0 +1,21 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsKonbini : StripeEntity
+ {
+ ///
+ /// If the payment succeeded, this contains the details of the convenience store where the
+ /// payment was completed.
+ ///
+ [JsonProperty("store")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("store")]
+#endif
+ public PaymentRecordPaymentMethodDetailsKonbiniStore Store { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsKonbiniStore.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsKonbiniStore.cs
new file mode 100644
index 0000000000..56a12701e7
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsKonbiniStore.cs
@@ -0,0 +1,21 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsKonbiniStore : StripeEntity
+ {
+ ///
+ /// The name of the convenience store chain where the payment was completed.
+ /// One of: familymart, lawson, ministop, or seicomart.
+ ///
+ [JsonProperty("chain")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("chain")]
+#endif
+ public string Chain { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsKrCard.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsKrCard.cs
new file mode 100644
index 0000000000..56f934ef11
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsKrCard.cs
@@ -0,0 +1,52 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsKrCard : StripeEntity
+ {
+ ///
+ /// The local credit or debit card brand.
+ /// One of: bc, citi, hana, hyundai, jeju,
+ /// jeonbuk, kakaobank, kbank, kdbbank, kookmin,
+ /// kwangju, lotte, mg, nh, post, samsung,
+ /// savingsbank, shinhan, shinhyup, suhyup, tossbank, or
+ /// woori.
+ ///
+ [JsonProperty("brand")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("brand")]
+#endif
+ public string Brand { get; set; }
+
+ ///
+ /// A unique identifier for the buyer as determined by the local payment processor.
+ ///
+ [JsonProperty("buyer_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("buyer_id")]
+#endif
+ public string BuyerId { get; set; }
+
+ ///
+ /// The last four digits of the card. This may not be present for American Express cards.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+
+ ///
+ /// The Korean Card transaction ID associated with this payment.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsLink.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsLink.cs
new file mode 100644
index 0000000000..e8cebcffa6
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsLink.cs
@@ -0,0 +1,21 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsLink : StripeEntity
+ {
+ ///
+ /// Two-letter ISO code representing the funding source country beneath the Link payment.
+ /// You could use this attribute to get a sense of international fees.
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsMbWay.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsMbWay.cs
new file mode 100644
index 0000000000..0dbc455f6b
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsMbWay.cs
@@ -0,0 +1,7 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ public class PaymentRecordPaymentMethodDetailsMbWay : StripeEntity
+ {
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsMobilepay.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsMobilepay.cs
new file mode 100644
index 0000000000..5ccfedf61a
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsMobilepay.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsMobilepay : StripeEntity
+ {
+ ///
+ /// Internal card details.
+ ///
+ [JsonProperty("card")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("card")]
+#endif
+ public PaymentRecordPaymentMethodDetailsMobilepayCard Card { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsMobilepayCard.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsMobilepayCard.cs
new file mode 100644
index 0000000000..f94f5ddd3a
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsMobilepayCard.cs
@@ -0,0 +1,56 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsMobilepayCard : StripeEntity
+ {
+ ///
+ /// Brand of the card used in the transaction.
+ ///
+ [JsonProperty("brand")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("brand")]
+#endif
+ public string Brand { get; set; }
+
+ ///
+ /// Two-letter ISO code representing the country of the card.
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+
+ ///
+ /// Two digit number representing the card's expiration month.
+ ///
+ [JsonProperty("exp_month")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("exp_month")]
+#endif
+ public long? ExpMonth { get; set; }
+
+ ///
+ /// Two digit number representing the card's expiration year.
+ ///
+ [JsonProperty("exp_year")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("exp_year")]
+#endif
+ public long? ExpYear { get; set; }
+
+ ///
+ /// The last 4 digits of the card.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsMultibanco.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsMultibanco.cs
new file mode 100644
index 0000000000..bd5ca66af3
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsMultibanco.cs
@@ -0,0 +1,29 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsMultibanco : StripeEntity
+ {
+ ///
+ /// Entity number associated with this Multibanco payment.
+ ///
+ [JsonProperty("entity")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("entity")]
+#endif
+ public string Entity { get; set; }
+
+ ///
+ /// Reference number associated with this Multibanco payment.
+ ///
+ [JsonProperty("reference")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("reference")]
+#endif
+ public string Reference { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsNaverPay.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsNaverPay.cs
new file mode 100644
index 0000000000..f0352b1c4e
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsNaverPay.cs
@@ -0,0 +1,29 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsNaverPay : StripeEntity
+ {
+ ///
+ /// A unique identifier for the buyer as determined by the local payment processor.
+ ///
+ [JsonProperty("buyer_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("buyer_id")]
+#endif
+ public string BuyerId { get; set; }
+
+ ///
+ /// The Naver Pay transaction ID associated with this payment.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsNzBankAccount.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsNzBankAccount.cs
new file mode 100644
index 0000000000..0009d3525f
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsNzBankAccount.cs
@@ -0,0 +1,66 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsNzBankAccount : StripeEntity
+ {
+ ///
+ /// The name on the bank account. Only present if the account holder name is different from
+ /// the name of the authorized signatory collected in the PaymentMethod’s billing details.
+ ///
+ [JsonProperty("account_holder_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("account_holder_name")]
+#endif
+ public string AccountHolderName { get; set; }
+
+ ///
+ /// The numeric code for the bank account's bank.
+ ///
+ [JsonProperty("bank_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_code")]
+#endif
+ public string BankCode { get; set; }
+
+ ///
+ /// The name of the bank.
+ ///
+ [JsonProperty("bank_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_name")]
+#endif
+ public string BankName { get; set; }
+
+ ///
+ /// The numeric code for the bank account's bank branch.
+ ///
+ [JsonProperty("branch_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("branch_code")]
+#endif
+ public string BranchCode { get; set; }
+
+ ///
+ /// Last four digits of the bank account number.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+
+ ///
+ /// The suffix of the bank account number.
+ ///
+ [JsonProperty("suffix")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("suffix")]
+#endif
+ public string Suffix { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsOxxo.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsOxxo.cs
new file mode 100644
index 0000000000..582ddb53d7
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsOxxo.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsOxxo : StripeEntity
+ {
+ ///
+ /// OXXO reference number.
+ ///
+ [JsonProperty("number")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("number")]
+#endif
+ public string Number { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsP24.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsP24.cs
new file mode 100644
index 0000000000..99eb947d00
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsP24.cs
@@ -0,0 +1,55 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsP24 : StripeEntity
+ {
+ ///
+ /// The customer's bank. Can be one of ing, citi_handlowy,
+ /// tmobile_usbugi_bankowe, plus_bank, etransfer_pocztowy24,
+ /// banki_spbdzielcze, bank_nowy_bfg_sa, getin_bank, velobank,
+ /// blik, noble_pay, ideabank, envelobank,
+ /// santander_przelew24, nest_przelew, mbank_mtransfer,
+ /// inteligo, pbac_z_ipko, bnp_paribas, credit_agricole,
+ /// toyota_bank, bank_pekao_sa, volkswagen_bank,
+ /// bank_millennium, alior_bank, or boz.
+ /// One of: alior_bank, bank_millennium, bank_nowy_bfg_sa,
+ /// bank_pekao_sa, banki_spbdzielcze, blik, bnp_paribas,
+ /// boz, citi_handlowy, credit_agricole, envelobank,
+ /// etransfer_pocztowy24, getin_bank, ideabank, ing,
+ /// inteligo, mbank_mtransfer, nest_przelew, noble_pay,
+ /// pbac_z_ipko, plus_bank, santander_przelew24,
+ /// tmobile_usbugi_bankowe, toyota_bank, velobank, or
+ /// volkswagen_bank.
+ ///
+ [JsonProperty("bank")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank")]
+#endif
+ public string Bank { get; set; }
+
+ ///
+ /// Unique reference for this Przelewy24 payment.
+ ///
+ [JsonProperty("reference")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("reference")]
+#endif
+ public string Reference { get; set; }
+
+ ///
+ /// Owner's verified full name. Values are verified or provided by Przelewy24 directly (if
+ /// supported) at the time of authorization or settlement. They cannot be set or mutated.
+ /// Przelewy24 rarely provides this information so the attribute is usually empty.
+ ///
+ [JsonProperty("verified_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("verified_name")]
+#endif
+ public string VerifiedName { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsPayByBank.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsPayByBank.cs
new file mode 100644
index 0000000000..570df7ce56
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsPayByBank.cs
@@ -0,0 +1,7 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ public class PaymentRecordPaymentMethodDetailsPayByBank : StripeEntity
+ {
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsPayco.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsPayco.cs
new file mode 100644
index 0000000000..094e6808e2
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsPayco.cs
@@ -0,0 +1,29 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsPayco : StripeEntity
+ {
+ ///
+ /// A unique identifier for the buyer as determined by the local payment processor.
+ ///
+ [JsonProperty("buyer_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("buyer_id")]
+#endif
+ public string BuyerId { get; set; }
+
+ ///
+ /// The Payco transaction ID associated with this payment.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsPaynow.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsPaynow.cs
new file mode 100644
index 0000000000..5ca7d56511
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsPaynow.cs
@@ -0,0 +1,40 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsPaynow : StripeEntity
+ {
+ ///
+ /// ID of the location that
+ /// this transaction's reader is assigned to.
+ ///
+ [JsonProperty("location")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("location")]
+#endif
+ public string Location { get; set; }
+
+ ///
+ /// ID of the reader this
+ /// transaction was made on.
+ ///
+ [JsonProperty("reader")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("reader")]
+#endif
+ public string Reader { get; set; }
+
+ ///
+ /// Reference number associated with this PayNow payment.
+ ///
+ [JsonProperty("reference")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("reference")]
+#endif
+ public string Reference { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsPaypal.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsPaypal.cs
new file mode 100644
index 0000000000..8c83cb87da
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsPaypal.cs
@@ -0,0 +1,70 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsPaypal : StripeEntity
+ {
+ ///
+ /// Two-letter ISO code representing the buyer's country. Values are provided by PayPal
+ /// directly (if supported) at the time of authorization or settlement. They cannot be set
+ /// or mutated.
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+
+ ///
+ /// Owner's email. Values are provided by PayPal directly (if supported) at the time of
+ /// authorization or settlement. They cannot be set or mutated.
+ ///
+ [JsonProperty("payer_email")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payer_email")]
+#endif
+ public string PayerEmail { get; set; }
+
+ ///
+ /// PayPal account PayerID. This identifier uniquely identifies the PayPal customer.
+ ///
+ [JsonProperty("payer_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payer_id")]
+#endif
+ public string PayerId { get; set; }
+
+ ///
+ /// Owner's full name. Values provided by PayPal directly (if supported) at the time of
+ /// authorization or settlement. They cannot be set or mutated.
+ ///
+ [JsonProperty("payer_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("payer_name")]
+#endif
+ public string PayerName { get; set; }
+
+ ///
+ /// The level of protection offered as defined by PayPal Seller Protection for Merchants,
+ /// for this transaction.
+ ///
+ [JsonProperty("seller_protection")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("seller_protection")]
+#endif
+ public PaymentRecordPaymentMethodDetailsPaypalSellerProtection SellerProtection { get; set; }
+
+ ///
+ /// A unique ID generated by PayPal for this transaction.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsPaypalSellerProtection.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsPaypalSellerProtection.cs
new file mode 100644
index 0000000000..0dfe581805
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsPaypalSellerProtection.cs
@@ -0,0 +1,32 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using System.Collections.Generic;
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsPaypalSellerProtection : StripeEntity
+ {
+ ///
+ /// An array of conditions that are covered for the transaction, if applicable.
+ /// One of: fraudulent, or product_not_received.
+ ///
+ [JsonProperty("dispute_categories")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("dispute_categories")]
+#endif
+ public List DisputeCategories { get; set; }
+
+ ///
+ /// Indicates whether the transaction is eligible for PayPal's seller protection.
+ /// One of: eligible, not_eligible, or partially_eligible.
+ ///
+ [JsonProperty("status")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("status")]
+#endif
+ public string Status { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsPix.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsPix.cs
new file mode 100644
index 0000000000..ae77e6eb13
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsPix.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsPix : StripeEntity
+ {
+ ///
+ /// Unique transaction id generated by BCB.
+ ///
+ [JsonProperty("bank_transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_transaction_id")]
+#endif
+ public string BankTransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsPromptpay.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsPromptpay.cs
new file mode 100644
index 0000000000..c6a85f9fbf
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsPromptpay.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsPromptpay : StripeEntity
+ {
+ ///
+ /// Bill reference generated by PromptPay.
+ ///
+ [JsonProperty("reference")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("reference")]
+#endif
+ public string Reference { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsRevolutPay.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsRevolutPay.cs
new file mode 100644
index 0000000000..e3ff12db0b
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsRevolutPay.cs
@@ -0,0 +1,26 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsRevolutPay : StripeEntity
+ {
+ [JsonProperty("funding")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("funding")]
+#endif
+ public PaymentRecordPaymentMethodDetailsRevolutPayFunding Funding { get; set; }
+
+ ///
+ /// The Revolut Pay transaction ID associated with this payment.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsRevolutPayFunding.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsRevolutPayFunding.cs
new file mode 100644
index 0000000000..7705d1cc87
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsRevolutPayFunding.cs
@@ -0,0 +1,26 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsRevolutPayFunding : StripeEntity
+ {
+ [JsonProperty("card")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("card")]
+#endif
+ public PaymentRecordPaymentMethodDetailsRevolutPayFundingCard Card { get; set; }
+
+ ///
+ /// funding type of the underlying payment method.
+ ///
+ [JsonProperty("type")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("type")]
+#endif
+ public string Type { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsRevolutPayFundingCard.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsRevolutPayFundingCard.cs
new file mode 100644
index 0000000000..dd24846028
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsRevolutPayFundingCard.cs
@@ -0,0 +1,69 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsRevolutPayFundingCard : StripeEntity
+ {
+ ///
+ /// Card brand. Can be amex, cartes_bancaires, diners, discover,
+ /// eftpos_au, jcb, link, mastercard, unionpay,
+ /// visa or unknown.
+ ///
+ [JsonProperty("brand")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("brand")]
+#endif
+ public string Brand { get; set; }
+
+ ///
+ /// Two-letter ISO code representing the country of the card. You could use this attribute
+ /// to get a sense of the international breakdown of cards you've collected.
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+
+ ///
+ /// Two-digit number representing the card's expiration month.
+ ///
+ [JsonProperty("exp_month")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("exp_month")]
+#endif
+ public long? ExpMonth { get; set; }
+
+ ///
+ /// Four-digit number representing the card's expiration year.
+ ///
+ [JsonProperty("exp_year")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("exp_year")]
+#endif
+ public long? ExpYear { get; set; }
+
+ ///
+ /// Card funding type. Can be credit, debit, prepaid, or
+ /// unknown.
+ ///
+ [JsonProperty("funding")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("funding")]
+#endif
+ public string Funding { get; set; }
+
+ ///
+ /// The last four digits of the card.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsSamsungPay.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsSamsungPay.cs
new file mode 100644
index 0000000000..4ba0a0d548
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsSamsungPay.cs
@@ -0,0 +1,29 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsSamsungPay : StripeEntity
+ {
+ ///
+ /// A unique identifier for the buyer as determined by the local payment processor.
+ ///
+ [JsonProperty("buyer_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("buyer_id")]
+#endif
+ public string BuyerId { get; set; }
+
+ ///
+ /// The Samsung Pay transaction ID associated with this payment.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsSatispay.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsSatispay.cs
new file mode 100644
index 0000000000..ca7a678e81
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsSatispay.cs
@@ -0,0 +1,20 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsSatispay : StripeEntity
+ {
+ ///
+ /// The Satispay transaction ID associated with this payment.
+ ///
+ [JsonProperty("transaction_id")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("transaction_id")]
+#endif
+ public string TransactionId { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsSepaCreditTransfer.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsSepaCreditTransfer.cs
new file mode 100644
index 0000000000..de7440af4f
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsSepaCreditTransfer.cs
@@ -0,0 +1,38 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsSepaCreditTransfer : StripeEntity
+ {
+ ///
+ /// Name of the bank associated with the bank account.
+ ///
+ [JsonProperty("bank_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_name")]
+#endif
+ public string BankName { get; set; }
+
+ ///
+ /// Bank Identifier Code of the bank associated with the bank account.
+ ///
+ [JsonProperty("bic")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bic")]
+#endif
+ public string Bic { get; set; }
+
+ ///
+ /// IBAN of the bank account to transfer funds to.
+ ///
+ [JsonProperty("iban")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("iban")]
+#endif
+ public string Iban { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsSepaDebit.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsSepaDebit.cs
new file mode 100644
index 0000000000..7d840918de
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsSepaDebit.cs
@@ -0,0 +1,69 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+ public class PaymentRecordPaymentMethodDetailsSepaDebit : StripeEntity
+ {
+ ///
+ /// Bank code of bank associated with the bank account.
+ ///
+ [JsonProperty("bank_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_code")]
+#endif
+ public string BankCode { get; set; }
+
+ ///
+ /// Branch code of bank associated with the bank account.
+ ///
+ [JsonProperty("branch_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("branch_code")]
+#endif
+ public string BranchCode { get; set; }
+
+ ///
+ /// Two-letter ISO code representing the country the bank account is located in.
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+
+ ///
+ /// Uniquely identifies this particular bank account. You can use this attribute to check
+ /// whether two bank accounts are the same.
+ ///
+ [JsonProperty("fingerprint")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("fingerprint")]
+#endif
+ public string Fingerprint { get; set; }
+
+ ///
+ /// Last four characters of the IBAN.
+ ///
+ [JsonProperty("last4")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("last4")]
+#endif
+ public string Last4 { get; set; }
+
+ ///
+ /// Find the ID of the mandate used for this payment under the payment_method_details.sepa_debit.mandate
+ /// property on the Charge. Use this mandate ID to retrieve the Mandate.
+ ///
+ [JsonProperty("mandate")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("mandate")]
+#endif
+ public string Mandate { get; set; }
+ }
+}
diff --git a/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsSofort.cs b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsSofort.cs
new file mode 100644
index 0000000000..98ffccf5e8
--- /dev/null
+++ b/src/Stripe.net/Entities/PaymentRecords/PaymentRecordPaymentMethodDetailsSofort.cs
@@ -0,0 +1,164 @@
+// File generated from our OpenAPI spec
+namespace Stripe
+{
+ using Newtonsoft.Json;
+ using Stripe.Infrastructure;
+#if NET6_0_OR_GREATER
+ using STJS = System.Text.Json.Serialization;
+#endif
+
+#if NET6_0_OR_GREATER
+ [STJS.JsonConverter(typeof(STJMemberSerializationOptIn))]
+#endif
+ public class PaymentRecordPaymentMethodDetailsSofort : StripeEntity
+ {
+ ///
+ /// Bank code of bank associated with the bank account.
+ ///
+ [JsonProperty("bank_code")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_code")]
+#endif
+ public string BankCode { get; set; }
+
+ ///
+ /// Name of the bank associated with the bank account.
+ ///
+ [JsonProperty("bank_name")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bank_name")]
+#endif
+ public string BankName { get; set; }
+
+ ///
+ /// Bank Identifier Code of the bank associated with the bank account.
+ ///
+ [JsonProperty("bic")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("bic")]
+#endif
+ public string Bic { get; set; }
+
+ ///
+ /// Two-letter ISO code representing the country the bank account is located in.
+ ///
+ [JsonProperty("country")]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("country")]
+#endif
+ public string Country { get; set; }
+
+ #region Expandable GeneratedSepaDebit
+
+ ///
+ /// (ID of the PaymentMethod)
+ /// The ID of the SEPA Direct Debit PaymentMethod which was generated by this Charge.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public string GeneratedSepaDebitId
+ {
+ get => this.InternalGeneratedSepaDebit?.Id;
+ set => this.InternalGeneratedSepaDebit = SetExpandableFieldId(value, this.InternalGeneratedSepaDebit);
+ }
+
+ ///
+ /// (Expanded)
+ /// The ID of the SEPA Direct Debit PaymentMethod which was generated by this Charge.
+ ///
+ /// For more information, see the expand documentation.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public PaymentMethod GeneratedSepaDebit
+ {
+ get => this.InternalGeneratedSepaDebit?.ExpandedObject;
+ set => this.InternalGeneratedSepaDebit = SetExpandableFieldObject(value, this.InternalGeneratedSepaDebit);
+ }
+
+ [JsonProperty("generated_sepa_debit")]
+ [JsonConverter(typeof(ExpandableFieldConverter))]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("generated_sepa_debit")]
+ [STJS.JsonConverter(typeof(STJExpandableFieldConverter))]
+#endif
+ internal ExpandableField InternalGeneratedSepaDebit { get; set; }
+ #endregion
+
+ #region Expandable GeneratedSepaDebitMandate
+
+ ///
+ /// (ID of the Mandate)
+ /// The mandate for the SEPA Direct Debit PaymentMethod which was generated by this Charge.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public string GeneratedSepaDebitMandateId
+ {
+ get => this.InternalGeneratedSepaDebitMandate?.Id;
+ set => this.InternalGeneratedSepaDebitMandate = SetExpandableFieldId(value, this.InternalGeneratedSepaDebitMandate);
+ }
+
+ ///
+ /// (Expanded)
+ /// The mandate for the SEPA Direct Debit PaymentMethod which was generated by this Charge.
+ ///
+ /// For more information, see the expand documentation.
+ ///
+ [JsonIgnore]
+#if NET6_0_OR_GREATER
+ [STJS.JsonIgnore]
+#endif
+ public Mandate GeneratedSepaDebitMandate
+ {
+ get => this.InternalGeneratedSepaDebitMandate?.ExpandedObject;
+ set => this.InternalGeneratedSepaDebitMandate = SetExpandableFieldObject(value, this.InternalGeneratedSepaDebitMandate);
+ }
+
+ [JsonProperty("generated_sepa_debit_mandate")]
+ [JsonConverter(typeof(ExpandableFieldConverter))]
+#if NET6_0_OR_GREATER
+ [STJS.JsonPropertyName("generated_sepa_debit_mandate")]
+ [STJS.JsonConverter(typeof(STJExpandableFieldConverter))]
+#endif
+ internal ExpandableField