com.stripe.model.Order 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.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.OrderCancelParams;
import com.stripe.param.OrderCreateParams;
import com.stripe.param.OrderListLineItemsParams;
import com.stripe.param.OrderListParams;
import com.stripe.param.OrderReopenParams;
import com.stripe.param.OrderRetrieveParams;
import com.stripe.param.OrderSubmitParams;
import com.stripe.param.OrderUpdateParams;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
/**
* An Order describes a purchase being made by a customer, including the products & quantities
* being purchased, the order status, the payment information, and the billing/shipping details.
*
* Related guide: Orders overview
*/
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public class Order extends ApiResource implements HasId, MetadataStore {
@SerializedName("amount_remaining")
Long amountRemaining;
/**
* Order cost before any discounts or taxes are applied. A positive integer representing the
* subtotal of the order in the smallest
* currency unit (e.g., 100 cents to charge $1.00 or 100 to charge ¥100, a zero-decimal
* currency).
*/
@SerializedName("amount_subtotal")
Long amountSubtotal;
/**
* Total order cost after discounts and taxes are applied. A positive integer representing the
* cost of the order in the smallest
* currency unit (e.g., 100 cents to charge $1.00 or 100 to charge ¥100, a zero-decimal
* currency). To submit an order, the total must be either 0 or at least $0.50 USD or equivalent in
* charge currency.
*/
@SerializedName("amount_total")
Long amountTotal;
/** ID of the Connect application that created the Order, if any. */
@SerializedName("application")
@Getter(lombok.AccessLevel.NONE)
@Setter(lombok.AccessLevel.NONE)
ExpandableField application;
@SerializedName("automatic_tax")
AutomaticTax automaticTax;
/** Customer billing details associated with the order. */
@SerializedName("billing_details")
BillingDetails billingDetails;
/**
* The client secret of this Order. Used for client-side retrieval using a publishable key.
*
* The client secret can be used to complete a payment for an Order from your frontend. It
* should not be stored, logged, embedded in URLs, or exposed to anyone other than the customer.
* Make sure that you have TLS enabled on any page that includes the client secret.
*
*
Refer to our docs for creating and processing an
* order to learn about how client_secret should be handled.
*/
@SerializedName("client_secret")
String clientSecret;
/** Time at which the object was created. Measured in seconds since the Unix epoch. */
@SerializedName("created")
Long created;
/** The credits applied to the Order. At most 10 credits can be applied to an Order. */
@SerializedName("credits")
List credits;
/**
* Three-letter ISO currency code,
* in lowercase. Must be a supported currency.
*/
@SerializedName("currency")
String currency;
/** The customer which this orders belongs to. */
@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;
/** The discounts applied to the order. Use {@code expand[]=discounts} to expand each discount. */
@SerializedName("discounts")
List> discounts;
/** Unique identifier for the object. */
@Getter(onMethod_ = {@Override})
@SerializedName("id")
String id;
/** A recent IP address of the purchaser used for tax reporting and tax location inference. */
@SerializedName("ip_address")
String ipAddress;
/**
* A list of line items the customer is ordering. Each line item includes information about the
* product, the quantity, and the resulting cost. There is a maximum of 100 line items.
*/
@SerializedName("line_items")
LineItemCollection lineItems;
/**
* 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 order}.
*/
@SerializedName("object")
String object;
@SerializedName("payment")
Payment payment;
/** The details of the customer cost of shipping, including the customer chosen ShippingRate. */
@SerializedName("shipping_cost")
ShippingCost shippingCost;
/** Customer shipping information associated with the order. */
@SerializedName("shipping_details")
ShippingDetails shippingDetails;
/**
* The overall status of the order.
*
*
One of {@code canceled}, {@code complete}, {@code open}, {@code processing}, or {@code
* submitted}.
*/
@SerializedName("status")
String status;
@SerializedName("tax_details")
TaxDetails taxDetails;
@SerializedName("total_details")
TotalDetails totalDetails;
/** 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 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 IDs of expandable {@code discounts} object list. */
public List getDiscounts() {
return (this.discounts != null)
? this.discounts.stream().map(x -> x.getId()).collect(Collectors.toList())
: null;
}
public void setDiscounts(List ids) {
if (ids == null) {
this.discounts = null;
return;
}
if (this.discounts != null
&& this.discounts.stream().map(x -> x.getId()).collect(Collectors.toList()).equals(ids)) {
// noop if the ids are equal to what are already present
return;
}
this.discounts =
(ids != null)
? ids.stream()
.map(id -> new ExpandableField(id, null))
.collect(Collectors.toList())
: null;
}
/** Get expanded {@code discounts}. */
public List getDiscountObjects() {
return (this.discounts != null)
? this.discounts.stream().map(x -> x.getExpanded()).collect(Collectors.toList())
: null;
}
public void setDiscountObjects(List objs) {
this.discounts =
objs != null
? objs.stream()
.map(x -> new ExpandableField(x.getId(), x))
.collect(Collectors.toList())
: null;
}
/** Cancels the order as well as the payment intent if one is attached. */
public Order cancel() throws StripeException {
return cancel((Map) null, (RequestOptions) null);
}
/** Cancels the order as well as the payment intent if one is attached. */
public Order cancel(RequestOptions options) throws StripeException {
return cancel((Map) null, options);
}
/** Cancels the order as well as the payment intent if one is attached. */
public Order cancel(Map params) throws StripeException {
return cancel(params, (RequestOptions) null);
}
/** Cancels the order as well as the payment intent if one is attached. */
public Order cancel(Map params, RequestOptions options) throws StripeException {
String path = String.format("/v1/orders/%s/cancel", ApiResource.urlEncodeId(this.getId()));
ApiRequest request =
new ApiRequest(BaseAddress.API, ApiResource.RequestMethod.POST, path, params, options);
return getResponseGetter().request(request, Order.class);
}
/** Cancels the order as well as the payment intent if one is attached. */
public Order cancel(OrderCancelParams params) throws StripeException {
return cancel(params, (RequestOptions) null);
}
/** Cancels the order as well as the payment intent if one is attached. */
public Order cancel(OrderCancelParams params, RequestOptions options) throws StripeException {
String path = String.format("/v1/orders/%s/cancel", ApiResource.urlEncodeId(this.getId()));
ApiResource.checkNullTypedParams(path, params);
ApiRequest request =
new ApiRequest(
BaseAddress.API,
ApiResource.RequestMethod.POST,
path,
ApiRequestParams.paramsToMap(params),
options);
return getResponseGetter().request(request, Order.class);
}
/** Creates a new {@code open} order object. */
public static Order create(Map params) throws StripeException {
return create(params, (RequestOptions) null);
}
/** Creates a new {@code open} order object. */
public static Order create(Map params, RequestOptions options)
throws StripeException {
String path = "/v1/orders";
ApiRequest request =
new ApiRequest(BaseAddress.API, ApiResource.RequestMethod.POST, path, params, options);
return getGlobalResponseGetter().request(request, Order.class);
}
/** Creates a new {@code open} order object. */
public static Order create(OrderCreateParams params) throws StripeException {
return create(params, (RequestOptions) null);
}
/** Creates a new {@code open} order object. */
public static Order create(OrderCreateParams params, RequestOptions options)
throws StripeException {
String path = "/v1/orders";
ApiResource.checkNullTypedParams(path, params);
ApiRequest request =
new ApiRequest(
BaseAddress.API,
ApiResource.RequestMethod.POST,
path,
ApiRequestParams.paramsToMap(params),
options);
return getGlobalResponseGetter().request(request, Order.class);
}
/**
* Returns a list of your orders. The orders are returned sorted by creation date, with the most
* recently created orders appearing first.
*/
public static OrderCollection list(Map params) throws StripeException {
return list(params, (RequestOptions) null);
}
/**
* Returns a list of your orders. The orders are returned sorted by creation date, with the most
* recently created orders appearing first.
*/
public static OrderCollection list(Map params, RequestOptions options)
throws StripeException {
String path = "/v1/orders";
ApiRequest request =
new ApiRequest(BaseAddress.API, ApiResource.RequestMethod.GET, path, params, options);
return getGlobalResponseGetter().request(request, OrderCollection.class);
}
/**
* Returns a list of your orders. The orders are returned sorted by creation date, with the most
* recently created orders appearing first.
*/
public static OrderCollection list(OrderListParams params) throws StripeException {
return list(params, (RequestOptions) null);
}
/**
* Returns a list of your orders. The orders are returned sorted by creation date, with the most
* recently created orders appearing first.
*/
public static OrderCollection list(OrderListParams params, RequestOptions options)
throws StripeException {
String path = "/v1/orders";
ApiResource.checkNullTypedParams(path, params);
ApiRequest request =
new ApiRequest(
BaseAddress.API,
ApiResource.RequestMethod.GET,
path,
ApiRequestParams.paramsToMap(params),
options);
return getGlobalResponseGetter().request(request, OrderCollection.class);
}
/**
* When retrieving an order, there is an includable line_items property
* containing the first handful of those items. There is also a URL where you can retrieve the
* full (paginated) list of line items.
*/
public LineItemCollection listLineItems() throws StripeException {
return listLineItems((Map) null, (RequestOptions) null);
}
/**
* When retrieving an order, there is an includable line_items property
* containing the first handful of those items. There is also a URL where you can retrieve the
* full (paginated) list of line items.
*/
public LineItemCollection listLineItems(Map params) throws StripeException {
return listLineItems(params, (RequestOptions) null);
}
/**
* When retrieving an order, there is an includable line_items property
* containing the first handful of those items. There is also a URL where you can retrieve the
* full (paginated) list of line items.
*/
public LineItemCollection listLineItems(Map params, RequestOptions options)
throws StripeException {
String path = String.format("/v1/orders/%s/line_items", ApiResource.urlEncodeId(this.getId()));
ApiRequest request =
new ApiRequest(BaseAddress.API, ApiResource.RequestMethod.GET, path, params, options);
return getResponseGetter().request(request, LineItemCollection.class);
}
/**
* When retrieving an order, there is an includable line_items property
* containing the first handful of those items. There is also a URL where you can retrieve the
* full (paginated) list of line items.
*/
public LineItemCollection listLineItems(OrderListLineItemsParams params) throws StripeException {
return listLineItems(params, (RequestOptions) null);
}
/**
* When retrieving an order, there is an includable line_items property
* containing the first handful of those items. There is also a URL where you can retrieve the
* full (paginated) list of line items.
*/
public LineItemCollection listLineItems(OrderListLineItemsParams params, RequestOptions options)
throws StripeException {
String path = String.format("/v1/orders/%s/line_items", ApiResource.urlEncodeId(this.getId()));
ApiResource.checkNullTypedParams(path, params);
ApiRequest request =
new ApiRequest(
BaseAddress.API,
ApiResource.RequestMethod.GET,
path,
ApiRequestParams.paramsToMap(params),
options);
return getResponseGetter().request(request, LineItemCollection.class);
}
/** Reopens a {@code submitted} order. */
public Order reopen() throws StripeException {
return reopen((Map) null, (RequestOptions) null);
}
/** Reopens a {@code submitted} order. */
public Order reopen(RequestOptions options) throws StripeException {
return reopen((Map) null, options);
}
/** Reopens a {@code submitted} order. */
public Order reopen(Map params) throws StripeException {
return reopen(params, (RequestOptions) null);
}
/** Reopens a {@code submitted} order. */
public Order reopen(Map params, RequestOptions options) throws StripeException {
String path = String.format("/v1/orders/%s/reopen", ApiResource.urlEncodeId(this.getId()));
ApiRequest request =
new ApiRequest(BaseAddress.API, ApiResource.RequestMethod.POST, path, params, options);
return getResponseGetter().request(request, Order.class);
}
/** Reopens a {@code submitted} order. */
public Order reopen(OrderReopenParams params) throws StripeException {
return reopen(params, (RequestOptions) null);
}
/** Reopens a {@code submitted} order. */
public Order reopen(OrderReopenParams params, RequestOptions options) throws StripeException {
String path = String.format("/v1/orders/%s/reopen", ApiResource.urlEncodeId(this.getId()));
ApiResource.checkNullTypedParams(path, params);
ApiRequest request =
new ApiRequest(
BaseAddress.API,
ApiResource.RequestMethod.POST,
path,
ApiRequestParams.paramsToMap(params),
options);
return getResponseGetter().request(request, Order.class);
}
/**
* Retrieves the details of an existing order. Supply the unique order ID from either an order
* creation request or the order list, and Stripe will return the corresponding order information.
*/
public static Order retrieve(String id) throws StripeException {
return retrieve(id, (Map) null, (RequestOptions) null);
}
/**
* Retrieves the details of an existing order. Supply the unique order ID from either an order
* creation request or the order list, and Stripe will return the corresponding order information.
*/
public static Order retrieve(String id, RequestOptions options) throws StripeException {
return retrieve(id, (Map) null, options);
}
/**
* Retrieves the details of an existing order. Supply the unique order ID from either an order
* creation request or the order list, and Stripe will return the corresponding order information.
*/
public static Order retrieve(String id, Map params, RequestOptions options)
throws StripeException {
String path = String.format("/v1/orders/%s", ApiResource.urlEncodeId(id));
ApiRequest request =
new ApiRequest(BaseAddress.API, ApiResource.RequestMethod.GET, path, params, options);
return getGlobalResponseGetter().request(request, Order.class);
}
/**
* Retrieves the details of an existing order. Supply the unique order ID from either an order
* creation request or the order list, and Stripe will return the corresponding order information.
*/
public static Order retrieve(String id, OrderRetrieveParams params, RequestOptions options)
throws StripeException {
String path = String.format("/v1/orders/%s", ApiResource.urlEncodeId(id));
ApiResource.checkNullTypedParams(path, params);
ApiRequest request =
new ApiRequest(
BaseAddress.API,
ApiResource.RequestMethod.GET,
path,
ApiRequestParams.paramsToMap(params),
options);
return getGlobalResponseGetter().request(request, Order.class);
}
/**
* Submitting an Order transitions the status to {@code processing} and creates a PaymentIntent
* object so the order can be paid. If the Order has an {@code amount_total} of 0, no
* PaymentIntent object will be created. Once the order is submitted, its contents cannot be
* changed, unless the reopen method is
* called.
*/
public Order submit(Map params) throws StripeException {
return submit(params, (RequestOptions) null);
}
/**
* Submitting an Order transitions the status to {@code processing} and creates a PaymentIntent
* object so the order can be paid. If the Order has an {@code amount_total} of 0, no
* PaymentIntent object will be created. Once the order is submitted, its contents cannot be
* changed, unless the reopen method is
* called.
*/
public Order submit(Map params, RequestOptions options) throws StripeException {
String path = String.format("/v1/orders/%s/submit", ApiResource.urlEncodeId(this.getId()));
ApiRequest request =
new ApiRequest(BaseAddress.API, ApiResource.RequestMethod.POST, path, params, options);
return getResponseGetter().request(request, Order.class);
}
/**
* Submitting an Order transitions the status to {@code processing} and creates a PaymentIntent
* object so the order can be paid. If the Order has an {@code amount_total} of 0, no
* PaymentIntent object will be created. Once the order is submitted, its contents cannot be
* changed, unless the reopen method is
* called.
*/
public Order submit(OrderSubmitParams params) throws StripeException {
return submit(params, (RequestOptions) null);
}
/**
* Submitting an Order transitions the status to {@code processing} and creates a PaymentIntent
* object so the order can be paid. If the Order has an {@code amount_total} of 0, no
* PaymentIntent object will be created. Once the order is submitted, its contents cannot be
* changed, unless the reopen method is
* called.
*/
public Order submit(OrderSubmitParams params, RequestOptions options) throws StripeException {
String path = String.format("/v1/orders/%s/submit", ApiResource.urlEncodeId(this.getId()));
ApiResource.checkNullTypedParams(path, params);
ApiRequest request =
new ApiRequest(
BaseAddress.API,
ApiResource.RequestMethod.POST,
path,
ApiRequestParams.paramsToMap(params),
options);
return getResponseGetter().request(request, Order.class);
}
/**
* Updates the specific order by setting the values of the parameters passed. Any parameters not
* provided will be left unchanged.
*/
@Override
public Order update(Map params) throws StripeException {
return update(params, (RequestOptions) null);
}
/**
* Updates the specific order by setting the values of the parameters passed. Any parameters not
* provided will be left unchanged.
*/
@Override
public Order update(Map params, RequestOptions options) throws StripeException {
String path = String.format("/v1/orders/%s", ApiResource.urlEncodeId(this.getId()));
ApiRequest request =
new ApiRequest(BaseAddress.API, ApiResource.RequestMethod.POST, path, params, options);
return getResponseGetter().request(request, Order.class);
}
/**
* Updates the specific order by setting the values of the parameters passed. Any parameters not
* provided will be left unchanged.
*/
public Order update(OrderUpdateParams params) throws StripeException {
return update(params, (RequestOptions) null);
}
/**
* Updates the specific order by setting the values of the parameters passed. Any parameters not
* provided will be left unchanged.
*/
public Order update(OrderUpdateParams params, RequestOptions options) throws StripeException {
String path = String.format("/v1/orders/%s", ApiResource.urlEncodeId(this.getId()));
ApiResource.checkNullTypedParams(path, params);
ApiRequest request =
new ApiRequest(
BaseAddress.API,
ApiResource.RequestMethod.POST,
path,
ApiRequestParams.paramsToMap(params),
options);
return getResponseGetter().request(request, Order.class);
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class AutomaticTax extends StripeObject {
/** Whether Stripe automatically computes tax on this Order. */
@SerializedName("enabled")
Boolean enabled;
/**
* The status of the most recent automated tax calculation for this Order.
*
* One of {@code complete}, {@code failed}, or {@code requires_location_inputs}.
*/
@SerializedName("status")
String status;
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class BillingDetails extends StripeObject {
/** Billing address for the order. */
@SerializedName("address")
Address address;
/** Email address for the order. */
@SerializedName("email")
String email;
/** Full name for the order. */
@SerializedName("name")
String name;
/** Billing phone number for the order (including extension). */
@SerializedName("phone")
String phone;
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class Credit extends StripeObject {
/** The amount of this credit to apply to the order. */
@SerializedName("amount")
Long amount;
/** Details for a gift card. */
@SerializedName("gift_card")
GiftCard giftCard;
/** Line items on this order that are ineligible for this credit. */
@SerializedName("ineligible_line_items")
List ineligibleLineItems;
/**
* The type of credit to apply to the order, only {@code gift_card} currently supported.
*
* Equal to {@code gift_card}.
*/
@SerializedName("type")
String type;
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class GiftCard extends StripeObject {
/** The token of the gift card applied to the order. */
@SerializedName("card")
String card;
}
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class Payment extends StripeObject {
/** ID of the payment intent associated with this order. Null when the order is {@code open}. */
@SerializedName("payment_intent")
@Getter(lombok.AccessLevel.NONE)
@Setter(lombok.AccessLevel.NONE)
ExpandableField paymentIntent;
/** Settings describing how the order should configure generated PaymentIntents. */
@SerializedName("settings")
Settings settings;
/**
* The status of the underlying payment associated with this order, if any. Null when the order
* is {@code open}.
*
* One of {@code canceled}, {@code complete}, {@code not_required}, {@code processing},
* {@code requires_action}, {@code requires_capture}, {@code requires_confirmation}, or {@code
* requires_payment_method}.
*/
@SerializedName("status")
String status;
/** 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);
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class Settings extends StripeObject {
/**
* The amount of the application fee (if any) that will be requested to be applied to the
* payment and transferred to the application owner's Stripe account.
*/
@SerializedName("application_fee_amount")
Long applicationFeeAmount;
/**
* Indicates whether order has been opted into using Stripe Dashboard to manage
* payment method types.
*/
@SerializedName("automatic_payment_methods")
AutomaticPaymentMethods automaticPaymentMethods;
/** PaymentMethod-specific configuration to provide to the order's PaymentIntent. */
@SerializedName("payment_method_options")
PaymentMethodOptions paymentMethodOptions;
/**
* The list of payment
* method types to provide to the order's PaymentIntent. Do not include this attribute if
* you prefer to manage your payment methods from the Stripe Dashboard.
*/
@SerializedName("payment_method_types")
List paymentMethodTypes;
/** The URL to redirect the customer to after they authenticate their payment. */
@SerializedName("return_url")
String returnUrl;
/**
* For non-card charges, you can use this value as the complete description that appears on
* your customers' statements. Must contain at least one letter, maximum 22 characters.
*/
@SerializedName("statement_descriptor")
String statementDescriptor;
/**
* Provides information about a card payment 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;
/** Provides configuration for completing a transfer for the order after it is paid. */
@SerializedName("transfer_data")
TransferData transferData;
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class AutomaticPaymentMethods extends StripeObject {
/**
* Whether this Order has been opted into managing payment method types via the Stripe Dashboard.
*/
@SerializedName("enabled")
Boolean enabled;
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class PaymentMethodOptions extends StripeObject {
@SerializedName("acss_debit")
AcssDebit acssDebit;
@SerializedName("afterpay_clearpay")
AfterpayClearpay afterpayClearpay;
@SerializedName("alipay")
Alipay alipay;
@SerializedName("bancontact")
Bancontact bancontact;
@SerializedName("card")
Card card;
@SerializedName("customer_balance")
CustomerBalance customerBalance;
@SerializedName("ideal")
Ideal ideal;
@SerializedName("klarna")
Klarna klarna;
@SerializedName("link")
Link link;
@SerializedName("oxxo")
Oxxo oxxo;
@SerializedName("p24")
P24 p24;
@SerializedName("paypal")
Paypal paypal;
@SerializedName("sepa_debit")
SepaDebit sepaDebit;
@SerializedName("sofort")
Sofort sofort;
@SerializedName("wechat_pay")
WechatPay wechatPay;
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class AcssDebit extends StripeObject {
@SerializedName("mandate_options")
MandateOptions mandateOptions;
/**
* Indicates that you intend to make future payments with this PaymentIntent's payment
* method.
*
* If you provide a Customer with the PaymentIntent, you can use this parameter to attach the payment method to
* the Customer after the PaymentIntent is confirmed and the customer completes any
* required actions. If you don't provide a Customer, you can still attach the payment method to a
* Customer after the transaction completes.
*
*
If the payment method is {@code card_present} and isn't a digital wallet, Stripe
* creates and attaches a generated_card
* payment method representing the card to the Customer instead.
*
*
When processing card payments, Stripe uses {@code setup_future_usage} to help you
* comply with regional legislation and network rules, such as SCA.
*
*
One of {@code none}, {@code off_session}, or {@code on_session}.
*/
@SerializedName("setup_future_usage")
String setupFutureUsage;
/**
* Bank account verification method.
*
*
One of {@code automatic}, {@code instant}, or {@code microdeposits}.
*/
@SerializedName("verification_method")
String verificationMethod;
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class MandateOptions extends StripeObject {
/** A URL for custom mandate text. */
@SerializedName("custom_mandate_url")
String customMandateUrl;
/**
* Description of the interval. Only required if the 'payment_schedule' parameter is
* 'interval' or 'combined'.
*/
@SerializedName("interval_description")
String intervalDescription;
/**
* Payment schedule for the mandate.
*
*
One of {@code combined}, {@code interval}, or {@code sporadic}.
*/
@SerializedName("payment_schedule")
String paymentSchedule;
/**
* Transaction type of the mandate.
*
*
One of {@code business}, or {@code personal}.
*/
@SerializedName("transaction_type")
String transactionType;
}
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class AfterpayClearpay extends StripeObject {
/**
* Controls when the funds will be captured from the customer's account.
*
*
One of {@code automatic}, {@code automatic_async}, or {@code manual}.
*/
@SerializedName("capture_method")
String captureMethod;
/**
* Order identifier shown to the user in Afterpay's online portal. We recommend using a
* value that helps you answer any questions a customer might have about the payment. The
* identifier is limited to 128 characters and may contain only letters, digits,
* underscores, backslashes and dashes.
*/
@SerializedName("reference")
String reference;
/**
* Indicates that you intend to make future payments with the payment method.
*
*
Providing this parameter will attach the payment
* method to the order's Customer, if present, after the order's PaymentIntent is
* confirmed and any required actions from the user are complete. If no Customer was
* provided, the payment method can still be attached to a Customer
* after the transaction completes.
*
*
When processing card payments, Stripe also uses {@code setup_future_usage} to
* dynamically optimize your payment flow and comply with regional legislation and network
* rules, such as SCA.
*
*
If {@code setup_future_usage} is already set and you are performing a request using
* a publishable key, you may only update the value from {@code on_session} to {@code
* off_session}.
*
*
Equal to {@code none}.
*/
@SerializedName("setup_future_usage")
String setupFutureUsage;
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class Alipay extends StripeObject {
/**
* Indicates that you intend to make future payments with this PaymentIntent's payment
* method.
*
*
If you provide a Customer with the PaymentIntent, you can use this parameter to attach the payment method to
* the Customer after the PaymentIntent is confirmed and the customer completes any
* required actions. If you don't provide a Customer, you can still attach the payment method to a
* Customer after the transaction completes.
*
*
If the payment method is {@code card_present} and isn't a digital wallet, Stripe
* creates and attaches a generated_card
* payment method representing the card to the Customer instead.
*
*
When processing card payments, Stripe uses {@code setup_future_usage} to help you
* comply with regional legislation and network rules, such as SCA.
*
*
One of {@code none}, or {@code off_session}.
*/
@SerializedName("setup_future_usage")
String setupFutureUsage;
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class Bancontact extends StripeObject {
/**
* Preferred language of the Bancontact authorization page that the customer is redirected
* to.
*
*
One of {@code de}, {@code en}, {@code fr}, or {@code nl}.
*/
@SerializedName("preferred_language")
String preferredLanguage;
/**
* Indicates that you intend to make future payments with this PaymentIntent's payment
* method.
*
*
If you provide a Customer with the PaymentIntent, you can use this parameter to attach the payment method to
* the Customer after the PaymentIntent is confirmed and the customer completes any
* required actions. If you don't provide a Customer, you can still attach the payment method to a
* Customer after the transaction completes.
*
*
If the payment method is {@code card_present} and isn't a digital wallet, Stripe
* creates and attaches a generated_card
* payment method representing the card to the Customer instead.
*
*
When processing card payments, Stripe uses {@code setup_future_usage} to help you
* comply with regional legislation and network rules, such as SCA.
*
*
One of {@code none}, or {@code off_session}.
*/
@SerializedName("setup_future_usage")
String setupFutureUsage;
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class Card extends StripeObject {
/**
* Controls when the funds will be captured from the customer's account.
*
*
One of {@code automatic}, {@code automatic_async}, or {@code manual}.
*/
@SerializedName("capture_method")
String captureMethod;
/**
* Indicates that you intend to make future payments with the payment method.
*
*
Providing this parameter will attach the payment
* method to the order's Customer, if present, after the order's PaymentIntent is
* confirmed and any required actions from the user are complete. If no Customer was
* provided, the payment method can still be attached to a Customer
* after the transaction completes.
*
*
When processing card payments, Stripe also uses {@code setup_future_usage} to
* dynamically optimize your payment flow and comply with regional legislation and network
* rules, such as SCA.
*
*
If {@code setup_future_usage} is already set and you are performing a request using
* a publishable key, you may only update the value from {@code on_session} to {@code
* off_session}.
*
*
One of {@code none}, {@code off_session}, or {@code on_session}.
*/
@SerializedName("setup_future_usage")
String setupFutureUsage;
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class CustomerBalance extends StripeObject {
@SerializedName("bank_transfer")
BankTransfer bankTransfer;
/**
* The funding method type to be used when there are not enough funds in the customer
* balance. Permitted values include: {@code bank_transfer}.
*
*
Equal to {@code bank_transfer}.
*/
@SerializedName("funding_type")
String fundingType;
/**
* Indicates that you intend to make future payments with this PaymentIntent's payment
* method.
*
*
If you provide a Customer with the PaymentIntent, you can use this parameter to attach the payment method to
* the Customer after the PaymentIntent is confirmed and the customer completes any
* required actions. If you don't provide a Customer, you can still attach the payment method to a
* Customer after the transaction completes.
*
*
If the payment method is {@code card_present} and isn't a digital wallet, Stripe
* creates and attaches a generated_card
* payment method representing the card to the Customer instead.
*
*
When processing card payments, Stripe uses {@code setup_future_usage} to help you
* comply with regional legislation and network rules, such as SCA.
*
*
Equal to {@code none}.
*/
@SerializedName("setup_future_usage")
String setupFutureUsage;
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class BankTransfer extends StripeObject {
@SerializedName("eu_bank_transfer")
EuBankTransfer euBankTransfer;
/**
* List of address types that should be returned in the financial_addresses response. If
* not specified, all valid types will be returned.
*
*
Permitted values include: {@code sort_code}, {@code zengin}, {@code iban}, or
* {@code spei}.
*/
@SerializedName("requested_address_types")
List requestedAddressTypes;
/**
* The bank transfer type that this PaymentIntent is allowed to use for funding
* Permitted values include: {@code eu_bank_transfer}, {@code gb_bank_transfer}, {@code
* jp_bank_transfer}, {@code mx_bank_transfer}, or {@code us_bank_transfer}.
*
* One of {@code eu_bank_transfer}, {@code gb_bank_transfer}, {@code
* jp_bank_transfer}, {@code mx_bank_transfer}, or {@code us_bank_transfer}.
*/
@SerializedName("type")
String type;
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class EuBankTransfer extends StripeObject {
/**
* The desired country code of the bank account information. Permitted values include:
* {@code BE}, {@code DE}, {@code ES}, {@code FR}, {@code IE}, or {@code NL}.
*
*
One of {@code BE}, {@code DE}, {@code ES}, {@code FR}, {@code IE}, or {@code
* NL}.
*/
@SerializedName("country")
String country;
}
}
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class Ideal extends StripeObject {
/**
* Indicates that you intend to make future payments with this PaymentIntent's payment
* method.
*
*
If you provide a Customer with the PaymentIntent, you can use this parameter to attach the payment method to
* the Customer after the PaymentIntent is confirmed and the customer completes any
* required actions. If you don't provide a Customer, you can still attach the payment method to a
* Customer after the transaction completes.
*
*
If the payment method is {@code card_present} and isn't a digital wallet, Stripe
* creates and attaches a generated_card
* payment method representing the card to the Customer instead.
*
*
When processing card payments, Stripe uses {@code setup_future_usage} to help you
* comply with regional legislation and network rules, such as SCA.
*
*
One of {@code none}, or {@code off_session}.
*/
@SerializedName("setup_future_usage")
String setupFutureUsage;
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class Klarna extends StripeObject {
/**
* Controls when the funds will be captured from the customer's account.
*
*
Equal to {@code manual}.
*/
@SerializedName("capture_method")
String captureMethod;
/** Preferred locale of the Klarna checkout page that the customer is redirected to. */
@SerializedName("preferred_locale")
String preferredLocale;
/**
* Indicates that you intend to make future payments with this PaymentIntent's payment
* method.
*
*
If you provide a Customer with the PaymentIntent, you can use this parameter to attach the payment method to
* the Customer after the PaymentIntent is confirmed and the customer completes any
* required actions. If you don't provide a Customer, you can still attach the payment method to a
* Customer after the transaction completes.
*
*
If the payment method is {@code card_present} and isn't a digital wallet, Stripe
* creates and attaches a generated_card
* payment method representing the card to the Customer instead.
*
*
When processing card payments, Stripe uses {@code setup_future_usage} to help you
* comply with regional legislation and network rules, such as SCA.
*
*
Equal to {@code none}.
*/
@SerializedName("setup_future_usage")
String setupFutureUsage;
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class Link extends StripeObject {
/**
* Controls when the funds will be captured from the customer's account.
*
*
Equal to {@code manual}.
*/
@SerializedName("capture_method")
String captureMethod;
/** [Deprecated] This is a legacy parameter that no longer has any function. */
@SerializedName("persistent_token")
@Deprecated
String persistentToken;
/**
* Indicates that you intend to make future payments with this PaymentIntent's payment
* method.
*
*
If you provide a Customer with the PaymentIntent, you can use this parameter to attach the payment method to
* the Customer after the PaymentIntent is confirmed and the customer completes any
* required actions. If you don't provide a Customer, you can still attach the payment method to a
* Customer after the transaction completes.
*
*
If the payment method is {@code card_present} and isn't a digital wallet, Stripe
* creates and attaches a generated_card
* payment method representing the card to the Customer instead.
*
*
When processing card payments, Stripe uses {@code setup_future_usage} to help you
* comply with regional legislation and network rules, such as SCA.
*
*
One of {@code none}, or {@code off_session}.
*/
@SerializedName("setup_future_usage")
String setupFutureUsage;
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class Oxxo extends StripeObject {
/**
* The number of calendar days before an OXXO invoice expires. For example, if you create
* an OXXO invoice on Monday and you set expires_after_days to 2, the OXXO invoice will
* expire on Wednesday at 23:59 America/Mexico_City time.
*/
@SerializedName("expires_after_days")
Long expiresAfterDays;
/**
* Indicates that you intend to make future payments with this PaymentIntent's payment
* method.
*
*
If you provide a Customer with the PaymentIntent, you can use this parameter to attach the payment method to
* the Customer after the PaymentIntent is confirmed and the customer completes any
* required actions. If you don't provide a Customer, you can still attach the payment method to a
* Customer after the transaction completes.
*
*
If the payment method is {@code card_present} and isn't a digital wallet, Stripe
* creates and attaches a generated_card
* payment method representing the card to the Customer instead.
*
*
When processing card payments, Stripe uses {@code setup_future_usage} to help you
* comply with regional legislation and network rules, such as SCA.
*
*
Equal to {@code none}.
*/
@SerializedName("setup_future_usage")
String setupFutureUsage;
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class P24 extends StripeObject {
/**
* Indicates that you intend to make future payments with this PaymentIntent's payment
* method.
*
*
If you provide a Customer with the PaymentIntent, you can use this parameter to attach the payment method to
* the Customer after the PaymentIntent is confirmed and the customer completes any
* required actions. If you don't provide a Customer, you can still attach the payment method to a
* Customer after the transaction completes.
*
*
If the payment method is {@code card_present} and isn't a digital wallet, Stripe
* creates and attaches a generated_card
* payment method representing the card to the Customer instead.
*
*
When processing card payments, Stripe uses {@code setup_future_usage} to help you
* comply with regional legislation and network rules, such as SCA.
*
*
Equal to {@code none}.
*/
@SerializedName("setup_future_usage")
String setupFutureUsage;
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class Paypal extends StripeObject {
/**
* Controls when the funds will be captured from the customer's account.
*
*
Equal to {@code manual}.
*/
@SerializedName("capture_method")
String captureMethod;
/** Preferred locale of the PayPal checkout page that the customer is redirected to. */
@SerializedName("preferred_locale")
String preferredLocale;
/**
* A reference of the PayPal transaction visible to customer which is mapped to PayPal's
* invoice ID. This must be a globally unique ID if you have configured in your PayPal
* settings to block multiple payments per invoice ID.
*/
@SerializedName("reference")
String reference;
/**
* A reference of the PayPal transaction visible to customer which is mapped to PayPal's
* invoice ID. This must be a globally unique ID if you have configured in your PayPal
* settings to block multiple payments per invoice ID.
*/
@SerializedName("reference_id")
String referenceId;
/**
* Indicates that you intend to make future payments with this PaymentIntent's payment
* method.
*
*
If you provide a Customer with the PaymentIntent, you can use this parameter to attach the payment method to
* the Customer after the PaymentIntent is confirmed and the customer completes any
* required actions. If you don't provide a Customer, you can still attach the payment method to a
* Customer after the transaction completes.
*
*
If the payment method is {@code card_present} and isn't a digital wallet, Stripe
* creates and attaches a generated_card
* payment method representing the card to the Customer instead.
*
*
When processing card payments, Stripe uses {@code setup_future_usage} to help you
* comply with regional legislation and network rules, such as SCA.
*
*
One of {@code none}, or {@code off_session}.
*/
@SerializedName("setup_future_usage")
String setupFutureUsage;
/**
* The Stripe connected account IDs of the sellers on the platform for this transaction
* (optional). Only allowed when separate charges
* and transfers are used.
*/
@SerializedName("subsellers")
List subsellers;
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class SepaDebit extends StripeObject {
@SerializedName("mandate_options")
MandateOptions mandateOptions;
/**
* Indicates that you intend to make future payments with this PaymentIntent's payment
* method.
*
* If you provide a Customer with the PaymentIntent, you can use this parameter to attach the payment method to
* the Customer after the PaymentIntent is confirmed and the customer completes any
* required actions. If you don't provide a Customer, you can still attach the payment method to a
* Customer after the transaction completes.
*
*
If the payment method is {@code card_present} and isn't a digital wallet, Stripe
* creates and attaches a generated_card
* payment method representing the card to the Customer instead.
*
*
When processing card payments, Stripe uses {@code setup_future_usage} to help you
* comply with regional legislation and network rules, such as SCA.
*
*
One of {@code none}, {@code off_session}, or {@code on_session}.
*/
@SerializedName("setup_future_usage")
String setupFutureUsage;
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class MandateOptions extends StripeObject {}
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class Sofort extends StripeObject {
/**
* Preferred language of the SOFORT authorization page that the customer is redirected to.
*
*
One of {@code de}, {@code en}, {@code es}, {@code fr}, {@code it}, {@code nl}, or
* {@code pl}.
*/
@SerializedName("preferred_language")
String preferredLanguage;
/**
* Indicates that you intend to make future payments with this PaymentIntent's payment
* method.
*
*
If you provide a Customer with the PaymentIntent, you can use this parameter to attach the payment method to
* the Customer after the PaymentIntent is confirmed and the customer completes any
* required actions. If you don't provide a Customer, you can still attach the payment method to a
* Customer after the transaction completes.
*
*
If the payment method is {@code card_present} and isn't a digital wallet, Stripe
* creates and attaches a generated_card
* payment method representing the card to the Customer instead.
*
*
When processing card payments, Stripe uses {@code setup_future_usage} to help you
* comply with regional legislation and network rules, such as SCA.
*
*
One of {@code none}, or {@code off_session}.
*/
@SerializedName("setup_future_usage")
String setupFutureUsage;
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class WechatPay extends StripeObject {
/** The app ID registered with WeChat Pay. Only required when client is ios or android. */
@SerializedName("app_id")
String appId;
/**
* The client type that the end customer will pay from
*
*
One of {@code android}, {@code ios}, or {@code web}.
*/
@SerializedName("client")
String client;
/**
* Indicates that you intend to make future payments with this PaymentIntent's payment
* method.
*
*
If you provide a Customer with the PaymentIntent, you can use this parameter to attach the payment method to
* the Customer after the PaymentIntent is confirmed and the customer completes any
* required actions. If you don't provide a Customer, you can still attach the payment method to a
* Customer after the transaction completes.
*
*
If the payment method is {@code card_present} and isn't a digital wallet, Stripe
* creates and attaches a generated_card
* payment method representing the card to the Customer instead.
*
*
When processing card payments, Stripe uses {@code setup_future_usage} to help you
* comply with regional legislation and network rules, such as SCA.
*
*
Equal to {@code none}.
*/
@SerializedName("setup_future_usage")
String setupFutureUsage;
}
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class TransferData extends StripeObject {
/**
* The amount that will be transferred automatically when the order is paid. If no amount is
* set, the full amount is transferred. There cannot be any line items with recurring prices
* when using this field.
*/
@SerializedName("amount")
Long amount;
/** ID of the Connected account receiving the transfer. */
@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);
}
}
}
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class ShippingCost extends StripeObject {
/** Total shipping cost before any discounts or taxes are applied. */
@SerializedName("amount_subtotal")
Long amountSubtotal;
/** Total tax amount applied due to shipping costs. If no tax was applied, defaults to 0. */
@SerializedName("amount_tax")
Long amountTax;
/** Total shipping cost after discounts and taxes are applied. */
@SerializedName("amount_total")
Long amountTotal;
/** The ID of the ShippingRate for this order. */
@SerializedName("shipping_rate")
@Getter(lombok.AccessLevel.NONE)
@Setter(lombok.AccessLevel.NONE)
ExpandableField shippingRate;
/** The taxes applied to the shipping rate. */
@SerializedName("taxes")
List taxes;
/** Get ID of expandable {@code shippingRate} object. */
public String getShippingRate() {
return (this.shippingRate != null) ? this.shippingRate.getId() : null;
}
public void setShippingRate(String id) {
this.shippingRate = ApiResource.setExpandableFieldId(id, this.shippingRate);
}
/** Get expanded {@code shippingRate}. */
public ShippingRate getShippingRateObject() {
return (this.shippingRate != null) ? this.shippingRate.getExpanded() : null;
}
public void setShippingRateObject(ShippingRate expandableObject) {
this.shippingRate =
new ExpandableField(expandableObject.getId(), expandableObject);
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class Tax extends StripeObject {
/** Amount of tax applied for this rate. */
@SerializedName("amount")
Long amount;
/**
* Tax rates can be applied to invoices, subscriptions and Checkout
* Sessions to collect tax.
*
* Related guide: Tax rates
*/
@SerializedName("rate")
TaxRate rate;
/**
* The reasoning behind this tax, for example, if the product is tax exempt. The possible
* values for this field may be extended as new tax rules are supported.
*
*
One of {@code customer_exempt}, {@code not_collecting}, {@code not_subject_to_tax},
* {@code not_supported}, {@code portion_product_exempt}, {@code portion_reduced_rated},
* {@code portion_standard_rated}, {@code product_exempt}, {@code product_exempt_holiday},
* {@code proportionally_rated}, {@code reduced_rated}, {@code reverse_charge}, {@code
* standard_rated}, {@code taxable_basis_reduced}, or {@code zero_rated}.
*/
@SerializedName("taxability_reason")
String taxabilityReason;
/** The amount on which tax is calculated, in cents (or local equivalent). */
@SerializedName("taxable_amount")
Long taxableAmount;
}
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class ShippingDetails extends StripeObject {
/** Recipient shipping address. Required if the order includes products that are shippable. */
@SerializedName("address")
Address address;
/** Recipient name. */
@SerializedName("name")
String name;
/** Recipient phone (including extension). */
@SerializedName("phone")
String phone;
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class TaxDetails extends StripeObject {
/**
* Describes the purchaser's tax exemption status. One of {@code none}, {@code exempt}, or
* {@code reverse}.
*/
@SerializedName("tax_exempt")
String taxExempt;
/** The purchaser's tax IDs to be used in calculation of tax for this Order. */
@SerializedName("tax_ids")
List taxIds;
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class TaxId extends StripeObject {
/**
* The type of the tax ID, one of {@code ad_nrt}, {@code ar_cuit}, {@code eu_vat}, {@code
* bo_tin}, {@code br_cnpj}, {@code br_cpf}, {@code cn_tin}, {@code co_nit}, {@code cr_tin},
* {@code do_rcn}, {@code ec_ruc}, {@code eu_oss_vat}, {@code hr_oib}, {@code pe_ruc}, {@code
* ro_tin}, {@code rs_pib}, {@code sv_nit}, {@code uy_ruc}, {@code ve_rif}, {@code vn_tin},
* {@code gb_vat}, {@code nz_gst}, {@code au_abn}, {@code au_arn}, {@code in_gst}, {@code
* no_vat}, {@code no_voec}, {@code za_vat}, {@code ch_vat}, {@code mx_rfc}, {@code sg_uen},
* {@code ru_inn}, {@code ru_kpp}, {@code ca_bn}, {@code hk_br}, {@code es_cif}, {@code
* tw_vat}, {@code th_vat}, {@code jp_cn}, {@code jp_rn}, {@code jp_trn}, {@code li_uid},
* {@code my_itn}, {@code us_ein}, {@code kr_brn}, {@code ca_qst}, {@code ca_gst_hst}, {@code
* ca_pst_bc}, {@code ca_pst_mb}, {@code ca_pst_sk}, {@code my_sst}, {@code sg_gst}, {@code
* ae_trn}, {@code cl_tin}, {@code sa_vat}, {@code id_npwp}, {@code my_frp}, {@code il_vat},
* {@code ge_vat}, {@code ua_vat}, {@code is_vat}, {@code bg_uic}, {@code hu_tin}, {@code
* si_tin}, {@code ke_pin}, {@code tr_tin}, {@code eg_tin}, {@code ph_tin}, {@code bh_vat},
* {@code kz_bin}, {@code ng_tin}, {@code om_vat}, {@code de_stn}, {@code ch_uid}, or {@code
* unknown}.
*/
@SerializedName("type")
String type;
/** The value of the tax ID. */
@SerializedName("value")
String value;
}
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class TotalDetails extends StripeObject {
@SerializedName("amount_credit")
Long amountCredit;
/** This is the sum of all the discounts. */
@SerializedName("amount_discount")
Long amountDiscount;
/** This is the sum of all the shipping amounts. */
@SerializedName("amount_shipping")
Long amountShipping;
/** This is the sum of all the tax amounts. */
@SerializedName("amount_tax")
Long amountTax;
@SerializedName("breakdown")
Breakdown breakdown;
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class Breakdown extends StripeObject {
/** The aggregated discounts. */
@SerializedName("discounts")
List discounts;
/** The aggregated tax amounts by rate. */
@SerializedName("taxes")
List taxes;
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class Discount extends StripeObject {
/** The amount discounted. */
@SerializedName("amount")
Long amount;
/**
* A discount represents the actual application of a coupon or promotion code. It contains
* information about when the discount began, when it will end, and what it is applied to.
*
* Related guide: Applying discounts to
* subscriptions
*/
@SerializedName("discount")
com.stripe.model.Discount discount;
}
@Getter
@Setter
@EqualsAndHashCode(callSuper = false)
public static class Tax extends StripeObject {
/** Amount of tax applied for this rate. */
@SerializedName("amount")
Long amount;
/**
* Tax rates can be applied to invoices, subscriptions and Checkout
* Sessions to collect tax.
*
*
Related guide: Tax rates
*/
@SerializedName("rate")
TaxRate rate;
/**
* The reasoning behind this tax, for example, if the product is tax exempt. The possible
* values for this field may be extended as new tax rules are supported.
*
*
One of {@code customer_exempt}, {@code not_collecting}, {@code not_subject_to_tax},
* {@code not_supported}, {@code portion_product_exempt}, {@code portion_reduced_rated},
* {@code portion_standard_rated}, {@code product_exempt}, {@code product_exempt_holiday},
* {@code proportionally_rated}, {@code reduced_rated}, {@code reverse_charge}, {@code
* standard_rated}, {@code taxable_basis_reduced}, or {@code zero_rated}.
*/
@SerializedName("taxability_reason")
String taxabilityReason;
/** The amount on which tax is calculated, in cents (or local equivalent). */
@SerializedName("taxable_amount")
Long taxableAmount;
}
}
}
@Override
public void setResponseGetter(StripeResponseGetter responseGetter) {
super.setResponseGetter(responseGetter);
trySetResponseGetter(application, responseGetter);
trySetResponseGetter(automaticTax, responseGetter);
trySetResponseGetter(billingDetails, responseGetter);
trySetResponseGetter(customer, responseGetter);
trySetResponseGetter(lineItems, responseGetter);
trySetResponseGetter(payment, responseGetter);
trySetResponseGetter(shippingCost, responseGetter);
trySetResponseGetter(shippingDetails, responseGetter);
trySetResponseGetter(taxDetails, responseGetter);
trySetResponseGetter(totalDetails, responseGetter);
}
}