pypi stripe 15.0.0
v15.0.0

latest releases: 15.1.0a1, 15.1.0b1
5 hours ago

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 to simplify your upgrade process.

Please review details for the breaking changes and alternatives in the Stripe API changelog before upgrading.

  • ⚠️ Breaking change: #1769 Add decimal_string coercion for v1 and v2 API fields

    • All decimal_string fields changed type from str to decimal.Decimal in both request params and response objects. Code that reads or writes these fields as str will need to use Decimal instead. Affected fields across v1 and v2 APIs:
      • checkout.Session: fx_rate
      • climate.Order: metric_tons; climate.Product: metric_tons_available
      • CreditNoteLineItem: unit_amount_decimal
      • InvoiceItem: quantity_decimal, unit_amount_decimal
      • InvoiceLineItem: quantity_decimal, unit_amount_decimal
      • issuing.Authorization / issuing.Transaction (and TestHelpers): quantity_decimal, unit_cost_decimal, gross_amount_decimal, local_amount_decimal, national_amount_decimal
      • Plan: amount_decimal, flat_amount_decimal, unit_amount_decimal
      • Price: unit_amount_decimal, flat_amount_decimal (including currency_options and tiers)
      • v2.core.Account / v2.core.AccountPerson: percent_ownership
      • Request params on Invoice, Product, Quote, Subscription, SubscriptionItem, SubscriptionSchedule, PaymentLink: unit_amount_decimal, flat_amount_decimal, quantity_decimal (where applicable)
  • ⚠️ Breaking change:#1767 Throw an error when using the wrong webhook parsing method

  • ⚠️ Breaking change: #1764 Drop support for Python 3.7 & 3.8

  • ⚠️ Breaking change: #1762 StripeObject no longer inherits from dict

    • StripeObject no longer inherits from dict, so any dict methods will no longer exist, including .get(), .update(), and notably, .items().
    • or convenience, it's still possible to check presence with 'some_key' in some_obj and check for equality between stripe objects. But most key/value iteration needs an extra step
    • To access the underlying data as a dict, call some_obj.to_dict(), which recursively dumps all stripe-provided classes into native Python types. This is a read-only view; changes to the output of to_dict() won't affect the original object.
    • Write operations can still be done with dot notation (some_obj.val = 123) or bracket notation (some_obj["val"] = 123). Do that instead of trying to interact with the underlying data store, as the implementation is considered private and may change without warning in the future.

See the changelog for more details.

Don't miss a new stripe release

NewReleases is sending notifications on new releases.