Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,58 @@ This release changes the pinned API version to `2026-03-25.preview` and contains
* Add support for event notifications `V1AccountSignalsIncludingDelinquencyCreatedEvent`, `V2CoreAccountSignalsFraudulentWebsiteReadyEvent`, and `V2SignalsAccountSignalFraudulentMerchantReadyEvent`
* [#2188](https://github.com/stripe/stripe-java/pull/2188) Merge to private-preview

## 32.0.0 - 2026-03-25

This release changes the pinned API version to `2026-03-25.dahlia` and contains breaking changes (prefixed with ⚠️ below). There's also a [detailed migration guide](https://github.com/stripe/stripe-java/wiki/Migration-guide-for-v32) to simplify your upgrade process.

Please review details for the breaking changes and alternatives in the [Stripe API changelog](https://docs.stripe.com/changelog/dahlia) before upgrading.

* ⚠️ **Breaking change:** [#2182](https://github.com/stripe/stripe-java/pull/2182) Add setHttpClient to StripeClientBuilder; clean up apiKey/authenticator coupling
- ⚠️ Removed `RequestOptions.getApiKey()`, `RequestOptions.RequestOptionsBuilder.getApiKey()`, and `StripeClient.StripeClientBuilder.getApiKey()`. Use `getAuthenticator()` instead.
- Added `StripeClient.StripeClientBuilder.setHttpClient(HttpClient)` to allow injecting a custom HTTP client.
* ⚠️ **Breaking change:** [#2187](https://github.com/stripe/stripe-java/pull/2187) Regenerate with decimal_string enabled for v2 APIs
- V2 API decimal fields changed type from `String` to `BigDecimal`. Code that reads or writes these fields as `String` will need to use `BigDecimal` instead. Affected fields:
- **V2.Core.Account** / **V2.Core.AccountPerson**: `percentOwnership`
- **PaymentEvaluation.Signals.FraudulentPayment**: `score`
- Params: `AccountCreateParams`, `PersonCreateParams`, `AccountTokenCreateParams`, `PersonTokenCreateParams` (all: `percentOwnership`)
- Params: `InvoiceItemCreateParams`, `InvoiceAddLinesParams`, `InvoiceUpdateLinesParams`, `InvoiceCreatePreviewParams` (all: `quantityDecimal`)
* ⚠️ **Breaking change:** [#2131](https://github.com/stripe/stripe-java/pull/2131) Use HTTP status code in V2 errors
- `RateLimitException` now extends `StripeException` rather than `ApiException`
- Non-200 status codes from V2 endpoints will throw a `StripeException` (e.g. `RateLimitException`, `InvalidRequestException`, etc.) like in V1 instead of a generic `ApiException`
* ⚠️ **Breaking change:** [#2190](https://github.com/stripe/stripe-java/pull/2190) Throw an error when using the wrong webhook parsing method
* ⚠️ **Breaking change:** [#2172](https://github.com/stripe/stripe-java/pull/2172) Make `RequestOptions` & `RawRequestOptions` constructors private and add Stripe-Request-Trigger header
* ⚠️ **Breaking change:** [#2181](https://github.com/stripe/stripe-java/pull/2181) Change Automatic-Module-Name to com.stripe
- Changes `Automatic-Module-Name` from `stripe.java` to `com.stripe`. Users with `requires stripe.java;` in their `module-info.java` will need to update to `requires com.stripe;`.
* [#2179](https://github.com/stripe/stripe-java/pull/2179) Add runtime support for V2 int64 string-encoded fields


### ⚠️ Breaking changes due to changes in the Stripe API

* Generated changes from [#2170](https://github.com/stripe/stripe-java/pull/2170), [#2193](https://github.com/stripe/stripe-java/pull/2193), [#2191](https://github.com/stripe/stripe-java/pull/2191)
* Add support for `upiPayments` on `Account.capabilities`, `AccountCreateParams.capabilities`, and `AccountUpdateParams.capabilities`
* Add support for `upi` on `Charge.payment_method_details`, `ConfirmationToken.payment_method_preview`, `ConfirmationTokenCreateParams.payment_method_data`, `Mandate.payment_method_details`, `PaymentAttemptRecord.payment_method_details`, `PaymentIntent.payment_method_options`, `PaymentIntentConfirmParams.payment_method_data`, `PaymentIntentConfirmParams.payment_method_options`, `PaymentIntentCreateParams.payment_method_data`, `PaymentIntentCreateParams.payment_method_options`, `PaymentIntentUpdateParams.payment_method_data`, `PaymentIntentUpdateParams.payment_method_options`, `PaymentMethodConfigurationCreateParams`, `PaymentMethodConfigurationUpdateParams`, `PaymentMethodConfiguration`, `PaymentMethodCreateParams`, `PaymentMethod`, `PaymentRecord.payment_method_details`, `SetupAttempt.payment_method_details`, `SetupIntent.payment_method_options`, `SetupIntentConfirmParams.payment_method_data`, `SetupIntentConfirmParams.payment_method_options`, `SetupIntentCreateParams.payment_method_data`, `SetupIntentCreateParams.payment_method_options`, `SetupIntentUpdateParams.payment_method_data`, `SetupIntentUpdateParams.payment_method_options`, `checkout.Session.payment_method_options`, and `checkout.SessionCreateParams.payment_method_options`
* Add support for `integrationIdentifier` on `checkout.SessionCreateParams` and `checkout.Session`
* Add support for new value `upi` on enums `PaymentIntentConfirmParams.excludedPaymentMethodTypes`, `PaymentIntentCreateParams.excludedPaymentMethodTypes`, `PaymentIntentUpdateParams.excludedPaymentMethodTypes`, `SetupIntentCreateParams.excludedPaymentMethodTypes`, `SetupIntentUpdateParams.excludedPaymentMethodTypes`, and `checkout.SessionCreateParams.excludedPaymentMethodTypes`
* Add support for `crypto` on `checkout.SessionCreateParams.payment_method_options`
* Add support for new value `upi` on enum `checkout.SessionCreateParams.paymentMethodTypes`
* Add support for `pendingInvoiceItemInterval` on `checkout.SessionCreateParams.subscription_data`
* Add support for new values `elements`, `embedded_page`, `form`, and `hosted_page` on enum `checkout.SessionCreateParams.uiMode`
* Add support for new value `upi` on enums `ConfirmationTokenCreateParams.payment_method_data.type`, `PaymentIntentConfirmParams.payment_method_data.type`, `PaymentIntentCreateParams.payment_method_data.type`, `PaymentIntentUpdateParams.payment_method_data.type`, `SetupIntentConfirmParams.payment_method_data.type`, `SetupIntentCreateParams.payment_method_data.type`, and `SetupIntentUpdateParams.payment_method_data.type`
* Add support for `metadata` on `CreditNoteCreateParams.lines[]`, `CreditNoteLineItem`, `CreditNotePreviewLinesParams.lines[]`, and `CreditNotePreviewParams.lines[]`
* Add support for new value `upi` on enums `CustomerListPaymentMethodsParams.type`, `PaymentMethodCreateParams.type`, and `PaymentMethodListParams.type`
* Add support for `quantityDecimal` on `InvoiceAddLinesParams.lines[]`, `InvoiceCreatePreviewParams.invoice_items[]`, `InvoiceItemCreateParams`, `InvoiceItemUpdateParams`, `InvoiceItem`, `InvoiceLineItemUpdateParams`, `InvoiceLineItem`, and `InvoiceUpdateLinesParams.lines[]`
* ⚠️ Add support for `level` on `issuing.AuthorizationCreateParams.risk_assessment.card_testing_risk` and `issuing.AuthorizationCreateParams.risk_assessment.merchant_dispute_risk`
* ⚠️ Remove support for `riskLevel` on `issuing.AuthorizationCreateParams.risk_assessment.card_testing_risk` and `issuing.AuthorizationCreateParams.risk_assessment.merchant_dispute_risk`
* Add support for `lifecycleControls` on `issuing.CardCreateParams` and `issuing.Card`
* Add support for `cryptogram`, `electronicCommerceIndicator`, `exemptionIndicatorApplied`, and `exemptionIndicator` on `PaymentAttemptRecord.payment_method_details.card.three_d_secure` and `PaymentRecord.payment_method_details.card.three_d_secure`
* Add support for `upiHandleRedirectOrDisplayQrCode` on `PaymentIntent.next_action` and `SetupIntent.next_action`
* Add support for new value `upi` on enums `PaymentLinkCreateParams.paymentMethodTypes` and `PaymentLinkUpdateParams.paymentMethodTypes`
* Add support for `recommendedAction` and `signals` on `radar.PaymentEvaluation`
* ⚠️ Remove support for `insights` on `radar.PaymentEvaluation`
* Add support for new value `crypto_fingerprint` on enum `radar.ValueListCreateParams.itemType`
* Add support for new value `2026-03-25.dahlia` on enum `WebhookEndpointCreateParams.apiVersion`
* ⚠️ Change type of `v2.core.EventDestinationCreateParams.eventsFrom` from `enum('other_accounts'|'self')` to `string`

## 31.5.0-alpha.4 - 2026-03-18
* [#2183](https://github.com/stripe/stripe-java/pull/2183) Update generated code for private-preview
* Add support for `simulate_crypto_deposit` test helper method on resource `PaymentIntent`
Expand Down
2 changes: 1 addition & 1 deletion CODEGEN_VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
b0095e1dae0437fa60f0933a38f0914e8bba44ff
16e50491e9d896cb53da4a46080b4333741b76cb
2 changes: 1 addition & 1 deletion OPENAPI_VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v2207
v2217
2 changes: 1 addition & 1 deletion src/main/java/com/stripe/ApiVersion.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
package com.stripe;

final class ApiVersion {
public static final String CURRENT = "2026-03-25.preview";
public static final String CURRENT = "2026-04-01.preview";
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public static final class EventData {
* Open Enum. The capability which had its status updated.
*
* <p>One of {@code bank_accounts.instant}, {@code bank_accounts.local}, {@code
* bank_accounts.wire}, {@code cards}, {@code crypto_wallets_v2}, {@code
* bank_accounts.wire}, {@code cards}, {@code crypto_wallets_v2}, {@code paper_checks}, {@code
* stripe_balance.payouts}, {@code stripe_balance.stripe_transfers}, or {@code
* stripe.transfers}.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,9 @@ public static final class EventData {
* holds_currencies.gbp}, {@code holds_currencies.usd}, {@code holds_currencies.usdc}, {@code
* inbound_transfers.bank_accounts}, {@code outbound_payments.bank_accounts}, {@code
* outbound_payments.cards}, {@code outbound_payments.crypto_wallets}, {@code
* outbound_payments.financial_accounts}, {@code outbound_transfers.bank_accounts}, {@code
* outbound_transfers.crypto_wallets}, or {@code outbound_transfers.financial_accounts}.
* outbound_payments.financial_accounts}, {@code outbound_payments.paper_checks}, {@code
* outbound_transfers.bank_accounts}, {@code outbound_transfers.crypto_wallets}, or {@code
* outbound_transfers.financial_accounts}.
*/
@SerializedName("updated_capability")
String updatedCapability;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ public final class V2CoreHealthApiErrorResolvedEvent extends Event {
@Getter
@Setter
public static final class EventData {
/** The alert ID. */
@SerializedName("alert_id")
String alertId;
/** The grouping key for the alert. */
@SerializedName("grouping_key")
String groupingKey;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ public final class V2CoreHealthApiLatencyResolvedEvent extends Event {
@Getter
@Setter
public static final class EventData {
/** The alert ID. */
@SerializedName("alert_id")
String alertId;
/** The grouping key for the alert. */
@SerializedName("grouping_key")
String groupingKey;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ public final class V2CoreHealthAuthorizationRateDropResolvedEvent extends Event
@Getter
@Setter
public static final class EventData {
/** The alert ID. */
@SerializedName("alert_id")
String alertId;
/** The grouping key for the alert. */
@SerializedName("grouping_key")
String groupingKey;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ public final class V2CoreHealthIssuingAuthorizationRequestErrorsFiringEvent exte
@Getter
@Setter
public static final class EventData {
/** The alert ID. */
@SerializedName("alert_id")
String alertId;
/** The grouping key for the alert. */
@SerializedName("grouping_key")
String groupingKey;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ public final class V2CoreHealthIssuingAuthorizationRequestErrorsResolvedEvent ex
@Getter
@Setter
public static final class EventData {
/** The alert ID. */
@SerializedName("alert_id")
String alertId;
/** The grouping key for the alert. */
@SerializedName("grouping_key")
String groupingKey;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ public final class V2CoreHealthIssuingAuthorizationRequestTimeoutResolvedEvent e
@Getter
@Setter
public static final class EventData {
/** The alert ID. */
@SerializedName("alert_id")
String alertId;
/** The grouping key for the alert. */
@SerializedName("grouping_key")
String groupingKey;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ public final class V2CoreHealthPaymentMethodErrorResolvedEvent extends Event {
@Getter
@Setter
public static final class EventData {
/** The alert ID. */
@SerializedName("alert_id")
String alertId;
/** The grouping key for the alert. */
@SerializedName("grouping_key")
String groupingKey;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ public final class V2CoreHealthSepaDebitDelayedFiringEvent extends Event {
@Getter
@Setter
public static final class EventData {
/** The alert ID. */
@SerializedName("alert_id")
String alertId;
/** The grouping key for the alert. */
@SerializedName("grouping_key")
String groupingKey;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ public final class V2CoreHealthSepaDebitDelayedResolvedEvent extends Event {
@Getter
@Setter
public static final class EventData {
/** The alert ID. */
@SerializedName("alert_id")
String alertId;
/** The grouping key for the alert. */
@SerializedName("grouping_key")
String groupingKey;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ public final class V2CoreHealthTrafficVolumeDropResolvedEvent extends Event {
@Getter
@Setter
public static final class EventData {
/** The alert ID. */
@SerializedName("alert_id")
String alertId;
/** The grouping key for the alert. */
@SerializedName("grouping_key")
String groupingKey;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ public final class V2CoreHealthWebhookLatencyResolvedEvent extends Event {
@Getter
@Setter
public static final class EventData {
/** The alert ID. */
@SerializedName("alert_id")
String alertId;
/** The grouping key for the alert. */
@SerializedName("grouping_key")
String groupingKey;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// File generated from our OpenAPI spec
package com.stripe.events;

import com.google.gson.annotations.SerializedName;
import com.stripe.exception.StripeException;
import com.stripe.model.v2.core.Event;
import com.stripe.model.v2.core.Event.RelatedObject;
import com.stripe.model.v2.data.reporting.QueryRun;
import lombok.Getter;

@Getter
public final class V2DataReportingQueryRunCreatedEvent extends Event {
@SerializedName("related_object")

/** Object containing the reference to API resource relevant to the event. */
RelatedObject relatedObject;

/** Retrieves the related object from the API. Make an API request on every call. */
public QueryRun fetchRelatedObject() throws StripeException {
return (QueryRun) super.fetchRelatedObject(this.relatedObject);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// File generated from our OpenAPI spec
package com.stripe.events;

import com.google.gson.annotations.SerializedName;
import com.stripe.exception.StripeException;
import com.stripe.model.v2.core.Event.RelatedObject;
import com.stripe.model.v2.core.EventNotification;
import com.stripe.model.v2.data.reporting.QueryRun;
import lombok.Getter;

@Getter
public final class V2DataReportingQueryRunCreatedEventNotification extends EventNotification {
@SerializedName("related_object")

/** Object containing the reference to API resource relevant to the event. */
RelatedObject relatedObject;

/** Retrieves the related object from the API. Make an API request on every call. */
public QueryRun fetchRelatedObject() throws StripeException {
return (QueryRun) super.fetchRelatedObject(this.relatedObject);
}
/** Retrieve the corresponding full event from the Stripe API. */
@Override
public V2DataReportingQueryRunCreatedEvent fetchEvent() throws StripeException {
return (V2DataReportingQueryRunCreatedEvent) super.fetchEvent();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// File generated from our OpenAPI spec
package com.stripe.events;

import com.google.gson.annotations.SerializedName;
import com.stripe.exception.StripeException;
import com.stripe.model.v2.core.Event;
import com.stripe.model.v2.core.Event.RelatedObject;
import com.stripe.model.v2.data.reporting.QueryRun;
import lombok.Getter;

@Getter
public final class V2DataReportingQueryRunFailedEvent extends Event {
@SerializedName("related_object")

/** Object containing the reference to API resource relevant to the event. */
RelatedObject relatedObject;

/** Retrieves the related object from the API. Make an API request on every call. */
public QueryRun fetchRelatedObject() throws StripeException {
return (QueryRun) super.fetchRelatedObject(this.relatedObject);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// File generated from our OpenAPI spec
package com.stripe.events;

import com.google.gson.annotations.SerializedName;
import com.stripe.exception.StripeException;
import com.stripe.model.v2.core.Event.RelatedObject;
import com.stripe.model.v2.core.EventNotification;
import com.stripe.model.v2.data.reporting.QueryRun;
import lombok.Getter;

@Getter
public final class V2DataReportingQueryRunFailedEventNotification extends EventNotification {
@SerializedName("related_object")

/** Object containing the reference to API resource relevant to the event. */
RelatedObject relatedObject;

/** Retrieves the related object from the API. Make an API request on every call. */
public QueryRun fetchRelatedObject() throws StripeException {
return (QueryRun) super.fetchRelatedObject(this.relatedObject);
}
/** Retrieve the corresponding full event from the Stripe API. */
@Override
public V2DataReportingQueryRunFailedEvent fetchEvent() throws StripeException {
return (V2DataReportingQueryRunFailedEvent) super.fetchEvent();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// File generated from our OpenAPI spec
package com.stripe.events;

import com.google.gson.annotations.SerializedName;
import com.stripe.exception.StripeException;
import com.stripe.model.v2.core.Event;
import com.stripe.model.v2.core.Event.RelatedObject;
import com.stripe.model.v2.data.reporting.QueryRun;
import lombok.Getter;

@Getter
public final class V2DataReportingQueryRunSucceededEvent extends Event {
@SerializedName("related_object")

/** Object containing the reference to API resource relevant to the event. */
RelatedObject relatedObject;

/** Retrieves the related object from the API. Make an API request on every call. */
public QueryRun fetchRelatedObject() throws StripeException {
return (QueryRun) super.fetchRelatedObject(this.relatedObject);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// File generated from our OpenAPI spec
package com.stripe.events;

import com.google.gson.annotations.SerializedName;
import com.stripe.exception.StripeException;
import com.stripe.model.v2.core.Event.RelatedObject;
import com.stripe.model.v2.core.EventNotification;
import com.stripe.model.v2.data.reporting.QueryRun;
import lombok.Getter;

@Getter
public final class V2DataReportingQueryRunSucceededEventNotification extends EventNotification {
@SerializedName("related_object")

/** Object containing the reference to API resource relevant to the event. */
RelatedObject relatedObject;

/** Retrieves the related object from the API. Make an API request on every call. */
public QueryRun fetchRelatedObject() throws StripeException {
return (QueryRun) super.fetchRelatedObject(this.relatedObject);
}
/** Retrieve the corresponding full event from the Stripe API. */
@Override
public V2DataReportingQueryRunSucceededEvent fetchEvent() throws StripeException {
return (V2DataReportingQueryRunSucceededEvent) super.fetchEvent();
}
}
Loading
Loading