stripe 15.0.0 → 15.3.0

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 (320) hide show
  1. checksums.yaml +4 -4
  2. data/API_VERSION +1 -0
  3. data/CHANGELOG.md +129 -44
  4. data/CONTRIBUTING.md +25 -0
  5. data/Gemfile +1 -1
  6. data/OPENAPI_VERSION +1 -1
  7. data/README.md +28 -55
  8. data/VERSION +1 -1
  9. data/lib/stripe/api_operations/nested_resource.rb +35 -35
  10. data/lib/stripe/api_requestor.rb +1 -1
  11. data/lib/stripe/api_version.rb +2 -1
  12. data/lib/stripe/connection_manager.rb +1 -3
  13. data/lib/stripe/event_types.rb +1 -0
  14. data/lib/stripe/events/v1_billing_meter_error_report_triggered_event.rb +1 -1
  15. data/lib/stripe/events/v1_billing_meter_no_meter_found_event.rb +1 -1
  16. data/lib/stripe/events/v2_core_event_destination_ping_event.rb +21 -0
  17. data/lib/stripe/oauth.rb +1 -1
  18. data/lib/stripe/resources/account.rb +198 -28
  19. data/lib/stripe/resources/account_session.rb +176 -72
  20. data/lib/stripe/resources/apple_pay_domain.rb +1 -2
  21. data/lib/stripe/resources/balance.rb +42 -0
  22. data/lib/stripe/resources/balance_transaction.rb +2 -0
  23. data/lib/stripe/resources/bank_account.rb +2 -2
  24. data/lib/stripe/resources/billing_portal/session.rb +3 -3
  25. data/lib/stripe/resources/capability.rb +1 -1
  26. data/lib/stripe/resources/charge.rb +43 -20
  27. data/lib/stripe/resources/checkout/session.rb +120 -19
  28. data/lib/stripe/resources/confirmation_token.rb +119 -100
  29. data/lib/stripe/resources/country_spec.rb +1 -1
  30. data/lib/stripe/resources/coupon.rb +2 -3
  31. data/lib/stripe/resources/credit_note.rb +21 -18
  32. data/lib/stripe/resources/customer.rb +4 -6
  33. data/lib/stripe/resources/customer_session.rb +5 -5
  34. data/lib/stripe/resources/dispute.rb +2 -2
  35. data/lib/stripe/resources/event.rb +3 -1
  36. data/lib/stripe/resources/file.rb +1 -1
  37. data/lib/stripe/resources/funding_instructions.rb +1 -1
  38. data/lib/stripe/resources/identity/verification_report.rb +6 -0
  39. data/lib/stripe/resources/identity/verification_session.rb +51 -11
  40. data/lib/stripe/resources/invoice.rb +146 -32
  41. data/lib/stripe/resources/invoice_item.rb +3 -7
  42. data/lib/stripe/resources/invoice_line_item.rb +1 -1
  43. data/lib/stripe/resources/invoice_payment.rb +9 -2
  44. data/lib/stripe/resources/issuing/authorization.rb +8 -8
  45. data/lib/stripe/resources/issuing/card.rb +1 -1
  46. data/lib/stripe/resources/issuing/dispute.rb +3 -3
  47. data/lib/stripe/resources/login_link.rb +2 -1
  48. data/lib/stripe/resources/mandate.rb +3 -0
  49. data/lib/stripe/resources/payment_intent.rb +602 -325
  50. data/lib/stripe/resources/payment_method.rb +76 -117
  51. data/lib/stripe/resources/payment_method_configuration.rb +356 -2
  52. data/lib/stripe/resources/payment_method_domain.rb +15 -2
  53. data/lib/stripe/resources/payout.rb +4 -4
  54. data/lib/stripe/resources/person.rb +27 -3
  55. data/lib/stripe/resources/plan.rb +2 -3
  56. data/lib/stripe/resources/price.rb +1 -1
  57. data/lib/stripe/resources/product.rb +1 -2
  58. data/lib/stripe/resources/quote.rb +28 -3
  59. data/lib/stripe/resources/radar/value_list.rb +1 -2
  60. data/lib/stripe/resources/radar/value_list_item.rb +1 -2
  61. data/lib/stripe/resources/refund.rb +8 -1
  62. data/lib/stripe/resources/reversal.rb +1 -1
  63. data/lib/stripe/resources/review.rb +1 -1
  64. data/lib/stripe/resources/setup_attempt.rb +1 -1
  65. data/lib/stripe/resources/setup_intent.rb +414 -293
  66. data/lib/stripe/resources/source.rb +1 -1
  67. data/lib/stripe/resources/subscription.rb +149 -27
  68. data/lib/stripe/resources/subscription_item.rb +33 -0
  69. data/lib/stripe/resources/subscription_schedule.rb +141 -4
  70. data/lib/stripe/resources/tax/calculation.rb +6 -2
  71. data/lib/stripe/resources/tax/calculation_line_item.rb +2 -0
  72. data/lib/stripe/resources/tax/registration.rb +261 -1
  73. data/lib/stripe/resources/tax/transaction.rb +1 -1
  74. data/lib/stripe/resources/tax_id.rb +3 -4
  75. data/lib/stripe/resources/tax_rate.rb +2 -2
  76. data/lib/stripe/resources/terminal/configuration.rb +2 -2
  77. data/lib/stripe/resources/terminal/location.rb +2 -3
  78. data/lib/stripe/resources/terminal/reader.rb +426 -6
  79. data/lib/stripe/resources/test_helpers/test_clock.rb +1 -2
  80. data/lib/stripe/resources/token.rb +63 -2
  81. data/lib/stripe/resources/transfer.rb +1 -1
  82. data/lib/stripe/resources/treasury/financial_account.rb +5 -1
  83. data/lib/stripe/resources/v2/billing/meter_event.rb +2 -2
  84. data/lib/stripe/resources/v2/billing/meter_event_adjustment.rb +2 -2
  85. data/lib/stripe/resources/v2/billing/meter_event_session.rb +2 -2
  86. data/lib/stripe/resources/v2/event.rb +2 -2
  87. data/lib/stripe/resources/v2/event_destination.rb +2 -2
  88. data/lib/stripe/resources/webhook_endpoint.rb +1 -2
  89. data/lib/stripe/resources.rb +1 -0
  90. data/lib/stripe/services/account_external_account_service.rb +3 -4
  91. data/lib/stripe/services/account_login_link_service.rb +1 -1
  92. data/lib/stripe/services/account_person_service.rb +85 -2
  93. data/lib/stripe/services/account_service.rb +169 -20
  94. data/lib/stripe/services/account_session_service.rb +115 -47
  95. data/lib/stripe/services/apple_pay_domain_service.rb +1 -2
  96. data/lib/stripe/services/application_fee_service.rb +1 -1
  97. data/lib/stripe/services/apps_service.rb +1 -1
  98. data/lib/stripe/services/balance_service.rb +1 -1
  99. data/lib/stripe/services/billing/meter_service.rb +1 -1
  100. data/lib/stripe/services/billing_portal/session_service.rb +1 -1
  101. data/lib/stripe/services/billing_portal_service.rb +1 -1
  102. data/lib/stripe/services/billing_service.rb +1 -1
  103. data/lib/stripe/services/charge_service.rb +4 -4
  104. data/lib/stripe/services/checkout/session_service.rb +94 -15
  105. data/lib/stripe/services/checkout_service.rb +1 -1
  106. data/lib/stripe/services/climate_service.rb +1 -1
  107. data/lib/stripe/services/coupon_service.rb +1 -2
  108. data/lib/stripe/services/credit_note_preview_lines_service.rb +3 -3
  109. data/lib/stripe/services/credit_note_service.rb +14 -15
  110. data/lib/stripe/services/customer_balance_transaction_service.rb +3 -3
  111. data/lib/stripe/services/customer_cash_balance_transaction_service.rb +2 -2
  112. data/lib/stripe/services/customer_payment_method_service.rb +1 -1
  113. data/lib/stripe/services/customer_payment_source_service.rb +1 -1
  114. data/lib/stripe/services/customer_service.rb +5 -7
  115. data/lib/stripe/services/customer_session_service.rb +1 -1
  116. data/lib/stripe/services/customer_tax_id_service.rb +2 -3
  117. data/lib/stripe/services/dispute_service.rb +1 -1
  118. data/lib/stripe/services/entitlements_service.rb +1 -1
  119. data/lib/stripe/services/file_service.rb +1 -1
  120. data/lib/stripe/services/financial_connections/account_service.rb +1 -1
  121. data/lib/stripe/services/financial_connections_service.rb +1 -1
  122. data/lib/stripe/services/forwarding_service.rb +1 -1
  123. data/lib/stripe/services/identity/verification_session_service.rb +21 -5
  124. data/lib/stripe/services/identity_service.rb +1 -1
  125. data/lib/stripe/services/invoice_item_service.rb +1 -2
  126. data/lib/stripe/services/invoice_service.rb +122 -28
  127. data/lib/stripe/services/issuing/authorization_service.rb +4 -4
  128. data/lib/stripe/services/issuing/card_service.rb +1 -1
  129. data/lib/stripe/services/issuing/dispute_service.rb +2 -2
  130. data/lib/stripe/services/issuing_service.rb +1 -1
  131. data/lib/stripe/services/payment_intent_service.rb +563 -313
  132. data/lib/stripe/services/payment_link_service.rb +1 -1
  133. data/lib/stripe/services/payment_method_configuration_service.rb +254 -2
  134. data/lib/stripe/services/payment_method_domain_service.rb +1 -1
  135. data/lib/stripe/services/payment_method_service.rb +59 -105
  136. data/lib/stripe/services/payout_service.rb +2 -2
  137. data/lib/stripe/services/plan_service.rb +2 -3
  138. data/lib/stripe/services/price_service.rb +2 -2
  139. data/lib/stripe/services/product_feature_service.rb +1 -2
  140. data/lib/stripe/services/product_service.rb +3 -4
  141. data/lib/stripe/services/promotion_code_service.rb +1 -1
  142. data/lib/stripe/services/quote_service.rb +21 -4
  143. data/lib/stripe/services/radar/early_fraud_warning_service.rb +1 -1
  144. data/lib/stripe/services/radar/value_list_item_service.rb +1 -2
  145. data/lib/stripe/services/radar/value_list_service.rb +1 -2
  146. data/lib/stripe/services/radar_service.rb +1 -1
  147. data/lib/stripe/services/reporting_service.rb +1 -1
  148. data/lib/stripe/services/setup_intent_service.rb +403 -291
  149. data/lib/stripe/services/sigma_service.rb +1 -1
  150. data/lib/stripe/services/source_service.rb +2 -2
  151. data/lib/stripe/services/subscription_item_service.rb +26 -0
  152. data/lib/stripe/services/subscription_schedule_service.rb +106 -3
  153. data/lib/stripe/services/subscription_service.rb +121 -26
  154. data/lib/stripe/services/tax/calculation_service.rb +6 -2
  155. data/lib/stripe/services/tax/registration_service.rb +170 -1
  156. data/lib/stripe/services/tax/transaction_service.rb +1 -1
  157. data/lib/stripe/services/tax_id_service.rb +2 -3
  158. data/lib/stripe/services/tax_service.rb +1 -1
  159. data/lib/stripe/services/terminal/configuration_service.rb +1 -2
  160. data/lib/stripe/services/terminal/location_service.rb +2 -3
  161. data/lib/stripe/services/terminal/reader_service.rb +196 -2
  162. data/lib/stripe/services/terminal_service.rb +1 -1
  163. data/lib/stripe/services/test_helpers/confirmation_token_service.rb +90 -91
  164. data/lib/stripe/services/test_helpers/issuing_service.rb +1 -1
  165. data/lib/stripe/services/test_helpers/terminal/reader_service.rb +43 -0
  166. data/lib/stripe/services/test_helpers/terminal_service.rb +1 -1
  167. data/lib/stripe/services/test_helpers/test_clock_service.rb +1 -2
  168. data/lib/stripe/services/test_helpers/treasury_service.rb +1 -1
  169. data/lib/stripe/services/test_helpers_service.rb +1 -1
  170. data/lib/stripe/services/token_service.rb +62 -1
  171. data/lib/stripe/services/transfer_service.rb +2 -2
  172. data/lib/stripe/services/treasury/financial_account_service.rb +6 -2
  173. data/lib/stripe/services/treasury_service.rb +1 -1
  174. data/lib/stripe/services/v1_services.rb +1 -1
  175. data/lib/stripe/services/v2/billing/meter_event_session_service.rb +1 -2
  176. data/lib/stripe/services/v2/billing_service.rb +3 -3
  177. data/lib/stripe/services/v2/core/event_destination_service.rb +17 -23
  178. data/lib/stripe/services/v2/core/event_service.rb +1 -2
  179. data/lib/stripe/services/v2/core_service.rb +1 -1
  180. data/lib/stripe/services/v2_services.rb +1 -1
  181. data/lib/stripe/services/webhook_endpoint_service.rb +1 -2
  182. data/lib/stripe/version.rb +1 -1
  183. data/lib/stripe/webhook.rb +1 -1
  184. data/rbi/stripe/resources/account.rbi +190 -35
  185. data/rbi/stripe/resources/account_session.rbi +196 -77
  186. data/rbi/stripe/resources/apple_pay_domain.rbi +1 -3
  187. data/rbi/stripe/resources/balance.rbi +55 -0
  188. data/rbi/stripe/resources/balance_transaction.rbi +3 -0
  189. data/rbi/stripe/resources/bank_account.rbi +2 -2
  190. data/rbi/stripe/resources/billing/alert.rbi +2 -2
  191. data/rbi/stripe/resources/billing_portal/session.rbi +3 -3
  192. data/rbi/stripe/resources/capability.rbi +1 -1
  193. data/rbi/stripe/resources/charge.rbi +52 -20
  194. data/rbi/stripe/resources/checkout/session.rbi +133 -24
  195. data/rbi/stripe/resources/confirmation_token.rbi +140 -115
  196. data/rbi/stripe/resources/country_spec.rbi +1 -1
  197. data/rbi/stripe/resources/coupon.rbi +2 -4
  198. data/rbi/stripe/resources/credit_note.rbi +23 -18
  199. data/rbi/stripe/resources/customer.rbi +4 -8
  200. data/rbi/stripe/resources/customer_session.rbi +5 -5
  201. data/rbi/stripe/resources/dispute.rbi +2 -2
  202. data/rbi/stripe/resources/event.rbi +4 -1
  203. data/rbi/stripe/resources/file.rbi +1 -1
  204. data/rbi/stripe/resources/identity/verification_report.rbi +9 -0
  205. data/rbi/stripe/resources/identity/verification_session.rbi +59 -12
  206. data/rbi/stripe/resources/invoice.rbi +149 -40
  207. data/rbi/stripe/resources/invoice_item.rbi +3 -8
  208. data/rbi/stripe/resources/invoice_line_item.rbi +2 -2
  209. data/rbi/stripe/resources/invoice_payment.rbi +9 -2
  210. data/rbi/stripe/resources/issuing/authorization.rbi +8 -8
  211. data/rbi/stripe/resources/issuing/card.rbi +1 -1
  212. data/rbi/stripe/resources/issuing/dispute.rbi +3 -3
  213. data/rbi/stripe/resources/login_link.rbi +2 -1
  214. data/rbi/stripe/resources/mandate.rbi +4 -0
  215. data/rbi/stripe/resources/payment_intent.rbi +637 -381
  216. data/rbi/stripe/resources/payment_method.rbi +81 -133
  217. data/rbi/stripe/resources/payment_method_configuration.rbi +400 -4
  218. data/rbi/stripe/resources/payment_method_domain.rbi +18 -2
  219. data/rbi/stripe/resources/payout.rbi +4 -4
  220. data/rbi/stripe/resources/person.rbi +33 -3
  221. data/rbi/stripe/resources/plan.rbi +2 -4
  222. data/rbi/stripe/resources/price.rbi +1 -1
  223. data/rbi/stripe/resources/product.rbi +1 -3
  224. data/rbi/stripe/resources/quote.rbi +25 -3
  225. data/rbi/stripe/resources/radar/value_list.rbi +1 -3
  226. data/rbi/stripe/resources/radar/value_list_item.rbi +1 -3
  227. data/rbi/stripe/resources/refund.rbi +8 -1
  228. data/rbi/stripe/resources/reversal.rbi +1 -1
  229. data/rbi/stripe/resources/review.rbi +1 -1
  230. data/rbi/stripe/resources/setup_attempt.rbi +1 -1
  231. data/rbi/stripe/resources/setup_intent.rbi +464 -346
  232. data/rbi/stripe/resources/source.rbi +1 -1
  233. data/rbi/stripe/resources/subscription.rbi +150 -34
  234. data/rbi/stripe/resources/subscription_item.rbi +36 -2
  235. data/rbi/stripe/resources/subscription_schedule.rbi +161 -11
  236. data/rbi/stripe/resources/tax/calculation.rbi +7 -3
  237. data/rbi/stripe/resources/tax/calculation_line_item.rbi +4 -1
  238. data/rbi/stripe/resources/tax/registration.rbi +249 -2
  239. data/rbi/stripe/resources/tax/transaction.rbi +1 -1
  240. data/rbi/stripe/resources/tax_id.rbi +3 -5
  241. data/rbi/stripe/resources/tax_rate.rbi +2 -2
  242. data/rbi/stripe/resources/terminal/configuration.rbi +2 -3
  243. data/rbi/stripe/resources/terminal/location.rbi +4 -6
  244. data/rbi/stripe/resources/terminal/reader.rbi +415 -8
  245. data/rbi/stripe/resources/test_helpers/test_clock.rbi +1 -3
  246. data/rbi/stripe/resources/token.rbi +70 -4
  247. data/rbi/stripe/resources/transfer.rbi +1 -1
  248. data/rbi/stripe/resources/treasury/financial_account.rbi +6 -2
  249. data/rbi/stripe/resources/v2/billing/meter_event.rbi +3 -3
  250. data/rbi/stripe/resources/v2/billing/meter_event_adjustment.rbi +3 -3
  251. data/rbi/stripe/resources/v2/billing/meter_event_session.rbi +3 -3
  252. data/rbi/stripe/resources/v2/event.rbi +3 -3
  253. data/rbi/stripe/resources/v2/event_destination.rbi +3 -3
  254. data/rbi/stripe/resources/webhook_endpoint.rbi +1 -3
  255. data/rbi/stripe/services/account_external_account_service.rbi +3 -5
  256. data/rbi/stripe/services/account_login_link_service.rbi +1 -1
  257. data/rbi/stripe/services/account_person_service.rbi +93 -5
  258. data/rbi/stripe/services/account_service.rbi +166 -28
  259. data/rbi/stripe/services/account_session_service.rbi +126 -52
  260. data/rbi/stripe/services/apple_pay_domain_service.rbi +1 -3
  261. data/rbi/stripe/services/balance_service.rbi +1 -1
  262. data/rbi/stripe/services/billing/alert_service.rbi +2 -2
  263. data/rbi/stripe/services/billing_portal/session_service.rbi +1 -1
  264. data/rbi/stripe/services/charge_service.rbi +4 -4
  265. data/rbi/stripe/services/checkout/session_service.rbi +104 -19
  266. data/rbi/stripe/services/coupon_service.rbi +1 -3
  267. data/rbi/stripe/services/credit_note_preview_lines_service.rbi +3 -3
  268. data/rbi/stripe/services/credit_note_service.rbi +13 -14
  269. data/rbi/stripe/services/customer_balance_transaction_service.rbi +3 -3
  270. data/rbi/stripe/services/customer_cash_balance_transaction_service.rbi +2 -2
  271. data/rbi/stripe/services/customer_payment_method_service.rbi +1 -1
  272. data/rbi/stripe/services/customer_payment_source_service.rbi +1 -1
  273. data/rbi/stripe/services/customer_service.rbi +4 -8
  274. data/rbi/stripe/services/customer_session_service.rbi +1 -1
  275. data/rbi/stripe/services/customer_tax_id_service.rbi +2 -4
  276. data/rbi/stripe/services/dispute_service.rbi +1 -1
  277. data/rbi/stripe/services/file_service.rbi +1 -1
  278. data/rbi/stripe/services/identity/verification_session_service.rbi +22 -6
  279. data/rbi/stripe/services/invoice_item_service.rbi +1 -3
  280. data/rbi/stripe/services/invoice_service.rbi +126 -35
  281. data/rbi/stripe/services/issuing/authorization_service.rbi +4 -4
  282. data/rbi/stripe/services/issuing/card_service.rbi +1 -1
  283. data/rbi/stripe/services/issuing/dispute_service.rbi +2 -2
  284. data/rbi/stripe/services/payment_intent_service.rbi +599 -369
  285. data/rbi/stripe/services/payment_method_configuration_service.rbi +280 -4
  286. data/rbi/stripe/services/payment_method_domain_service.rbi +1 -1
  287. data/rbi/stripe/services/payment_method_service.rbi +62 -121
  288. data/rbi/stripe/services/payout_service.rbi +2 -2
  289. data/rbi/stripe/services/plan_service.rbi +2 -4
  290. data/rbi/stripe/services/price_service.rbi +2 -2
  291. data/rbi/stripe/services/product_feature_service.rbi +1 -3
  292. data/rbi/stripe/services/product_service.rbi +2 -4
  293. data/rbi/stripe/services/promotion_code_service.rbi +1 -1
  294. data/rbi/stripe/services/quote_service.rbi +16 -3
  295. data/rbi/stripe/services/radar/early_fraud_warning_service.rbi +1 -1
  296. data/rbi/stripe/services/radar/value_list_item_service.rbi +1 -3
  297. data/rbi/stripe/services/radar/value_list_service.rbi +1 -3
  298. data/rbi/stripe/services/setup_intent_service.rbi +457 -344
  299. data/rbi/stripe/services/source_service.rbi +1 -1
  300. data/rbi/stripe/services/subscription_item_service.rbi +28 -2
  301. data/rbi/stripe/services/subscription_schedule_service.rbi +119 -10
  302. data/rbi/stripe/services/subscription_service.rbi +121 -33
  303. data/rbi/stripe/services/tax/calculation_service.rbi +6 -2
  304. data/rbi/stripe/services/tax/registration_service.rbi +171 -2
  305. data/rbi/stripe/services/tax_id_service.rbi +2 -4
  306. data/rbi/stripe/services/terminal/configuration_service.rbi +1 -3
  307. data/rbi/stripe/services/terminal/location_service.rbi +4 -6
  308. data/rbi/stripe/services/terminal/reader_service.rbi +200 -4
  309. data/rbi/stripe/services/test_helpers/confirmation_token_service.rbi +106 -106
  310. data/rbi/stripe/services/test_helpers/terminal/reader_service.rbi +31 -0
  311. data/rbi/stripe/services/test_helpers/test_clock_service.rbi +1 -3
  312. data/rbi/stripe/services/token_service.rbi +71 -3
  313. data/rbi/stripe/services/transfer_service.rbi +1 -1
  314. data/rbi/stripe/services/treasury/financial_account_service.rbi +6 -2
  315. data/rbi/stripe/services/v2/billing/meter_event_session_service.rbi +1 -3
  316. data/rbi/stripe/services/v2/billing_service.rbi +1 -1
  317. data/rbi/stripe/services/v2/core/event_destination_service.rbi +14 -22
  318. data/rbi/stripe/services/v2/core/event_service.rbi +1 -3
  319. data/rbi/stripe/services/webhook_endpoint_service.rbi +1 -3
  320. metadata +5 -2
@@ -1229,7 +1229,7 @@ module Stripe
1229
1229
 
1230
1230
  # Updates the specified source by setting the values of the parameters passed. Any parameters not provided will be left unchanged.
1231
1231
  #
1232
- # This request accepts the metadata and owner as arguments. It is also possible to update type specific information for selected payment methods. Please refer to our [payment method guides](https://stripe.com/docs/sources) for more detail.
1232
+ # This request accepts the metadata and owner as arguments. It is also possible to update type specific information for selected payment methods. Please refer to our [payment method guides](https://docs.stripe.com/docs/sources) for more detail.
1233
1233
  def self.update(source, params = {}, opts = {})
1234
1234
  request_stripe_object(
1235
1235
  method: :post,
@@ -44,6 +44,20 @@ module Stripe
44
44
  attr_reader :second
45
45
  end
46
46
 
47
+ class BillingMode < Stripe::StripeObject
48
+ # Controls how prorations and invoices for subscriptions are calculated and orchestrated.
49
+ attr_reader :type
50
+ # Details on when the current billing_mode was adopted.
51
+ attr_reader :updated_at
52
+ end
53
+
54
+ class BillingThresholds < Stripe::StripeObject
55
+ # Monetary threshold that triggers the subscription to create an invoice
56
+ attr_reader :amount_gte
57
+ # Indicates if the `billing_cycle_anchor` should be reset when a threshold is reached. If true, `billing_cycle_anchor` will be updated to the date/time the threshold was last reached; otherwise, the value will remain unchanged. This value may not be `true` if the subscription contains items with plans that have `aggregate_usage=last_ever`.
58
+ attr_reader :reset_billing_cycle_anchor
59
+ end
60
+
47
61
  class CancellationDetails < Stripe::StripeObject
48
62
  # Additional comments about why the user canceled the subscription, if the subscription was canceled explicitly by the user.
49
63
  attr_reader :comment
@@ -320,6 +334,18 @@ module Stripe
320
334
  end
321
335
  end
322
336
 
337
+ class BillingThresholds < Stripe::RequestParams
338
+ # Monetary threshold that triggers the subscription to advance to a new billing period
339
+ attr_accessor :amount_gte
340
+ # Indicates if the `billing_cycle_anchor` should be reset when a threshold is reached. If true, `billing_cycle_anchor` will be updated to the date/time the threshold was last reached; otherwise, the value will remain unchanged.
341
+ attr_accessor :reset_billing_cycle_anchor
342
+
343
+ def initialize(amount_gte: nil, reset_billing_cycle_anchor: nil)
344
+ @amount_gte = amount_gte
345
+ @reset_billing_cycle_anchor = reset_billing_cycle_anchor
346
+ end
347
+ end
348
+
323
349
  class CancellationDetails < Stripe::RequestParams
324
350
  # Additional comments about why the user canceled the subscription, if the subscription was canceled explicitly by the user.
325
351
  attr_accessor :comment
@@ -371,6 +397,15 @@ module Stripe
371
397
  end
372
398
 
373
399
  class Item < Stripe::RequestParams
400
+ class BillingThresholds < Stripe::RequestParams
401
+ # Number of units that meets the billing threshold to advance the subscription to a new billing period (e.g., it takes 10 $5 units to meet a $50 [monetary threshold](https://stripe.com/docs/api/subscriptions/update#update_subscription-billing_thresholds-amount_gte))
402
+ attr_accessor :usage_gte
403
+
404
+ def initialize(usage_gte: nil)
405
+ @usage_gte = usage_gte
406
+ end
407
+ end
408
+
374
409
  class Discount < Stripe::RequestParams
375
410
  # ID of the coupon to create a new discount for.
376
411
  attr_accessor :coupon
@@ -427,6 +462,8 @@ module Stripe
427
462
  @unit_amount_decimal = unit_amount_decimal
428
463
  end
429
464
  end
465
+ # Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period. Pass an empty string to remove previously-defined thresholds.
466
+ attr_accessor :billing_thresholds
430
467
  # Delete all usage for a given subscription item. You must pass this when deleting a usage records subscription item. `clear_usage` has no effect if the plan has a billing meter attached.
431
468
  attr_accessor :clear_usage
432
469
  # A flag that, if set to `true`, will delete the specified item.
@@ -449,6 +486,7 @@ module Stripe
449
486
  attr_accessor :tax_rates
450
487
 
451
488
  def initialize(
489
+ billing_thresholds: nil,
452
490
  clear_usage: nil,
453
491
  deleted: nil,
454
492
  discounts: nil,
@@ -460,6 +498,7 @@ module Stripe
460
498
  quantity: nil,
461
499
  tax_rates: nil
462
500
  )
501
+ @billing_thresholds = billing_thresholds
463
502
  @clear_usage = clear_usage
464
503
  @deleted = deleted
465
504
  @discounts = discounts
@@ -576,11 +615,8 @@ module Stripe
576
615
  end
577
616
  end
578
617
 
579
- class Konbini < Stripe::RequestParams
580
- end
581
-
582
- class SepaDebit < Stripe::RequestParams
583
- end
618
+ class Konbini < Stripe::RequestParams; end
619
+ class SepaDebit < Stripe::RequestParams; end
584
620
 
585
621
  class UsBankAccount < Stripe::RequestParams
586
622
  class FinancialConnections < Stripe::RequestParams
@@ -714,6 +750,8 @@ module Stripe
714
750
  attr_accessor :automatic_tax
715
751
  # Either `now` or `unchanged`. Setting the value to `now` resets the subscription's billing cycle anchor to the current time (in UTC). For more information, see the billing cycle [documentation](https://stripe.com/docs/billing/subscriptions/billing-cycle).
716
752
  attr_accessor :billing_cycle_anchor
753
+ # Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period. When updating, pass an empty string to remove previously-defined thresholds.
754
+ attr_accessor :billing_thresholds
717
755
  # A timestamp at which the subscription should cancel. If set to a date before the current period ends, this will cause a proration if prorations have been enabled using `proration_behavior`. If set during a future period, this will always cause a proration for that period.
718
756
  attr_accessor :cancel_at
719
757
  # Indicate whether this subscription should cancel at the end of the current period (`current_period_end`). Defaults to `false`.
@@ -762,11 +800,11 @@ module Stripe
762
800
  attr_accessor :pending_invoice_item_interval
763
801
  # Determines how to handle [prorations](https://stripe.com/docs/billing/subscriptions/prorations) when the billing cycle changes (e.g., when switching plans, resetting `billing_cycle_anchor=now`, or starting a trial), or if an item's `quantity` changes. The default value is `create_prorations`.
764
802
  attr_accessor :proration_behavior
765
- # If set, the proration will be calculated as though the subscription was updated at the given time. This can be used to apply exactly the same proration that was previewed with [upcoming invoice](https://stripe.com/docs/api#upcoming_invoice) endpoint. It can also be used to implement custom proration logic, such as prorating by day instead of by second, by providing the time that you wish to use for proration calculations.
803
+ # If set, prorations will be calculated as though the subscription was updated at the given time. This can be used to apply exactly the same prorations that were previewed with the [create preview](https://stripe.com/docs/api/invoices/create_preview) endpoint. `proration_date` can also be used to implement custom proration logic, such as prorating by day instead of by second, by providing the time that you wish to use for proration calculations.
766
804
  attr_accessor :proration_date
767
805
  # If specified, the funds from the subscription's invoices will be transferred to the destination and the ID of the resulting transfers will be found on the resulting charges. This will be unset if you POST an empty value.
768
806
  attr_accessor :transfer_data
769
- # Unix timestamp representing the end of the trial period the customer will get before being charged for the first time. This will always overwrite any trials that might apply via a subscribed plan. If set, trial_end will override the default trial period of the plan the customer is being subscribed to. The special value `now` can be provided to end the customer's trial immediately. Can be at most two years from `billing_cycle_anchor`.
807
+ # Unix timestamp representing the end of the trial period the customer will get before being charged for the first time. This will always overwrite any trials that might apply via a subscribed plan. If set, `trial_end` will override the default trial period of the plan the customer is being subscribed to. The `billing_cycle_anchor` will be updated to the `trial_end` value. The special value `now` can be provided to end the customer's trial immediately. Can be at most two years from `billing_cycle_anchor`.
770
808
  attr_accessor :trial_end
771
809
  # Indicates if a plan's `trial_period_days` should be applied to the subscription. Setting `trial_end` per subscription is preferred, and this defaults to `false`. Setting this flag to `true` together with `trial_end` is not allowed. See [Using trial periods on subscriptions](https://stripe.com/docs/billing/subscriptions/trials) to learn more.
772
810
  attr_accessor :trial_from_plan
@@ -778,6 +816,7 @@ module Stripe
778
816
  application_fee_percent: nil,
779
817
  automatic_tax: nil,
780
818
  billing_cycle_anchor: nil,
819
+ billing_thresholds: nil,
781
820
  cancel_at: nil,
782
821
  cancel_at_period_end: nil,
783
822
  cancellation_details: nil,
@@ -809,6 +848,7 @@ module Stripe
809
848
  @application_fee_percent = application_fee_percent
810
849
  @automatic_tax = automatic_tax
811
850
  @billing_cycle_anchor = billing_cycle_anchor
851
+ @billing_thresholds = billing_thresholds
812
852
  @cancel_at = cancel_at
813
853
  @cancel_at_period_end = cancel_at_period_end
814
854
  @cancellation_details = cancellation_details
@@ -838,8 +878,7 @@ module Stripe
838
878
  end
839
879
  end
840
880
 
841
- class DeleteDiscountParams < Stripe::RequestParams
842
- end
881
+ class DeleteDiscountParams < Stripe::RequestParams; end
843
882
 
844
883
  class ListParams < Stripe::RequestParams
845
884
  class AutomaticTax < Stripe::RequestParams
@@ -1073,6 +1112,27 @@ module Stripe
1073
1112
  end
1074
1113
  end
1075
1114
 
1115
+ class BillingMode < Stripe::RequestParams
1116
+ # Attribute for param field type
1117
+ attr_accessor :type
1118
+
1119
+ def initialize(type: nil)
1120
+ @type = type
1121
+ end
1122
+ end
1123
+
1124
+ class BillingThresholds < Stripe::RequestParams
1125
+ # Monetary threshold that triggers the subscription to advance to a new billing period
1126
+ attr_accessor :amount_gte
1127
+ # Indicates if the `billing_cycle_anchor` should be reset when a threshold is reached. If true, `billing_cycle_anchor` will be updated to the date/time the threshold was last reached; otherwise, the value will remain unchanged.
1128
+ attr_accessor :reset_billing_cycle_anchor
1129
+
1130
+ def initialize(amount_gte: nil, reset_billing_cycle_anchor: nil)
1131
+ @amount_gte = amount_gte
1132
+ @reset_billing_cycle_anchor = reset_billing_cycle_anchor
1133
+ end
1134
+ end
1135
+
1076
1136
  class Discount < Stripe::RequestParams
1077
1137
  # ID of the coupon to create a new discount for.
1078
1138
  attr_accessor :coupon
@@ -1112,6 +1172,15 @@ module Stripe
1112
1172
  end
1113
1173
 
1114
1174
  class Item < Stripe::RequestParams
1175
+ class BillingThresholds < Stripe::RequestParams
1176
+ # Number of units that meets the billing threshold to advance the subscription to a new billing period (e.g., it takes 10 $5 units to meet a $50 [monetary threshold](https://stripe.com/docs/api/subscriptions/update#update_subscription-billing_thresholds-amount_gte))
1177
+ attr_accessor :usage_gte
1178
+
1179
+ def initialize(usage_gte: nil)
1180
+ @usage_gte = usage_gte
1181
+ end
1182
+ end
1183
+
1115
1184
  class Discount < Stripe::RequestParams
1116
1185
  # ID of the coupon to create a new discount for.
1117
1186
  attr_accessor :coupon
@@ -1168,6 +1237,8 @@ module Stripe
1168
1237
  @unit_amount_decimal = unit_amount_decimal
1169
1238
  end
1170
1239
  end
1240
+ # Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period. Pass an empty string to remove previously-defined thresholds.
1241
+ attr_accessor :billing_thresholds
1171
1242
  # The coupons to redeem into discounts for the subscription item.
1172
1243
  attr_accessor :discounts
1173
1244
  # Set of [key-value pairs](https://stripe.com/docs/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to `metadata`.
@@ -1184,6 +1255,7 @@ module Stripe
1184
1255
  attr_accessor :tax_rates
1185
1256
 
1186
1257
  def initialize(
1258
+ billing_thresholds: nil,
1187
1259
  discounts: nil,
1188
1260
  metadata: nil,
1189
1261
  plan: nil,
@@ -1192,6 +1264,7 @@ module Stripe
1192
1264
  quantity: nil,
1193
1265
  tax_rates: nil
1194
1266
  )
1267
+ @billing_thresholds = billing_thresholds
1195
1268
  @discounts = discounts
1196
1269
  @metadata = metadata
1197
1270
  @plan = plan
@@ -1293,11 +1366,8 @@ module Stripe
1293
1366
  end
1294
1367
  end
1295
1368
 
1296
- class Konbini < Stripe::RequestParams
1297
- end
1298
-
1299
- class SepaDebit < Stripe::RequestParams
1300
- end
1369
+ class Konbini < Stripe::RequestParams; end
1370
+ class SepaDebit < Stripe::RequestParams; end
1301
1371
 
1302
1372
  class UsBankAccount < Stripe::RequestParams
1303
1373
  class FinancialConnections < Stripe::RequestParams
@@ -1427,14 +1497,18 @@ module Stripe
1427
1497
  attr_accessor :add_invoice_items
1428
1498
  # A non-negative decimal between 0 and 100, with at most two decimal places. This represents the percentage of the subscription invoice total that will be transferred to the application owner's Stripe account. The request must be made by a platform account on a connected account in order to set an application fee percentage. For more information, see the application fees [documentation](https://stripe.com/docs/connect/subscriptions#collecting-fees-on-subscriptions).
1429
1499
  attr_accessor :application_fee_percent
1430
- # Automatic tax settings for this subscription. We recommend you only include this parameter when the existing value is being changed.
1500
+ # Automatic tax settings for this subscription.
1431
1501
  attr_accessor :automatic_tax
1432
- # For new subscriptions, a past timestamp to backdate the subscription's start date to. If set, the first invoice will contain a proration for the timespan between the start date and the current time. Can be combined with trials and the billing cycle anchor.
1502
+ # A past timestamp to backdate the subscription's start date to. If set, the first invoice will contain line items for the timespan between the start date and the current time. Can be combined with trials and the billing cycle anchor.
1433
1503
  attr_accessor :backdate_start_date
1434
1504
  # A future timestamp in UTC format to anchor the subscription's [billing cycle](https://stripe.com/docs/subscriptions/billing-cycle). The anchor is the reference point that aligns future billing cycle dates. It sets the day of week for `week` intervals, the day of month for `month` and `year` intervals, and the month of year for `year` intervals.
1435
1505
  attr_accessor :billing_cycle_anchor
1436
1506
  # Mutually exclusive with billing_cycle_anchor and only valid with monthly and yearly price intervals. When provided, the billing_cycle_anchor is set to the next occurence of the day_of_month at the hour, minute, and second UTC.
1437
1507
  attr_accessor :billing_cycle_anchor_config
1508
+ # Controls how prorations and invoices for subscriptions are calculated and orchestrated.
1509
+ attr_accessor :billing_mode
1510
+ # Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period. When updating, pass an empty string to remove previously-defined thresholds.
1511
+ attr_accessor :billing_thresholds
1438
1512
  # A timestamp at which the subscription should cancel. If set to a date before the current period ends, this will cause a proration if prorations have been enabled using `proration_behavior`. If set during a future period, this will always cause a proration for that period.
1439
1513
  attr_accessor :cancel_at
1440
1514
  # Indicate whether this subscription should cancel at the end of the current period (`current_period_end`). Defaults to `false`.
@@ -1505,6 +1579,8 @@ module Stripe
1505
1579
  backdate_start_date: nil,
1506
1580
  billing_cycle_anchor: nil,
1507
1581
  billing_cycle_anchor_config: nil,
1582
+ billing_mode: nil,
1583
+ billing_thresholds: nil,
1508
1584
  cancel_at: nil,
1509
1585
  cancel_at_period_end: nil,
1510
1586
  collection_method: nil,
@@ -1538,6 +1614,8 @@ module Stripe
1538
1614
  @backdate_start_date = backdate_start_date
1539
1615
  @billing_cycle_anchor = billing_cycle_anchor
1540
1616
  @billing_cycle_anchor_config = billing_cycle_anchor_config
1617
+ @billing_mode = billing_mode
1618
+ @billing_thresholds = billing_thresholds
1541
1619
  @cancel_at = cancel_at
1542
1620
  @cancel_at_period_end = cancel_at_period_end
1543
1621
  @collection_method = collection_method
@@ -1585,14 +1663,34 @@ module Stripe
1585
1663
  end
1586
1664
  end
1587
1665
 
1666
+ class MigrateParams < Stripe::RequestParams
1667
+ class BillingMode < Stripe::RequestParams
1668
+ # Attribute for param field type
1669
+ attr_accessor :type
1670
+
1671
+ def initialize(type: nil)
1672
+ @type = type
1673
+ end
1674
+ end
1675
+ # Controls how prorations and invoices for subscriptions are calculated and orchestrated.
1676
+ attr_accessor :billing_mode
1677
+ # Specifies which fields in the response should be expanded.
1678
+ attr_accessor :expand
1679
+
1680
+ def initialize(billing_mode: nil, expand: nil)
1681
+ @billing_mode = billing_mode
1682
+ @expand = expand
1683
+ end
1684
+ end
1685
+
1588
1686
  class ResumeParams < Stripe::RequestParams
1589
1687
  # The billing cycle anchor that applies when the subscription is resumed. Either `now` or `unchanged`. The default is `now`. For more information, see the billing cycle [documentation](https://stripe.com/docs/billing/subscriptions/billing-cycle).
1590
1688
  attr_accessor :billing_cycle_anchor
1591
1689
  # Specifies which fields in the response should be expanded.
1592
1690
  attr_accessor :expand
1593
- # Determines how to handle [prorations](https://stripe.com/docs/billing/subscriptions/prorations) when the billing cycle changes (e.g., when switching plans, resetting `billing_cycle_anchor=now`, or starting a trial), or if an item's `quantity` changes. The default value is `create_prorations`.
1691
+ # Determines how to handle [prorations](https://stripe.com/docs/billing/subscriptions/prorations) resulting from the `billing_cycle_anchor` being `unchanged`. When the `billing_cycle_anchor` is set to `now` (default value), no prorations are generated. If no value is passed, the default is `create_prorations`.
1594
1692
  attr_accessor :proration_behavior
1595
- # If set, the proration will be calculated as though the subscription was resumed at the given time. This can be used to apply exactly the same proration that was previewed with [upcoming invoice](https://stripe.com/docs/api#retrieve_customer_invoice) endpoint.
1693
+ # If set, prorations will be calculated as though the subscription was resumed at the given time. This can be used to apply exactly the same prorations that were previewed with the [create preview](https://stripe.com/docs/api/invoices/create_preview) endpoint.
1596
1694
  attr_accessor :proration_date
1597
1695
 
1598
1696
  def initialize(
@@ -1617,6 +1715,10 @@ module Stripe
1617
1715
  attr_reader :billing_cycle_anchor
1618
1716
  # The fixed values used to calculate the `billing_cycle_anchor`.
1619
1717
  attr_reader :billing_cycle_anchor_config
1718
+ # The billing mode of the subscription.
1719
+ attr_reader :billing_mode
1720
+ # Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period
1721
+ attr_reader :billing_thresholds
1620
1722
  # A date in the future at which the subscription will automatically get canceled
1621
1723
  attr_reader :cancel_at
1622
1724
  # Whether this subscription will (if `status=active`) or did (if `status=canceled`) cancel at the end of the current billing period.
@@ -1702,9 +1804,9 @@ module Stripe
1702
1804
  # If the subscription has a trial, the beginning of that trial.
1703
1805
  attr_reader :trial_start
1704
1806
 
1705
- # Cancels a customer's subscription immediately. The customer won't be charged again for the subscription. After it's canceled, you can no longer update the subscription or its [metadata](https://stripe.com/metadata).
1807
+ # Cancels a customer's subscription immediately. The customer won't be charged again for the subscription. After it's canceled, you can no longer update the subscription or its [metadata](https://docs.stripe.com/metadata).
1706
1808
  #
1707
- # Any pending invoice items that you've created are still charged at the end of the period, unless manually [deleted](https://stripe.com/docs/api#delete_invoiceitem). If you've set the subscription to cancel at the end of the period, any pending prorations are also left in place and collected at the end of the period. But if the subscription is set to cancel immediately, pending prorations are removed.
1809
+ # Any pending invoice items that you've created are still charged at the end of the period, unless manually [deleted](https://docs.stripe.com/api#delete_invoiceitem). If you've set the subscription to cancel at the end of the period, any pending prorations are also left in place and collected at the end of the period. But if the subscription is set to cancel immediately, pending prorations are removed if invoice_now and prorate are both set to true.
1708
1810
  #
1709
1811
  # By default, upon subscription cancellation, Stripe stops automatic collection of all finalized invoices for the customer. This is intended to prevent unexpected payment attempts after the customer has canceled a subscription. However, you can resume automatic collection of the invoices manually after subscription cancellation to have us proceed. Or, you could check for unpaid invoices before allowing the customer to cancel the subscription at all.
1710
1812
  def cancel(params = {}, opts = {})
@@ -1716,9 +1818,9 @@ module Stripe
1716
1818
  )
1717
1819
  end
1718
1820
 
1719
- # Cancels a customer's subscription immediately. The customer won't be charged again for the subscription. After it's canceled, you can no longer update the subscription or its [metadata](https://stripe.com/metadata).
1821
+ # Cancels a customer's subscription immediately. The customer won't be charged again for the subscription. After it's canceled, you can no longer update the subscription or its [metadata](https://docs.stripe.com/metadata).
1720
1822
  #
1721
- # Any pending invoice items that you've created are still charged at the end of the period, unless manually [deleted](https://stripe.com/docs/api#delete_invoiceitem). If you've set the subscription to cancel at the end of the period, any pending prorations are also left in place and collected at the end of the period. But if the subscription is set to cancel immediately, pending prorations are removed.
1823
+ # Any pending invoice items that you've created are still charged at the end of the period, unless manually [deleted](https://docs.stripe.com/api#delete_invoiceitem). If you've set the subscription to cancel at the end of the period, any pending prorations are also left in place and collected at the end of the period. But if the subscription is set to cancel immediately, pending prorations are removed if invoice_now and prorate are both set to true.
1722
1824
  #
1723
1825
  # By default, upon subscription cancellation, Stripe stops automatic collection of all finalized invoices for the customer. This is intended to prevent unexpected payment attempts after the customer has canceled a subscription. However, you can resume automatic collection of the invoices manually after subscription cancellation to have us proceed. Or, you could check for unpaid invoices before allowing the customer to cancel the subscription at all.
1724
1826
  def self.cancel(subscription_exposed_id, params = {}, opts = {})
@@ -1735,7 +1837,7 @@ module Stripe
1735
1837
  # When you create a subscription with collection_method=charge_automatically, the first invoice is finalized as part of the request.
1736
1838
  # The payment_behavior parameter determines the exact behavior of the initial payment.
1737
1839
  #
1738
- # To start subscriptions where the first invoice always begins in a draft status, use [subscription schedules](https://stripe.com/docs/billing/subscriptions/subscription-schedules#managing) instead.
1840
+ # To start subscriptions where the first invoice always begins in a draft status, use [subscription schedules](https://docs.stripe.com/docs/billing/subscriptions/subscription-schedules#managing) instead.
1739
1841
  # Schedules provide the flexibility to model more complex billing configurations that change over time.
1740
1842
  def self.create(params = {}, opts = {})
1741
1843
  request_stripe_object(method: :post, path: "/v1/subscriptions", params: params, opts: opts)
@@ -1766,6 +1868,26 @@ module Stripe
1766
1868
  request_stripe_object(method: :get, path: "/v1/subscriptions", params: params, opts: opts)
1767
1869
  end
1768
1870
 
1871
+ # Upgrade the billing_mode of an existing subscription.
1872
+ def migrate(params = {}, opts = {})
1873
+ request_stripe_object(
1874
+ method: :post,
1875
+ path: format("/v1/subscriptions/%<subscription>s/migrate", { subscription: CGI.escape(self["id"]) }),
1876
+ params: params,
1877
+ opts: opts
1878
+ )
1879
+ end
1880
+
1881
+ # Upgrade the billing_mode of an existing subscription.
1882
+ def self.migrate(subscription, params = {}, opts = {})
1883
+ request_stripe_object(
1884
+ method: :post,
1885
+ path: format("/v1/subscriptions/%<subscription>s/migrate", { subscription: CGI.escape(subscription) }),
1886
+ params: params,
1887
+ opts: opts
1888
+ )
1889
+ end
1890
+
1769
1891
  # Initiates resumption of a paused subscription, optionally resetting the billing cycle anchor and creating prorations. If a resumption invoice is generated, it must be paid or marked uncollectible before the subscription will be unpaused. If payment succeeds the subscription will become active, and if payment fails the subscription will be past_due. The resumption invoice will void automatically if not paid by the expiration date.
1770
1892
  def resume(params = {}, opts = {})
1771
1893
  request_stripe_object(
@@ -1801,7 +1923,7 @@ module Stripe
1801
1923
 
1802
1924
  # Updates an existing subscription to match the specified parameters.
1803
1925
  # When changing prices or quantities, we optionally prorate the price we charge next month to make up for any price changes.
1804
- # To preview how the proration is calculated, use the [create preview](https://stripe.com/docs/api/invoices/create_preview) endpoint.
1926
+ # To preview how the proration is calculated, use the [create preview](https://docs.stripe.com/docs/api/invoices/create_preview) endpoint.
1805
1927
  #
1806
1928
  # By default, we prorate subscription changes. For example, if a customer signs up on May 1 for a 100 price, they'll be billed 100 immediately. If on May 15 they switch to a 200 price, then on June 1 they'll be billed 250 (200 for a renewal of her subscription, plus a 50 prorating adjustment for half of the previous month's 100 difference). Similarly, a downgrade generates a credit that is applied to the next invoice. We also prorate when you make quantity changes.
1807
1929
  #
@@ -1813,13 +1935,13 @@ module Stripe
1813
1935
  # A trial starts or ends.
1814
1936
  #
1815
1937
  #
1816
- # In these cases, we apply a credit for the unused time on the previous price, immediately charge the customer using the new price, and reset the billing date. Learn about how [Stripe immediately attempts payment for subscription changes](https://stripe.com/docs/billing/subscriptions/upgrade-downgrade#immediate-payment).
1938
+ # In these cases, we apply a credit for the unused time on the previous price, immediately charge the customer using the new price, and reset the billing date. Learn about how [Stripe immediately attempts payment for subscription changes](https://docs.stripe.com/docs/billing/subscriptions/upgrade-downgrade#immediate-payment).
1817
1939
  #
1818
- # If you want to charge for an upgrade immediately, pass proration_behavior as always_invoice to create prorations, automatically invoice the customer for those proration adjustments, and attempt to collect payment. If you pass create_prorations, the prorations are created but not automatically invoiced. If you want to bill the customer for the prorations before the subscription's renewal date, you need to manually [invoice the customer](https://stripe.com/docs/api/invoices/create).
1940
+ # If you want to charge for an upgrade immediately, pass proration_behavior as always_invoice to create prorations, automatically invoice the customer for those proration adjustments, and attempt to collect payment. If you pass create_prorations, the prorations are created but not automatically invoiced. If you want to bill the customer for the prorations before the subscription's renewal date, you need to manually [invoice the customer](https://docs.stripe.com/docs/api/invoices/create).
1819
1941
  #
1820
1942
  # If you don't want to prorate, set the proration_behavior option to none. With this option, the customer is billed 100 on May 1 and 200 on June 1. Similarly, if you set proration_behavior to none when switching between different billing intervals (for example, from monthly to yearly), we don't generate any credits for the old subscription's unused time. We still reset the billing date and bill immediately for the new subscription.
1821
1943
  #
1822
- # Updating the quantity on a subscription many times in an hour may result in [rate limiting. If you need to bill for a frequently changing quantity, consider integrating <a href="/docs/billing/subscriptions/usage-based">usage-based billing](https://stripe.com/docs/rate-limits) instead.
1944
+ # Updating the quantity on a subscription many times in an hour may result in [rate limiting. If you need to bill for a frequently changing quantity, consider integrating <a href="/docs/billing/subscriptions/usage-based">usage-based billing](https://docs.stripe.com/docs/rate-limits) instead.
1823
1945
  def self.update(subscription_exposed_id, params = {}, opts = {})
1824
1946
  request_stripe_object(
1825
1947
  method: :post,
@@ -15,6 +15,11 @@ module Stripe
15
15
  "subscription_item"
16
16
  end
17
17
 
18
+ class BillingThresholds < Stripe::StripeObject
19
+ # Usage threshold that triggers the subscription to create an invoice
20
+ attr_reader :usage_gte
21
+ end
22
+
18
23
  class DeleteParams < Stripe::RequestParams
19
24
  # Delete all usage for the given subscription item. Allowed only when the current plan's `usage_type` is `metered`.
20
25
  attr_accessor :clear_usage
@@ -31,6 +36,15 @@ module Stripe
31
36
  end
32
37
 
33
38
  class UpdateParams < Stripe::RequestParams
39
+ class BillingThresholds < Stripe::RequestParams
40
+ # Number of units that meets the billing threshold to advance the subscription to a new billing period (e.g., it takes 10 $5 units to meet a $50 [monetary threshold](https://stripe.com/docs/api/subscriptions/update#update_subscription-billing_thresholds-amount_gte))
41
+ attr_accessor :usage_gte
42
+
43
+ def initialize(usage_gte: nil)
44
+ @usage_gte = usage_gte
45
+ end
46
+ end
47
+
34
48
  class Discount < Stripe::RequestParams
35
49
  # ID of the coupon to create a new discount for.
36
50
  attr_accessor :coupon
@@ -87,6 +101,8 @@ module Stripe
87
101
  @unit_amount_decimal = unit_amount_decimal
88
102
  end
89
103
  end
104
+ # Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period. Pass an empty string to remove previously-defined thresholds.
105
+ attr_accessor :billing_thresholds
90
106
  # The coupons to redeem into discounts for the subscription item.
91
107
  attr_accessor :discounts
92
108
  # Specifies which fields in the response should be expanded.
@@ -119,6 +135,7 @@ module Stripe
119
135
  attr_accessor :tax_rates
120
136
 
121
137
  def initialize(
138
+ billing_thresholds: nil,
122
139
  discounts: nil,
123
140
  expand: nil,
124
141
  metadata: nil,
@@ -132,6 +149,7 @@ module Stripe
132
149
  quantity: nil,
133
150
  tax_rates: nil
134
151
  )
152
+ @billing_thresholds = billing_thresholds
135
153
  @discounts = discounts
136
154
  @expand = expand
137
155
  @metadata = metadata
@@ -175,6 +193,15 @@ module Stripe
175
193
  end
176
194
 
177
195
  class CreateParams < Stripe::RequestParams
196
+ class BillingThresholds < Stripe::RequestParams
197
+ # Number of units that meets the billing threshold to advance the subscription to a new billing period (e.g., it takes 10 $5 units to meet a $50 [monetary threshold](https://stripe.com/docs/api/subscriptions/update#update_subscription-billing_thresholds-amount_gte))
198
+ attr_accessor :usage_gte
199
+
200
+ def initialize(usage_gte: nil)
201
+ @usage_gte = usage_gte
202
+ end
203
+ end
204
+
178
205
  class Discount < Stripe::RequestParams
179
206
  # ID of the coupon to create a new discount for.
180
207
  attr_accessor :coupon
@@ -231,6 +258,8 @@ module Stripe
231
258
  @unit_amount_decimal = unit_amount_decimal
232
259
  end
233
260
  end
261
+ # Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period. Pass an empty string to remove previously-defined thresholds.
262
+ attr_accessor :billing_thresholds
234
263
  # The coupons to redeem into discounts for the subscription item.
235
264
  attr_accessor :discounts
236
265
  # Specifies which fields in the response should be expanded.
@@ -263,6 +292,7 @@ module Stripe
263
292
  attr_accessor :tax_rates
264
293
 
265
294
  def initialize(
295
+ billing_thresholds: nil,
266
296
  discounts: nil,
267
297
  expand: nil,
268
298
  metadata: nil,
@@ -276,6 +306,7 @@ module Stripe
276
306
  subscription: nil,
277
307
  tax_rates: nil
278
308
  )
309
+ @billing_thresholds = billing_thresholds
279
310
  @discounts = discounts
280
311
  @expand = expand
281
312
  @metadata = metadata
@@ -290,6 +321,8 @@ module Stripe
290
321
  @tax_rates = tax_rates
291
322
  end
292
323
  end
324
+ # Define thresholds at which an invoice will be sent, and the related subscription advanced to a new billing period
325
+ attr_reader :billing_thresholds
293
326
  # Time at which the object was created. Measured in seconds since the Unix epoch.
294
327
  attr_reader :created
295
328
  # The end time of this subscription item's current billing period.