dodopayments 2.20.0 → 2.20.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/README.md +1 -1
  4. data/lib/dodopayments/models/checkout_session_preview_response.rb +12 -1
  5. data/lib/dodopayments/models/payment.rb +18 -1
  6. data/lib/dodopayments/models/subscription_list_params.rb +12 -1
  7. data/lib/dodopayments/models/subscription_update_payment_method_webhook_event.rb +40 -0
  8. data/lib/dodopayments/models/unsafe_unwrap_webhook_event.rb +4 -1
  9. data/lib/dodopayments/models/unwrap_webhook_event.rb +4 -1
  10. data/lib/dodopayments/models/webhook_event_type.rb +1 -0
  11. data/lib/dodopayments/models.rb +3 -0
  12. data/lib/dodopayments/resources/subscriptions.rb +6 -1
  13. data/lib/dodopayments/resources/webhooks.rb +2 -2
  14. data/lib/dodopayments/version.rb +1 -1
  15. data/lib/dodopayments.rb +1 -0
  16. data/rbi/dodopayments/models/checkout_session_preview_response.rbi +14 -0
  17. data/rbi/dodopayments/models/payment.rbi +18 -0
  18. data/rbi/dodopayments/models/subscription_list_params.rbi +11 -0
  19. data/rbi/dodopayments/models/subscription_update_payment_method_webhook_event.rbi +67 -0
  20. data/rbi/dodopayments/models/unsafe_unwrap_webhook_event.rbi +1 -0
  21. data/rbi/dodopayments/models/unwrap_webhook_event.rbi +1 -0
  22. data/rbi/dodopayments/models/webhook_event_type.rbi +5 -0
  23. data/rbi/dodopayments/models.rbi +3 -0
  24. data/rbi/dodopayments/resources/subscriptions.rbi +3 -0
  25. data/rbi/dodopayments/resources/webhooks.rbi +2 -0
  26. data/sig/dodopayments/models/checkout_session_preview_response.rbs +5 -0
  27. data/sig/dodopayments/models/payment.rbs +10 -0
  28. data/sig/dodopayments/models/subscription_list_params.rbs +7 -0
  29. data/sig/dodopayments/models/subscription_update_payment_method_webhook_event.rbs +35 -0
  30. data/sig/dodopayments/models/unsafe_unwrap_webhook_event.rbs +1 -0
  31. data/sig/dodopayments/models/unwrap_webhook_event.rbs +1 -0
  32. data/sig/dodopayments/models/webhook_event_type.rbs +2 -0
  33. data/sig/dodopayments/models.rbs +2 -0
  34. data/sig/dodopayments/resources/subscriptions.rbs +1 -0
  35. data/sig/dodopayments/resources/webhooks.rbs +2 -0
  36. metadata +5 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e2cd02edaf02bbba60396ecdaa61838414cc46e8358d17a40e7f1b105dc82dc5
4
- data.tar.gz: 57d5217495e2ea04533e49716dbffc5b0407bf17f53610b53de90e7bb13293e8
3
+ metadata.gz: e34bae6e8f112347d01747da053dfdfe8c59aee24d21a3fcd819e84d7e97cba3
4
+ data.tar.gz: 67ee243d3c0073abd94d91493801a629900c62a60c5281a6dcd42716b224f322
5
5
  SHA512:
6
- metadata.gz: c66c1e27ffe9b8b5cf488eff8c2e68fd9014db0d390fd1280f78bca1b033e5cca47a1676c54059cebd7c338f83bc0cc052c55a3c33e27d5d7bcc063df30923ad
7
- data.tar.gz: ea64df9520da5a12eb56386bd771376624a4bfcfdda8225d823270d6fb687e5876b53c1435f3d3479197f8df4127f20e4a652357af15b369d24b5a594b406c3a
6
+ metadata.gz: 6c541301db330885909821106447abee6878fe8ef0bc53abce8d91ca151906ae609f57e102cb366826a340cb70d445816b856e7e8bc9881512652a0bd5077362
7
+ data.tar.gz: 8d9ff09789b3e055edf9e19f310e89fe792e8ebe33376d414caadc0093ed443188b3304d2dad999e66e061a43ec15953d5a62fa0f548ce67c2057401a4694982
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.20.1](https://github.com/dodopayments/dodopayments-ruby/compare/v2.20.0...v2.20.1) (2026-07-09)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **api:** add subscription.update_payment_method webhook and payment-method fields ([67881e2](https://github.com/dodopayments/dodopayments-ruby/commit/67881e21860b5692c69085d56a58534bb243fed8))
9
+ * **api:** add subscription.update_payment_method webhook and payment-method fields ([4f62da1](https://github.com/dodopayments/dodopayments-ruby/commit/4f62da18abf750e179ebd2c697958fb00bf0320e))
10
+
3
11
  ## [2.20.0](https://github.com/dodopayments/dodopayments-ruby/compare/v2.19.0...v2.20.0) (2026-07-06)
4
12
 
5
13
 
data/README.md CHANGED
@@ -23,7 +23,7 @@ To use this gem, install via Bundler by adding the following to your application
23
23
  <!-- x-release-please-start-version -->
24
24
 
25
25
  ```ruby
26
- gem "dodopayments", "~> 2.20.0"
26
+ gem "dodopayments", "~> 2.20.1"
27
27
  ```
28
28
 
29
29
  <!-- x-release-please-end -->
@@ -44,6 +44,15 @@ module Dodopayments
44
44
  # @return [Integer]
45
45
  required :total_price, Integer
46
46
 
47
+ # @!attribute next_billing_date
48
+ # The upcoming billing date for subscriptions, computed relative to now: with a
49
+ # trial it is `now + trial_period_days`, otherwise `now + payment frequency`.
50
+ # `None` for one-time-only carts. This is a preview estimate; the authoritative
51
+ # value is set when the subscription activates.
52
+ #
53
+ # @return [Time, nil]
54
+ optional :next_billing_date, Time, nil?: true
55
+
47
56
  # @!attribute recurring_breakup
48
57
  # Breakup of recurring payments (None for one-time only)
49
58
  #
@@ -76,7 +85,7 @@ module Dodopayments
76
85
  # @return [Integer, nil]
77
86
  optional :total_tax, Integer, nil?: true
78
87
 
79
- # @!method initialize(billing_country:, currency:, current_breakup:, is_byop:, product_cart:, total_price:, recurring_breakup: nil, tax_id_business_name: nil, tax_id_err_msg: nil, tax_id_format_name: nil, total_tax: nil)
88
+ # @!method initialize(billing_country:, currency:, current_breakup:, is_byop:, product_cart:, total_price:, next_billing_date: nil, recurring_breakup: nil, tax_id_business_name: nil, tax_id_err_msg: nil, tax_id_format_name: nil, total_tax: nil)
80
89
  # Some parameter documentations has been truncated, see
81
90
  # {Dodopayments::Models::CheckoutSessionPreviewResponse} for more details.
82
91
  #
@@ -94,6 +103,8 @@ module Dodopayments
94
103
  #
95
104
  # @param total_price [Integer] Total calculate price of the product cart
96
105
  #
106
+ # @param next_billing_date [Time, nil] The upcoming billing date for subscriptions, computed relative to now:
107
+ #
97
108
  # @param recurring_breakup [Dodopayments::Models::CheckoutSessionPreviewResponse::RecurringBreakup, nil] Breakup of recurring payments (None for one-time only)
98
109
  #
99
110
  # @param tax_id_business_name [String, nil] Registered business name from the official registry (EU/GB/AU) when found
@@ -52,6 +52,13 @@ module Dodopayments
52
52
  # @return [Array<Dodopayments::Models::Dispute>]
53
53
  required :disputes, -> { Dodopayments::Internal::Type::ArrayOf[Dodopayments::Dispute] }
54
54
 
55
+ # @!attribute is_update_payment_method
56
+ # Whether this payment was created solely to update a subscription's payment
57
+ # method (a zero-/setup-amount charge). `false` for normal charges.
58
+ #
59
+ # @return [Boolean]
60
+ required :is_update_payment_method, Dodopayments::Internal::Type::Boolean
61
+
55
62
  # @!attribute metadata
56
63
  # Additional custom data associated with the payment
57
64
  #
@@ -206,6 +213,12 @@ module Dodopayments
206
213
  # @return [String, nil]
207
214
  optional :payment_method, String, nil?: true
208
215
 
216
+ # @!attribute payment_method_id
217
+ # Identifier of the saved payment method used for this payment, if any.
218
+ #
219
+ # @return [String, nil]
220
+ optional :payment_method_id, String, nil?: true
221
+
209
222
  # @!attribute payment_method_type
210
223
  # Specific type of payment method (e.g. "visa", "mastercard")
211
224
  #
@@ -260,7 +273,7 @@ module Dodopayments
260
273
  # @return [Time, nil]
261
274
  optional :updated_at, Time, nil?: true
262
275
 
263
- # @!method initialize(billing:, brand_id:, business_id:, created_at:, currency:, customer:, digital_products_delivered:, disputes:, metadata:, payment_id:, payment_provider:, refunds:, retry_attempt:, settlement_amount:, settlement_currency:, total_amount:, card_holder_name: nil, card_issuing_country: nil, card_last_four: nil, card_network: nil, card_type: nil, checkout_session_id: nil, custom_field_responses: nil, discount_id: nil, discounts: nil, error_code: nil, error_message: nil, invoice_id: nil, invoice_url: nil, payment_link: nil, payment_method: nil, payment_method_type: nil, product_cart: nil, refund_status: nil, settlement_tax: nil, status: nil, subscription_id: nil, tax: nil, updated_at: nil)
276
+ # @!method initialize(billing:, brand_id:, business_id:, created_at:, currency:, customer:, digital_products_delivered:, disputes:, is_update_payment_method:, metadata:, payment_id:, payment_provider:, refunds:, retry_attempt:, settlement_amount:, settlement_currency:, total_amount:, card_holder_name: nil, card_issuing_country: nil, card_last_four: nil, card_network: nil, card_type: nil, checkout_session_id: nil, custom_field_responses: nil, discount_id: nil, discounts: nil, error_code: nil, error_message: nil, invoice_id: nil, invoice_url: nil, payment_link: nil, payment_method: nil, payment_method_id: nil, payment_method_type: nil, product_cart: nil, refund_status: nil, settlement_tax: nil, status: nil, subscription_id: nil, tax: nil, updated_at: nil)
264
277
  # Some parameter documentations has been truncated, see
265
278
  # {Dodopayments::Models::Payment} for more details.
266
279
  #
@@ -280,6 +293,8 @@ module Dodopayments
280
293
  #
281
294
  # @param disputes [Array<Dodopayments::Models::Dispute>] List of disputes associated with this payment
282
295
  #
296
+ # @param is_update_payment_method [Boolean] Whether this payment was created solely to update a subscription's
297
+ #
283
298
  # @param metadata [Hash{Symbol=>String, Float, Boolean}] Additional custom data associated with the payment
284
299
  #
285
300
  # @param payment_id [String] Unique identifier for the payment
@@ -326,6 +341,8 @@ module Dodopayments
326
341
  #
327
342
  # @param payment_method [String, nil] Payment method used by customer (e.g. "card", "bank_transfer")
328
343
  #
344
+ # @param payment_method_id [String, nil] Identifier of the saved payment method used for this payment, if any.
345
+ #
329
346
  # @param payment_method_type [String, nil] Specific type of payment method (e.g. "visa", "mastercard")
330
347
  #
331
348
  # @param product_cart [Array<Dodopayments::Models::Payment::ProductCart>, nil] List of products purchased in a one-time payment
@@ -13,6 +13,12 @@ module Dodopayments
13
13
  # @return [String, nil]
14
14
  optional :brand_id, String
15
15
 
16
+ # @!attribute cancel_at_next_billing_date
17
+ # Filter by cancel_at_next_billing_date (subscriptions scheduled for cancellation)
18
+ #
19
+ # @return [Boolean, nil]
20
+ optional :cancel_at_next_billing_date, Dodopayments::Internal::Type::Boolean
21
+
16
22
  # @!attribute created_at_gte
17
23
  # Get events after this created time
18
24
  #
@@ -55,9 +61,14 @@ module Dodopayments
55
61
  # @return [Symbol, Dodopayments::Models::SubscriptionListParams::Status, nil]
56
62
  optional :status, enum: -> { Dodopayments::SubscriptionListParams::Status }
57
63
 
58
- # @!method initialize(brand_id: nil, created_at_gte: nil, created_at_lte: nil, customer_id: nil, page_number: nil, page_size: nil, product_id: nil, status: nil, request_options: {})
64
+ # @!method initialize(brand_id: nil, cancel_at_next_billing_date: nil, created_at_gte: nil, created_at_lte: nil, customer_id: nil, page_number: nil, page_size: nil, product_id: nil, status: nil, request_options: {})
65
+ # Some parameter documentations has been truncated, see
66
+ # {Dodopayments::Models::SubscriptionListParams} for more details.
67
+ #
59
68
  # @param brand_id [String] filter by Brand id
60
69
  #
70
+ # @param cancel_at_next_billing_date [Boolean] Filter by cancel_at_next_billing_date (subscriptions scheduled for cancellation)
71
+ #
61
72
  # @param created_at_gte [Time] Get events after this created time
62
73
  #
63
74
  # @param created_at_lte [Time] Get events created before this time
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class SubscriptionUpdatePaymentMethodWebhookEvent < Dodopayments::Internal::Type::BaseModel
6
+ # @!attribute business_id
7
+ # The business identifier
8
+ #
9
+ # @return [String]
10
+ required :business_id, String
11
+
12
+ # @!attribute data
13
+ # Response struct representing subscription details
14
+ #
15
+ # @return [Dodopayments::Models::Subscription]
16
+ required :data, -> { Dodopayments::Subscription }
17
+
18
+ # @!attribute timestamp
19
+ # The timestamp of when the event occurred
20
+ #
21
+ # @return [Time]
22
+ required :timestamp, Time
23
+
24
+ # @!attribute type
25
+ # The event type
26
+ #
27
+ # @return [Symbol, :"subscription.update_payment_method"]
28
+ required :type, const: :"subscription.update_payment_method"
29
+
30
+ # @!method initialize(business_id:, data:, timestamp:, type: :"subscription.update_payment_method")
31
+ # @param business_id [String] The business identifier
32
+ #
33
+ # @param data [Dodopayments::Models::Subscription] Response struct representing subscription details
34
+ #
35
+ # @param timestamp [Time] The timestamp of when the event occurred
36
+ #
37
+ # @param type [Symbol, :"subscription.update_payment_method"] The event type
38
+ end
39
+ end
40
+ end
@@ -83,10 +83,13 @@ module Dodopayments
83
83
 
84
84
  variant :"subscription.renewed", -> { Dodopayments::SubscriptionRenewedWebhookEvent }
85
85
 
86
+ variant :"subscription.update_payment_method",
87
+ -> { Dodopayments::SubscriptionUpdatePaymentMethodWebhookEvent }
88
+
86
89
  variant :"subscription.updated", -> { Dodopayments::SubscriptionUpdatedWebhookEvent }
87
90
 
88
91
  # @!method self.variants
89
- # @return [Array(Dodopayments::Models::AbandonedCheckoutDetectedWebhookEvent, Dodopayments::Models::AbandonedCheckoutRecoveredWebhookEvent, Dodopayments::Models::CreditAddedWebhookEvent, Dodopayments::Models::CreditBalanceLowWebhookEvent, Dodopayments::Models::CreditDeductedWebhookEvent, Dodopayments::Models::CreditExpiredWebhookEvent, Dodopayments::Models::CreditManualAdjustmentWebhookEvent, Dodopayments::Models::CreditOverageChargedWebhookEvent, Dodopayments::Models::CreditOverageResetWebhookEvent, Dodopayments::Models::CreditRolledOverWebhookEvent, Dodopayments::Models::CreditRolloverForfeitedWebhookEvent, Dodopayments::Models::DisputeAcceptedWebhookEvent, Dodopayments::Models::DisputeCancelledWebhookEvent, Dodopayments::Models::DisputeChallengedWebhookEvent, Dodopayments::Models::DisputeExpiredWebhookEvent, Dodopayments::Models::DisputeLostWebhookEvent, Dodopayments::Models::DisputeOpenedWebhookEvent, Dodopayments::Models::DisputeWonWebhookEvent, Dodopayments::Models::DunningRecoveredWebhookEvent, Dodopayments::Models::DunningStartedWebhookEvent, Dodopayments::Models::EntitlementGrantCreatedWebhookEvent, Dodopayments::Models::EntitlementGrantDeliveredWebhookEvent, Dodopayments::Models::EntitlementGrantFailedWebhookEvent, Dodopayments::Models::EntitlementGrantRevokedWebhookEvent, Dodopayments::Models::LicenseKeyCreatedWebhookEvent, Dodopayments::Models::PaymentCancelledWebhookEvent, Dodopayments::Models::PaymentFailedWebhookEvent, Dodopayments::Models::PaymentProcessingWebhookEvent, Dodopayments::Models::PaymentSucceededWebhookEvent, Dodopayments::Models::RefundFailedWebhookEvent, Dodopayments::Models::RefundSucceededWebhookEvent, Dodopayments::Models::SubscriptionActiveWebhookEvent, Dodopayments::Models::SubscriptionCancelledWebhookEvent, Dodopayments::Models::SubscriptionExpiredWebhookEvent, Dodopayments::Models::SubscriptionFailedWebhookEvent, Dodopayments::Models::SubscriptionOnHoldWebhookEvent, Dodopayments::Models::SubscriptionPlanChangedWebhookEvent, Dodopayments::Models::SubscriptionRenewedWebhookEvent, Dodopayments::Models::SubscriptionUpdatedWebhookEvent)]
92
+ # @return [Array(Dodopayments::Models::AbandonedCheckoutDetectedWebhookEvent, Dodopayments::Models::AbandonedCheckoutRecoveredWebhookEvent, Dodopayments::Models::CreditAddedWebhookEvent, Dodopayments::Models::CreditBalanceLowWebhookEvent, Dodopayments::Models::CreditDeductedWebhookEvent, Dodopayments::Models::CreditExpiredWebhookEvent, Dodopayments::Models::CreditManualAdjustmentWebhookEvent, Dodopayments::Models::CreditOverageChargedWebhookEvent, Dodopayments::Models::CreditOverageResetWebhookEvent, Dodopayments::Models::CreditRolledOverWebhookEvent, Dodopayments::Models::CreditRolloverForfeitedWebhookEvent, Dodopayments::Models::DisputeAcceptedWebhookEvent, Dodopayments::Models::DisputeCancelledWebhookEvent, Dodopayments::Models::DisputeChallengedWebhookEvent, Dodopayments::Models::DisputeExpiredWebhookEvent, Dodopayments::Models::DisputeLostWebhookEvent, Dodopayments::Models::DisputeOpenedWebhookEvent, Dodopayments::Models::DisputeWonWebhookEvent, Dodopayments::Models::DunningRecoveredWebhookEvent, Dodopayments::Models::DunningStartedWebhookEvent, Dodopayments::Models::EntitlementGrantCreatedWebhookEvent, Dodopayments::Models::EntitlementGrantDeliveredWebhookEvent, Dodopayments::Models::EntitlementGrantFailedWebhookEvent, Dodopayments::Models::EntitlementGrantRevokedWebhookEvent, Dodopayments::Models::LicenseKeyCreatedWebhookEvent, Dodopayments::Models::PaymentCancelledWebhookEvent, Dodopayments::Models::PaymentFailedWebhookEvent, Dodopayments::Models::PaymentProcessingWebhookEvent, Dodopayments::Models::PaymentSucceededWebhookEvent, Dodopayments::Models::RefundFailedWebhookEvent, Dodopayments::Models::RefundSucceededWebhookEvent, Dodopayments::Models::SubscriptionActiveWebhookEvent, Dodopayments::Models::SubscriptionCancelledWebhookEvent, Dodopayments::Models::SubscriptionExpiredWebhookEvent, Dodopayments::Models::SubscriptionFailedWebhookEvent, Dodopayments::Models::SubscriptionOnHoldWebhookEvent, Dodopayments::Models::SubscriptionPlanChangedWebhookEvent, Dodopayments::Models::SubscriptionRenewedWebhookEvent, Dodopayments::Models::SubscriptionUpdatePaymentMethodWebhookEvent, Dodopayments::Models::SubscriptionUpdatedWebhookEvent)]
90
93
  end
91
94
  end
92
95
  end
@@ -83,10 +83,13 @@ module Dodopayments
83
83
 
84
84
  variant :"subscription.renewed", -> { Dodopayments::SubscriptionRenewedWebhookEvent }
85
85
 
86
+ variant :"subscription.update_payment_method",
87
+ -> { Dodopayments::SubscriptionUpdatePaymentMethodWebhookEvent }
88
+
86
89
  variant :"subscription.updated", -> { Dodopayments::SubscriptionUpdatedWebhookEvent }
87
90
 
88
91
  # @!method self.variants
89
- # @return [Array(Dodopayments::Models::AbandonedCheckoutDetectedWebhookEvent, Dodopayments::Models::AbandonedCheckoutRecoveredWebhookEvent, Dodopayments::Models::CreditAddedWebhookEvent, Dodopayments::Models::CreditBalanceLowWebhookEvent, Dodopayments::Models::CreditDeductedWebhookEvent, Dodopayments::Models::CreditExpiredWebhookEvent, Dodopayments::Models::CreditManualAdjustmentWebhookEvent, Dodopayments::Models::CreditOverageChargedWebhookEvent, Dodopayments::Models::CreditOverageResetWebhookEvent, Dodopayments::Models::CreditRolledOverWebhookEvent, Dodopayments::Models::CreditRolloverForfeitedWebhookEvent, Dodopayments::Models::DisputeAcceptedWebhookEvent, Dodopayments::Models::DisputeCancelledWebhookEvent, Dodopayments::Models::DisputeChallengedWebhookEvent, Dodopayments::Models::DisputeExpiredWebhookEvent, Dodopayments::Models::DisputeLostWebhookEvent, Dodopayments::Models::DisputeOpenedWebhookEvent, Dodopayments::Models::DisputeWonWebhookEvent, Dodopayments::Models::DunningRecoveredWebhookEvent, Dodopayments::Models::DunningStartedWebhookEvent, Dodopayments::Models::EntitlementGrantCreatedWebhookEvent, Dodopayments::Models::EntitlementGrantDeliveredWebhookEvent, Dodopayments::Models::EntitlementGrantFailedWebhookEvent, Dodopayments::Models::EntitlementGrantRevokedWebhookEvent, Dodopayments::Models::LicenseKeyCreatedWebhookEvent, Dodopayments::Models::PaymentCancelledWebhookEvent, Dodopayments::Models::PaymentFailedWebhookEvent, Dodopayments::Models::PaymentProcessingWebhookEvent, Dodopayments::Models::PaymentSucceededWebhookEvent, Dodopayments::Models::RefundFailedWebhookEvent, Dodopayments::Models::RefundSucceededWebhookEvent, Dodopayments::Models::SubscriptionActiveWebhookEvent, Dodopayments::Models::SubscriptionCancelledWebhookEvent, Dodopayments::Models::SubscriptionExpiredWebhookEvent, Dodopayments::Models::SubscriptionFailedWebhookEvent, Dodopayments::Models::SubscriptionOnHoldWebhookEvent, Dodopayments::Models::SubscriptionPlanChangedWebhookEvent, Dodopayments::Models::SubscriptionRenewedWebhookEvent, Dodopayments::Models::SubscriptionUpdatedWebhookEvent)]
92
+ # @return [Array(Dodopayments::Models::AbandonedCheckoutDetectedWebhookEvent, Dodopayments::Models::AbandonedCheckoutRecoveredWebhookEvent, Dodopayments::Models::CreditAddedWebhookEvent, Dodopayments::Models::CreditBalanceLowWebhookEvent, Dodopayments::Models::CreditDeductedWebhookEvent, Dodopayments::Models::CreditExpiredWebhookEvent, Dodopayments::Models::CreditManualAdjustmentWebhookEvent, Dodopayments::Models::CreditOverageChargedWebhookEvent, Dodopayments::Models::CreditOverageResetWebhookEvent, Dodopayments::Models::CreditRolledOverWebhookEvent, Dodopayments::Models::CreditRolloverForfeitedWebhookEvent, Dodopayments::Models::DisputeAcceptedWebhookEvent, Dodopayments::Models::DisputeCancelledWebhookEvent, Dodopayments::Models::DisputeChallengedWebhookEvent, Dodopayments::Models::DisputeExpiredWebhookEvent, Dodopayments::Models::DisputeLostWebhookEvent, Dodopayments::Models::DisputeOpenedWebhookEvent, Dodopayments::Models::DisputeWonWebhookEvent, Dodopayments::Models::DunningRecoveredWebhookEvent, Dodopayments::Models::DunningStartedWebhookEvent, Dodopayments::Models::EntitlementGrantCreatedWebhookEvent, Dodopayments::Models::EntitlementGrantDeliveredWebhookEvent, Dodopayments::Models::EntitlementGrantFailedWebhookEvent, Dodopayments::Models::EntitlementGrantRevokedWebhookEvent, Dodopayments::Models::LicenseKeyCreatedWebhookEvent, Dodopayments::Models::PaymentCancelledWebhookEvent, Dodopayments::Models::PaymentFailedWebhookEvent, Dodopayments::Models::PaymentProcessingWebhookEvent, Dodopayments::Models::PaymentSucceededWebhookEvent, Dodopayments::Models::RefundFailedWebhookEvent, Dodopayments::Models::RefundSucceededWebhookEvent, Dodopayments::Models::SubscriptionActiveWebhookEvent, Dodopayments::Models::SubscriptionCancelledWebhookEvent, Dodopayments::Models::SubscriptionExpiredWebhookEvent, Dodopayments::Models::SubscriptionFailedWebhookEvent, Dodopayments::Models::SubscriptionOnHoldWebhookEvent, Dodopayments::Models::SubscriptionPlanChangedWebhookEvent, Dodopayments::Models::SubscriptionRenewedWebhookEvent, Dodopayments::Models::SubscriptionUpdatePaymentMethodWebhookEvent, Dodopayments::Models::SubscriptionUpdatedWebhookEvent)]
90
93
  end
91
94
  end
92
95
  end
@@ -28,6 +28,7 @@ module Dodopayments
28
28
  SUBSCRIPTION_EXPIRED = :"subscription.expired"
29
29
  SUBSCRIPTION_PLAN_CHANGED = :"subscription.plan_changed"
30
30
  SUBSCRIPTION_UPDATED = :"subscription.updated"
31
+ SUBSCRIPTION_UPDATE_PAYMENT_METHOD = :"subscription.update_payment_method"
31
32
  LICENSE_KEY_CREATED = :"license_key.created"
32
33
  PAYOUT_NOT_INITIATED = :"payout.not_initiated"
33
34
  PAYOUT_ON_HOLD = :"payout.on_hold"
@@ -478,6 +478,9 @@ module Dodopayments
478
478
 
479
479
  SubscriptionUpdatePaymentMethodParams = Dodopayments::Models::SubscriptionUpdatePaymentMethodParams
480
480
 
481
+ SubscriptionUpdatePaymentMethodWebhookEvent =
482
+ Dodopayments::Models::SubscriptionUpdatePaymentMethodWebhookEvent
483
+
481
484
  TaxCategory = Dodopayments::Models::TaxCategory
482
485
 
483
486
  ThemeConfig = Dodopayments::Models::ThemeConfig
@@ -145,10 +145,15 @@ module Dodopayments
145
145
  )
146
146
  end
147
147
 
148
- # @overload list(brand_id: nil, created_at_gte: nil, created_at_lte: nil, customer_id: nil, page_number: nil, page_size: nil, product_id: nil, status: nil, request_options: {})
148
+ # Some parameter documentations has been truncated, see
149
+ # {Dodopayments::Models::SubscriptionListParams} for more details.
150
+ #
151
+ # @overload list(brand_id: nil, cancel_at_next_billing_date: nil, created_at_gte: nil, created_at_lte: nil, customer_id: nil, page_number: nil, page_size: nil, product_id: nil, status: nil, request_options: {})
149
152
  #
150
153
  # @param brand_id [String] filter by Brand id
151
154
  #
155
+ # @param cancel_at_next_billing_date [Boolean] Filter by cancel_at_next_billing_date (subscriptions scheduled for cancellation)
156
+ #
152
157
  # @param created_at_gte [Time] Get events after this created time
153
158
  #
154
159
  # @param created_at_lte [Time] Get events created before this time
@@ -170,7 +170,7 @@ module Dodopayments
170
170
 
171
171
  # @param payload [String] The raw webhook payload as a string
172
172
  #
173
- # @return [Dodopayments::Models::AbandonedCheckoutDetectedWebhookEvent, Dodopayments::Models::AbandonedCheckoutRecoveredWebhookEvent, Dodopayments::Models::CreditAddedWebhookEvent, Dodopayments::Models::CreditBalanceLowWebhookEvent, Dodopayments::Models::CreditDeductedWebhookEvent, Dodopayments::Models::CreditExpiredWebhookEvent, Dodopayments::Models::CreditManualAdjustmentWebhookEvent, Dodopayments::Models::CreditOverageChargedWebhookEvent, Dodopayments::Models::CreditOverageResetWebhookEvent, Dodopayments::Models::CreditRolledOverWebhookEvent, Dodopayments::Models::CreditRolloverForfeitedWebhookEvent, Dodopayments::Models::DisputeAcceptedWebhookEvent, Dodopayments::Models::DisputeCancelledWebhookEvent, Dodopayments::Models::DisputeChallengedWebhookEvent, Dodopayments::Models::DisputeExpiredWebhookEvent, Dodopayments::Models::DisputeLostWebhookEvent, Dodopayments::Models::DisputeOpenedWebhookEvent, Dodopayments::Models::DisputeWonWebhookEvent, Dodopayments::Models::DunningRecoveredWebhookEvent, Dodopayments::Models::DunningStartedWebhookEvent, Dodopayments::Models::EntitlementGrantCreatedWebhookEvent, Dodopayments::Models::EntitlementGrantDeliveredWebhookEvent, Dodopayments::Models::EntitlementGrantFailedWebhookEvent, Dodopayments::Models::EntitlementGrantRevokedWebhookEvent, Dodopayments::Models::LicenseKeyCreatedWebhookEvent, Dodopayments::Models::PaymentCancelledWebhookEvent, Dodopayments::Models::PaymentFailedWebhookEvent, Dodopayments::Models::PaymentProcessingWebhookEvent, Dodopayments::Models::PaymentSucceededWebhookEvent, Dodopayments::Models::RefundFailedWebhookEvent, Dodopayments::Models::RefundSucceededWebhookEvent, Dodopayments::Models::SubscriptionActiveWebhookEvent, Dodopayments::Models::SubscriptionCancelledWebhookEvent, Dodopayments::Models::SubscriptionExpiredWebhookEvent, Dodopayments::Models::SubscriptionFailedWebhookEvent, Dodopayments::Models::SubscriptionOnHoldWebhookEvent, Dodopayments::Models::SubscriptionPlanChangedWebhookEvent, Dodopayments::Models::SubscriptionRenewedWebhookEvent, Dodopayments::Models::SubscriptionUpdatedWebhookEvent]
173
+ # @return [Dodopayments::Models::AbandonedCheckoutDetectedWebhookEvent, Dodopayments::Models::AbandonedCheckoutRecoveredWebhookEvent, Dodopayments::Models::CreditAddedWebhookEvent, Dodopayments::Models::CreditBalanceLowWebhookEvent, Dodopayments::Models::CreditDeductedWebhookEvent, Dodopayments::Models::CreditExpiredWebhookEvent, Dodopayments::Models::CreditManualAdjustmentWebhookEvent, Dodopayments::Models::CreditOverageChargedWebhookEvent, Dodopayments::Models::CreditOverageResetWebhookEvent, Dodopayments::Models::CreditRolledOverWebhookEvent, Dodopayments::Models::CreditRolloverForfeitedWebhookEvent, Dodopayments::Models::DisputeAcceptedWebhookEvent, Dodopayments::Models::DisputeCancelledWebhookEvent, Dodopayments::Models::DisputeChallengedWebhookEvent, Dodopayments::Models::DisputeExpiredWebhookEvent, Dodopayments::Models::DisputeLostWebhookEvent, Dodopayments::Models::DisputeOpenedWebhookEvent, Dodopayments::Models::DisputeWonWebhookEvent, Dodopayments::Models::DunningRecoveredWebhookEvent, Dodopayments::Models::DunningStartedWebhookEvent, Dodopayments::Models::EntitlementGrantCreatedWebhookEvent, Dodopayments::Models::EntitlementGrantDeliveredWebhookEvent, Dodopayments::Models::EntitlementGrantFailedWebhookEvent, Dodopayments::Models::EntitlementGrantRevokedWebhookEvent, Dodopayments::Models::LicenseKeyCreatedWebhookEvent, Dodopayments::Models::PaymentCancelledWebhookEvent, Dodopayments::Models::PaymentFailedWebhookEvent, Dodopayments::Models::PaymentProcessingWebhookEvent, Dodopayments::Models::PaymentSucceededWebhookEvent, Dodopayments::Models::RefundFailedWebhookEvent, Dodopayments::Models::RefundSucceededWebhookEvent, Dodopayments::Models::SubscriptionActiveWebhookEvent, Dodopayments::Models::SubscriptionCancelledWebhookEvent, Dodopayments::Models::SubscriptionExpiredWebhookEvent, Dodopayments::Models::SubscriptionFailedWebhookEvent, Dodopayments::Models::SubscriptionOnHoldWebhookEvent, Dodopayments::Models::SubscriptionPlanChangedWebhookEvent, Dodopayments::Models::SubscriptionRenewedWebhookEvent, Dodopayments::Models::SubscriptionUpdatePaymentMethodWebhookEvent, Dodopayments::Models::SubscriptionUpdatedWebhookEvent]
174
174
  def unsafe_unwrap(payload)
175
175
  parsed = JSON.parse(payload, symbolize_names: true)
176
176
  Dodopayments::Internal::Type::Converter.coerce(Dodopayments::Models::UnsafeUnwrapWebhookEvent, parsed)
@@ -182,7 +182,7 @@ module Dodopayments
182
182
  #
183
183
  # @param key [String, nil] The webhook signing key
184
184
  #
185
- # @return [Dodopayments::Models::AbandonedCheckoutDetectedWebhookEvent, Dodopayments::Models::AbandonedCheckoutRecoveredWebhookEvent, Dodopayments::Models::CreditAddedWebhookEvent, Dodopayments::Models::CreditBalanceLowWebhookEvent, Dodopayments::Models::CreditDeductedWebhookEvent, Dodopayments::Models::CreditExpiredWebhookEvent, Dodopayments::Models::CreditManualAdjustmentWebhookEvent, Dodopayments::Models::CreditOverageChargedWebhookEvent, Dodopayments::Models::CreditOverageResetWebhookEvent, Dodopayments::Models::CreditRolledOverWebhookEvent, Dodopayments::Models::CreditRolloverForfeitedWebhookEvent, Dodopayments::Models::DisputeAcceptedWebhookEvent, Dodopayments::Models::DisputeCancelledWebhookEvent, Dodopayments::Models::DisputeChallengedWebhookEvent, Dodopayments::Models::DisputeExpiredWebhookEvent, Dodopayments::Models::DisputeLostWebhookEvent, Dodopayments::Models::DisputeOpenedWebhookEvent, Dodopayments::Models::DisputeWonWebhookEvent, Dodopayments::Models::DunningRecoveredWebhookEvent, Dodopayments::Models::DunningStartedWebhookEvent, Dodopayments::Models::EntitlementGrantCreatedWebhookEvent, Dodopayments::Models::EntitlementGrantDeliveredWebhookEvent, Dodopayments::Models::EntitlementGrantFailedWebhookEvent, Dodopayments::Models::EntitlementGrantRevokedWebhookEvent, Dodopayments::Models::LicenseKeyCreatedWebhookEvent, Dodopayments::Models::PaymentCancelledWebhookEvent, Dodopayments::Models::PaymentFailedWebhookEvent, Dodopayments::Models::PaymentProcessingWebhookEvent, Dodopayments::Models::PaymentSucceededWebhookEvent, Dodopayments::Models::RefundFailedWebhookEvent, Dodopayments::Models::RefundSucceededWebhookEvent, Dodopayments::Models::SubscriptionActiveWebhookEvent, Dodopayments::Models::SubscriptionCancelledWebhookEvent, Dodopayments::Models::SubscriptionExpiredWebhookEvent, Dodopayments::Models::SubscriptionFailedWebhookEvent, Dodopayments::Models::SubscriptionOnHoldWebhookEvent, Dodopayments::Models::SubscriptionPlanChangedWebhookEvent, Dodopayments::Models::SubscriptionRenewedWebhookEvent, Dodopayments::Models::SubscriptionUpdatedWebhookEvent]
185
+ # @return [Dodopayments::Models::AbandonedCheckoutDetectedWebhookEvent, Dodopayments::Models::AbandonedCheckoutRecoveredWebhookEvent, Dodopayments::Models::CreditAddedWebhookEvent, Dodopayments::Models::CreditBalanceLowWebhookEvent, Dodopayments::Models::CreditDeductedWebhookEvent, Dodopayments::Models::CreditExpiredWebhookEvent, Dodopayments::Models::CreditManualAdjustmentWebhookEvent, Dodopayments::Models::CreditOverageChargedWebhookEvent, Dodopayments::Models::CreditOverageResetWebhookEvent, Dodopayments::Models::CreditRolledOverWebhookEvent, Dodopayments::Models::CreditRolloverForfeitedWebhookEvent, Dodopayments::Models::DisputeAcceptedWebhookEvent, Dodopayments::Models::DisputeCancelledWebhookEvent, Dodopayments::Models::DisputeChallengedWebhookEvent, Dodopayments::Models::DisputeExpiredWebhookEvent, Dodopayments::Models::DisputeLostWebhookEvent, Dodopayments::Models::DisputeOpenedWebhookEvent, Dodopayments::Models::DisputeWonWebhookEvent, Dodopayments::Models::DunningRecoveredWebhookEvent, Dodopayments::Models::DunningStartedWebhookEvent, Dodopayments::Models::EntitlementGrantCreatedWebhookEvent, Dodopayments::Models::EntitlementGrantDeliveredWebhookEvent, Dodopayments::Models::EntitlementGrantFailedWebhookEvent, Dodopayments::Models::EntitlementGrantRevokedWebhookEvent, Dodopayments::Models::LicenseKeyCreatedWebhookEvent, Dodopayments::Models::PaymentCancelledWebhookEvent, Dodopayments::Models::PaymentFailedWebhookEvent, Dodopayments::Models::PaymentProcessingWebhookEvent, Dodopayments::Models::PaymentSucceededWebhookEvent, Dodopayments::Models::RefundFailedWebhookEvent, Dodopayments::Models::RefundSucceededWebhookEvent, Dodopayments::Models::SubscriptionActiveWebhookEvent, Dodopayments::Models::SubscriptionCancelledWebhookEvent, Dodopayments::Models::SubscriptionExpiredWebhookEvent, Dodopayments::Models::SubscriptionFailedWebhookEvent, Dodopayments::Models::SubscriptionOnHoldWebhookEvent, Dodopayments::Models::SubscriptionPlanChangedWebhookEvent, Dodopayments::Models::SubscriptionRenewedWebhookEvent, Dodopayments::Models::SubscriptionUpdatePaymentMethodWebhookEvent, Dodopayments::Models::SubscriptionUpdatedWebhookEvent]
186
186
  def unwrap(payload, headers:, key: @client.webhook_key)
187
187
  if key.nil?
188
188
  raise ArgumentError.new("Cannot verify a webhook without a key on either the client's webhook_key or passed in as an argument")
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dodopayments
4
- VERSION = "2.20.0"
4
+ VERSION = "2.20.1"
5
5
  end
data/lib/dodopayments.rb CHANGED
@@ -352,6 +352,7 @@ require_relative "dodopayments/models/subscription_updated_webhook_event"
352
352
  require_relative "dodopayments/models/subscription_update_params"
353
353
  require_relative "dodopayments/models/subscription_update_payment_method_params"
354
354
  require_relative "dodopayments/models/subscription_update_payment_method_response"
355
+ require_relative "dodopayments/models/subscription_update_payment_method_webhook_event"
355
356
  require_relative "dodopayments/models/tax_category"
356
357
  require_relative "dodopayments/models/theme_config"
357
358
  require_relative "dodopayments/models/theme_mode_config"
@@ -56,6 +56,13 @@ module Dodopayments
56
56
  sig { returns(Integer) }
57
57
  attr_accessor :total_price
58
58
 
59
+ # The upcoming billing date for subscriptions, computed relative to now: with a
60
+ # trial it is `now + trial_period_days`, otherwise `now + payment frequency`.
61
+ # `None` for one-time-only carts. This is a preview estimate; the authoritative
62
+ # value is set when the subscription activates.
63
+ sig { returns(T.nilable(Time)) }
64
+ attr_accessor :next_billing_date
65
+
59
66
  # Breakup of recurring payments (None for one-time only)
60
67
  sig do
61
68
  returns(
@@ -105,6 +112,7 @@ module Dodopayments
105
112
  Dodopayments::Models::CheckoutSessionPreviewResponse::ProductCart::OrHash
106
113
  ],
107
114
  total_price: Integer,
115
+ next_billing_date: T.nilable(Time),
108
116
  recurring_breakup:
109
117
  T.nilable(
110
118
  Dodopayments::Models::CheckoutSessionPreviewResponse::RecurringBreakup::OrHash
@@ -131,6 +139,11 @@ module Dodopayments
131
139
  product_cart:,
132
140
  # Total calculate price of the product cart
133
141
  total_price:,
142
+ # The upcoming billing date for subscriptions, computed relative to now: with a
143
+ # trial it is `now + trial_period_days`, otherwise `now + payment frequency`.
144
+ # `None` for one-time-only carts. This is a preview estimate; the authoritative
145
+ # value is set when the subscription activates.
146
+ next_billing_date: nil,
134
147
  # Breakup of recurring payments (None for one-time only)
135
148
  recurring_breakup: nil,
136
149
  # Registered business name from the official registry (EU/GB/AU) when found
@@ -157,6 +170,7 @@ module Dodopayments
157
170
  Dodopayments::Models::CheckoutSessionPreviewResponse::ProductCart
158
171
  ],
159
172
  total_price: Integer,
173
+ next_billing_date: T.nilable(Time),
160
174
  recurring_breakup:
161
175
  T.nilable(
162
176
  Dodopayments::Models::CheckoutSessionPreviewResponse::RecurringBreakup
@@ -48,6 +48,11 @@ module Dodopayments
48
48
  sig { returns(T::Array[Dodopayments::Dispute]) }
49
49
  attr_accessor :disputes
50
50
 
51
+ # Whether this payment was created solely to update a subscription's payment
52
+ # method (a zero-/setup-amount charge). `false` for normal charges.
53
+ sig { returns(T::Boolean) }
54
+ attr_accessor :is_update_payment_method
55
+
51
56
  # Additional custom data associated with the payment
52
57
  sig { returns(T::Hash[Symbol, Dodopayments::MetadataItem::Variants]) }
53
58
  attr_accessor :metadata
@@ -150,6 +155,10 @@ module Dodopayments
150
155
  sig { returns(T.nilable(String)) }
151
156
  attr_accessor :payment_method
152
157
 
158
+ # Identifier of the saved payment method used for this payment, if any.
159
+ sig { returns(T.nilable(String)) }
160
+ attr_accessor :payment_method_id
161
+
153
162
  # Specific type of payment method (e.g. "visa", "mastercard")
154
163
  sig { returns(T.nilable(String)) }
155
164
  attr_accessor :payment_method_type
@@ -198,6 +207,7 @@ module Dodopayments
198
207
  customer: Dodopayments::CustomerLimitedDetails::OrHash,
199
208
  digital_products_delivered: T::Boolean,
200
209
  disputes: T::Array[Dodopayments::Dispute::OrHash],
210
+ is_update_payment_method: T::Boolean,
201
211
  metadata: T::Hash[Symbol, Dodopayments::MetadataItem::Variants],
202
212
  payment_id: String,
203
213
  payment_provider: Dodopayments::Payment::PaymentProvider::OrSymbol,
@@ -222,6 +232,7 @@ module Dodopayments
222
232
  invoice_url: T.nilable(String),
223
233
  payment_link: T.nilable(String),
224
234
  payment_method: T.nilable(String),
235
+ payment_method_id: T.nilable(String),
225
236
  payment_method_type: T.nilable(String),
226
237
  product_cart:
227
238
  T.nilable(T::Array[Dodopayments::Payment::ProductCart::OrHash]),
@@ -250,6 +261,9 @@ module Dodopayments
250
261
  digital_products_delivered:,
251
262
  # List of disputes associated with this payment
252
263
  disputes:,
264
+ # Whether this payment was created solely to update a subscription's payment
265
+ # method (a zero-/setup-amount charge). `false` for normal charges.
266
+ is_update_payment_method:,
253
267
  # Additional custom data associated with the payment
254
268
  metadata:,
255
269
  # Unique identifier for the payment
@@ -306,6 +320,8 @@ module Dodopayments
306
320
  payment_link: nil,
307
321
  # Payment method used by customer (e.g. "card", "bank_transfer")
308
322
  payment_method: nil,
323
+ # Identifier of the saved payment method used for this payment, if any.
324
+ payment_method_id: nil,
309
325
  # Specific type of payment method (e.g. "visa", "mastercard")
310
326
  payment_method_type: nil,
311
327
  # List of products purchased in a one-time payment
@@ -340,6 +356,7 @@ module Dodopayments
340
356
  customer: Dodopayments::CustomerLimitedDetails,
341
357
  digital_products_delivered: T::Boolean,
342
358
  disputes: T::Array[Dodopayments::Dispute],
359
+ is_update_payment_method: T::Boolean,
343
360
  metadata: T::Hash[Symbol, Dodopayments::MetadataItem::Variants],
344
361
  payment_id: String,
345
362
  payment_provider:
@@ -366,6 +383,7 @@ module Dodopayments
366
383
  invoice_url: T.nilable(String),
367
384
  payment_link: T.nilable(String),
368
385
  payment_method: T.nilable(String),
386
+ payment_method_id: T.nilable(String),
369
387
  payment_method_type: T.nilable(String),
370
388
  product_cart:
371
389
  T.nilable(T::Array[Dodopayments::Payment::ProductCart]),
@@ -21,6 +21,13 @@ module Dodopayments
21
21
  sig { params(brand_id: String).void }
22
22
  attr_writer :brand_id
23
23
 
24
+ # Filter by cancel_at_next_billing_date (subscriptions scheduled for cancellation)
25
+ sig { returns(T.nilable(T::Boolean)) }
26
+ attr_reader :cancel_at_next_billing_date
27
+
28
+ sig { params(cancel_at_next_billing_date: T::Boolean).void }
29
+ attr_writer :cancel_at_next_billing_date
30
+
24
31
  # Get events after this created time
25
32
  sig { returns(T.nilable(Time)) }
26
33
  attr_reader :created_at_gte
@@ -81,6 +88,7 @@ module Dodopayments
81
88
  sig do
82
89
  params(
83
90
  brand_id: String,
91
+ cancel_at_next_billing_date: T::Boolean,
84
92
  created_at_gte: Time,
85
93
  created_at_lte: Time,
86
94
  customer_id: String,
@@ -94,6 +102,8 @@ module Dodopayments
94
102
  def self.new(
95
103
  # filter by Brand id
96
104
  brand_id: nil,
105
+ # Filter by cancel_at_next_billing_date (subscriptions scheduled for cancellation)
106
+ cancel_at_next_billing_date: nil,
97
107
  # Get events after this created time
98
108
  created_at_gte: nil,
99
109
  # Get events created before this time
@@ -116,6 +126,7 @@ module Dodopayments
116
126
  override.returns(
117
127
  {
118
128
  brand_id: String,
129
+ cancel_at_next_billing_date: T::Boolean,
119
130
  created_at_gte: Time,
120
131
  created_at_lte: Time,
121
132
  customer_id: String,
@@ -0,0 +1,67 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class SubscriptionUpdatePaymentMethodWebhookEvent < Dodopayments::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Dodopayments::SubscriptionUpdatePaymentMethodWebhookEvent,
10
+ Dodopayments::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # The business identifier
15
+ sig { returns(String) }
16
+ attr_accessor :business_id
17
+
18
+ # Response struct representing subscription details
19
+ sig { returns(Dodopayments::Subscription) }
20
+ attr_reader :data
21
+
22
+ sig { params(data: Dodopayments::Subscription::OrHash).void }
23
+ attr_writer :data
24
+
25
+ # The timestamp of when the event occurred
26
+ sig { returns(Time) }
27
+ attr_accessor :timestamp
28
+
29
+ # The event type
30
+ sig { returns(Symbol) }
31
+ attr_accessor :type
32
+
33
+ sig do
34
+ params(
35
+ business_id: String,
36
+ data: Dodopayments::Subscription::OrHash,
37
+ timestamp: Time,
38
+ type: Symbol
39
+ ).returns(T.attached_class)
40
+ end
41
+ def self.new(
42
+ # The business identifier
43
+ business_id:,
44
+ # Response struct representing subscription details
45
+ data:,
46
+ # The timestamp of when the event occurred
47
+ timestamp:,
48
+ # The event type
49
+ type: :"subscription.update_payment_method"
50
+ )
51
+ end
52
+
53
+ sig do
54
+ override.returns(
55
+ {
56
+ business_id: String,
57
+ data: Dodopayments::Subscription,
58
+ timestamp: Time,
59
+ type: Symbol
60
+ }
61
+ )
62
+ end
63
+ def to_hash
64
+ end
65
+ end
66
+ end
67
+ end
@@ -46,6 +46,7 @@ module Dodopayments
46
46
  Dodopayments::SubscriptionOnHoldWebhookEvent,
47
47
  Dodopayments::SubscriptionPlanChangedWebhookEvent,
48
48
  Dodopayments::SubscriptionRenewedWebhookEvent,
49
+ Dodopayments::SubscriptionUpdatePaymentMethodWebhookEvent,
49
50
  Dodopayments::SubscriptionUpdatedWebhookEvent
50
51
  )
51
52
  end
@@ -46,6 +46,7 @@ module Dodopayments
46
46
  Dodopayments::SubscriptionOnHoldWebhookEvent,
47
47
  Dodopayments::SubscriptionPlanChangedWebhookEvent,
48
48
  Dodopayments::SubscriptionRenewedWebhookEvent,
49
+ Dodopayments::SubscriptionUpdatePaymentMethodWebhookEvent,
49
50
  Dodopayments::SubscriptionUpdatedWebhookEvent
50
51
  )
51
52
  end
@@ -96,6 +96,11 @@ module Dodopayments
96
96
  :"subscription.updated",
97
97
  Dodopayments::WebhookEventType::TaggedSymbol
98
98
  )
99
+ SUBSCRIPTION_UPDATE_PAYMENT_METHOD =
100
+ T.let(
101
+ :"subscription.update_payment_method",
102
+ Dodopayments::WebhookEventType::TaggedSymbol
103
+ )
99
104
  LICENSE_KEY_CREATED =
100
105
  T.let(
101
106
  :"license_key.created",
@@ -511,6 +511,9 @@ module Dodopayments
511
511
  SubscriptionUpdatePaymentMethodParams =
512
512
  Dodopayments::Models::SubscriptionUpdatePaymentMethodParams
513
513
 
514
+ SubscriptionUpdatePaymentMethodWebhookEvent =
515
+ Dodopayments::Models::SubscriptionUpdatePaymentMethodWebhookEvent
516
+
514
517
  TaxCategory = Dodopayments::Models::TaxCategory
515
518
 
516
519
  ThemeConfig = Dodopayments::Models::ThemeConfig
@@ -204,6 +204,7 @@ module Dodopayments
204
204
  sig do
205
205
  params(
206
206
  brand_id: String,
207
+ cancel_at_next_billing_date: T::Boolean,
207
208
  created_at_gte: Time,
208
209
  created_at_lte: Time,
209
210
  customer_id: String,
@@ -221,6 +222,8 @@ module Dodopayments
221
222
  def list(
222
223
  # filter by Brand id
223
224
  brand_id: nil,
225
+ # Filter by cancel_at_next_billing_date (subscriptions scheduled for cancellation)
226
+ cancel_at_next_billing_date: nil,
224
227
  # Get events after this created time
225
228
  created_at_gte: nil,
226
229
  # Get events created before this time
@@ -182,6 +182,7 @@ module Dodopayments
182
182
  Dodopayments::SubscriptionOnHoldWebhookEvent,
183
183
  Dodopayments::SubscriptionPlanChangedWebhookEvent,
184
184
  Dodopayments::SubscriptionRenewedWebhookEvent,
185
+ Dodopayments::SubscriptionUpdatePaymentMethodWebhookEvent,
185
186
  Dodopayments::SubscriptionUpdatedWebhookEvent
186
187
  )
187
188
  )
@@ -237,6 +238,7 @@ module Dodopayments
237
238
  Dodopayments::SubscriptionOnHoldWebhookEvent,
238
239
  Dodopayments::SubscriptionPlanChangedWebhookEvent,
239
240
  Dodopayments::SubscriptionRenewedWebhookEvent,
241
+ Dodopayments::SubscriptionUpdatePaymentMethodWebhookEvent,
240
242
  Dodopayments::SubscriptionUpdatedWebhookEvent
241
243
  )
242
244
  )
@@ -8,6 +8,7 @@ module Dodopayments
8
8
  is_byop: bool,
9
9
  product_cart: ::Array[Dodopayments::Models::CheckoutSessionPreviewResponse::ProductCart],
10
10
  total_price: Integer,
11
+ next_billing_date: Time?,
11
12
  recurring_breakup: Dodopayments::Models::CheckoutSessionPreviewResponse::RecurringBreakup?,
12
13
  tax_id_business_name: String?,
13
14
  tax_id_err_msg: String?,
@@ -28,6 +29,8 @@ module Dodopayments
28
29
 
29
30
  attr_accessor total_price: Integer
30
31
 
32
+ attr_accessor next_billing_date: Time?
33
+
31
34
  attr_accessor recurring_breakup: Dodopayments::Models::CheckoutSessionPreviewResponse::RecurringBreakup?
32
35
 
33
36
  attr_accessor tax_id_business_name: String?
@@ -45,6 +48,7 @@ module Dodopayments
45
48
  is_byop: bool,
46
49
  product_cart: ::Array[Dodopayments::Models::CheckoutSessionPreviewResponse::ProductCart],
47
50
  total_price: Integer,
51
+ ?next_billing_date: Time?,
48
52
  ?recurring_breakup: Dodopayments::Models::CheckoutSessionPreviewResponse::RecurringBreakup?,
49
53
  ?tax_id_business_name: String?,
50
54
  ?tax_id_err_msg: String?,
@@ -59,6 +63,7 @@ module Dodopayments
59
63
  is_byop: bool,
60
64
  product_cart: ::Array[Dodopayments::Models::CheckoutSessionPreviewResponse::ProductCart],
61
65
  total_price: Integer,
66
+ next_billing_date: Time?,
62
67
  recurring_breakup: Dodopayments::Models::CheckoutSessionPreviewResponse::RecurringBreakup?,
63
68
  tax_id_business_name: String?,
64
69
  tax_id_err_msg: String?,
@@ -10,6 +10,7 @@ module Dodopayments
10
10
  customer: Dodopayments::CustomerLimitedDetails,
11
11
  digital_products_delivered: bool,
12
12
  disputes: ::Array[Dodopayments::Dispute],
13
+ is_update_payment_method: bool,
13
14
  metadata: Dodopayments::Models::metadata,
14
15
  payment_id: String,
15
16
  payment_provider: Dodopayments::Models::Payment::payment_provider,
@@ -33,6 +34,7 @@ module Dodopayments
33
34
  invoice_url: String?,
34
35
  payment_link: String?,
35
36
  payment_method: String?,
37
+ payment_method_id: String?,
36
38
  payment_method_type: String?,
37
39
  product_cart: ::Array[Dodopayments::Payment::ProductCart]?,
38
40
  refund_status: Dodopayments::Models::payment_refund_status?,
@@ -60,6 +62,8 @@ module Dodopayments
60
62
 
61
63
  attr_accessor disputes: ::Array[Dodopayments::Dispute]
62
64
 
65
+ attr_accessor is_update_payment_method: bool
66
+
63
67
  attr_accessor metadata: Dodopayments::Models::metadata
64
68
 
65
69
  attr_accessor payment_id: String
@@ -106,6 +110,8 @@ module Dodopayments
106
110
 
107
111
  attr_accessor payment_method: String?
108
112
 
113
+ attr_accessor payment_method_id: String?
114
+
109
115
  attr_accessor payment_method_type: String?
110
116
 
111
117
  attr_accessor product_cart: ::Array[Dodopayments::Payment::ProductCart]?
@@ -131,6 +137,7 @@ module Dodopayments
131
137
  customer: Dodopayments::CustomerLimitedDetails,
132
138
  digital_products_delivered: bool,
133
139
  disputes: ::Array[Dodopayments::Dispute],
140
+ is_update_payment_method: bool,
134
141
  metadata: Dodopayments::Models::metadata,
135
142
  payment_id: String,
136
143
  payment_provider: Dodopayments::Models::Payment::payment_provider,
@@ -154,6 +161,7 @@ module Dodopayments
154
161
  ?invoice_url: String?,
155
162
  ?payment_link: String?,
156
163
  ?payment_method: String?,
164
+ ?payment_method_id: String?,
157
165
  ?payment_method_type: String?,
158
166
  ?product_cart: ::Array[Dodopayments::Payment::ProductCart]?,
159
167
  ?refund_status: Dodopayments::Models::payment_refund_status?,
@@ -173,6 +181,7 @@ module Dodopayments
173
181
  customer: Dodopayments::CustomerLimitedDetails,
174
182
  digital_products_delivered: bool,
175
183
  disputes: ::Array[Dodopayments::Dispute],
184
+ is_update_payment_method: bool,
176
185
  metadata: Dodopayments::Models::metadata,
177
186
  payment_id: String,
178
187
  payment_provider: Dodopayments::Models::Payment::payment_provider,
@@ -196,6 +205,7 @@ module Dodopayments
196
205
  invoice_url: String?,
197
206
  payment_link: String?,
198
207
  payment_method: String?,
208
+ payment_method_id: String?,
199
209
  payment_method_type: String?,
200
210
  product_cart: ::Array[Dodopayments::Payment::ProductCart]?,
201
211
  refund_status: Dodopayments::Models::payment_refund_status?,
@@ -3,6 +3,7 @@ module Dodopayments
3
3
  type subscription_list_params =
4
4
  {
5
5
  brand_id: String,
6
+ cancel_at_next_billing_date: bool,
6
7
  created_at_gte: Time,
7
8
  created_at_lte: Time,
8
9
  customer_id: String,
@@ -21,6 +22,10 @@ module Dodopayments
21
22
 
22
23
  def brand_id=: (String) -> String
23
24
 
25
+ attr_reader cancel_at_next_billing_date: bool?
26
+
27
+ def cancel_at_next_billing_date=: (bool) -> bool
28
+
24
29
  attr_reader created_at_gte: Time?
25
30
 
26
31
  def created_at_gte=: (Time) -> Time
@@ -53,6 +58,7 @@ module Dodopayments
53
58
 
54
59
  def initialize: (
55
60
  ?brand_id: String,
61
+ ?cancel_at_next_billing_date: bool,
56
62
  ?created_at_gte: Time,
57
63
  ?created_at_lte: Time,
58
64
  ?customer_id: String,
@@ -65,6 +71,7 @@ module Dodopayments
65
71
 
66
72
  def to_hash: -> {
67
73
  brand_id: String,
74
+ cancel_at_next_billing_date: bool,
68
75
  created_at_gte: Time,
69
76
  created_at_lte: Time,
70
77
  customer_id: String,
@@ -0,0 +1,35 @@
1
+ module Dodopayments
2
+ module Models
3
+ type subscription_update_payment_method_webhook_event =
4
+ {
5
+ business_id: String,
6
+ data: Dodopayments::Subscription,
7
+ timestamp: Time,
8
+ type: :"subscription.update_payment_method"
9
+ }
10
+
11
+ class SubscriptionUpdatePaymentMethodWebhookEvent < Dodopayments::Internal::Type::BaseModel
12
+ attr_accessor business_id: String
13
+
14
+ attr_accessor data: Dodopayments::Subscription
15
+
16
+ attr_accessor timestamp: Time
17
+
18
+ attr_accessor type: :"subscription.update_payment_method"
19
+
20
+ def initialize: (
21
+ business_id: String,
22
+ data: Dodopayments::Subscription,
23
+ timestamp: Time,
24
+ ?type: :"subscription.update_payment_method"
25
+ ) -> void
26
+
27
+ def to_hash: -> {
28
+ business_id: String,
29
+ data: Dodopayments::Subscription,
30
+ timestamp: Time,
31
+ type: :"subscription.update_payment_method"
32
+ }
33
+ end
34
+ end
35
+ end
@@ -39,6 +39,7 @@ module Dodopayments
39
39
  | Dodopayments::SubscriptionOnHoldWebhookEvent
40
40
  | Dodopayments::SubscriptionPlanChangedWebhookEvent
41
41
  | Dodopayments::SubscriptionRenewedWebhookEvent
42
+ | Dodopayments::SubscriptionUpdatePaymentMethodWebhookEvent
42
43
  | Dodopayments::SubscriptionUpdatedWebhookEvent
43
44
 
44
45
  module UnsafeUnwrapWebhookEvent
@@ -39,6 +39,7 @@ module Dodopayments
39
39
  | Dodopayments::SubscriptionOnHoldWebhookEvent
40
40
  | Dodopayments::SubscriptionPlanChangedWebhookEvent
41
41
  | Dodopayments::SubscriptionRenewedWebhookEvent
42
+ | Dodopayments::SubscriptionUpdatePaymentMethodWebhookEvent
42
43
  | Dodopayments::SubscriptionUpdatedWebhookEvent
43
44
 
44
45
  module UnwrapWebhookEvent
@@ -23,6 +23,7 @@ module Dodopayments
23
23
  | :"subscription.expired"
24
24
  | :"subscription.plan_changed"
25
25
  | :"subscription.updated"
26
+ | :"subscription.update_payment_method"
26
27
  | :"license_key.created"
27
28
  | :"payout.not_initiated"
28
29
  | :"payout.on_hold"
@@ -72,6 +73,7 @@ module Dodopayments
72
73
  SUBSCRIPTION_EXPIRED: :"subscription.expired"
73
74
  SUBSCRIPTION_PLAN_CHANGED: :"subscription.plan_changed"
74
75
  SUBSCRIPTION_UPDATED: :"subscription.updated"
76
+ SUBSCRIPTION_UPDATE_PAYMENT_METHOD: :"subscription.update_payment_method"
75
77
  LICENSE_KEY_CREATED: :"license_key.created"
76
78
  PAYOUT_NOT_INITIATED: :"payout.not_initiated"
77
79
  PAYOUT_ON_HOLD: :"payout.on_hold"
@@ -437,6 +437,8 @@ module Dodopayments
437
437
 
438
438
  class SubscriptionUpdatePaymentMethodParams = Dodopayments::Models::SubscriptionUpdatePaymentMethodParams
439
439
 
440
+ class SubscriptionUpdatePaymentMethodWebhookEvent = Dodopayments::Models::SubscriptionUpdatePaymentMethodWebhookEvent
441
+
440
442
  module TaxCategory = Dodopayments::Models::TaxCategory
441
443
 
442
444
  class ThemeConfig = Dodopayments::Models::ThemeConfig
@@ -56,6 +56,7 @@ module Dodopayments
56
56
 
57
57
  def list: (
58
58
  ?brand_id: String,
59
+ ?cancel_at_next_billing_date: bool,
59
60
  ?created_at_gte: Time,
60
61
  ?created_at_lte: Time,
61
62
  ?customer_id: String,
@@ -87,6 +87,7 @@ module Dodopayments
87
87
  | Dodopayments::SubscriptionOnHoldWebhookEvent
88
88
  | Dodopayments::SubscriptionPlanChangedWebhookEvent
89
89
  | Dodopayments::SubscriptionRenewedWebhookEvent
90
+ | Dodopayments::SubscriptionUpdatePaymentMethodWebhookEvent
90
91
  | Dodopayments::SubscriptionUpdatedWebhookEvent)
91
92
 
92
93
  def unwrap: (
@@ -131,6 +132,7 @@ module Dodopayments
131
132
  | Dodopayments::SubscriptionOnHoldWebhookEvent
132
133
  | Dodopayments::SubscriptionPlanChangedWebhookEvent
133
134
  | Dodopayments::SubscriptionRenewedWebhookEvent
135
+ | Dodopayments::SubscriptionUpdatePaymentMethodWebhookEvent
134
136
  | Dodopayments::SubscriptionUpdatedWebhookEvent)
135
137
 
136
138
  def initialize: (client: Dodopayments::Client) -> void
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dodopayments
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.20.0
4
+ version: 2.20.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dodo Payments
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-07-06 00:00:00.000000000 Z
11
+ date: 2026-07-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cgi
@@ -380,6 +380,7 @@ files:
380
380
  - lib/dodopayments/models/subscription_update_params.rb
381
381
  - lib/dodopayments/models/subscription_update_payment_method_params.rb
382
382
  - lib/dodopayments/models/subscription_update_payment_method_response.rb
383
+ - lib/dodopayments/models/subscription_update_payment_method_webhook_event.rb
383
384
  - lib/dodopayments/models/subscription_updated_webhook_event.rb
384
385
  - lib/dodopayments/models/tax_category.rb
385
386
  - lib/dodopayments/models/theme_config.rb
@@ -765,6 +766,7 @@ files:
765
766
  - rbi/dodopayments/models/subscription_update_params.rbi
766
767
  - rbi/dodopayments/models/subscription_update_payment_method_params.rbi
767
768
  - rbi/dodopayments/models/subscription_update_payment_method_response.rbi
769
+ - rbi/dodopayments/models/subscription_update_payment_method_webhook_event.rbi
768
770
  - rbi/dodopayments/models/subscription_updated_webhook_event.rbi
769
771
  - rbi/dodopayments/models/tax_category.rbi
770
772
  - rbi/dodopayments/models/theme_config.rbi
@@ -1149,6 +1151,7 @@ files:
1149
1151
  - sig/dodopayments/models/subscription_update_params.rbs
1150
1152
  - sig/dodopayments/models/subscription_update_payment_method_params.rbs
1151
1153
  - sig/dodopayments/models/subscription_update_payment_method_response.rbs
1154
+ - sig/dodopayments/models/subscription_update_payment_method_webhook_event.rbs
1152
1155
  - sig/dodopayments/models/subscription_updated_webhook_event.rbs
1153
1156
  - sig/dodopayments/models/tax_category.rbs
1154
1157
  - sig/dodopayments/models/theme_config.rbs