All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.stripe.model.Charge Maven / Gradle / Ivy

// File generated from our OpenAPI spec
package com.stripe.model;

import com.google.gson.annotations.SerializedName;
import com.stripe.exception.StripeException;
import com.stripe.net.ApiMode;
import com.stripe.net.ApiRequest;
import com.stripe.net.ApiRequestParams;
import com.stripe.net.ApiResource;
import com.stripe.net.BaseAddress;
import com.stripe.net.RequestOptions;
import com.stripe.net.StripeResponseGetter;
import com.stripe.param.ChargeCaptureParams;
import com.stripe.param.ChargeCreateParams;
import com.stripe.param.ChargeListParams;
import com.stripe.param.ChargeRetrieveParams;
import com.stripe.param.ChargeSearchParams;
import com.stripe.param.ChargeUpdateParams;
import java.util.List;
import java.util.Map;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;

/**
 * The {@code Charge} object represents a single attempt to move money into your Stripe account.
 * PaymentIntent confirmation is the most common way to create Charges, but transferring money to a
 * different Stripe account through Connect also creates Charges. Some legacy payment flows create
 * Charges directly, which is not recommended for new integrations.
 */
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public class Charge extends ApiResource implements MetadataStore, BalanceTransactionSource {
  /**
   * Amount intended to be collected by this payment. A positive integer representing how much to
   * charge in the smallest currency
   * unit (e.g., 100 cents to charge $1.00 or 100 to charge ¥100, a zero-decimal currency). The
   * minimum amount is $0.50 US or equivalent in
   * charge currency. The amount value supports up to eight digits (e.g., a value of 99999999
   * for a USD charge of $999,999.99).
   */
  @SerializedName("amount")
  Long amount;

  /**
   * Amount in cents (or local equivalent) captured (can be less than the amount attribute on the
   * charge if a partial capture was made).
   */
  @SerializedName("amount_captured")
  Long amountCaptured;

  /**
   * Amount in cents (or local equivalent) refunded (can be less than the amount attribute on the
   * charge if a partial refund was issued).
   */
  @SerializedName("amount_refunded")
  Long amountRefunded;

  /** ID of the Connect application that created the charge. */
  @SerializedName("application")
  @Getter(lombok.AccessLevel.NONE)
  @Setter(lombok.AccessLevel.NONE)
  ExpandableField application;

  /**
   * The application fee (if any) for the charge. See the Connect
   * documentation for details.
   */
  @SerializedName("application_fee")
  @Getter(lombok.AccessLevel.NONE)
  @Setter(lombok.AccessLevel.NONE)
  ExpandableField applicationFee;

  /**
   * The amount of the application fee (if any) requested for the charge. See the Connect
   * documentation for details.
   */
  @SerializedName("application_fee_amount")
  Long applicationFeeAmount;

  /** Authorization code on the charge. */
  @SerializedName("authorization_code")
  String authorizationCode;

  /**
   * ID of the balance transaction that describes the impact of this charge on your account balance
   * (not including refunds or disputes).
   */
  @SerializedName("balance_transaction")
  @Getter(lombok.AccessLevel.NONE)
  @Setter(lombok.AccessLevel.NONE)
  ExpandableField balanceTransaction;

  @SerializedName("billing_details")
  BillingDetails billingDetails;

  /**
   * The full statement descriptor that is passed to card networks, and that is displayed on your
   * customers' credit card and bank statements. Allows you to see what the statement descriptor
   * looks like after the static and dynamic portions are combined.
   */
  @SerializedName("calculated_statement_descriptor")
  String calculatedStatementDescriptor;

  /**
   * If the charge was created without capturing, this Boolean represents whether it is still
   * uncaptured or has since been captured.
   */
  @SerializedName("captured")
  Boolean captured;

  /** Time at which the object was created. Measured in seconds since the Unix epoch. */
  @SerializedName("created")
  Long created;

  /**
   * Three-letter ISO currency code,
   * in lowercase. Must be a supported currency.
   */
  @SerializedName("currency")
  String currency;

  /** ID of the customer this charge is for if one exists. */
  @SerializedName("customer")
  @Getter(lombok.AccessLevel.NONE)
  @Setter(lombok.AccessLevel.NONE)
  ExpandableField customer;

  /** An arbitrary string attached to the object. Often useful for displaying to users. */
  @SerializedName("description")
  String description;

  /** Whether the charge has been disputed. */
  @SerializedName("disputed")
  Boolean disputed;

  /**
   * ID of the balance transaction that describes the reversal of the balance on your account due to
   * payment failure.
   */
  @SerializedName("failure_balance_transaction")
  @Getter(lombok.AccessLevel.NONE)
  @Setter(lombok.AccessLevel.NONE)
  ExpandableField failureBalanceTransaction;

  /**
   * Error code explaining reason for charge failure if available (see the errors section for a list of codes).
   */
  @SerializedName("failure_code")
  String failureCode;

  /** Message to user further explaining reason for charge failure if available. */
  @SerializedName("failure_message")
  String failureMessage;

  /** Information on fraud assessments for the charge. */
  @SerializedName("fraud_details")
  FraudDetails fraudDetails;

  /** Unique identifier for the object. */
  @Getter(onMethod_ = {@Override})
  @SerializedName("id")
  String id;

  /** ID of the invoice this charge is for if one exists. */
  @SerializedName("invoice")
  @Getter(lombok.AccessLevel.NONE)
  @Setter(lombok.AccessLevel.NONE)
  ExpandableField invoice;

  @SerializedName("level3")
  Level3 level3;

  /**
   * Has the value {@code true} if the object exists in live mode or the value {@code false} if the
   * object exists in test mode.
   */
  @SerializedName("livemode")
  Boolean livemode;

  /**
   * 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.
   */
  @Getter(onMethod_ = {@Override})
  @SerializedName("metadata")
  Map metadata;

  /**
   * String representing the object's type. Objects of the same type share the same value.
   *
   * 

Equal to {@code charge}. */ @SerializedName("object") String object; /** * The account (if any) the charge was made on behalf of without triggering an automatic transfer. * See the Connect * documentation for details. */ @SerializedName("on_behalf_of") @Getter(lombok.AccessLevel.NONE) @Setter(lombok.AccessLevel.NONE) ExpandableField onBehalfOf; /** * Details about whether the payment was accepted, and why. See understanding declines for details. */ @SerializedName("outcome") Outcome outcome; /** {@code true} if the charge succeeded, or was successfully authorized for later capture. */ @SerializedName("paid") Boolean paid; /** ID of the PaymentIntent associated with this charge, if one exists. */ @SerializedName("payment_intent") @Getter(lombok.AccessLevel.NONE) @Setter(lombok.AccessLevel.NONE) ExpandableField paymentIntent; /** ID of the payment method used in this charge. */ @SerializedName("payment_method") String paymentMethod; /** Details about the payment method at the time of the transaction. */ @SerializedName("payment_method_details") PaymentMethodDetails paymentMethodDetails; /** * Options to configure Radar. See Radar * Session for more information. */ @SerializedName("radar_options") RadarOptions radarOptions; /** This is the email address that the receipt for this charge was sent to. */ @SerializedName("receipt_email") String receiptEmail; /** * This is the transaction number that appears on email receipts sent for this charge. This * attribute will be {@code null} until a receipt has been sent. */ @SerializedName("receipt_number") String receiptNumber; /** * This is the URL to view the receipt for this charge. The receipt is kept up-to-date to the * latest state of the charge, including any refunds. If the charge is for an Invoice, the receipt * will be stylized as an Invoice receipt. */ @SerializedName("receipt_url") String receiptUrl; /** * Whether the charge has been fully refunded. If the charge is only partially refunded, this * attribute will still be false. */ @SerializedName("refunded") Boolean refunded; /** A list of refunds that have been applied to the charge. */ @SerializedName("refunds") RefundCollection refunds; /** ID of the review associated with this charge if one exists. */ @SerializedName("review") @Getter(lombok.AccessLevel.NONE) @Setter(lombok.AccessLevel.NONE) ExpandableField review; /** Shipping information for the charge. */ @SerializedName("shipping") ShippingDetails shipping; /** * This is a legacy field that will be removed in the future. It contains the Source, Card, or * BankAccount object used for the charge. For details about the payment method used for this * charge, refer to {@code payment_method} or {@code payment_method_details} instead. */ @SerializedName("source") PaymentSource source; /** * The transfer ID which created this charge. Only present if the charge came from another Stripe * account. See the Connect * documentation for details. */ @SerializedName("source_transfer") @Getter(lombok.AccessLevel.NONE) @Setter(lombok.AccessLevel.NONE) ExpandableField sourceTransfer; /** * For card charges, use {@code statement_descriptor_suffix} instead. Otherwise, you can use this * value as the complete description of a charge on your customers’ statements. Must contain at * least one letter, maximum 22 characters. */ @SerializedName("statement_descriptor") String statementDescriptor; /** * Provides information about the charge that customers see on their statements. Concatenated with * the prefix (shortened descriptor) or statement descriptor that’s set on the account to form the * complete statement descriptor. Maximum 22 characters for the concatenated descriptor. */ @SerializedName("statement_descriptor_suffix") String statementDescriptorSuffix; /** * The status of the payment is either {@code succeeded}, {@code pending}, or {@code failed}. * *

One of {@code failed}, {@code pending}, or {@code succeeded}. */ @SerializedName("status") String status; /** * ID of the transfer to the {@code destination} account (only applicable if the charge was * created using the {@code destination} parameter). */ @SerializedName("transfer") @Getter(lombok.AccessLevel.NONE) @Setter(lombok.AccessLevel.NONE) ExpandableField transfer; /** * An optional dictionary including the account to automatically transfer to as part of a * destination charge. See the * Connect documentation for details. */ @SerializedName("transfer_data") TransferData transferData; /** * A string that identifies this transaction as part of a group. See the Connect * documentation for details. */ @SerializedName("transfer_group") String transferGroup; /** Get ID of expandable {@code application} object. */ public String getApplication() { return (this.application != null) ? this.application.getId() : null; } public void setApplication(String id) { this.application = ApiResource.setExpandableFieldId(id, this.application); } /** Get expanded {@code application}. */ public Application getApplicationObject() { return (this.application != null) ? this.application.getExpanded() : null; } public void setApplicationObject(Application expandableObject) { this.application = new ExpandableField(expandableObject.getId(), expandableObject); } /** Get ID of expandable {@code applicationFee} object. */ public String getApplicationFee() { return (this.applicationFee != null) ? this.applicationFee.getId() : null; } public void setApplicationFee(String id) { this.applicationFee = ApiResource.setExpandableFieldId(id, this.applicationFee); } /** Get expanded {@code applicationFee}. */ public ApplicationFee getApplicationFeeObject() { return (this.applicationFee != null) ? this.applicationFee.getExpanded() : null; } public void setApplicationFeeObject(ApplicationFee expandableObject) { this.applicationFee = new ExpandableField(expandableObject.getId(), expandableObject); } /** Get ID of expandable {@code balanceTransaction} object. */ public String getBalanceTransaction() { return (this.balanceTransaction != null) ? this.balanceTransaction.getId() : null; } public void setBalanceTransaction(String id) { this.balanceTransaction = ApiResource.setExpandableFieldId(id, this.balanceTransaction); } /** Get expanded {@code balanceTransaction}. */ public BalanceTransaction getBalanceTransactionObject() { return (this.balanceTransaction != null) ? this.balanceTransaction.getExpanded() : null; } public void setBalanceTransactionObject(BalanceTransaction expandableObject) { this.balanceTransaction = new ExpandableField(expandableObject.getId(), expandableObject); } /** Get ID of expandable {@code customer} object. */ public String getCustomer() { return (this.customer != null) ? this.customer.getId() : null; } public void setCustomer(String id) { this.customer = ApiResource.setExpandableFieldId(id, this.customer); } /** Get expanded {@code customer}. */ public Customer getCustomerObject() { return (this.customer != null) ? this.customer.getExpanded() : null; } public void setCustomerObject(Customer expandableObject) { this.customer = new ExpandableField(expandableObject.getId(), expandableObject); } /** Get ID of expandable {@code failureBalanceTransaction} object. */ public String getFailureBalanceTransaction() { return (this.failureBalanceTransaction != null) ? this.failureBalanceTransaction.getId() : null; } public void setFailureBalanceTransaction(String id) { this.failureBalanceTransaction = ApiResource.setExpandableFieldId(id, this.failureBalanceTransaction); } /** Get expanded {@code failureBalanceTransaction}. */ public BalanceTransaction getFailureBalanceTransactionObject() { return (this.failureBalanceTransaction != null) ? this.failureBalanceTransaction.getExpanded() : null; } public void setFailureBalanceTransactionObject(BalanceTransaction expandableObject) { this.failureBalanceTransaction = new ExpandableField(expandableObject.getId(), expandableObject); } /** Get ID of expandable {@code invoice} object. */ public String getInvoice() { return (this.invoice != null) ? this.invoice.getId() : null; } public void setInvoice(String id) { this.invoice = ApiResource.setExpandableFieldId(id, this.invoice); } /** Get expanded {@code invoice}. */ public Invoice getInvoiceObject() { return (this.invoice != null) ? this.invoice.getExpanded() : null; } public void setInvoiceObject(Invoice expandableObject) { this.invoice = new ExpandableField(expandableObject.getId(), expandableObject); } /** Get ID of expandable {@code onBehalfOf} object. */ public String getOnBehalfOf() { return (this.onBehalfOf != null) ? this.onBehalfOf.getId() : null; } public void setOnBehalfOf(String id) { this.onBehalfOf = ApiResource.setExpandableFieldId(id, this.onBehalfOf); } /** Get expanded {@code onBehalfOf}. */ public Account getOnBehalfOfObject() { return (this.onBehalfOf != null) ? this.onBehalfOf.getExpanded() : null; } public void setOnBehalfOfObject(Account expandableObject) { this.onBehalfOf = new ExpandableField(expandableObject.getId(), expandableObject); } /** Get ID of expandable {@code paymentIntent} object. */ public String getPaymentIntent() { return (this.paymentIntent != null) ? this.paymentIntent.getId() : null; } public void setPaymentIntent(String id) { this.paymentIntent = ApiResource.setExpandableFieldId(id, this.paymentIntent); } /** Get expanded {@code paymentIntent}. */ public PaymentIntent getPaymentIntentObject() { return (this.paymentIntent != null) ? this.paymentIntent.getExpanded() : null; } public void setPaymentIntentObject(PaymentIntent expandableObject) { this.paymentIntent = new ExpandableField(expandableObject.getId(), expandableObject); } /** Get ID of expandable {@code review} object. */ public String getReview() { return (this.review != null) ? this.review.getId() : null; } public void setReview(String id) { this.review = ApiResource.setExpandableFieldId(id, this.review); } /** Get expanded {@code review}. */ public Review getReviewObject() { return (this.review != null) ? this.review.getExpanded() : null; } public void setReviewObject(Review expandableObject) { this.review = new ExpandableField(expandableObject.getId(), expandableObject); } /** Get ID of expandable {@code sourceTransfer} object. */ public String getSourceTransfer() { return (this.sourceTransfer != null) ? this.sourceTransfer.getId() : null; } public void setSourceTransfer(String id) { this.sourceTransfer = ApiResource.setExpandableFieldId(id, this.sourceTransfer); } /** Get expanded {@code sourceTransfer}. */ public Transfer getSourceTransferObject() { return (this.sourceTransfer != null) ? this.sourceTransfer.getExpanded() : null; } public void setSourceTransferObject(Transfer expandableObject) { this.sourceTransfer = new ExpandableField(expandableObject.getId(), expandableObject); } /** Get ID of expandable {@code transfer} object. */ public String getTransfer() { return (this.transfer != null) ? this.transfer.getId() : null; } public void setTransfer(String id) { this.transfer = ApiResource.setExpandableFieldId(id, this.transfer); } /** Get expanded {@code transfer}. */ public Transfer getTransferObject() { return (this.transfer != null) ? this.transfer.getExpanded() : null; } public void setTransferObject(Transfer expandableObject) { this.transfer = new ExpandableField(expandableObject.getId(), expandableObject); } /** * Capture the payment of an existing, uncaptured charge that was created with the {@code capture} * option set to false. * *

Uncaptured payments expire a set number of days after they are created (7 by default), after which they are * marked as refunded and capture attempts will fail. * *

Don’t use this method to capture a PaymentIntent-initiated charge. Use Capture a PaymentIntent. */ public Charge capture() throws StripeException { return capture((Map) null, (RequestOptions) null); } /** * Capture the payment of an existing, uncaptured charge that was created with the {@code capture} * option set to false. * *

Uncaptured payments expire a set number of days after they are created (7 by default), after which they are * marked as refunded and capture attempts will fail. * *

Don’t use this method to capture a PaymentIntent-initiated charge. Use Capture a PaymentIntent. */ public Charge capture(RequestOptions options) throws StripeException { return capture((Map) null, options); } /** * Capture the payment of an existing, uncaptured charge that was created with the {@code capture} * option set to false. * *

Uncaptured payments expire a set number of days after they are created (7 by default), after which they are * marked as refunded and capture attempts will fail. * *

Don’t use this method to capture a PaymentIntent-initiated charge. Use Capture a PaymentIntent. */ public Charge capture(Map params) throws StripeException { return capture(params, (RequestOptions) null); } /** * Capture the payment of an existing, uncaptured charge that was created with the {@code capture} * option set to false. * *

Uncaptured payments expire a set number of days after they are created (7 by default), after which they are * marked as refunded and capture attempts will fail. * *

Don’t use this method to capture a PaymentIntent-initiated charge. Use Capture a PaymentIntent. */ public Charge capture(Map params, RequestOptions options) throws StripeException { String path = String.format("/v1/charges/%s/capture", ApiResource.urlEncodeId(this.getId())); ApiRequest request = new ApiRequest( BaseAddress.API, ApiResource.RequestMethod.POST, path, params, options, ApiMode.V1); return getResponseGetter().request(request, Charge.class); } /** * Capture the payment of an existing, uncaptured charge that was created with the {@code capture} * option set to false. * *

Uncaptured payments expire a set number of days after they are created (7 by default), after which they are * marked as refunded and capture attempts will fail. * *

Don’t use this method to capture a PaymentIntent-initiated charge. Use Capture a PaymentIntent. */ public Charge capture(ChargeCaptureParams params) throws StripeException { return capture(params, (RequestOptions) null); } /** * Capture the payment of an existing, uncaptured charge that was created with the {@code capture} * option set to false. * *

Uncaptured payments expire a set number of days after they are created (7 by default), after which they are * marked as refunded and capture attempts will fail. * *

Don’t use this method to capture a PaymentIntent-initiated charge. Use Capture a PaymentIntent. */ public Charge capture(ChargeCaptureParams params, RequestOptions options) throws StripeException { String path = String.format("/v1/charges/%s/capture", ApiResource.urlEncodeId(this.getId())); ApiResource.checkNullTypedParams(path, params); ApiRequest request = new ApiRequest( BaseAddress.API, ApiResource.RequestMethod.POST, path, ApiRequestParams.paramsToMap(params), options, ApiMode.V1); return getResponseGetter().request(request, Charge.class); } /** * This method is no longer recommended—use the Payment Intents API to initiate a new * payment instead. Confirmation of the PaymentIntent creates the {@code Charge} object used to * request payment. */ public static Charge create(Map params) throws StripeException { return create(params, (RequestOptions) null); } /** * This method is no longer recommended—use the Payment Intents API to initiate a new * payment instead. Confirmation of the PaymentIntent creates the {@code Charge} object used to * request payment. */ public static Charge create(Map params, RequestOptions options) throws StripeException { String path = "/v1/charges"; ApiRequest request = new ApiRequest( BaseAddress.API, ApiResource.RequestMethod.POST, path, params, options, ApiMode.V1); return getGlobalResponseGetter().request(request, Charge.class); } /** * This method is no longer recommended—use the Payment Intents API to initiate a new * payment instead. Confirmation of the PaymentIntent creates the {@code Charge} object used to * request payment. */ public static Charge create(ChargeCreateParams params) throws StripeException { return create(params, (RequestOptions) null); } /** * This method is no longer recommended—use the Payment Intents API to initiate a new * payment instead. Confirmation of the PaymentIntent creates the {@code Charge} object used to * request payment. */ public static Charge create(ChargeCreateParams params, RequestOptions options) throws StripeException { String path = "/v1/charges"; ApiResource.checkNullTypedParams(path, params); ApiRequest request = new ApiRequest( BaseAddress.API, ApiResource.RequestMethod.POST, path, ApiRequestParams.paramsToMap(params), options, ApiMode.V1); return getGlobalResponseGetter().request(request, Charge.class); } /** * Returns a list of charges you’ve previously created. The charges are returned in sorted order, * with the most recent charges appearing first. */ public static ChargeCollection list(Map params) throws StripeException { return list(params, (RequestOptions) null); } /** * Returns a list of charges you’ve previously created. The charges are returned in sorted order, * with the most recent charges appearing first. */ public static ChargeCollection list(Map params, RequestOptions options) throws StripeException { String path = "/v1/charges"; ApiRequest request = new ApiRequest( BaseAddress.API, ApiResource.RequestMethod.GET, path, params, options, ApiMode.V1); return getGlobalResponseGetter().request(request, ChargeCollection.class); } /** * Returns a list of charges you’ve previously created. The charges are returned in sorted order, * with the most recent charges appearing first. */ public static ChargeCollection list(ChargeListParams params) throws StripeException { return list(params, (RequestOptions) null); } /** * Returns a list of charges you’ve previously created. The charges are returned in sorted order, * with the most recent charges appearing first. */ public static ChargeCollection list(ChargeListParams params, RequestOptions options) throws StripeException { String path = "/v1/charges"; ApiResource.checkNullTypedParams(path, params); ApiRequest request = new ApiRequest( BaseAddress.API, ApiResource.RequestMethod.GET, path, ApiRequestParams.paramsToMap(params), options, ApiMode.V1); return getGlobalResponseGetter().request(request, ChargeCollection.class); } /** * Retrieves the details of a charge that has previously been created. Supply the unique charge ID * that was returned from your previous request, and Stripe will return the corresponding charge * information. The same information is returned when creating or refunding the charge. */ public static Charge retrieve(String charge) throws StripeException { return retrieve(charge, (Map) null, (RequestOptions) null); } /** * Retrieves the details of a charge that has previously been created. Supply the unique charge ID * that was returned from your previous request, and Stripe will return the corresponding charge * information. The same information is returned when creating or refunding the charge. */ public static Charge retrieve(String charge, RequestOptions options) throws StripeException { return retrieve(charge, (Map) null, options); } /** * Retrieves the details of a charge that has previously been created. Supply the unique charge ID * that was returned from your previous request, and Stripe will return the corresponding charge * information. The same information is returned when creating or refunding the charge. */ public static Charge retrieve(String charge, Map params, RequestOptions options) throws StripeException { String path = String.format("/v1/charges/%s", ApiResource.urlEncodeId(charge)); ApiRequest request = new ApiRequest( BaseAddress.API, ApiResource.RequestMethod.GET, path, params, options, ApiMode.V1); return getGlobalResponseGetter().request(request, Charge.class); } /** * Retrieves the details of a charge that has previously been created. Supply the unique charge ID * that was returned from your previous request, and Stripe will return the corresponding charge * information. The same information is returned when creating or refunding the charge. */ public static Charge retrieve(String charge, ChargeRetrieveParams params, RequestOptions options) throws StripeException { String path = String.format("/v1/charges/%s", ApiResource.urlEncodeId(charge)); ApiResource.checkNullTypedParams(path, params); ApiRequest request = new ApiRequest( BaseAddress.API, ApiResource.RequestMethod.GET, path, ApiRequestParams.paramsToMap(params), options, ApiMode.V1); return getGlobalResponseGetter().request(request, Charge.class); } /** * Search for charges you’ve previously created using Stripe’s Search Query Language. Don’t * use search in read-after-write flows where strict consistency is necessary. Under normal * operating conditions, data is searchable in less than a minute. Occasionally, propagation of * new or updated data can be up to an hour behind during outages. Search functionality is not * available to merchants in India. */ public static ChargeSearchResult search(Map params) throws StripeException { return search(params, (RequestOptions) null); } /** * Search for charges you’ve previously created using Stripe’s Search Query Language. Don’t * use search in read-after-write flows where strict consistency is necessary. Under normal * operating conditions, data is searchable in less than a minute. Occasionally, propagation of * new or updated data can be up to an hour behind during outages. Search functionality is not * available to merchants in India. */ public static ChargeSearchResult search(Map params, RequestOptions options) throws StripeException { String path = "/v1/charges/search"; ApiRequest request = new ApiRequest( BaseAddress.API, ApiResource.RequestMethod.GET, path, params, options, ApiMode.V1); return getGlobalResponseGetter().request(request, ChargeSearchResult.class); } /** * Search for charges you’ve previously created using Stripe’s Search Query Language. Don’t * use search in read-after-write flows where strict consistency is necessary. Under normal * operating conditions, data is searchable in less than a minute. Occasionally, propagation of * new or updated data can be up to an hour behind during outages. Search functionality is not * available to merchants in India. */ public static ChargeSearchResult search(ChargeSearchParams params) throws StripeException { return search(params, (RequestOptions) null); } /** * Search for charges you’ve previously created using Stripe’s Search Query Language. Don’t * use search in read-after-write flows where strict consistency is necessary. Under normal * operating conditions, data is searchable in less than a minute. Occasionally, propagation of * new or updated data can be up to an hour behind during outages. Search functionality is not * available to merchants in India. */ public static ChargeSearchResult search(ChargeSearchParams params, RequestOptions options) throws StripeException { String path = "/v1/charges/search"; ApiResource.checkNullTypedParams(path, params); ApiRequest request = new ApiRequest( BaseAddress.API, ApiResource.RequestMethod.GET, path, ApiRequestParams.paramsToMap(params), options, ApiMode.V1); return getGlobalResponseGetter().request(request, ChargeSearchResult.class); } /** * Updates the specified charge by setting the values of the parameters passed. Any parameters not * provided will be left unchanged. */ @Override public Charge update(Map params) throws StripeException { return update(params, (RequestOptions) null); } /** * Updates the specified charge by setting the values of the parameters passed. Any parameters not * provided will be left unchanged. */ @Override public Charge update(Map params, RequestOptions options) throws StripeException { String path = String.format("/v1/charges/%s", ApiResource.urlEncodeId(this.getId())); ApiRequest request = new ApiRequest( BaseAddress.API, ApiResource.RequestMethod.POST, path, params, options, ApiMode.V1); return getResponseGetter().request(request, Charge.class); } /** * Updates the specified charge by setting the values of the parameters passed. Any parameters not * provided will be left unchanged. */ public Charge update(ChargeUpdateParams params) throws StripeException { return update(params, (RequestOptions) null); } /** * Updates the specified charge by setting the values of the parameters passed. Any parameters not * provided will be left unchanged. */ public Charge update(ChargeUpdateParams params, RequestOptions options) throws StripeException { String path = String.format("/v1/charges/%s", ApiResource.urlEncodeId(this.getId())); ApiResource.checkNullTypedParams(path, params); ApiRequest request = new ApiRequest( BaseAddress.API, ApiResource.RequestMethod.POST, path, ApiRequestParams.paramsToMap(params), options, ApiMode.V1); return getResponseGetter().request(request, Charge.class); } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class BillingDetails extends StripeObject { /** Billing address. */ @SerializedName("address") Address address; /** Email address. */ @SerializedName("email") String email; /** Full name. */ @SerializedName("name") String name; /** Billing phone number (including extension). */ @SerializedName("phone") String phone; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class FraudDetails extends StripeObject { /** Assessments from Stripe. If set, the value is {@code fraudulent}. */ @SerializedName("stripe_report") String stripeReport; /** * Assessments reported by you. If set, possible values of are {@code safe} and {@code * fraudulent}. */ @SerializedName("user_report") String userReport; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Level3 extends StripeObject { @SerializedName("customer_reference") String customerReference; @SerializedName("line_items") List lineItems; @SerializedName("merchant_reference") String merchantReference; @SerializedName("shipping_address_zip") String shippingAddressZip; @SerializedName("shipping_amount") Long shippingAmount; @SerializedName("shipping_from_zip") String shippingFromZip; @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class LineItem extends StripeObject { @SerializedName("discount_amount") Long discountAmount; @SerializedName("product_code") String productCode; @SerializedName("product_description") String productDescription; @SerializedName("quantity") Long quantity; @SerializedName("tax_amount") Long taxAmount; @SerializedName("unit_cost") Long unitCost; } } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Outcome extends StripeObject { /** * Possible values are {@code approved_by_network}, {@code declined_by_network}, {@code * not_sent_to_network}, and {@code reversed_after_approval}. The value {@code * reversed_after_approval} indicates the payment was blocked by Stripe after bank * authorization, and may temporarily appear as "pending" on a cardholder's statement. */ @SerializedName("network_status") String networkStatus; /** * An enumerated value providing a more detailed explanation of the outcome's {@code type}. * Charges blocked by Radar's default block rule have the value {@code highest_risk_level}. * Charges placed in review by Radar's default review rule have the value {@code * elevated_risk_level}. Charges authorized, blocked, or placed in review by custom rules have * the value {@code rule}. See understanding * declines for more details. */ @SerializedName("reason") String reason; /** * Stripe Radar's evaluation of the riskiness of the payment. Possible values for evaluated * payments are {@code normal}, {@code elevated}, {@code highest}. For non-card payments, and * card-based payments predating the public assignment of risk levels, this field will have the * value {@code not_assessed}. In the event of an error in the evaluation, this field will have * the value {@code unknown}. This field is only available with Radar. */ @SerializedName("risk_level") String riskLevel; /** * Stripe Radar's evaluation of the riskiness of the payment. Possible values for evaluated * payments are between 0 and 100. For non-card payments, card-based payments predating the * public assignment of risk scores, or in the event of an error during evaluation, this field * will not be present. This field is only available with Radar for Fraud Teams. */ @SerializedName("risk_score") Long riskScore; /** The ID of the Radar rule that matched the payment, if applicable. */ @SerializedName("rule") @Getter(lombok.AccessLevel.NONE) @Setter(lombok.AccessLevel.NONE) ExpandableField rule; /** * A human-readable description of the outcome type and reason, designed for you (the recipient * of the payment), not your customer. */ @SerializedName("seller_message") String sellerMessage; /** * Possible values are {@code authorized}, {@code manual_review}, {@code issuer_declined}, * {@code blocked}, and {@code invalid}. See understanding declines and Radar reviews for details. */ @SerializedName("type") String type; /** Get ID of expandable {@code rule} object. */ public String getRule() { return (this.rule != null) ? this.rule.getId() : null; } public void setRule(String id) { this.rule = ApiResource.setExpandableFieldId(id, this.rule); } /** Get expanded {@code rule}. */ public Rule getRuleObject() { return (this.rule != null) ? this.rule.getExpanded() : null; } public void setRuleObject(Rule expandableObject) { this.rule = new ExpandableField(expandableObject.getId(), expandableObject); } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Rule extends StripeObject implements HasId { /** The action taken on the payment. */ @SerializedName("action") String action; /** Unique identifier for the object. */ @Getter(onMethod_ = {@Override}) @SerializedName("id") String id; /** The predicate to evaluate the payment against. */ @SerializedName("predicate") String predicate; } } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class PaymentMethodDetails extends StripeObject { @SerializedName("ach_credit_transfer") AchCreditTransfer achCreditTransfer; @SerializedName("ach_debit") AchDebit achDebit; @SerializedName("acss_debit") AcssDebit acssDebit; @SerializedName("affirm") Affirm affirm; @SerializedName("afterpay_clearpay") AfterpayClearpay afterpayClearpay; @SerializedName("alipay") Alipay alipay; @SerializedName("au_becs_debit") AuBecsDebit auBecsDebit; @SerializedName("bacs_debit") BacsDebit bacsDebit; @SerializedName("bancontact") Bancontact bancontact; @SerializedName("blik") Blik blik; @SerializedName("boleto") Boleto boleto; @SerializedName("card") Card card; @SerializedName("card_present") CardPresent cardPresent; @SerializedName("cashapp") Cashapp cashapp; @SerializedName("customer_balance") CustomerBalance customerBalance; @SerializedName("eps") Eps eps; @SerializedName("fpx") Fpx fpx; @SerializedName("giropay") Giropay giropay; @SerializedName("grabpay") Grabpay grabpay; @SerializedName("ideal") Ideal ideal; @SerializedName("interac_present") InteracPresent interacPresent; @SerializedName("klarna") Klarna klarna; @SerializedName("konbini") Konbini konbini; @SerializedName("link") Link link; @SerializedName("mobilepay") Mobilepay mobilepay; @SerializedName("multibanco") Multibanco multibanco; @SerializedName("oxxo") Oxxo oxxo; @SerializedName("p24") P24 p24; @SerializedName("paynow") Paynow paynow; @SerializedName("paypal") Paypal paypal; @SerializedName("pix") Pix pix; @SerializedName("promptpay") Promptpay promptpay; @SerializedName("revolut_pay") RevolutPay revolutPay; @SerializedName("sepa_credit_transfer") SepaCreditTransfer sepaCreditTransfer; @SerializedName("sepa_debit") SepaDebit sepaDebit; @SerializedName("sofort") Sofort sofort; @SerializedName("stripe_account") StripeAccount stripeAccount; @SerializedName("swish") Swish swish; /** * The type of transaction-specific details of the payment method used in the payment, one of * {@code ach_credit_transfer}, {@code ach_debit}, {@code acss_debit}, {@code alipay}, {@code * au_becs_debit}, {@code bancontact}, {@code card}, {@code card_present}, {@code eps}, {@code * giropay}, {@code ideal}, {@code klarna}, {@code multibanco}, {@code p24}, {@code sepa_debit}, * {@code sofort}, {@code stripe_account}, or {@code wechat}. An additional hash is included on * {@code payment_method_details} with a name matching this value. It contains information * specific to the payment method. */ @SerializedName("type") String type; @SerializedName("us_bank_account") UsBankAccount usBankAccount; @SerializedName("wechat") Wechat wechat; @SerializedName("wechat_pay") WechatPay wechatPay; @SerializedName("zip") Zip zip; @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class AchCreditTransfer extends StripeObject { /** Account number to transfer funds to. */ @SerializedName("account_number") String accountNumber; /** Name of the bank associated with the routing number. */ @SerializedName("bank_name") String bankName; /** Routing transit number for the bank account to transfer funds to. */ @SerializedName("routing_number") String routingNumber; /** SWIFT code of the bank associated with the routing number. */ @SerializedName("swift_code") String swiftCode; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class AchDebit extends StripeObject { /** * Type of entity that holds the account. This can be either {@code individual} or {@code * company}. * *

One of {@code company}, or {@code individual}. */ @SerializedName("account_holder_type") String accountHolderType; /** Name of the bank associated with the bank account. */ @SerializedName("bank_name") String bankName; /** Two-letter ISO code representing the country the bank account is located in. */ @SerializedName("country") String country; /** * Uniquely identifies this particular bank account. You can use this attribute to check * whether two bank accounts are the same. */ @SerializedName("fingerprint") String fingerprint; /** Last four digits of the bank account number. */ @SerializedName("last4") String last4; /** Routing transit number of the bank account. */ @SerializedName("routing_number") String routingNumber; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class AcssDebit extends StripeObject { /** Name of the bank associated with the bank account. */ @SerializedName("bank_name") String bankName; /** * Uniquely identifies this particular bank account. You can use this attribute to check * whether two bank accounts are the same. */ @SerializedName("fingerprint") String fingerprint; /** Institution number of the bank account. */ @SerializedName("institution_number") String institutionNumber; /** Last four digits of the bank account number. */ @SerializedName("last4") String last4; /** ID of the mandate used to make this payment. */ @SerializedName("mandate") String mandate; /** Transit number of the bank account. */ @SerializedName("transit_number") String transitNumber; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Affirm extends StripeObject {} @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class AfterpayClearpay extends StripeObject { /** The Afterpay order ID associated with this payment intent. */ @SerializedName("order_id") String orderId; /** Order identifier shown to the merchant in Afterpay’s online portal. */ @SerializedName("reference") String reference; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Alipay extends StripeObject { /** * Uniquely identifies this particular Alipay account. You can use this attribute to check * whether two Alipay accounts are the same. */ @SerializedName("buyer_id") String buyerId; /** * Uniquely identifies this particular Alipay account. You can use this attribute to check * whether two Alipay accounts are the same. */ @SerializedName("fingerprint") String fingerprint; /** Transaction ID of this particular Alipay transaction. */ @SerializedName("transaction_id") String transactionId; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class AuBecsDebit extends StripeObject { /** Bank-State-Branch number of the bank account. */ @SerializedName("bsb_number") String bsbNumber; /** * Uniquely identifies this particular bank account. You can use this attribute to check * whether two bank accounts are the same. */ @SerializedName("fingerprint") String fingerprint; /** Last four digits of the bank account number. */ @SerializedName("last4") String last4; /** ID of the mandate used to make this payment. */ @SerializedName("mandate") String mandate; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class BacsDebit extends StripeObject { /** * Uniquely identifies this particular bank account. You can use this attribute to check * whether two bank accounts are the same. */ @SerializedName("fingerprint") String fingerprint; /** Last four digits of the bank account number. */ @SerializedName("last4") String last4; /** ID of the mandate used to make this payment. */ @SerializedName("mandate") String mandate; /** Sort code of the bank account. (e.g., {@code 10-20-30}) */ @SerializedName("sort_code") String sortCode; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Bancontact extends StripeObject { /** Bank code of bank associated with the bank account. */ @SerializedName("bank_code") String bankCode; /** Name of the bank associated with the bank account. */ @SerializedName("bank_name") String bankName; /** Bank Identifier Code of the bank associated with the bank account. */ @SerializedName("bic") String bic; /** The ID of the SEPA Direct Debit PaymentMethod which was generated by this Charge. */ @SerializedName("generated_sepa_debit") @Getter(lombok.AccessLevel.NONE) @Setter(lombok.AccessLevel.NONE) ExpandableField generatedSepaDebit; /** The mandate for the SEPA Direct Debit PaymentMethod which was generated by this Charge. */ @SerializedName("generated_sepa_debit_mandate") @Getter(lombok.AccessLevel.NONE) @Setter(lombok.AccessLevel.NONE) ExpandableField generatedSepaDebitMandate; /** Last four characters of the IBAN. */ @SerializedName("iban_last4") String ibanLast4; /** * Preferred language of the Bancontact authorization page that the customer is redirected to. * Can be one of {@code en}, {@code de}, {@code fr}, or {@code nl} */ @SerializedName("preferred_language") String preferredLanguage; /** * 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. */ @SerializedName("verified_name") String verifiedName; /** Get ID of expandable {@code generatedSepaDebit} object. */ public String getGeneratedSepaDebit() { return (this.generatedSepaDebit != null) ? this.generatedSepaDebit.getId() : null; } public void setGeneratedSepaDebit(String id) { this.generatedSepaDebit = ApiResource.setExpandableFieldId(id, this.generatedSepaDebit); } /** Get expanded {@code generatedSepaDebit}. */ public PaymentMethod getGeneratedSepaDebitObject() { return (this.generatedSepaDebit != null) ? this.generatedSepaDebit.getExpanded() : null; } public void setGeneratedSepaDebitObject(PaymentMethod expandableObject) { this.generatedSepaDebit = new ExpandableField(expandableObject.getId(), expandableObject); } /** Get ID of expandable {@code generatedSepaDebitMandate} object. */ public String getGeneratedSepaDebitMandate() { return (this.generatedSepaDebitMandate != null) ? this.generatedSepaDebitMandate.getId() : null; } public void setGeneratedSepaDebitMandate(String id) { this.generatedSepaDebitMandate = ApiResource.setExpandableFieldId(id, this.generatedSepaDebitMandate); } /** Get expanded {@code generatedSepaDebitMandate}. */ public Mandate getGeneratedSepaDebitMandateObject() { return (this.generatedSepaDebitMandate != null) ? this.generatedSepaDebitMandate.getExpanded() : null; } public void setGeneratedSepaDebitMandateObject(Mandate expandableObject) { this.generatedSepaDebitMandate = new ExpandableField(expandableObject.getId(), expandableObject); } } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Blik extends StripeObject {} @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Boleto extends StripeObject { /** * The tax ID of the customer (CPF for individuals consumers or CNPJ for businesses * consumers). */ @SerializedName("tax_id") String taxId; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Card extends StripeObject { /** The authorized amount. */ @SerializedName("amount_authorized") Long amountAuthorized; /** * Card brand. Can be {@code amex}, {@code diners}, {@code discover}, {@code eftpos_au}, * {@code jcb}, {@code mastercard}, {@code unionpay}, {@code visa}, or {@code unknown}. */ @SerializedName("brand") String brand; /** * When using manual capture, a future timestamp at which the charge will be automatically * refunded if uncaptured. */ @SerializedName("capture_before") Long captureBefore; /** Check results by Card networks on Card address and CVC at time of payment. */ @SerializedName("checks") Checks checks; /** * 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. */ @SerializedName("country") String country; /** * 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.) */ @SerializedName("description") String description; /** Two-digit number representing the card's expiration month. */ @SerializedName("exp_month") Long expMonth; /** Four-digit number representing the card's expiration year. */ @SerializedName("exp_year") Long expYear; @SerializedName("extended_authorization") ExtendedAuthorization extendedAuthorization; /** * 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. */ @SerializedName("fingerprint") String fingerprint; /** * Card funding type. Can be {@code credit}, {@code debit}, {@code prepaid}, or {@code * unknown}. */ @SerializedName("funding") String funding; /** * Issuer identification number of the card. (For internal use only and not typically * available in standard API requests.) */ @SerializedName("iin") String iin; @SerializedName("incremental_authorization") IncrementalAuthorization incrementalAuthorization; /** * Installment details for this payment (Mexico only). * *

For more information, see the installments integration guide. */ @SerializedName("installments") Installments installments; /** * The name of the card's issuing bank. (For internal use only and not typically available in * standard API requests.) */ @SerializedName("issuer") String issuer; /** The last four digits of the card. */ @SerializedName("last4") String last4; /** ID of the mandate used to make this payment or created by it. */ @SerializedName("mandate") String mandate; /** True if this payment was marked as MOTO and out of scope for SCA. */ @SerializedName("moto") Boolean moto; @SerializedName("multicapture") Multicapture multicapture; /** * Identifies which network this charge was processed on. Can be {@code amex}, {@code * cartes_bancaires}, {@code diners}, {@code discover}, {@code eftpos_au}, {@code interac}, * {@code jcb}, {@code mastercard}, {@code unionpay}, {@code visa}, or {@code unknown}. */ @SerializedName("network") String network; /** * If this card has network token credentials, this contains the details of the network token * credentials. */ @SerializedName("network_token") NetworkToken networkToken; @SerializedName("overcapture") Overcapture overcapture; /** Populated if this transaction used 3D Secure authentication. */ @SerializedName("three_d_secure") ThreeDSecure threeDSecure; /** If this Card is part of a card wallet, this contains the details of the card wallet. */ @SerializedName("wallet") Wallet wallet; @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Checks extends StripeObject { /** * If a address line1 was provided, results of the check, one of {@code pass}, {@code fail}, * {@code unavailable}, or {@code unchecked}. */ @SerializedName("address_line1_check") String addressLine1Check; /** * If a address postal code was provided, results of the check, one of {@code pass}, {@code * fail}, {@code unavailable}, or {@code unchecked}. */ @SerializedName("address_postal_code_check") String addressPostalCodeCheck; /** * If a CVC was provided, results of the check, one of {@code pass}, {@code fail}, {@code * unavailable}, or {@code unchecked}. */ @SerializedName("cvc_check") String cvcCheck; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class ExtendedAuthorization extends StripeObject { /** * Indicates whether or not the capture window is extended beyond the standard * authorization. * *

One of {@code disabled}, or {@code enabled}. */ @SerializedName("status") String status; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class IncrementalAuthorization extends StripeObject { /** * Indicates whether or not the incremental authorization feature is supported. * *

One of {@code available}, or {@code unavailable}. */ @SerializedName("status") String status; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Installments extends StripeObject { /** Installment plan selected for the payment. */ @SerializedName("plan") Plan plan; @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Plan extends StripeObject { /** * For {@code fixed_count} installment plans, this is the number of installment payments * your customer will make to their credit card. */ @SerializedName("count") Long count; /** * For {@code fixed_count} installment plans, this is the interval between installment * payments your customer will make to their credit card. One of {@code month}. */ @SerializedName("interval") String interval; /** Type of installment plan, one of {@code fixed_count}. */ @SerializedName("type") String type; } } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Multicapture extends StripeObject { /** * Indicates whether or not multiple captures are supported. * *

One of {@code available}, or {@code unavailable}. */ @SerializedName("status") String status; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class NetworkToken extends StripeObject { /** * Indicates if Stripe used a network token, either user provided or Stripe managed when * processing the transaction. */ @SerializedName("used") Boolean used; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Overcapture extends StripeObject { /** The maximum amount that can be captured. */ @SerializedName("maximum_amount_capturable") Long maximumAmountCapturable; /** * Indicates whether or not the authorized amount can be over-captured. * *

One of {@code available}, or {@code unavailable}. */ @SerializedName("status") String status; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class ThreeDSecure extends StripeObject { /** * For authenticated transactions: how the customer was authenticated by the issuing bank. * *

One of {@code challenge}, or {@code frictionless}. */ @SerializedName("authentication_flow") String authenticationFlow; /** * The Electronic Commerce Indicator (ECI). A protocol-level field indicating what degree of * authentication was performed. * *

One of {@code 01}, {@code 02}, {@code 05}, {@code 06}, or {@code 07}. */ @SerializedName("electronic_commerce_indicator") String electronicCommerceIndicator; /** * The exemption requested via 3DS and accepted by the issuer at authentication time. * *

One of {@code low_risk}, or {@code none}. */ @SerializedName("exemption_indicator") String exemptionIndicator; /** * Whether Stripe requested the value of {@code exemption_indicator} in the transaction. * This will depend on the outcome of Stripe's internal risk assessment. */ @SerializedName("exemption_indicator_applied") Boolean exemptionIndicatorApplied; /** * Indicates the outcome of 3D Secure authentication. * *

One of {@code attempt_acknowledged}, {@code authenticated}, {@code exempted}, {@code * failed}, {@code not_supported}, or {@code processing_error}. */ @SerializedName("result") String result; /** * Additional information about why 3D Secure succeeded or failed based on the {@code * result}. * *

One of {@code abandoned}, {@code bypassed}, {@code canceled}, {@code * card_not_enrolled}, {@code network_not_supported}, {@code protocol_error}, or {@code * rejected}. */ @SerializedName("result_reason") String resultReason; /** * The 3D Secure 1 XID or 3D Secure 2 Directory Server Transaction ID (dsTransId) for this * payment. */ @SerializedName("transaction_id") String transactionId; /** * The version of 3D Secure that was used. * *

One of {@code 1.0.2}, {@code 2.1.0}, or {@code 2.2.0}. */ @SerializedName("version") String version; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Wallet extends StripeObject { @SerializedName("amex_express_checkout") AmexExpressCheckout amexExpressCheckout; @SerializedName("apple_pay") ApplePay applePay; /** (For tokenized numbers only.) The last four digits of the device account number. */ @SerializedName("dynamic_last4") String dynamicLast4; @SerializedName("google_pay") GooglePay googlePay; @SerializedName("link") Link link; @SerializedName("masterpass") Masterpass masterpass; @SerializedName("samsung_pay") SamsungPay samsungPay; /** * The type of the card wallet, one of {@code amex_express_checkout}, {@code apple_pay}, * {@code google_pay}, {@code masterpass}, {@code samsung_pay}, {@code visa_checkout}, or * {@code link}. 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. */ @SerializedName("type") String type; @SerializedName("visa_checkout") VisaCheckout visaCheckout; @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class AmexExpressCheckout extends StripeObject {} @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class ApplePay extends StripeObject {} @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class GooglePay extends StripeObject {} @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Link extends StripeObject {} @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Masterpass extends StripeObject { /** * Owner's verified billing address. Values are verified or provided by the wallet * directly (if supported) at the time of authorization or settlement. They cannot be set * or mutated. */ @SerializedName("billing_address") Address billingAddress; /** * Owner's verified email. Values are verified or provided by the wallet directly (if * supported) at the time of authorization or settlement. They cannot be set or mutated. */ @SerializedName("email") String email; /** * Owner's verified full name. Values are verified or provided by the wallet directly (if * supported) at the time of authorization or settlement. They cannot be set or mutated. */ @SerializedName("name") String name; /** * Owner's verified shipping address. Values are verified or provided by the wallet * directly (if supported) at the time of authorization or settlement. They cannot be set * or mutated. */ @SerializedName("shipping_address") Address shippingAddress; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class SamsungPay extends StripeObject {} @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class VisaCheckout extends StripeObject { /** * Owner's verified billing address. Values are verified or provided by the wallet * directly (if supported) at the time of authorization or settlement. They cannot be set * or mutated. */ @SerializedName("billing_address") Address billingAddress; /** * Owner's verified email. Values are verified or provided by the wallet directly (if * supported) at the time of authorization or settlement. They cannot be set or mutated. */ @SerializedName("email") String email; /** * Owner's verified full name. Values are verified or provided by the wallet directly (if * supported) at the time of authorization or settlement. They cannot be set or mutated. */ @SerializedName("name") String name; /** * Owner's verified shipping address. Values are verified or provided by the wallet * directly (if supported) at the time of authorization or settlement. They cannot be set * or mutated. */ @SerializedName("shipping_address") Address shippingAddress; } } } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class CardPresent extends StripeObject { /** The authorized amount. */ @SerializedName("amount_authorized") Long amountAuthorized; /** * Card brand. Can be {@code amex}, {@code diners}, {@code discover}, {@code eftpos_au}, * {@code jcb}, {@code mastercard}, {@code unionpay}, {@code visa}, or {@code unknown}. */ @SerializedName("brand") String brand; /** * When using manual capture, a future timestamp after which the charge will be automatically * refunded if uncaptured. */ @SerializedName("capture_before") Long captureBefore; /** * The cardholder name as read from the card, in ISO 7813 format. May include * alphanumeric characters, special characters and first/last name separator ({@code /}). 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. */ @SerializedName("cardholder_name") String cardholderName; /** * 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. */ @SerializedName("country") String country; /** * 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.) */ @SerializedName("description") String description; /** Authorization response cryptogram. */ @SerializedName("emv_auth_data") String emvAuthData; /** Two-digit number representing the card's expiration month. */ @SerializedName("exp_month") Long expMonth; /** Four-digit number representing the card's expiration year. */ @SerializedName("exp_year") Long expYear; /** * 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. */ @SerializedName("fingerprint") String fingerprint; /** * Card funding type. Can be {@code credit}, {@code debit}, {@code prepaid}, or {@code * unknown}. */ @SerializedName("funding") String funding; /** * 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. */ @SerializedName("generated_card") String generatedCard; /** * Issuer identification number of the card. (For internal use only and not typically * available in standard API requests.) */ @SerializedName("iin") String iin; /** * Whether this PaymentIntent is * eligible for incremental authorizations. Request support using request_incremental_authorization_support. */ @SerializedName("incremental_authorization_supported") Boolean incrementalAuthorizationSupported; /** * The name of the card's issuing bank. (For internal use only and not typically available in * standard API requests.) */ @SerializedName("issuer") String issuer; /** The last four digits of the card. */ @SerializedName("last4") String last4; /** * Identifies which network this charge was processed on. Can be {@code amex}, {@code * cartes_bancaires}, {@code diners}, {@code discover}, {@code eftpos_au}, {@code interac}, * {@code jcb}, {@code mastercard}, {@code unionpay}, {@code visa}, or {@code unknown}. */ @SerializedName("network") String network; /** Details about payments collected offline. */ @SerializedName("offline") Offline offline; /** Defines whether the authorized amount can be over-captured or not. */ @SerializedName("overcapture_supported") Boolean overcaptureSupported; /** * How card details were read in this transaction. * *

One of {@code contact_emv}, {@code contactless_emv}, {@code contactless_magstripe_mode}, * {@code magnetic_stripe_fallback}, or {@code magnetic_stripe_track2}. */ @SerializedName("read_method") String readMethod; /** * A collection of fields required to be displayed on receipts. Only required for EMV * transactions. */ @SerializedName("receipt") Receipt receipt; @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Offline extends StripeObject { /** Time at which the payment was collected while offline. */ @SerializedName("stored_at") Long storedAt; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Receipt extends StripeObject { /** * The type of account being debited or credited * *

One of {@code checking}, {@code credit}, {@code prepaid}, or {@code unknown}. */ @SerializedName("account_type") String accountType; /** EMV tag 9F26, cryptogram generated by the integrated circuit chip. */ @SerializedName("application_cryptogram") String applicationCryptogram; /** Mnenomic of the Application Identifier. */ @SerializedName("application_preferred_name") String applicationPreferredName; /** Identifier for this transaction. */ @SerializedName("authorization_code") String authorizationCode; /** EMV tag 8A. A code returned by the card issuer. */ @SerializedName("authorization_response_code") String authorizationResponseCode; /** * Describes the method used by the cardholder to verify ownership of the card. One of the * following: {@code approval}, {@code failure}, {@code none}, {@code offline_pin}, {@code * offline_pin_and_signature}, {@code online_pin}, or {@code signature}. */ @SerializedName("cardholder_verification_method") String cardholderVerificationMethod; /** * EMV tag 84. Similar to the application identifier stored on the integrated circuit chip. */ @SerializedName("dedicated_file_name") String dedicatedFileName; /** The outcome of a series of EMV functions performed by the card reader. */ @SerializedName("terminal_verification_results") String terminalVerificationResults; /** An indication of various EMV functions performed during the transaction. */ @SerializedName("transaction_status_information") String transactionStatusInformation; } } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Cashapp extends StripeObject { /** A unique and immutable identifier assigned by Cash App to every buyer. */ @SerializedName("buyer_id") String buyerId; /** A public identifier for buyers using Cash App. */ @SerializedName("cashtag") String cashtag; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class CustomerBalance extends StripeObject {} @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Eps extends StripeObject { /** * The customer's bank. Should be one of {@code arzte_und_apotheker_bank}, {@code * austrian_anadi_bank_ag}, {@code bank_austria}, {@code bankhaus_carl_spangler}, {@code * bankhaus_schelhammer_und_schattera_ag}, {@code bawag_psk_ag}, {@code bks_bank_ag}, {@code * brull_kallmus_bank_ag}, {@code btv_vier_lander_bank}, {@code capital_bank_grawe_gruppe_ag}, * {@code deutsche_bank_ag}, {@code dolomitenbank}, {@code easybank_ag}, {@code * erste_bank_und_sparkassen}, {@code hypo_alpeadriabank_international_ag}, {@code * hypo_noe_lb_fur_niederosterreich_u_wien}, {@code hypo_oberosterreich_salzburg_steiermark}, * {@code hypo_tirol_bank_ag}, {@code hypo_vorarlberg_bank_ag}, {@code * hypo_bank_burgenland_aktiengesellschaft}, {@code marchfelder_bank}, {@code oberbank_ag}, * {@code raiffeisen_bankengruppe_osterreich}, {@code schoellerbank_ag}, {@code * sparda_bank_wien}, {@code volksbank_gruppe}, {@code volkskreditbank_ag}, or {@code * vr_bank_braunau}. */ @SerializedName("bank") String bank; /** * 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. */ @SerializedName("verified_name") String verifiedName; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Fpx extends StripeObject { /** Account holder type, if provided. Can be one of {@code individual} or {@code company}. */ @SerializedName("account_holder_type") String accountHolderType; /** * The customer's bank. Can be one of {@code affin_bank}, {@code agrobank}, {@code * alliance_bank}, {@code ambank}, {@code bank_islam}, {@code bank_muamalat}, {@code * bank_rakyat}, {@code bsn}, {@code cimb}, {@code hong_leong_bank}, {@code hsbc}, {@code * kfh}, {@code maybank2u}, {@code ocbc}, {@code public_bank}, {@code rhb}, {@code * standard_chartered}, {@code uob}, {@code deutsche_bank}, {@code maybank2e}, {@code * pb_enterprise}, or {@code bank_of_china}. */ @SerializedName("bank") String bank; /** Unique transaction id generated by FPX for every request from the merchant. */ @SerializedName("transaction_id") String transactionId; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Giropay extends StripeObject { /** Bank code of bank associated with the bank account. */ @SerializedName("bank_code") String bankCode; /** Name of the bank associated with the bank account. */ @SerializedName("bank_name") String bankName; /** Bank Identifier Code of the bank associated with the bank account. */ @SerializedName("bic") String bic; /** * 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. */ @SerializedName("verified_name") String verifiedName; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Grabpay extends StripeObject { /** Unique transaction id generated by GrabPay. */ @SerializedName("transaction_id") String transactionId; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Ideal extends StripeObject { /** * The customer's bank. Can be one of {@code abn_amro}, {@code asn_bank}, {@code bunq}, {@code * handelsbanken}, {@code ing}, {@code knab}, {@code moneyou}, {@code n26}, {@code nn}, {@code * rabobank}, {@code regiobank}, {@code revolut}, {@code sns_bank}, {@code triodos_bank}, * {@code van_lanschot}, or {@code yoursafe}. */ @SerializedName("bank") String bank; /** * The Bank Identifier Code of the customer's bank. * *

One of {@code ABNANL2A}, {@code ASNBNL21}, {@code BITSNL2A}, {@code BUNQNL2A}, {@code * FVLBNL22}, {@code HANDNL2A}, {@code INGBNL2A}, {@code KNABNL2H}, {@code MOYONL21}, {@code * NNBANL2G}, {@code NTSBDEB1}, {@code RABONL2U}, {@code RBRBNL21}, {@code REVOIE23}, {@code * REVOLT21}, {@code SNSBNL2A}, or {@code TRIONL2U}. */ @SerializedName("bic") String bic; /** The ID of the SEPA Direct Debit PaymentMethod which was generated by this Charge. */ @SerializedName("generated_sepa_debit") @Getter(lombok.AccessLevel.NONE) @Setter(lombok.AccessLevel.NONE) ExpandableField generatedSepaDebit; /** The mandate for the SEPA Direct Debit PaymentMethod which was generated by this Charge. */ @SerializedName("generated_sepa_debit_mandate") @Getter(lombok.AccessLevel.NONE) @Setter(lombok.AccessLevel.NONE) ExpandableField generatedSepaDebitMandate; /** Last four characters of the IBAN. */ @SerializedName("iban_last4") String ibanLast4; /** * 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. */ @SerializedName("verified_name") String verifiedName; /** Get ID of expandable {@code generatedSepaDebit} object. */ public String getGeneratedSepaDebit() { return (this.generatedSepaDebit != null) ? this.generatedSepaDebit.getId() : null; } public void setGeneratedSepaDebit(String id) { this.generatedSepaDebit = ApiResource.setExpandableFieldId(id, this.generatedSepaDebit); } /** Get expanded {@code generatedSepaDebit}. */ public PaymentMethod getGeneratedSepaDebitObject() { return (this.generatedSepaDebit != null) ? this.generatedSepaDebit.getExpanded() : null; } public void setGeneratedSepaDebitObject(PaymentMethod expandableObject) { this.generatedSepaDebit = new ExpandableField(expandableObject.getId(), expandableObject); } /** Get ID of expandable {@code generatedSepaDebitMandate} object. */ public String getGeneratedSepaDebitMandate() { return (this.generatedSepaDebitMandate != null) ? this.generatedSepaDebitMandate.getId() : null; } public void setGeneratedSepaDebitMandate(String id) { this.generatedSepaDebitMandate = ApiResource.setExpandableFieldId(id, this.generatedSepaDebitMandate); } /** Get expanded {@code generatedSepaDebitMandate}. */ public Mandate getGeneratedSepaDebitMandateObject() { return (this.generatedSepaDebitMandate != null) ? this.generatedSepaDebitMandate.getExpanded() : null; } public void setGeneratedSepaDebitMandateObject(Mandate expandableObject) { this.generatedSepaDebitMandate = new ExpandableField(expandableObject.getId(), expandableObject); } } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class InteracPresent extends StripeObject { /** Card brand. Can be {@code interac}, {@code mastercard} or {@code visa}. */ @SerializedName("brand") String brand; /** * The cardholder name as read from the card, in ISO 7813 format. May include * alphanumeric characters, special characters and first/last name separator ({@code /}). 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. */ @SerializedName("cardholder_name") String cardholderName; /** * 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. */ @SerializedName("country") String country; /** * 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.) */ @SerializedName("description") String description; /** Authorization response cryptogram. */ @SerializedName("emv_auth_data") String emvAuthData; /** Two-digit number representing the card's expiration month. */ @SerializedName("exp_month") Long expMonth; /** Four-digit number representing the card's expiration year. */ @SerializedName("exp_year") Long expYear; /** * 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. */ @SerializedName("fingerprint") String fingerprint; /** * Card funding type. Can be {@code credit}, {@code debit}, {@code prepaid}, or {@code * unknown}. */ @SerializedName("funding") String funding; /** * 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. */ @SerializedName("generated_card") String generatedCard; /** * Issuer identification number of the card. (For internal use only and not typically * available in standard API requests.) */ @SerializedName("iin") String iin; /** * The name of the card's issuing bank. (For internal use only and not typically available in * standard API requests.) */ @SerializedName("issuer") String issuer; /** The last four digits of the card. */ @SerializedName("last4") String last4; /** * Identifies which network this charge was processed on. Can be {@code amex}, {@code * cartes_bancaires}, {@code diners}, {@code discover}, {@code eftpos_au}, {@code interac}, * {@code jcb}, {@code mastercard}, {@code unionpay}, {@code visa}, or {@code unknown}. */ @SerializedName("network") String network; /** EMV tag 5F2D. Preferred languages specified by the integrated circuit chip. */ @SerializedName("preferred_locales") List preferredLocales; /** * How card details were read in this transaction. * *

One of {@code contact_emv}, {@code contactless_emv}, {@code contactless_magstripe_mode}, * {@code magnetic_stripe_fallback}, or {@code magnetic_stripe_track2}. */ @SerializedName("read_method") String readMethod; /** * A collection of fields required to be displayed on receipts. Only required for EMV * transactions. */ @SerializedName("receipt") Receipt receipt; @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Receipt extends StripeObject { /** * The type of account being debited or credited * *

One of {@code checking}, {@code savings}, or {@code unknown}. */ @SerializedName("account_type") String accountType; /** EMV tag 9F26, cryptogram generated by the integrated circuit chip. */ @SerializedName("application_cryptogram") String applicationCryptogram; /** Mnenomic of the Application Identifier. */ @SerializedName("application_preferred_name") String applicationPreferredName; /** Identifier for this transaction. */ @SerializedName("authorization_code") String authorizationCode; /** EMV tag 8A. A code returned by the card issuer. */ @SerializedName("authorization_response_code") String authorizationResponseCode; /** * Describes the method used by the cardholder to verify ownership of the card. One of the * following: {@code approval}, {@code failure}, {@code none}, {@code offline_pin}, {@code * offline_pin_and_signature}, {@code online_pin}, or {@code signature}. */ @SerializedName("cardholder_verification_method") String cardholderVerificationMethod; /** * EMV tag 84. Similar to the application identifier stored on the integrated circuit chip. */ @SerializedName("dedicated_file_name") String dedicatedFileName; /** The outcome of a series of EMV functions performed by the card reader. */ @SerializedName("terminal_verification_results") String terminalVerificationResults; /** An indication of various EMV functions performed during the transaction. */ @SerializedName("transaction_status_information") String transactionStatusInformation; } } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Klarna extends StripeObject { /** * The Klarna payment method used for this transaction. Can be one of {@code pay_later}, * {@code pay_now}, {@code pay_with_financing}, or {@code pay_in_installments} */ @SerializedName("payment_method_category") String paymentMethodCategory; /** * Preferred language of the Klarna authorization page that the customer is redirected to. Can * be one of {@code de-AT}, {@code en-AT}, {@code nl-BE}, {@code fr-BE}, {@code en-BE}, {@code * de-DE}, {@code en-DE}, {@code da-DK}, {@code en-DK}, {@code es-ES}, {@code en-ES}, {@code * fi-FI}, {@code sv-FI}, {@code en-FI}, {@code en-GB}, {@code en-IE}, {@code it-IT}, {@code * en-IT}, {@code nl-NL}, {@code en-NL}, {@code nb-NO}, {@code en-NO}, {@code sv-SE}, {@code * en-SE}, {@code en-US}, {@code es-US}, {@code fr-FR}, {@code en-FR}, {@code cs-CZ}, {@code * en-CZ}, {@code el-GR}, {@code en-GR}, {@code en-AU}, {@code en-NZ}, {@code en-CA}, {@code * fr-CA}, {@code pl-PL}, {@code en-PL}, {@code pt-PT}, {@code en-PT}, {@code de-CH}, {@code * fr-CH}, {@code it-CH}, or {@code en-CH} */ @SerializedName("preferred_locale") String preferredLocale; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Konbini extends StripeObject { /** * If the payment succeeded, this contains the details of the convenience store where the * payment was completed. */ @SerializedName("store") Store store; @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Store extends StripeObject { /** * The name of the convenience store chain where the payment was completed. * *

One of {@code familymart}, {@code lawson}, {@code ministop}, or {@code seicomart}. */ @SerializedName("chain") String chain; } } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Link extends StripeObject { /** * 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. */ @SerializedName("country") String country; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Mobilepay extends StripeObject { @SerializedName("card") Card card; @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Card extends StripeObject { /** Brand of the card used in the transaction. */ @SerializedName("brand") String brand; /** Two-letter ISO code representing the country of the card. */ @SerializedName("country") String country; /** Two digit number representing the card's expiration month. */ @SerializedName("exp_month") Long expMonth; /** Two digit number representing the card's expiration year. */ @SerializedName("exp_year") Long expYear; /** The last 4 digits of the card. */ @SerializedName("last4") String last4; } } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Multibanco extends StripeObject { /** Entity number associated with this Multibanco payment. */ @SerializedName("entity") String entity; /** Reference number associated with this Multibanco payment. */ @SerializedName("reference") String reference; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Oxxo extends StripeObject { /** OXXO reference number. */ @SerializedName("number") String number; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class P24 extends StripeObject { /** * The customer's bank. Can be one of {@code ing}, {@code citi_handlowy}, {@code * tmobile_usbugi_bankowe}, {@code plus_bank}, {@code etransfer_pocztowy24}, {@code * banki_spbdzielcze}, {@code bank_nowy_bfg_sa}, {@code getin_bank}, {@code velobank}, {@code * blik}, {@code noble_pay}, {@code ideabank}, {@code envelobank}, {@code * santander_przelew24}, {@code nest_przelew}, {@code mbank_mtransfer}, {@code inteligo}, * {@code pbac_z_ipko}, {@code bnp_paribas}, {@code credit_agricole}, {@code toyota_bank}, * {@code bank_pekao_sa}, {@code volkswagen_bank}, {@code bank_millennium}, {@code * alior_bank}, or {@code boz}. */ @SerializedName("bank") String bank; /** Unique reference for this Przelewy24 payment. */ @SerializedName("reference") String reference; /** * 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. */ @SerializedName("verified_name") String verifiedName; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Paynow extends StripeObject { /** Reference number associated with this PayNow payment. */ @SerializedName("reference") String reference; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Paypal extends StripeObject { /** * Owner's email. Values are provided by PayPal directly (if supported) at the time of * authorization or settlement. They cannot be set or mutated. */ @SerializedName("payer_email") String payerEmail; /** PayPal account PayerID. This identifier uniquely identifies the PayPal customer. */ @SerializedName("payer_id") String payerId; /** * Owner's full name. Values provided by PayPal directly (if supported) at the time of * authorization or settlement. They cannot be set or mutated. */ @SerializedName("payer_name") String payerName; /** * The level of protection offered as defined by PayPal Seller Protection for Merchants, for * this transaction. */ @SerializedName("seller_protection") SellerProtection sellerProtection; /** A unique ID generated by PayPal for this transaction. */ @SerializedName("transaction_id") String transactionId; @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class SellerProtection extends StripeObject { /** An array of conditions that are covered for the transaction, if applicable. */ @SerializedName("dispute_categories") List disputeCategories; /** * Indicates whether the transaction is eligible for PayPal's seller protection. * *

One of {@code eligible}, {@code not_eligible}, or {@code partially_eligible}. */ @SerializedName("status") String status; } } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Pix extends StripeObject { /** Unique transaction id generated by BCB. */ @SerializedName("bank_transaction_id") String bankTransactionId; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Promptpay extends StripeObject { /** Bill reference generated by PromptPay. */ @SerializedName("reference") String reference; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class RevolutPay extends StripeObject {} @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class SepaCreditTransfer extends StripeObject { /** Name of the bank associated with the bank account. */ @SerializedName("bank_name") String bankName; /** Bank Identifier Code of the bank associated with the bank account. */ @SerializedName("bic") String bic; /** IBAN of the bank account to transfer funds to. */ @SerializedName("iban") String iban; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class SepaDebit extends StripeObject { /** Bank code of bank associated with the bank account. */ @SerializedName("bank_code") String bankCode; /** Branch code of bank associated with the bank account. */ @SerializedName("branch_code") String branchCode; /** Two-letter ISO code representing the country the bank account is located in. */ @SerializedName("country") String country; /** * Uniquely identifies this particular bank account. You can use this attribute to check * whether two bank accounts are the same. */ @SerializedName("fingerprint") String fingerprint; /** Last four characters of the IBAN. */ @SerializedName("last4") String last4; /** * 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. */ @SerializedName("mandate") String mandate; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Sofort extends StripeObject { /** Bank code of bank associated with the bank account. */ @SerializedName("bank_code") String bankCode; /** Name of the bank associated with the bank account. */ @SerializedName("bank_name") String bankName; /** Bank Identifier Code of the bank associated with the bank account. */ @SerializedName("bic") String bic; /** Two-letter ISO code representing the country the bank account is located in. */ @SerializedName("country") String country; /** The ID of the SEPA Direct Debit PaymentMethod which was generated by this Charge. */ @SerializedName("generated_sepa_debit") @Getter(lombok.AccessLevel.NONE) @Setter(lombok.AccessLevel.NONE) ExpandableField generatedSepaDebit; /** The mandate for the SEPA Direct Debit PaymentMethod which was generated by this Charge. */ @SerializedName("generated_sepa_debit_mandate") @Getter(lombok.AccessLevel.NONE) @Setter(lombok.AccessLevel.NONE) ExpandableField generatedSepaDebitMandate; /** Last four characters of the IBAN. */ @SerializedName("iban_last4") String ibanLast4; /** * Preferred language of the SOFORT authorization page that the customer is redirected to. Can * be one of {@code de}, {@code en}, {@code es}, {@code fr}, {@code it}, {@code nl}, or {@code * pl} */ @SerializedName("preferred_language") String preferredLanguage; /** * 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. */ @SerializedName("verified_name") String verifiedName; /** Get ID of expandable {@code generatedSepaDebit} object. */ public String getGeneratedSepaDebit() { return (this.generatedSepaDebit != null) ? this.generatedSepaDebit.getId() : null; } public void setGeneratedSepaDebit(String id) { this.generatedSepaDebit = ApiResource.setExpandableFieldId(id, this.generatedSepaDebit); } /** Get expanded {@code generatedSepaDebit}. */ public PaymentMethod getGeneratedSepaDebitObject() { return (this.generatedSepaDebit != null) ? this.generatedSepaDebit.getExpanded() : null; } public void setGeneratedSepaDebitObject(PaymentMethod expandableObject) { this.generatedSepaDebit = new ExpandableField(expandableObject.getId(), expandableObject); } /** Get ID of expandable {@code generatedSepaDebitMandate} object. */ public String getGeneratedSepaDebitMandate() { return (this.generatedSepaDebitMandate != null) ? this.generatedSepaDebitMandate.getId() : null; } public void setGeneratedSepaDebitMandate(String id) { this.generatedSepaDebitMandate = ApiResource.setExpandableFieldId(id, this.generatedSepaDebitMandate); } /** Get expanded {@code generatedSepaDebitMandate}. */ public Mandate getGeneratedSepaDebitMandateObject() { return (this.generatedSepaDebitMandate != null) ? this.generatedSepaDebitMandate.getExpanded() : null; } public void setGeneratedSepaDebitMandateObject(Mandate expandableObject) { this.generatedSepaDebitMandate = new ExpandableField(expandableObject.getId(), expandableObject); } } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class StripeAccount extends StripeObject {} @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Swish extends StripeObject { /** * 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 */ @SerializedName("fingerprint") String fingerprint; /** Payer bank reference number for the payment. */ @SerializedName("payment_reference") String paymentReference; /** The last four digits of the Swish account phone number. */ @SerializedName("verified_phone_last4") String verifiedPhoneLast4; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class UsBankAccount extends StripeObject { /** * Account holder type: individual or company. * *

One of {@code company}, or {@code individual}. */ @SerializedName("account_holder_type") String accountHolderType; /** * Account type: checkings or savings. Defaults to checking if omitted. * *

One of {@code checking}, or {@code savings}. */ @SerializedName("account_type") String accountType; /** Name of the bank associated with the bank account. */ @SerializedName("bank_name") String bankName; /** * Uniquely identifies this particular bank account. You can use this attribute to check * whether two bank accounts are the same. */ @SerializedName("fingerprint") String fingerprint; /** Last four digits of the bank account number. */ @SerializedName("last4") String last4; /** ID of the mandate used to make this payment. */ @SerializedName("mandate") @Getter(lombok.AccessLevel.NONE) @Setter(lombok.AccessLevel.NONE) ExpandableField mandate; /** Reference number to locate ACH payments with customer's bank. */ @SerializedName("payment_reference") String paymentReference; /** Routing number of the bank account. */ @SerializedName("routing_number") String routingNumber; /** Get ID of expandable {@code mandate} object. */ public String getMandate() { return (this.mandate != null) ? this.mandate.getId() : null; } public void setMandate(String id) { this.mandate = ApiResource.setExpandableFieldId(id, this.mandate); } /** Get expanded {@code mandate}. */ public Mandate getMandateObject() { return (this.mandate != null) ? this.mandate.getExpanded() : null; } public void setMandateObject(Mandate expandableObject) { this.mandate = new ExpandableField(expandableObject.getId(), expandableObject); } } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Wechat extends StripeObject {} @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class WechatPay extends StripeObject { /** * Uniquely identifies this particular WeChat Pay account. You can use this attribute to check * whether two WeChat accounts are the same. */ @SerializedName("fingerprint") String fingerprint; /** Transaction ID of this particular WeChat Pay transaction. */ @SerializedName("transaction_id") String transactionId; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class Zip extends StripeObject {} } /** * Options to configure Radar. See Radar * Session for more information. */ @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class RadarOptions extends StripeObject { /** * A Radar Session is a snapshot of * the browser metadata and device details that help Radar make more accurate predictions on * your payments. */ @SerializedName("session") String session; } @Getter @Setter @EqualsAndHashCode(callSuper = false) public static class TransferData extends StripeObject { /** * The amount transferred to the destination account, if specified. By default, the entire * charge amount is transferred to the destination account. */ @SerializedName("amount") Long amount; /** * ID of an existing, connected Stripe account to transfer funds to if {@code transfer_data} was * specified in the charge request. */ @SerializedName("destination") @Getter(lombok.AccessLevel.NONE) @Setter(lombok.AccessLevel.NONE) ExpandableField destination; /** Get ID of expandable {@code destination} object. */ public String getDestination() { return (this.destination != null) ? this.destination.getId() : null; } public void setDestination(String id) { this.destination = ApiResource.setExpandableFieldId(id, this.destination); } /** Get expanded {@code destination}. */ public Account getDestinationObject() { return (this.destination != null) ? this.destination.getExpanded() : null; } public void setDestinationObject(Account expandableObject) { this.destination = new ExpandableField(expandableObject.getId(), expandableObject); } } @Override public void setResponseGetter(StripeResponseGetter responseGetter) { super.setResponseGetter(responseGetter); trySetResponseGetter(application, responseGetter); trySetResponseGetter(applicationFee, responseGetter); trySetResponseGetter(balanceTransaction, responseGetter); trySetResponseGetter(billingDetails, responseGetter); trySetResponseGetter(customer, responseGetter); trySetResponseGetter(failureBalanceTransaction, responseGetter); trySetResponseGetter(fraudDetails, responseGetter); trySetResponseGetter(invoice, responseGetter); trySetResponseGetter(level3, responseGetter); trySetResponseGetter(onBehalfOf, responseGetter); trySetResponseGetter(outcome, responseGetter); trySetResponseGetter(paymentIntent, responseGetter); trySetResponseGetter(paymentMethodDetails, responseGetter); trySetResponseGetter(radarOptions, responseGetter); trySetResponseGetter(refunds, responseGetter); trySetResponseGetter(review, responseGetter); trySetResponseGetter(shipping, responseGetter); trySetResponseGetter(source, responseGetter); trySetResponseGetter(sourceTransfer, responseGetter); trySetResponseGetter(transfer, responseGetter); trySetResponseGetter(transferData, responseGetter); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy