- #950 Add configuration option for
write_timeout
for connections on Ruby 2.6+
- #951 Add support for the Payout Reverse API
- #949 Add support for the
SetupAttempt
resource and List API
- #944 Add support for the Issuing Dispute Submit API
- #936 Rename API resource's
request
method
- #937 Add support for the
PromotionCode
resource and APIs
- #918 Add support for the
LineItem
resource and APIs
- #917 Add support for the
Price
resource and APIs
- #916 Add new
.generate_header
method for webhooks
- #915 Expose
Stripe::Webhook.compute_signature
publicly
- #911 Add support for
BillingPortal
namespace andSession
resource and APIs
- #907 Add
StripeError#idempotent_replayed?
- #902 Add
request_begin
instrumentation callback
- #896 Add support for
CreditNoteLineItem
- #894 Clean up test output by capturing
$stderr
when we expect warnings - #892 Explicitly pass a parameter as hash to be more ruby 2.7 friendly
- #893 Upgrade Rubocop to 0.79
- #891 Fix most Ruby 2.7 warnings
- #890 Override API key with
client_secret
inOAuth.token
- #889 Add support for retrieve source transaction API method
- #885 Add support for
CreditNote
preview
- #882 Add list_usage_record_summaries and list_source_transactions
- #870 Add request instrumentation callback (see
README.md
for usage example)
- #879 Add support for
Mandate
- #876 Add additional per-request configuration documentation
- #874 Raise an error when requests params are invalid
- #873 Contributor Covenant
- #869 Fixes the misnamed
connection_base=
setter to be namedconnect_base=
- #865 Support backwards pagination with list's
#auto_paging_each
- #861 Nicer error when specifying non-nil non-string opt value
- #859 User-friendly messages and retries for
EOFError
,Errno::ECONNRESET
,Errno::ETIMEDOUT
, andErrno::EHOSTUNREACH
network errors
- #858 Drop Timecop dependency
- #857 Move to monotonic time for duration calculations
- #853 Support
Stripe-Should-Retry
header
- #851 Introduce system for garbage collecting connection managers
- #845 Transfer the request_id from the http_headers to error.
- #841 Retry requests on a 429 that's a lock timeout
- #836 Increase connection keep alive timeout to 30 seconds
Major version release. The migration guide contains a detailed list of backwards-incompatible changes with upgrade instructions.
Pull requests included in this release (cf. #815) (
⚠️ #813: Convert library to use built-inNet::HTTP
⚠️ #816: Makecode
argument inCardError
named instead of positional.⚠️ #817: Drop support for very old Ruby versions.- #818: Bump Rubocop to latest version
- #819: Ruby minimum version increase followup
⚠️ #820: Remove old deprecated methods⚠️ #823: Remove all alias for list methods⚠️ #826: RemoveUsageRecord.create
method⚠️ #827: RemoveIssuerFraudRecord
- #811: Add
ErrorObject
toStripeError
exceptions - #828: Tweak retry logic to be a little more like stripe-node
- #829: Reset connections when connection-changing configuration changes (optional)
- #830: Fix inverted sign for 500 retries
⚠️ #831: Remove a few more very old deprecated methods- #832: Minor cleanup in
StripeClient
- #833: Do better bookkeeping when tracking state in
Thread.current
- #834: Add
Invoice.list_upcoming_line_items
method
- #825 Add
SubscriptionItem.create_usage_record
method- This release also removed the
SubscriptionSchedule.revisions
method. This should have been included in the previous release (4.23.0)
- This release also removed the
- #824 Remove SubscriptionScheduleRevision
- This is technically a breaking change. We've chosen to release it as a minor vesion bump because the associated API is unused.
- #808 Unify request/response handling
- #821 Listing
BalanceTransaction
objects now uses/v1/balance_transactions
instead of/v1/balance/history
- #810 Better error message when passing non-string to custom method
- #806 Revert back to
initialize_from
fromUtil.convert_to_stripe_object
- #807 Add gem metadata
- #803 Add support for the
SetupIntent
resource and APIs
- #805 Fix formatting in
ConnectionFailed
error message
- #800 Enable request latency telemetry by default
- #770 Add support for
CustomerBalanceTransaction
resource and APIs
- #789 Allow
Order#pay
to be called without arguments
- #783 Add support for
radar.early_fraud_warning
resource
- #779 Add support for the Capability resource and APIs
- #760 Add support for the
TaxRate
resource and APIs
- #762 Add support for the
TaxId
resource and APIs
- #758 Add support for the
CreditNote
resource and APIs
- #766 Relax constraints on objects that we'll accept as a file (now they just need to respond to
#read
)
- #752 Add
.delete
class method on deletable API resources - #754 Add class methods for all custom API requests (e.g.
Charge.capture
)
- #753 Add a global proxy configuration parameter
- #745 Add support for the
PaymentMethod
resource and APIs - #747 Add support for retrieving a Checkout
Session
- #748 Add support for deleting a Terminal
Location
andReader
- #750 Catch error and warn if unable to remove a method
- #739 Add support for
SubscriptionSchedule
andSubscriptionScheduleRevision
- #743 Fix bug in file uploading introduced in #741
- #741 Use
FaradayStripeEncoder
to encode all parameter styles
- #740 Fix query encoding for integer-indexed maps
- #735 Rename
CheckoutSession
toSession
and move it under theCheckout
namespace. This is a breaking change, but we've reached out to affected merchants and all new merchants would use the new approach.
- #736 Properly serialize
individual
onAccount
objects
- #719 Generate OAuth authorize URLs for Express accounts as well as standard
- #718 Fix an error message typo
- #716 Add support for the
CheckoutSession
resource
- #711 Add support for account links
- #705 Add support for the
Review
APIs
- #695 Add support for
ValueList
andValueListItem
for Radar
- #703 Don't use
Net::HTTP::Persistent
on Windows where it's not well supported
- #701 Require minimum Faraday 0.13 for proper support of persistent connections
- #699 Only send telemetry if
Request-Id
was present in the response
- #698 Use persistent connections by default through
Net::HTTP::Persistent
- #698 Drop support for Ruby 2.0 (which we consider a breaking change here)
- #697 Send telemetry in milliseconds specifically
- #696 Add configurable telemetry to gather information on client-side request latency
- #693 Add new API endpoints for the
Invoice
resource.
- #690 Add support for Stripe Terminal
- #689 Rename
FileUpload
toFile
- #688 Fix hash equality on
StripeObject
- #681 Add support for reporting resources
- #678 Allow payment intent
#cancel
,#capture
, and#confirm
to take their own parameters
- #675 Remove support for
BitcoinReceiver
write-actions
- #676 Add support for usage record summaries
- #674 Use integer-indexed encoding for all arrays
- #671 Add cancel support for topups
- #669 Add support for file links
- #666 Add support for scheduled query runs (
Stripe::Sigma::ScheduledQueryRun
) for Sigma
- #665 Add support for Stripe Issuing
- #664 Don't colorize log output being sent to a configured logger
- #663 Internal improvements to
ApiResource.class_url
- #658 Add support for
partner_id
fromStripe.set_app_info
- #657 Add support for payment intents
- #649 Freeze all string literals
- #645 Add support for issuer fraud records
- #647 Merge query parameters coming from path with
params
argument
- #498 Add support for flexible billing primitives
- #636 Fix a warning for uninitialized instance variable
@additive_params
- #632 Introduce
additive_object_param
so that non-metadata
subobjects don't zero their keys as they're being replaced
- #628 Add support for
code
attribute on all Stripe exceptions
- #627 Add support for topups
- #625 Skip calling
to_hash
fornil
- #616 Support all file-like objects for uploads with duck typed checks on
path
andread
(we previously whitelisted only certain classes)
- #613 Introduce new
IdempotencyError
type for idempotency-specific failures
- #612 Fix integer-indexed array encoding when sent as query parameter (subscription items can now be used when fetching an upcoming invoice)
- #611 Support
Tempfile
(as well asFile
) in file uploads
- #606 Support for exchange rates APIs
- #603 Support for listing source transactions
- #597 Add static methods to manipulate resources from parent
Account
gains methods for external accounts and login links (e.g..create_account
,create_login_link
)ApplicationFee
gains methods for refundsCustomer
gains methods for sourcesTransfer
gains methods for reversals
- #594 Make sure that
StripeObject
's#deep_copy
maintains original class - #595 Allow
Object#method
to be called onStripeObject
even if it conflicts with an accessor - #596 Encode arrays as integer-indexed hashes where appropriate
- #598 Don't persist
idempotency_key
opt between requests
- #592 Bring back
Marshal.dump/load
support with custom marshal encoder/decoder
- #591 Use thread-local
StripeClient
instances for thread safety
- #589 Rename source
delete
todetach
(and deprecate the former)
- #586 Log query strings as well as form bodies with STRIPE_LOG
- #588 Require minimum Faraday 0.10 for bug fix in parameter encoding
- Mark legacy Bitcoin API as deprecated, and remove corresponding tests
- Mark recipients API as deprecated, and remove recipient card tests
- Correct minimum required Ruby version in gemspec (it's 2.0.0)
- Only parse webhook payload after verification to decrease likelihood of attack
- Add support for standard library logger interface with
Stripe.logger
- Error logs now go to stderr if using
Stripe.log_level
/STRIPE_LOG
Stripe.log_level
/STRIPE_LOG
now supportStipe::LEVEL_ERROR
- Add logging for request retry account and
Stripe-Account
header
- Implement request logging with
Stripe.log_level
andSTRIPE_LOG
- Revert
nil
to empty string coercion from 3.0.2 - Handle
invalid_client
OAuth error code - Improve safety of error handling logic safer for unrecognized OAuth error codes
Important: This version is non-functional and has been yanked in favor of 3.0.3.
- Convert
nil
to empty string when serializing parameters (instead of opaquely dropping it) -- NOTE: this change has since been reverted
- Properties set with an API resource will now serialize that resource's ID if possible
- API resources will throw an ArgumentError on save if a property has been with an API resource that cannot be serialized
#pay
on invoice now takes params as well as opts
- Add support for ephemeral keys
- Warn when keys that look like opts are included as parameters
- Add support for account login links
- Support for OAuth operations in
Stripe::OAuth
- Support for checking webhook signatures
- Add model
InvoiceLineItem
- Add
OBJECT_NAME
constants to all API resources
- Make
opts
argument inUtil.convert_to_stripe_object
optional
- Add
Stripe.set_app_info
for use by plugin creators
- Add question mark accessor when assigning boolean value to undefined field
- Declare minimum required Faraday as 0.9
- Add support for payouts and recipient transfers
- Support for detaching sources from customers
- Fix marshalling of
StripeObjects
that have an embedded client
- Fix bad field reference when recovering from a JSON parsing problem
- Fix multipart parameter encoding to repair broken file uploads
- Drop support for Ruby 1.9
- Allow HTTP client that makes Stripe calls to be configured via Faraday
- Drop RestClient
- Switch to OpenAPI 2.0 spec and generated fixtures in test suite
- Switch to Webmock in test suite
- Remove erroneously added list methods for
Source
model
- Disallow sending protected fields along with API resource
.update
- Add retrieve method for 3-D Secure resources
- Improve
StripeObject
's#to_s
to better handle how embedded objects are displayed
- Fix (fairly serious) memory like in
StripeObject
- Add accessors for new fields added in
#update_attributes
- Handle multi-plan subscriptions through new subscription items
- Handle 403 status codes from the API
Identical to 1.56.0 above. I incorrectly cut a patch-level release.
- Add support for Apple Pay domains
- Whitelist errors that should be retried; scope to known socket and HTTP errors
- Relax version constraint on rest-client (and by extension mime-types) for users on Ruby 2+
- Make sure
Subscription
'ssource
is saved with its parent
- Make sure
Account
'sexternal_account
is saved with its parent
- Error when an array of maps is detected that cannot be accurately encoded
- Start using strings for header names instead of symbols for better clarity
- Fix encoding of arrays of maps where maps unequal sets of keys
- Allow sources to be created
- Add top-level
Source
model
- Add
ThreeDSecure
model for 3-D secure payments
- Allow rest-client version 2.0+ to be used with the gem
- Allow retry when a 409 conflict is encountered
- Do not send subresources when updating except when explicitly told to do so (see #433)
- Add
update
class method to all resources that can be updated
- Fix type of resource returned from
Order#return_order
- Allow Relay orders to be returned and add associated types
- Support Alipay account retrieval and deletion
- Add support for the new /v1/subscriptions endpoint (retrieve, list, create, update, and delete)
- Add global
stripe_account
option that adds aStripe-Account
header to all requests
- Fix bug that omitted subresources from serialization
- Update CA cert bundle for compatibility with OpenSSL versions below 1.0.1
- Allow
opts
to be passed to an API resource's#save
method
- Add
Account#reject
to support the new API feature
- Fix reference to non-existent
#url
inListObject
- Fix serialization when subhash given to
#save
or#update_attributes
- Add
CountrySpec
model for looking up country payment information
- Add compatibility layer for old API versions on
Charge#refund
- Allow CA cert bundle location to be configured
- Updated bundled CA certs
- Add support for deleting products and SKUs
- Pass through arguments of
Charge#refund
- Re-implement
Charge#refund
helper to use the modern endpoint suggested by docs
- Fix bug where ivar left uninitialized in StripeObject could error on serialization
- Fix bug where a nil customer from API could error Bitcoin model on refresh
- Add configuration to optionally retry network failures
- Use modern API endpoint for producing application fee refunds
- Add BankAccount#verify convenience method
- Fix bug where arrays that were not
additional_owners
were not properly encoded for requests
- Fix bug where
opts
didn't properly propagate to descendantStripeObjects
- Fix bug that prevent lists of hashes from being URI-encoded properly
- Fix bug where filter conditions were not making it past the first instantiated
ListObject
- Add
StripeObject#deleted?
for a reliable way to check whether an object is alive - Deprecate
StripeObject#refresh_from
- New parameter encoding scheme that doesn't use
URI.escape
- Fix bug where ampersands were not being properly encoded
- Add pagination helpers
#auto_paging_each
,#previous_page
, and#next_page
- Fix URI being referenced by file upload resources
- Make StripeObject's #save "upsert"-like; creates an object if new
- Add #update_attributes to StripeObject for safe mass assignment
- Properly mass assign attributes on calls to #save
- Add question mark helpers for boolean fields (e.g. #paid? as well as old #paid)
- Fix a bug that broke the API for StripeObject initialization
- Remove use of deprecated URI.escape
- Correct the URLs used to fetch Bitcoin transactions.
- Use hash rockets for backwards compatibility.
- Add Orders, Products, and SKUs for Relay
- Add support for 429 Rate Limited response
- Added support for refund listing and retrieval without an associated charge
- Added support for deleting managed accounts
- Added support for dispute listing and retrieval
- Bugfix: token objects now are the correct class
- Added request IDs and HTTP headers to errors
- Added support for bank accounts and debit cards in managed accounts (via the
external_accounts
param)
- Remove TLS cert revocation check (all pre-heartbleed certs have expired)
- Bugfix: don't unset keys when they don't exist on StripeObject
- Raise an error when explicitly passing nil as the API key on resource methods
- Fix error when passing an API key to Balance.retrieve (github issue #232)
- Fixed error when updating certain resources (github issue #224)
- Added support for updating nested hashes besides
metadata
(which was already supported) - Fixed bug in balance retrieval
- Updated Card to point to customer sources endpoint when customer property is set
- Added Update & Delete operations to Bitcoin Receivers
- Fixed fetching upcoming invoice/paying invoice methods
- Support for new Transfers /reversals endpoint
- Account retrieval now optionally accepts an account ID
- Better support for passing custom headers, like Stripe-Account, through requests
- 1 major enhancement:
- Added support for making bitcoin charges through BitcoinReceiver source object
- 1 bugfix:
- Fixed API key propagation for ApplicationFee#refund
- 1 bugfix:
- Fixed API key propagation for child resources
- 2 minor enhacements:
- Fixed dependencies for Ruby versions less than 1.9.3
- Added deauthorize method to Account object
- 1 major enhacement:
- File uploads resource was added (for uploading pdf or image documents for disputes)
- 2 minor enhancements:
- Ability to send idempotent requests
- Ability to specify stripe account as a header
- 1 minor enhacement:
- Coupons now support update operations - useful for manipulating metadata
- 1 major enhacement:
- Application Fee refunds now a list instead of array
- 1 major enhancement:
- Add metadata for refunds and disputes
- 1 major enhancement:
- Support for canceling transfers
- 1 major enhancement:
- Support for cards for recipients
- 2 minor enhancements:
- Update included ca bundles
- Implement certificate blacklisting
- 1 minor enhancement:
- Add create_subscription on Customer resources, so you can create subscriptions without needing to retrieve the customer first (github issue #120)
- 1 bugfix:
- Fix marshaling of StripeObjects
-
2 major enhancements
- Support for multiple subscriptions per customer
- Testing ruby 2.1.0
-
2 minor enhancements
- Replace multi_json with json
- Allow #save to take opts (for :expand)
-
1 bugfix
- Fix #try and #respond_to? on StripeObjects
- 1 major enhancement
- Add ApplicationFee resource
- 2 bugfixes:
- Fix gemspec dependencies so the gem doesn't break for Ruby 1.8 users
- Fix api_resource_test to not use returns as a way of testing rescue behavior
- 1 major enhancement
- Add support for metadata on resources
- 1 minor enhancement
- Add support for closing disputes.
- 1 major enhancement
- Add Balance and BalanceTransaction resources
- 1 major enhancement
- Add support for unsetting attributes by setting to nil. This permits unsetting email and description on customers and description on charges. Setting properties to a blank string is now an error.
- Attempting to set an object's id is now an error
- 1 major enhancement
- Add support for new cards API (Stripe API version - 2013-07-05)
- 1 bugfix:
- Fix handling of per-call API keys (github issue #67)
-
3 minor enhancements:
- Use to_sym instead of type checking for minor performance improvement (github issue #59)
- Handle low-memory situations without throwing an exception (github issue #61)
- Add an Customer#upcoming_invoice convenience method (github issue #65)
-
1 bugfix:
- Allow updating resources without first retrieving them (github issue #60)
- 1 minor enhancement:
- Add support for specifying an API key when retrieving an upcoming invoice
- 1 major enhancement:
- Add new Recipient resource
- Allow Transfers to be createable
- 1 minor enhancement
- Add 'id' to the list of permanent attributes
- 1 major enhancement
- Add support for passing options when retrieving Stripe objects e.g., Stripe::Charge.retrieve({id:"foo", expand:["customer"]}) Stripe::Charge("foo") is still supported as well
- 1 major enhancement
- Add support for setting a Stripe API version override.
- 1 bugfix
- Relax the version constraint on multi_json (github issue #44)
-
1 minor enhancement:
- Add support for updating charge disputes
-
1 bugfix
- Fix Account API resource bug
- 1 major enhancement
- Add support for creating invoices
- 1 major enhancement
- Add support for new API lists
- 1 bugfix
- Fix bug introduced in 1.7.3 calling API methods that take no arguments, like Stripe::Invoice#pay (github issue #42)
- 2 bugfixes
- Make sure that both keys and values of GET params are URL-encoded. NOTE: If you were previously URL-encoding values yourself, you may need to adjust your code.
- URL-encode POST params directly, instead of allowing rest-client to do it to work around an unfortunate interaction with the hashery gem (github issue #38)
- 1 major enhancement
- Add support for new pay and update methods for Invoice objects
- 1 major enhancement
- Add new Account API resource
-
3 major enhancements:
- Switch from vendored stripe-json to multi_json for all JSON parsing and rendering. This should not impact programmatic usage of the library, but may cause small rendering differences from, e.g., StripeObject#inspect (github issue #22)
- Add new delete_discount method to Customer objects
- Add new Transfer API resource
-
2 minor enhancements:
- Switch from HTTP Basic auth to Bearer auth (Note: Stripe will support Basic auth for the indefinite future, but recommends Bearer auth when possible going forward)
- Numerous test suite improvements
- 1 bugfix:
- Encode GET query strings ourselves instead of using rest-client to work around a bug
- 1 bugfix:
- Correct argument handling in StripeObject#as_json
- 1 bugfix:
- Fix StripeObject#inspect when ActiveSupport 3.0 is loaded
- A whole bunch of releases between 1.5.0 and 1.6.0, but few changes, mainly the addition of plans, coupons, events, and tokens
- 1.6.0 also contains a new inspect/to_string implementation
- 1 major enhancement:
- Update for new RESTful API
- 1 major enhancement:
- Rename to Stripe
- 1 major enhancement:
- Support for the set_customer_subscription and delete_customer API methods
- 1 major enhancement:
- Support for recurring billing
- 1 major enhancement:
- Initial release