Skip to content
Open
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
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
# Changelog

## 15.5.0 - 2026-08-10
* [#1874](https://github.com/stripe/stripe-python/pull/1874) Add async iteration to v2 list auto-pagination
- Adds `async for` support to v2 `ListObject.auto_paging_iter()`.
* [#1869](https://github.com/stripe/stripe-python/pull/1869) Surface `object` property on `EventNotification`
* [#1867](https://github.com/stripe/stripe-python/pull/1867) Emit Claude Code plugin hint at module load time
- Emits new Claude Code plugin hint when `CLAUDECODE` or `CLAUDE_CODE_CHILD_SESSION` environment variables are detected.
* [#1855](https://github.com/stripe/stripe-python/pull/1855) add/adjust event parsing helpers

- Added methods that return their respective `Event`/`EventNotification` class instances without verifying authenticity. Use them when you've previously verified an event (e.g. you verified, put the event in a queue, and are now processing). Supports events from [AWS EventBridge](https://docs.stripe.com/event-destinations/eventbridge) and [Azure Event Grid](https://docs.stripe.com/event-destinations/eventgrid) natively.
- `Webhook.construct_event_without_verification(payload)`
- `StripeClient.construct_event_without_verification(payload)`
- `StripeClient.parse_event_notification_without_verification(payload)`
- Added `WebhookSignature.generate_signature_header(payload, secret, timestamp=None)`, which computes a full `Stripe-Signature` header for the given payload. Useful for unit tests!

* [#1863](https://github.com/stripe/stripe-python/pull/1863) Add `stripe.major_api_version` constant

## 15.5.0a2 - 2026-08-05
* [#1859](https://github.com/stripe/stripe-python/pull/1859) Update generated code for private-preview
* Add support for new resource `billing.FeedbackOptions`
Expand Down
2 changes: 1 addition & 1 deletion CODEGEN_VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
85839f80afcaccd622aa30bf53a414cdffbd57bc
cd4bf5c733abad0866909d0fcb66d936b11a5fd9
2 changes: 1 addition & 1 deletion OPENAPI_VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v2369
v2393
2 changes: 2 additions & 0 deletions stripe/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,7 @@ def add_beta_version(
FeatureNotEnabledError as FeatureNotEnabledError,
FinancialAccountNotOpenError as FinancialAccountNotOpenError,
FxQuoteExpiredError as FxQuoteExpiredError,
FxQuoteNeedsRefreshError as FxQuoteNeedsRefreshError,
IdempotencyError as IdempotencyError,
InsufficientFundsError as InsufficientFundsError,
InvalidPaymentMethodError as InvalidPaymentMethodError,
Expand Down Expand Up @@ -846,6 +847,7 @@ def add_beta_version(
"FeatureNotEnabledError": ("stripe._error", False),
"FinancialAccountNotOpenError": ("stripe._error", False),
"FxQuoteExpiredError": ("stripe._error", False),
"FxQuoteNeedsRefreshError": ("stripe._error", False),
"IdempotencyError": ("stripe._error", False),
"InsufficientFundsError": ("stripe._error", False),
"InvalidPaymentMethodError": ("stripe._error", False),
Expand Down
12 changes: 3 additions & 9 deletions stripe/_account.py
Original file line number Diff line number Diff line change
Expand Up @@ -507,7 +507,7 @@ class Capabilities(StripeObject):
"""
sequra_payments: Optional[Literal["active", "inactive", "pending"]]
"""
The status of the Sequra capability of the account, or whether the account can directly process Sequra payments.
The status of the SeQura capability of the account, or whether the account can directly process SeQura payments.
"""
shopeepay_payments: Optional[Literal["active", "inactive", "pending"]]
"""
Expand Down Expand Up @@ -1074,10 +1074,7 @@ class Error(StripeObject):
"invalid_url_website_incomplete_under_construction",
"invalid_url_website_other",
"invalid_value_other",
"partner_disabled_dispute_rate",
"partner_disabled_responsibilities",
"partner_disabled_restricted_business",
"partner_disabled_suspected_fraud",
"partner_disabled",
"unsupported_business_type",
"verification_data_not_found",
"verification_directors_mismatch",
Expand Down Expand Up @@ -1260,10 +1257,7 @@ class Error(StripeObject):
"invalid_url_website_incomplete_under_construction",
"invalid_url_website_other",
"invalid_value_other",
"partner_disabled_dispute_rate",
"partner_disabled_responsibilities",
"partner_disabled_restricted_business",
"partner_disabled_suspected_fraud",
"partner_disabled",
"unsupported_business_type",
"verification_data_not_found",
"verification_directors_mismatch",
Expand Down
2 changes: 2 additions & 0 deletions stripe/_api_requestor.py
Original file line number Diff line number Diff line change
Expand Up @@ -418,6 +418,8 @@ def specific_v2_api_error(self, rbody, rcode, resp, rheaders, error_data):
return error.FinancialAccountNotOpenError(**error_args)
elif type == "fx_quote_expired":
return error.FxQuoteExpiredError(**error_args)
elif type == "fx_quote_needs_refresh":
return error.FxQuoteNeedsRefreshError(**error_args)
elif type == "insufficient_funds":
return error.InsufficientFundsError(**error_args)
elif type == "invalid_payment_method":
Expand Down
10 changes: 2 additions & 8 deletions stripe/_bank_account.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,10 +82,7 @@ class Error(StripeObject):
"invalid_url_website_incomplete_under_construction",
"invalid_url_website_other",
"invalid_value_other",
"partner_disabled_dispute_rate",
"partner_disabled_responsibilities",
"partner_disabled_restricted_business",
"partner_disabled_suspected_fraud",
"partner_disabled",
"unsupported_business_type",
"verification_data_not_found",
"verification_directors_mismatch",
Expand Down Expand Up @@ -218,10 +215,7 @@ class Error(StripeObject):
"invalid_url_website_incomplete_under_construction",
"invalid_url_website_other",
"invalid_value_other",
"partner_disabled_dispute_rate",
"partner_disabled_responsibilities",
"partner_disabled_restricted_business",
"partner_disabled_suspected_fraud",
"partner_disabled",
"unsupported_business_type",
"verification_data_not_found",
"verification_directors_mismatch",
Expand Down
10 changes: 2 additions & 8 deletions stripe/_capability.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,7 @@ class Error(StripeObject):
"invalid_url_website_incomplete_under_construction",
"invalid_url_website_other",
"invalid_value_other",
"partner_disabled_dispute_rate",
"partner_disabled_responsibilities",
"partner_disabled_restricted_business",
"partner_disabled_suspected_fraud",
"partner_disabled",
"unsupported_business_type",
"verification_data_not_found",
"verification_directors_mismatch",
Expand Down Expand Up @@ -272,10 +269,7 @@ class Error(StripeObject):
"invalid_url_website_incomplete_under_construction",
"invalid_url_website_other",
"invalid_value_other",
"partner_disabled_dispute_rate",
"partner_disabled_responsibilities",
"partner_disabled_restricted_business",
"partner_disabled_suspected_fraud",
"partner_disabled",
"unsupported_business_type",
"verification_data_not_found",
"verification_directors_mismatch",
Expand Down
10 changes: 5 additions & 5 deletions stripe/_charge.py
Original file line number Diff line number Diff line change
Expand Up @@ -1809,9 +1809,9 @@ class Link(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.
"""
pricing_group: Optional[str]
funding_source_group: Optional[str]
"""
The pricing bundle applied to this Link payment at confirmation time. Maps to a bundle in your Stripe pricing contract and on Stripe's published pricing page. Omitted if bundle lookup failed at confirmation time.
The funding source group applied to this Link payment at confirmation time. Maps to a bundle in your Stripe pricing contract and on Stripe's published pricing page. Omitted if group lookup failed at confirmation time.
"""

class MbWay(StripeObject):
Expand Down Expand Up @@ -2132,7 +2132,7 @@ class Pix(StripeObject):
"""
mandate: Optional[str]
"""
ID of the multi use Mandate generated by the PaymentIntent
ID of the multi use Mandate generated by the PaymentIntent or SetupIntent.
"""

class Promptpay(StripeObject):
Expand Down Expand Up @@ -2265,7 +2265,7 @@ class SepaDebit(StripeObject):
class Sequra(StripeObject):
transaction_id: Optional[str]
"""
The Sequra transaction ID associated with this payment.
The SeQura transaction ID associated with this payment.
"""

class Shopeepay(StripeObject):
Expand Down Expand Up @@ -2351,7 +2351,7 @@ class Tamara(StripeObject):
class Twint(StripeObject):
mandate: Optional[str]
"""
ID of the multi use Mandate generated by the PaymentIntent
ID of the multi use Mandate generated by the PaymentIntent or SetupIntent.
"""

class Upi(StripeObject):
Expand Down
11 changes: 11 additions & 0 deletions stripe/_customer_session.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,12 @@ class BuyButton(StripeObject):
Whether the buy button is enabled.
"""

class CustomerPortal(StripeObject):
enabled: bool
"""
Whether the customer portal is enabled.
"""

class CustomerSheet(StripeObject):
class Features(StripeObject):
payment_method_allow_redisplay_filters: Optional[
Expand Down Expand Up @@ -204,6 +210,10 @@ class Features(StripeObject):
"""
This hash contains whether the buy button is enabled.
"""
customer_portal: CustomerPortal
"""
This hash contains whether the customer portal is enabled.
"""
customer_sheet: CustomerSheet
"""
This hash contains whether the customer sheet is enabled and the features it supports.
Expand All @@ -226,6 +236,7 @@ class Features(StripeObject):
"""
_inner_class_types = {
"buy_button": BuyButton,
"customer_portal": CustomerPortal,
"customer_sheet": CustomerSheet,
"mobile_payment_element": MobilePaymentElement,
"payment_element": PaymentElement,
Expand Down
4 changes: 4 additions & 0 deletions stripe/_error.py
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,10 @@ class FxQuoteExpiredError(StripeError):
pass


class FxQuoteNeedsRefreshError(StripeError):
pass


class InsufficientFundsError(StripeError):
pass

Expand Down
Loading
Loading