stripe 5.38.0 → 15.2.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 (708) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +742 -0
  3. data/CONTRIBUTING.md +25 -0
  4. data/Gemfile +12 -4
  5. data/Makefile +22 -0
  6. data/OPENAPI_VERSION +1 -0
  7. data/README.md +137 -27
  8. data/Rakefile +3 -6
  9. data/VERSION +1 -1
  10. data/examples/README.md +16 -0
  11. data/examples/example_template.rb +36 -0
  12. data/examples/meter_event_stream.rb +57 -0
  13. data/examples/thinevent_webhook_handler.rb +39 -0
  14. data/{bin → exe}/stripe-console +1 -1
  15. data/justfile +43 -0
  16. data/lib/data/ca-certificates.crt +1241 -1937
  17. data/lib/stripe/api_operations/create.rb +6 -2
  18. data/lib/stripe/api_operations/delete.rb +12 -7
  19. data/lib/stripe/api_operations/list.rb +6 -9
  20. data/lib/stripe/api_operations/nested_resource.rb +59 -31
  21. data/lib/stripe/api_operations/request.rb +30 -65
  22. data/lib/stripe/api_operations/save.rb +20 -10
  23. data/lib/stripe/api_operations/search.rb +21 -0
  24. data/lib/stripe/api_operations/singleton_save.rb +90 -0
  25. data/lib/stripe/api_requestor.rb +1136 -0
  26. data/lib/stripe/api_resource.rb +49 -34
  27. data/lib/stripe/api_resource_test_helpers.rb +53 -0
  28. data/lib/stripe/{resources/usage_record.rb → api_version.rb} +2 -2
  29. data/lib/stripe/connection_manager.rb +28 -11
  30. data/lib/stripe/errors.rb +11 -20
  31. data/lib/stripe/event_types.rb +15 -0
  32. data/lib/stripe/events/v1_billing_meter_error_report_triggered_event.rb +23 -0
  33. data/lib/stripe/events/v1_billing_meter_no_meter_found_event.rb +13 -0
  34. data/lib/stripe/events/v2_core_event_destination_ping_event.rb +21 -0
  35. data/lib/stripe/instrumentation.rb +37 -15
  36. data/lib/stripe/list_object.rb +5 -3
  37. data/lib/stripe/multipart_encoder.rb +7 -7
  38. data/lib/stripe/oauth.rb +14 -21
  39. data/lib/stripe/object_types.rb +157 -91
  40. data/lib/stripe/request_options.rb +129 -0
  41. data/lib/stripe/request_params.rb +24 -0
  42. data/lib/stripe/resources/account.rb +4854 -30
  43. data/lib/stripe/resources/account_link.rb +66 -0
  44. data/lib/stripe/resources/account_session.rb +868 -0
  45. data/lib/stripe/resources/alipay_account.rb +1 -1
  46. data/lib/stripe/resources/apple_pay_domain.rb +91 -0
  47. data/lib/stripe/resources/application.rb +20 -0
  48. data/lib/stripe/resources/application_fee.rb +96 -2
  49. data/lib/stripe/resources/application_fee_refund.rb +26 -2
  50. data/lib/stripe/resources/apps/secret.rb +196 -0
  51. data/lib/stripe/resources/balance.rb +178 -0
  52. data/lib/stripe/resources/balance_transaction.rb +124 -0
  53. data/lib/stripe/resources/bank_account.rb +137 -6
  54. data/lib/stripe/resources/billing/alert.rb +222 -0
  55. data/lib/stripe/resources/billing/alert_triggered.rb +26 -0
  56. data/lib/stripe/resources/billing/credit_balance_summary.rb +54 -0
  57. data/lib/stripe/resources/billing/credit_balance_transaction.rb +133 -0
  58. data/lib/stripe/resources/billing/credit_grant.rb +307 -0
  59. data/lib/stripe/resources/billing/meter.rb +254 -0
  60. data/lib/stripe/resources/billing/meter_event.rb +61 -0
  61. data/lib/stripe/resources/billing/meter_event_adjustment.rb +69 -0
  62. data/lib/stripe/resources/billing/meter_event_summary.rb +32 -0
  63. data/lib/stripe/resources/billing_portal/configuration.rb +587 -0
  64. data/lib/stripe/resources/billing_portal/session.rb +298 -0
  65. data/lib/stripe/resources/capability.rb +91 -2
  66. data/lib/stripe/resources/card.rb +111 -3
  67. data/lib/stripe/resources/cash_balance.rb +43 -0
  68. data/lib/stripe/resources/charge.rb +1682 -2
  69. data/lib/stripe/resources/checkout/session.rb +3666 -2
  70. data/lib/stripe/resources/climate/order.rb +234 -0
  71. data/lib/stripe/resources/climate/product.rb +74 -0
  72. data/lib/stripe/resources/climate/supplier.rb +71 -0
  73. data/lib/stripe/resources/confirmation_token.rb +1498 -0
  74. data/lib/stripe/resources/connect_collection_transfer.rb +24 -0
  75. data/lib/stripe/resources/country_spec.rb +68 -0
  76. data/lib/stripe/resources/coupon.rb +236 -0
  77. data/lib/stripe/resources/credit_note.rb +709 -9
  78. data/lib/stripe/resources/credit_note_line_item.rb +71 -0
  79. data/lib/stripe/resources/customer.rb +1015 -16
  80. data/lib/stripe/resources/customer_balance_transaction.rb +38 -1
  81. data/lib/stripe/resources/customer_cash_balance_transaction.rb +124 -0
  82. data/lib/stripe/resources/customer_session.rb +188 -0
  83. data/lib/stripe/resources/discount.rb +37 -0
  84. data/lib/stripe/resources/dispute.rb +650 -2
  85. data/lib/stripe/resources/entitlements/active_entitlement.rb +63 -0
  86. data/lib/stripe/resources/entitlements/active_entitlement_summary.rb +23 -0
  87. data/lib/stripe/resources/entitlements/feature.rb +130 -0
  88. data/lib/stripe/resources/ephemeral_key.rb +44 -0
  89. data/lib/stripe/resources/event.rb +130 -0
  90. data/lib/stripe/resources/exchange_rate.rb +58 -0
  91. data/lib/stripe/resources/file.rb +139 -15
  92. data/lib/stripe/resources/file_link.rb +129 -0
  93. data/lib/stripe/resources/financial_connections/account.rb +363 -0
  94. data/lib/stripe/resources/financial_connections/account_owner.rb +31 -0
  95. data/lib/stripe/resources/financial_connections/account_ownership.rb +23 -0
  96. data/lib/stripe/resources/financial_connections/session.rb +121 -0
  97. data/lib/stripe/resources/financial_connections/transaction.rb +118 -0
  98. data/lib/stripe/resources/forwarding/request.rb +208 -0
  99. data/lib/stripe/resources/funding_instructions.rb +332 -0
  100. data/lib/stripe/resources/identity/verification_report.rb +287 -0
  101. data/lib/stripe/resources/identity/verification_session.rb +474 -4
  102. data/lib/stripe/resources/invoice.rb +3525 -17
  103. data/lib/stripe/resources/invoice_item.rb +453 -0
  104. data/lib/stripe/resources/invoice_line_item.rb +372 -1
  105. data/lib/stripe/resources/invoice_payment.rb +112 -0
  106. data/lib/stripe/resources/invoice_rendering_template.rb +120 -0
  107. data/lib/stripe/resources/issuing/authorization.rb +1313 -4
  108. data/lib/stripe/resources/issuing/card.rb +785 -4
  109. data/lib/stripe/resources/issuing/cardholder.rb +684 -0
  110. data/lib/stripe/resources/issuing/dispute.rb +828 -2
  111. data/lib/stripe/resources/issuing/personalization_design.rb +395 -0
  112. data/lib/stripe/resources/issuing/physical_bundle.rb +80 -0
  113. data/lib/stripe/resources/issuing/token.rb +198 -0
  114. data/lib/stripe/resources/issuing/transaction.rb +991 -0
  115. data/lib/stripe/resources/line_item.rb +51 -0
  116. data/lib/stripe/resources/login_link.rb +12 -0
  117. data/lib/stripe/resources/mandate.rb +146 -0
  118. data/lib/stripe/resources/payment_intent.rb +8876 -6
  119. data/lib/stripe/resources/payment_link.rb +1692 -0
  120. data/lib/stripe/resources/payment_method.rb +1570 -4
  121. data/lib/stripe/resources/payment_method_configuration.rb +3189 -0
  122. data/lib/stripe/resources/payment_method_domain.rb +236 -0
  123. data/lib/stripe/resources/payout.rb +271 -4
  124. data/lib/stripe/resources/person.rb +295 -1
  125. data/lib/stripe/resources/plan.rb +352 -0
  126. data/lib/stripe/resources/price.rb +642 -0
  127. data/lib/stripe/resources/product.rb +534 -0
  128. data/lib/stripe/resources/product_feature.rb +25 -0
  129. data/lib/stripe/resources/promotion_code.rb +237 -0
  130. data/lib/stripe/resources/quote.rb +1015 -38
  131. data/lib/stripe/resources/radar/early_fraud_warning.rb +85 -0
  132. data/lib/stripe/resources/radar/value_list.rb +171 -0
  133. data/lib/stripe/resources/radar/value_list_item.rb +131 -0
  134. data/lib/stripe/resources/refund.rb +494 -0
  135. data/lib/stripe/resources/reporting/report_run.rb +172 -0
  136. data/lib/stripe/resources/reporting/report_type.rb +48 -1
  137. data/lib/stripe/resources/reserve_transaction.rb +22 -0
  138. data/lib/stripe/resources/reversal.rb +38 -2
  139. data/lib/stripe/resources/review.rb +122 -2
  140. data/lib/stripe/resources/setup_attempt.rb +380 -0
  141. data/lib/stripe/resources/setup_intent.rb +3432 -4
  142. data/lib/stripe/resources/shipping_rate.rb +287 -0
  143. data/lib/stripe/resources/sigma/scheduled_query_run.rb +62 -0
  144. data/lib/stripe/resources/source.rb +1250 -10
  145. data/lib/stripe/resources/source_mandate_notification.rb +66 -0
  146. data/lib/stripe/resources/source_transaction.rb +93 -0
  147. data/lib/stripe/resources/subscription.rb +1871 -3
  148. data/lib/stripe/resources/subscription_item.rb +399 -10
  149. data/lib/stripe/resources/subscription_schedule.rb +1455 -4
  150. data/lib/stripe/resources/tax/calculation.rb +430 -0
  151. data/lib/stripe/resources/tax/calculation_line_item.rb +71 -0
  152. data/lib/stripe/resources/tax/registration.rb +2667 -0
  153. data/lib/stripe/resources/tax/settings.rb +134 -0
  154. data/lib/stripe/resources/tax/transaction.rb +314 -0
  155. data/lib/stripe/resources/tax/transaction_line_item.rb +44 -0
  156. data/lib/stripe/resources/tax_code.rb +35 -0
  157. data/lib/stripe/resources/tax_deducted_at_source.rb +22 -0
  158. data/lib/stripe/resources/tax_id.rb +144 -11
  159. data/lib/stripe/resources/tax_rate.rb +217 -0
  160. data/lib/stripe/resources/terminal/configuration.rb +1328 -0
  161. data/lib/stripe/resources/terminal/connection_token.rb +34 -0
  162. data/lib/stripe/resources/terminal/location.rb +222 -0
  163. data/lib/stripe/resources/terminal/reader.rb +886 -0
  164. data/lib/stripe/resources/test_helpers/test_clock.rb +156 -0
  165. data/lib/stripe/resources/token.rb +1249 -0
  166. data/lib/stripe/resources/topup.rb +204 -2
  167. data/lib/stripe/resources/transfer.rb +173 -6
  168. data/lib/stripe/resources/treasury/credit_reversal.rb +120 -0
  169. data/lib/stripe/resources/treasury/debit_reversal.rb +131 -0
  170. data/lib/stripe/resources/treasury/financial_account.rb +833 -0
  171. data/lib/stripe/resources/treasury/financial_account_features.rb +204 -0
  172. data/lib/stripe/resources/treasury/inbound_transfer.rb +356 -0
  173. data/lib/stripe/resources/treasury/outbound_payment.rb +638 -0
  174. data/lib/stripe/resources/treasury/outbound_transfer.rb +493 -0
  175. data/lib/stripe/resources/treasury/received_credit.rb +284 -0
  176. data/lib/stripe/resources/treasury/received_debit.rb +243 -0
  177. data/lib/stripe/resources/treasury/transaction.rb +193 -0
  178. data/lib/stripe/resources/treasury/transaction_entry.rb +178 -0
  179. data/lib/stripe/resources/v2/amount.rb +9 -0
  180. data/lib/stripe/resources/v2/billing/meter_event.rb +34 -0
  181. data/lib/stripe/resources/v2/billing/meter_event_adjustment.rb +36 -0
  182. data/lib/stripe/resources/v2/billing/meter_event_session.rb +29 -0
  183. data/lib/stripe/resources/v2/event.rb +41 -0
  184. data/lib/stripe/resources/v2/event_destination.rb +73 -0
  185. data/lib/stripe/resources/webhook_endpoint.rb +167 -0
  186. data/lib/stripe/resources.rb +70 -12
  187. data/lib/stripe/search_result_object.rb +89 -0
  188. data/lib/stripe/services/account_capability_service.rb +71 -0
  189. data/lib/stripe/services/account_external_account_service.rb +317 -0
  190. data/lib/stripe/services/account_link_service.rb +63 -0
  191. data/lib/stripe/services/account_login_link_service.rb +28 -0
  192. data/lib/stripe/services/account_person_service.rb +1019 -0
  193. data/lib/stripe/services/account_service.rb +4171 -0
  194. data/lib/stripe/services/account_session_service.rb +569 -0
  195. data/lib/stripe/services/apple_pay_domain_service.rb +100 -0
  196. data/lib/stripe/services/application_fee_refund_service.rb +114 -0
  197. data/lib/stripe/services/application_fee_service.rb +92 -0
  198. data/lib/stripe/services/apps/secret_service.rb +168 -0
  199. data/lib/stripe/services/apps_service.rb +13 -0
  200. data/lib/stripe/services/balance_service.rb +21 -0
  201. data/lib/stripe/services/balance_transaction_service.rb +101 -0
  202. data/lib/stripe/services/billing/alert_service.rb +187 -0
  203. data/lib/stripe/services/billing/credit_balance_summary_service.rb +67 -0
  204. data/lib/stripe/services/billing/credit_balance_transaction_service.rb +70 -0
  205. data/lib/stripe/services/billing/credit_grant_service.rb +240 -0
  206. data/lib/stripe/services/billing/meter_event_adjustment_service.rb +45 -0
  207. data/lib/stripe/services/billing/meter_event_service.rb +40 -0
  208. data/lib/stripe/services/billing/meter_event_summary_service.rb +58 -0
  209. data/lib/stripe/services/billing/meter_service.rb +211 -0
  210. data/lib/stripe/services/billing_portal/configuration_service.rb +496 -0
  211. data/lib/stripe/services/billing_portal/session_service.rb +192 -0
  212. data/lib/stripe/services/billing_portal_service.rb +14 -0
  213. data/lib/stripe/services/billing_service.rb +20 -0
  214. data/lib/stripe/services/charge_service.rb +471 -0
  215. data/lib/stripe/services/checkout/session_line_item_service.rb +37 -0
  216. data/lib/stripe/services/checkout/session_service.rb +2495 -0
  217. data/lib/stripe/services/checkout_service.rb +13 -0
  218. data/lib/stripe/services/climate/order_service.rb +170 -0
  219. data/lib/stripe/services/climate/product_service.rb +57 -0
  220. data/lib/stripe/services/climate/supplier_service.rb +57 -0
  221. data/lib/stripe/services/climate_service.rb +15 -0
  222. data/lib/stripe/services/confirmation_token_service.rb +26 -0
  223. data/lib/stripe/services/country_spec_service.rb +55 -0
  224. data/lib/stripe/services/coupon_service.rb +202 -0
  225. data/lib/stripe/services/credit_note_line_item_service.rb +35 -0
  226. data/lib/stripe/services/credit_note_preview_lines_service.rb +169 -0
  227. data/lib/stripe/services/credit_note_service.rb +457 -0
  228. data/lib/stripe/services/customer_balance_transaction_service.rb +113 -0
  229. data/lib/stripe/services/customer_cash_balance_service.rb +57 -0
  230. data/lib/stripe/services/customer_cash_balance_transaction_service.rb +55 -0
  231. data/lib/stripe/services/customer_funding_instructions_service.rb +61 -0
  232. data/lib/stripe/services/customer_payment_method_service.rb +68 -0
  233. data/lib/stripe/services/customer_payment_source_service.rb +255 -0
  234. data/lib/stripe/services/customer_service.rb +664 -0
  235. data/lib/stripe/services/customer_session_service.rb +113 -0
  236. data/lib/stripe/services/customer_tax_id_service.rb +94 -0
  237. data/lib/stripe/services/dispute_service.rb +422 -0
  238. data/lib/stripe/services/entitlements/active_entitlement_service.rb +66 -0
  239. data/lib/stripe/services/entitlements/feature_service.rb +128 -0
  240. data/lib/stripe/services/entitlements_service.rb +14 -0
  241. data/lib/stripe/services/ephemeral_key_service.rb +64 -0
  242. data/lib/stripe/services/event_service.rb +87 -0
  243. data/lib/stripe/services/exchange_rate_service.rb +55 -0
  244. data/lib/stripe/services/file_link_service.rb +132 -0
  245. data/lib/stripe/services/file_service.rb +124 -0
  246. data/lib/stripe/services/financial_connections/account_owner_service.rb +46 -0
  247. data/lib/stripe/services/financial_connections/account_service.rb +177 -0
  248. data/lib/stripe/services/financial_connections/session_service.rb +98 -0
  249. data/lib/stripe/services/financial_connections/transaction_service.rb +100 -0
  250. data/lib/stripe/services/financial_connections_service.rb +15 -0
  251. data/lib/stripe/services/forwarding/request_service.rb +147 -0
  252. data/lib/stripe/services/forwarding_service.rb +13 -0
  253. data/lib/stripe/services/identity/verification_report_service.rb +95 -0
  254. data/lib/stripe/services/identity/verification_session_service.rb +337 -0
  255. data/lib/stripe/services/identity_service.rb +14 -0
  256. data/lib/stripe/services/invoice_item_service.rb +394 -0
  257. data/lib/stripe/services/invoice_line_item_service.rb +252 -0
  258. data/lib/stripe/services/invoice_payment_service.rb +83 -0
  259. data/lib/stripe/services/invoice_rendering_template_service.rb +101 -0
  260. data/lib/stripe/services/invoice_service.rb +2900 -0
  261. data/lib/stripe/services/issuing/authorization_service.rb +169 -0
  262. data/lib/stripe/services/issuing/card_service.rb +507 -0
  263. data/lib/stripe/services/issuing/cardholder_service.rb +577 -0
  264. data/lib/stripe/services/issuing/dispute_service.rb +696 -0
  265. data/lib/stripe/services/issuing/personalization_design_service.rb +245 -0
  266. data/lib/stripe/services/issuing/physical_bundle_service.rb +70 -0
  267. data/lib/stripe/services/issuing/token_service.rb +114 -0
  268. data/lib/stripe/services/issuing/transaction_service.rb +118 -0
  269. data/lib/stripe/services/issuing_service.rb +20 -0
  270. data/lib/stripe/services/mandate_service.rb +26 -0
  271. data/lib/stripe/services/oauth_service.rb +63 -0
  272. data/lib/stripe/services/payment_intent_service.rb +7202 -0
  273. data/lib/stripe/services/payment_link_line_item_service.rb +35 -0
  274. data/lib/stripe/services/payment_link_service.rb +1333 -0
  275. data/lib/stripe/services/payment_method_configuration_service.rb +2306 -0
  276. data/lib/stripe/services/payment_method_domain_service.rb +142 -0
  277. data/lib/stripe/services/payment_method_service.rb +843 -0
  278. data/lib/stripe/services/payout_service.rb +225 -0
  279. data/lib/stripe/services/plan_service.rb +297 -0
  280. data/lib/stripe/services/price_service.rb +545 -0
  281. data/lib/stripe/services/product_feature_service.rb +91 -0
  282. data/lib/stripe/services/product_service.rb +494 -0
  283. data/lib/stripe/services/promotion_code_service.rb +228 -0
  284. data/lib/stripe/services/quote_computed_upfront_line_items_service.rb +35 -0
  285. data/lib/stripe/services/quote_line_item_service.rb +35 -0
  286. data/lib/stripe/services/quote_service.rb +703 -0
  287. data/lib/stripe/services/radar/early_fraud_warning_service.rb +93 -0
  288. data/lib/stripe/services/radar/value_list_item_service.rb +130 -0
  289. data/lib/stripe/services/radar/value_list_service.rb +165 -0
  290. data/lib/stripe/services/radar_service.rb +15 -0
  291. data/lib/stripe/services/refund_service.rb +200 -0
  292. data/lib/stripe/services/reporting/report_run_service.rb +147 -0
  293. data/lib/stripe/services/reporting/report_type_service.rb +48 -0
  294. data/lib/stripe/services/reporting_service.rb +14 -0
  295. data/lib/stripe/services/review_service.rb +89 -0
  296. data/lib/stripe/services/setup_attempt_service.rb +68 -0
  297. data/lib/stripe/services/setup_intent_service.rb +3107 -0
  298. data/lib/stripe/services/shipping_rate_service.rb +250 -0
  299. data/lib/stripe/services/sigma/scheduled_query_run_service.rb +57 -0
  300. data/lib/stripe/services/sigma_service.rb +13 -0
  301. data/lib/stripe/services/source_service.rb +665 -0
  302. data/lib/stripe/services/source_transaction_service.rb +35 -0
  303. data/lib/stripe/services/subscription_item_service.rb +372 -0
  304. data/lib/stripe/services/subscription_schedule_service.rb +1224 -0
  305. data/lib/stripe/services/subscription_service.rb +1590 -0
  306. data/lib/stripe/services/tax/calculation_line_item_service.rb +37 -0
  307. data/lib/stripe/services/tax/calculation_service.rb +246 -0
  308. data/lib/stripe/services/tax/registration_service.rb +1774 -0
  309. data/lib/stripe/services/tax/settings_service.rb +104 -0
  310. data/lib/stripe/services/tax/transaction_line_item_service.rb +37 -0
  311. data/lib/stripe/services/tax/transaction_service.rb +159 -0
  312. data/lib/stripe/services/tax_code_service.rb +49 -0
  313. data/lib/stripe/services/tax_id_service.rb +116 -0
  314. data/lib/stripe/services/tax_rate_service.rb +193 -0
  315. data/lib/stripe/services/tax_service.rb +16 -0
  316. data/lib/stripe/services/terminal/configuration_service.rb +1059 -0
  317. data/lib/stripe/services/terminal/connection_token_service.rb +31 -0
  318. data/lib/stripe/services/terminal/location_service.rb +207 -0
  319. data/lib/stripe/services/terminal/reader_service.rb +488 -0
  320. data/lib/stripe/services/terminal_service.rb +16 -0
  321. data/lib/stripe/services/test_helpers/confirmation_token_service.rb +655 -0
  322. data/lib/stripe/services/test_helpers/customer_service.rb +37 -0
  323. data/lib/stripe/services/test_helpers/issuing/authorization_service.rb +832 -0
  324. data/lib/stripe/services/test_helpers/issuing/card_service.rb +110 -0
  325. data/lib/stripe/services/test_helpers/issuing/personalization_design_service.rb +84 -0
  326. data/lib/stripe/services/test_helpers/issuing/transaction_service.rb +675 -0
  327. data/lib/stripe/services/test_helpers/issuing_service.rb +19 -0
  328. data/lib/stripe/services/test_helpers/refund_service.rb +28 -0
  329. data/lib/stripe/services/test_helpers/terminal/reader_service.rb +108 -0
  330. data/lib/stripe/services/test_helpers/terminal_service.rb +15 -0
  331. data/lib/stripe/services/test_helpers/test_clock_service.rb +119 -0
  332. data/lib/stripe/services/test_helpers/treasury/inbound_transfer_service.rb +81 -0
  333. data/lib/stripe/services/test_helpers/treasury/outbound_payment_service.rb +141 -0
  334. data/lib/stripe/services/test_helpers/treasury/outbound_transfer_service.rb +141 -0
  335. data/lib/stripe/services/test_helpers/treasury/received_credit_service.rb +81 -0
  336. data/lib/stripe/services/test_helpers/treasury/received_debit_service.rb +81 -0
  337. data/lib/stripe/services/test_helpers/treasury_service.rb +19 -0
  338. data/lib/stripe/services/test_helpers_service.rb +19 -0
  339. data/lib/stripe/services/token_service.rb +1224 -0
  340. data/lib/stripe/services/topup_service.rb +191 -0
  341. data/lib/stripe/services/transfer_reversal_service.rb +122 -0
  342. data/lib/stripe/services/transfer_service.rb +166 -0
  343. data/lib/stripe/services/treasury/credit_reversal_service.rb +100 -0
  344. data/lib/stripe/services/treasury/debit_reversal_service.rb +104 -0
  345. data/lib/stripe/services/treasury/financial_account_features_service.rb +196 -0
  346. data/lib/stripe/services/treasury/financial_account_service.rb +554 -0
  347. data/lib/stripe/services/treasury/inbound_transfer_service.rb +140 -0
  348. data/lib/stripe/services/treasury/outbound_payment_service.rb +310 -0
  349. data/lib/stripe/services/treasury/outbound_transfer_service.rb +176 -0
  350. data/lib/stripe/services/treasury/received_credit_service.rb +82 -0
  351. data/lib/stripe/services/treasury/received_debit_service.rb +70 -0
  352. data/lib/stripe/services/treasury/transaction_entry_service.rb +117 -0
  353. data/lib/stripe/services/treasury/transaction_service.rb +125 -0
  354. data/lib/stripe/services/treasury_service.rb +22 -0
  355. data/lib/stripe/services/v1_services.rb +90 -0
  356. data/lib/stripe/services/v2/billing/meter_event_adjustment_service.rb +44 -0
  357. data/lib/stripe/services/v2/billing/meter_event_service.rb +46 -0
  358. data/lib/stripe/services/v2/billing/meter_event_session_service.rb +23 -0
  359. data/lib/stripe/services/v2/billing/meter_event_stream_service.rb +56 -0
  360. data/lib/stripe/services/v2/billing_service.rb +18 -0
  361. data/lib/stripe/services/v2/core/event_destination_service.rb +235 -0
  362. data/lib/stripe/services/v2/core/event_service.rb +48 -0
  363. data/lib/stripe/services/v2/core_service.rb +16 -0
  364. data/lib/stripe/services/v2_services.rb +14 -0
  365. data/lib/stripe/services/webhook_endpoint_service.rb +156 -0
  366. data/lib/stripe/services.rb +180 -0
  367. data/lib/stripe/singleton_api_resource.rb +3 -3
  368. data/lib/stripe/stripe_client.rb +56 -1021
  369. data/lib/stripe/stripe_configuration.rb +63 -42
  370. data/lib/stripe/stripe_object.rb +75 -39
  371. data/lib/stripe/stripe_response.rb +1 -3
  372. data/lib/stripe/stripe_service.rb +32 -0
  373. data/lib/stripe/thin_event.rb +37 -0
  374. data/lib/stripe/util.rb +161 -39
  375. data/lib/stripe/v2_list_object.rb +84 -0
  376. data/lib/stripe/version.rb +1 -1
  377. data/lib/stripe/webhook.rb +3 -2
  378. data/lib/stripe.rb +44 -1
  379. data/rbi/stripe/resources/account.rbi +4926 -0
  380. data/rbi/stripe/resources/account_link.rbi +74 -0
  381. data/rbi/stripe/resources/account_session.rbi +1013 -0
  382. data/rbi/stripe/resources/apple_pay_domain.rbi +88 -0
  383. data/rbi/stripe/resources/application.rbi +20 -0
  384. data/rbi/stripe/resources/application_fee.rbi +118 -0
  385. data/rbi/stripe/resources/application_fee_refund.rbi +37 -0
  386. data/rbi/stripe/resources/apps/secret.rbi +195 -0
  387. data/rbi/stripe/resources/balance.rbi +235 -0
  388. data/rbi/stripe/resources/balance_transaction.rbi +147 -0
  389. data/rbi/stripe/resources/bank_account.rbi +127 -0
  390. data/rbi/stripe/resources/billing/alert.rbi +201 -0
  391. data/rbi/stripe/resources/billing/alert_triggered.rbi +28 -0
  392. data/rbi/stripe/resources/billing/credit_balance_summary.rbi +63 -0
  393. data/rbi/stripe/resources/billing/credit_balance_transaction.rbi +147 -0
  394. data/rbi/stripe/resources/billing/credit_grant.rbi +291 -0
  395. data/rbi/stripe/resources/billing/meter.rbi +226 -0
  396. data/rbi/stripe/resources/billing/meter_event.rbi +64 -0
  397. data/rbi/stripe/resources/billing/meter_event_adjustment.rbi +64 -0
  398. data/rbi/stripe/resources/billing/meter_event_summary.rbi +35 -0
  399. data/rbi/stripe/resources/billing_portal/configuration.rbi +645 -0
  400. data/rbi/stripe/resources/billing_portal/session.rbi +345 -0
  401. data/rbi/stripe/resources/capability.rbi +125 -0
  402. data/rbi/stripe/resources/card.rbi +125 -0
  403. data/rbi/stripe/resources/cash_balance.rbi +32 -0
  404. data/rbi/stripe/resources/charge.rbi +2069 -0
  405. data/rbi/stripe/resources/checkout/session.rbi +4004 -0
  406. data/rbi/stripe/resources/climate/order.rbi +245 -0
  407. data/rbi/stripe/resources/climate/product.rbi +75 -0
  408. data/rbi/stripe/resources/climate/supplier.rbi +72 -0
  409. data/rbi/stripe/resources/confirmation_token.rbi +1807 -0
  410. data/rbi/stripe/resources/connect_collection_transfer.rbi +26 -0
  411. data/rbi/stripe/resources/country_spec.rbi +85 -0
  412. data/rbi/stripe/resources/coupon.rbi +250 -0
  413. data/rbi/stripe/resources/credit_note.rbi +752 -0
  414. data/rbi/stripe/resources/credit_note_line_item.rbi +101 -0
  415. data/rbi/stripe/resources/customer.rbi +1005 -0
  416. data/rbi/stripe/resources/customer_balance_transaction.rbi +56 -0
  417. data/rbi/stripe/resources/customer_cash_balance_transaction.rbi +151 -0
  418. data/rbi/stripe/resources/customer_session.rbi +200 -0
  419. data/rbi/stripe/resources/discount.rbi +53 -0
  420. data/rbi/stripe/resources/dispute.rbi +761 -0
  421. data/rbi/stripe/resources/entitlements/active_entitlement.rbi +58 -0
  422. data/rbi/stripe/resources/entitlements/active_entitlement_summary.rbi +23 -0
  423. data/rbi/stripe/resources/entitlements/feature.rbi +117 -0
  424. data/rbi/stripe/resources/ephemeral_key.rbi +44 -0
  425. data/rbi/stripe/resources/event.rbi +149 -0
  426. data/rbi/stripe/resources/exchange_rate.rbi +66 -0
  427. data/rbi/stripe/resources/file.rbi +143 -0
  428. data/rbi/stripe/resources/file_link.rbi +141 -0
  429. data/rbi/stripe/resources/financial_connections/account.rbi +339 -0
  430. data/rbi/stripe/resources/financial_connections/account_owner.rbi +35 -0
  431. data/rbi/stripe/resources/financial_connections/account_ownership.rbi +23 -0
  432. data/rbi/stripe/resources/financial_connections/session.rbi +123 -0
  433. data/rbi/stripe/resources/financial_connections/transaction.rbi +124 -0
  434. data/rbi/stripe/resources/forwarding/request.rbi +216 -0
  435. data/rbi/stripe/resources/funding_instructions.rbi +437 -0
  436. data/rbi/stripe/resources/identity/verification_report.rbi +360 -0
  437. data/rbi/stripe/resources/identity/verification_session.rbi +526 -0
  438. data/rbi/stripe/resources/invoice.rbi +3812 -0
  439. data/rbi/stripe/resources/invoice_item.rbi +473 -0
  440. data/rbi/stripe/resources/invoice_line_item.rbi +432 -0
  441. data/rbi/stripe/resources/invoice_payment.rbi +121 -0
  442. data/rbi/stripe/resources/invoice_rendering_template.rbi +104 -0
  443. data/rbi/stripe/resources/issuing/authorization.rbi +1283 -0
  444. data/rbi/stripe/resources/issuing/card.rbi +741 -0
  445. data/rbi/stripe/resources/issuing/cardholder.rbi +744 -0
  446. data/rbi/stripe/resources/issuing/dispute.rbi +913 -0
  447. data/rbi/stripe/resources/issuing/personalization_design.rbi +338 -0
  448. data/rbi/stripe/resources/issuing/physical_bundle.rbi +79 -0
  449. data/rbi/stripe/resources/issuing/token.rbi +226 -0
  450. data/rbi/stripe/resources/issuing/transaction.rbi +1061 -0
  451. data/rbi/stripe/resources/line_item.rbi +72 -0
  452. data/rbi/stripe/resources/login_link.rbi +19 -0
  453. data/rbi/stripe/resources/mandate.rbi +187 -0
  454. data/rbi/stripe/resources/payment_intent.rbi +9647 -0
  455. data/rbi/stripe/resources/payment_link.rbi +1801 -0
  456. data/rbi/stripe/resources/payment_method.rbi +1761 -0
  457. data/rbi/stripe/resources/payment_method_configuration.rbi +3550 -0
  458. data/rbi/stripe/resources/payment_method_domain.rbi +228 -0
  459. data/rbi/stripe/resources/payout.rbi +300 -0
  460. data/rbi/stripe/resources/person.rbi +401 -0
  461. data/rbi/stripe/resources/plan.rbi +371 -0
  462. data/rbi/stripe/resources/price.rbi +694 -0
  463. data/rbi/stripe/resources/product.rbi +555 -0
  464. data/rbi/stripe/resources/product_feature.rbi +26 -0
  465. data/rbi/stripe/resources/promotion_code.rbi +261 -0
  466. data/rbi/stripe/resources/quote.rbi +1126 -0
  467. data/rbi/stripe/resources/radar/early_fraud_warning.rbi +98 -0
  468. data/rbi/stripe/resources/radar/value_list.rbi +168 -0
  469. data/rbi/stripe/resources/radar/value_list_item.rbi +129 -0
  470. data/rbi/stripe/resources/refund.rbi +523 -0
  471. data/rbi/stripe/resources/reporting/report_run.rbi +191 -0
  472. data/rbi/stripe/resources/reporting/report_type.rbi +57 -0
  473. data/rbi/stripe/resources/reserve_transaction.rbi +23 -0
  474. data/rbi/stripe/resources/reversal.rbi +51 -0
  475. data/rbi/stripe/resources/review.rbi +154 -0
  476. data/rbi/stripe/resources/setup_attempt.rbi +477 -0
  477. data/rbi/stripe/resources/setup_intent.rbi +3655 -0
  478. data/rbi/stripe/resources/shipping_rate.rbi +305 -0
  479. data/rbi/stripe/resources/sigma/scheduled_query_run.rbi +75 -0
  480. data/rbi/stripe/resources/source.rbi +1496 -0
  481. data/rbi/stripe/resources/source_mandate_notification.rbi +77 -0
  482. data/rbi/stripe/resources/source_transaction.rbi +127 -0
  483. data/rbi/stripe/resources/subscription.rbi +2027 -0
  484. data/rbi/stripe/resources/subscription_item.rbi +404 -0
  485. data/rbi/stripe/resources/subscription_schedule.rbi +1623 -0
  486. data/rbi/stripe/resources/tax/calculation.rbi +478 -0
  487. data/rbi/stripe/resources/tax/calculation_line_item.rbi +91 -0
  488. data/rbi/stripe/resources/tax/registration.rbi +2713 -0
  489. data/rbi/stripe/resources/tax/settings.rbi +141 -0
  490. data/rbi/stripe/resources/tax/transaction.rbi +351 -0
  491. data/rbi/stripe/resources/tax/transaction_line_item.rbi +54 -0
  492. data/rbi/stripe/resources/tax_code.rbi +44 -0
  493. data/rbi/stripe/resources/tax_deducted_at_source.rbi +23 -0
  494. data/rbi/stripe/resources/tax_id.rbi +165 -0
  495. data/rbi/stripe/resources/tax_rate.rbi +239 -0
  496. data/rbi/stripe/resources/terminal/configuration.rbi +1386 -0
  497. data/rbi/stripe/resources/terminal/connection_token.rbi +37 -0
  498. data/rbi/stripe/resources/terminal/location.rbi +222 -0
  499. data/rbi/stripe/resources/terminal/reader.rbi +847 -0
  500. data/rbi/stripe/resources/test_helpers/test_clock.rbi +132 -0
  501. data/rbi/stripe/resources/token.rbi +1283 -0
  502. data/rbi/stripe/resources/topup.rbi +222 -0
  503. data/rbi/stripe/resources/transfer.rbi +199 -0
  504. data/rbi/stripe/resources/treasury/credit_reversal.rbi +119 -0
  505. data/rbi/stripe/resources/treasury/debit_reversal.rbi +131 -0
  506. data/rbi/stripe/resources/treasury/financial_account.rbi +865 -0
  507. data/rbi/stripe/resources/treasury/financial_account_features.rbi +260 -0
  508. data/rbi/stripe/resources/treasury/inbound_transfer.rbi +295 -0
  509. data/rbi/stripe/resources/treasury/outbound_payment.rbi +592 -0
  510. data/rbi/stripe/resources/treasury/outbound_transfer.rbi +431 -0
  511. data/rbi/stripe/resources/treasury/received_credit.rbi +302 -0
  512. data/rbi/stripe/resources/treasury/received_debit.rbi +256 -0
  513. data/rbi/stripe/resources/treasury/transaction.rbi +215 -0
  514. data/rbi/stripe/resources/treasury/transaction_entry.rbi +192 -0
  515. data/rbi/stripe/resources/v2/amount.rbi +14 -0
  516. data/rbi/stripe/resources/v2/billing/meter_event.rbi +37 -0
  517. data/rbi/stripe/resources/v2/billing/meter_event_adjustment.rbi +41 -0
  518. data/rbi/stripe/resources/v2/billing/meter_event_session.rbi +31 -0
  519. data/rbi/stripe/resources/v2/event.rbi +48 -0
  520. data/rbi/stripe/resources/v2/event_destination.rbi +91 -0
  521. data/rbi/stripe/resources/webhook_endpoint.rbi +168 -0
  522. data/rbi/stripe/services/account_capability_service.rbi +51 -0
  523. data/rbi/stripe/services/account_external_account_service.rbi +304 -0
  524. data/rbi/stripe/services/account_link_service.rbi +58 -0
  525. data/rbi/stripe/services/account_login_link_service.rbi +22 -0
  526. data/rbi/stripe/services/account_person_service.rbi +1011 -0
  527. data/rbi/stripe/services/account_service.rbi +4213 -0
  528. data/rbi/stripe/services/account_session_service.rbi +646 -0
  529. data/rbi/stripe/services/apple_pay_domain_service.rbi +76 -0
  530. data/rbi/stripe/services/application_fee_refund_service.rbi +93 -0
  531. data/rbi/stripe/services/application_fee_service.rbi +78 -0
  532. data/rbi/stripe/services/apps/secret_service.rbi +151 -0
  533. data/{lib/stripe/resources/usage_record_summary.rb → rbi/stripe/services/apps_service.rbi} +4 -3
  534. data/rbi/stripe/services/balance_service.rbi +21 -0
  535. data/rbi/stripe/services/balance_transaction_service.rbi +93 -0
  536. data/rbi/stripe/services/billing/alert_service.rbi +152 -0
  537. data/rbi/stripe/services/billing/credit_balance_summary_service.rbi +68 -0
  538. data/rbi/stripe/services/billing/credit_balance_transaction_service.rbi +59 -0
  539. data/rbi/stripe/services/billing/credit_grant_service.rbi +211 -0
  540. data/rbi/stripe/services/billing/meter_event_adjustment_service.rbi +42 -0
  541. data/rbi/stripe/services/billing/meter_event_service.rbi +42 -0
  542. data/rbi/stripe/services/billing/meter_event_summary_service.rbi +54 -0
  543. data/rbi/stripe/services/billing/meter_service.rbi +163 -0
  544. data/rbi/stripe/services/billing_portal/configuration_service.rbi +511 -0
  545. data/rbi/stripe/services/billing_portal/session_service.rbi +204 -0
  546. data/rbi/stripe/services/billing_portal_service.rbi +10 -0
  547. data/rbi/stripe/services/billing_service.rbi +15 -0
  548. data/rbi/stripe/services/charge_service.rbi +448 -0
  549. data/rbi/stripe/services/checkout/session_line_item_service.rbi +33 -0
  550. data/rbi/stripe/services/checkout/session_service.rbi +2614 -0
  551. data/rbi/stripe/services/checkout_service.rbi +9 -0
  552. data/rbi/stripe/services/climate/order_service.rbi +142 -0
  553. data/rbi/stripe/services/climate/product_service.rbi +46 -0
  554. data/rbi/stripe/services/climate/supplier_service.rbi +46 -0
  555. data/rbi/stripe/services/climate_service.rbi +11 -0
  556. data/rbi/stripe/services/confirmation_token_service.rbi +20 -0
  557. data/rbi/stripe/services/country_spec_service.rbi +44 -0
  558. data/rbi/stripe/services/coupon_service.rbi +194 -0
  559. data/rbi/stripe/services/credit_note_line_item_service.rbi +31 -0
  560. data/rbi/stripe/services/credit_note_preview_lines_service.rbi +167 -0
  561. data/rbi/stripe/services/credit_note_service.rbi +415 -0
  562. data/rbi/stripe/services/customer_balance_transaction_service.rbi +92 -0
  563. data/rbi/stripe/services/customer_cash_balance_service.rbi +45 -0
  564. data/rbi/stripe/services/customer_cash_balance_transaction_service.rbi +44 -0
  565. data/rbi/stripe/services/customer_funding_instructions_service.rbi +59 -0
  566. data/rbi/stripe/services/customer_payment_method_service.rbi +57 -0
  567. data/rbi/stripe/services/customer_payment_source_service.rbi +232 -0
  568. data/rbi/stripe/services/customer_service.rbi +647 -0
  569. data/rbi/stripe/services/customer_session_service.rbi +116 -0
  570. data/rbi/stripe/services/customer_tax_id_service.rbi +70 -0
  571. data/rbi/stripe/services/dispute_service.rbi +424 -0
  572. data/rbi/stripe/services/entitlements/active_entitlement_service.rbi +55 -0
  573. data/rbi/stripe/services/entitlements/feature_service.rbi +107 -0
  574. data/rbi/stripe/services/entitlements_service.rbi +10 -0
  575. data/rbi/stripe/services/ephemeral_key_service.rbi +53 -0
  576. data/rbi/stripe/services/event_service.rbi +83 -0
  577. data/rbi/stripe/services/exchange_rate_service.rbi +44 -0
  578. data/rbi/stripe/services/file_link_service.rbi +124 -0
  579. data/rbi/stripe/services/file_service.rbi +116 -0
  580. data/rbi/stripe/services/financial_connections/account_owner_service.rbi +42 -0
  581. data/rbi/stripe/services/financial_connections/account_service.rbi +133 -0
  582. data/rbi/stripe/services/financial_connections/session_service.rbi +88 -0
  583. data/rbi/stripe/services/financial_connections/transaction_service.rbi +92 -0
  584. data/rbi/stripe/services/financial_connections_service.rbi +11 -0
  585. data/rbi/stripe/services/forwarding/request_service.rbi +134 -0
  586. data/rbi/stripe/services/forwarding_service.rbi +9 -0
  587. data/rbi/stripe/services/identity/verification_report_service.rbi +87 -0
  588. data/rbi/stripe/services/identity/verification_session_service.rbi +323 -0
  589. data/rbi/stripe/services/identity_service.rbi +10 -0
  590. data/rbi/stripe/services/invoice_item_service.rbi +366 -0
  591. data/rbi/stripe/services/invoice_line_item_service.rbi +259 -0
  592. data/rbi/stripe/services/invoice_payment_service.rbi +71 -0
  593. data/rbi/stripe/services/invoice_rendering_template_service.rbi +82 -0
  594. data/rbi/stripe/services/invoice_service.rbi +2981 -0
  595. data/rbi/stripe/services/issuing/authorization_service.rbi +146 -0
  596. data/rbi/stripe/services/issuing/card_service.rbi +495 -0
  597. data/rbi/stripe/services/issuing/cardholder_service.rbi +587 -0
  598. data/rbi/stripe/services/issuing/dispute_service.rbi +707 -0
  599. data/rbi/stripe/services/issuing/personalization_design_service.rbi +243 -0
  600. data/rbi/stripe/services/issuing/physical_bundle_service.rbi +59 -0
  601. data/rbi/stripe/services/issuing/token_service.rbi +99 -0
  602. data/rbi/stripe/services/issuing/transaction_service.rbi +105 -0
  603. data/rbi/stripe/services/issuing_service.rbi +16 -0
  604. data/rbi/stripe/services/mandate_service.rbi +20 -0
  605. data/rbi/stripe/services/payment_intent_service.rbi +7659 -0
  606. data/rbi/stripe/services/payment_link_line_item_service.rbi +31 -0
  607. data/rbi/stripe/services/payment_link_service.rbi +1352 -0
  608. data/rbi/stripe/services/payment_method_configuration_service.rbi +2487 -0
  609. data/rbi/stripe/services/payment_method_domain_service.rbi +112 -0
  610. data/rbi/stripe/services/payment_method_service.rbi +776 -0
  611. data/rbi/stripe/services/payout_service.rbi +205 -0
  612. data/rbi/stripe/services/plan_service.rbi +282 -0
  613. data/rbi/stripe/services/price_service.rbi +546 -0
  614. data/rbi/stripe/services/product_feature_service.rbi +67 -0
  615. data/rbi/stripe/services/product_service.rbi +477 -0
  616. data/rbi/stripe/services/promotion_code_service.rbi +214 -0
  617. data/rbi/stripe/services/quote_computed_upfront_line_items_service.rbi +31 -0
  618. data/rbi/stripe/services/quote_line_item_service.rbi +31 -0
  619. data/rbi/stripe/services/quote_service.rbi +686 -0
  620. data/rbi/stripe/services/radar/early_fraud_warning_service.rbi +85 -0
  621. data/rbi/stripe/services/radar/value_list_item_service.rbi +109 -0
  622. data/rbi/stripe/services/radar/value_list_service.rbi +141 -0
  623. data/rbi/stripe/services/radar_service.rbi +11 -0
  624. data/rbi/stripe/services/refund_service.rbi +185 -0
  625. data/rbi/stripe/services/reporting/report_run_service.rbi +135 -0
  626. data/rbi/stripe/services/reporting/report_type_service.rbi +35 -0
  627. data/rbi/stripe/services/reporting_service.rbi +10 -0
  628. data/rbi/stripe/services/review_service.rbi +84 -0
  629. data/rbi/stripe/services/setup_attempt_service.rbi +65 -0
  630. data/rbi/stripe/services/setup_intent_service.rbi +3391 -0
  631. data/rbi/stripe/services/shipping_rate_service.rbi +241 -0
  632. data/rbi/stripe/services/sigma/scheduled_query_run_service.rbi +46 -0
  633. data/rbi/stripe/services/sigma_service.rbi +9 -0
  634. data/rbi/stripe/services/source_service.rbi +663 -0
  635. data/rbi/stripe/services/source_transaction_service.rbi +31 -0
  636. data/rbi/stripe/services/subscription_item_service.rbi +350 -0
  637. data/rbi/stripe/services/subscription_schedule_service.rbi +1290 -0
  638. data/rbi/stripe/services/subscription_service.rbi +1648 -0
  639. data/rbi/stripe/services/tax/calculation_line_item_service.rbi +33 -0
  640. data/rbi/stripe/services/tax/calculation_service.rbi +234 -0
  641. data/rbi/stripe/services/tax/registration_service.rbi +1845 -0
  642. data/rbi/stripe/services/tax/settings_service.rbi +93 -0
  643. data/rbi/stripe/services/tax/transaction_line_item_service.rbi +33 -0
  644. data/rbi/stripe/services/tax/transaction_service.rbi +146 -0
  645. data/rbi/stripe/services/tax_code_service.rbi +44 -0
  646. data/rbi/stripe/services/tax_id_service.rbi +110 -0
  647. data/rbi/stripe/services/tax_rate_service.rbi +185 -0
  648. data/rbi/stripe/services/tax_service.rbi +12 -0
  649. data/rbi/stripe/services/terminal/configuration_service.rbi +1118 -0
  650. data/rbi/stripe/services/terminal/connection_token_service.rbi +25 -0
  651. data/rbi/stripe/services/terminal/location_service.rbi +182 -0
  652. data/rbi/stripe/services/terminal/reader_service.rbi +455 -0
  653. data/rbi/stripe/services/terminal_service.rbi +12 -0
  654. data/rbi/stripe/services/test_helpers/confirmation_token_service.rbi +739 -0
  655. data/rbi/stripe/services/test_helpers/customer_service.rbi +33 -0
  656. data/rbi/stripe/services/test_helpers/issuing/authorization_service.rbi +848 -0
  657. data/rbi/stripe/services/test_helpers/issuing/card_service.rbi +76 -0
  658. data/rbi/stripe/services/test_helpers/issuing/personalization_design_service.rbi +69 -0
  659. data/rbi/stripe/services/test_helpers/issuing/transaction_service.rbi +711 -0
  660. data/rbi/stripe/services/test_helpers/issuing_service.rbi +14 -0
  661. data/rbi/stripe/services/test_helpers/refund_service.rbi +22 -0
  662. data/rbi/stripe/services/test_helpers/terminal/reader_service.rbi +93 -0
  663. data/rbi/stripe/services/test_helpers/terminal_service.rbi +11 -0
  664. data/rbi/stripe/services/test_helpers/test_clock_service.rbi +90 -0
  665. data/rbi/stripe/services/test_helpers/treasury/inbound_transfer_service.rbi +64 -0
  666. data/rbi/stripe/services/test_helpers/treasury/outbound_payment_service.rbi +125 -0
  667. data/rbi/stripe/services/test_helpers/treasury/outbound_transfer_service.rbi +125 -0
  668. data/rbi/stripe/services/test_helpers/treasury/received_credit_service.rbi +87 -0
  669. data/rbi/stripe/services/test_helpers/treasury/received_debit_service.rbi +87 -0
  670. data/rbi/stripe/services/test_helpers/treasury_service.rbi +15 -0
  671. data/rbi/stripe/services/test_helpers_service.rbi +15 -0
  672. data/rbi/stripe/services/token_service.rbi +1257 -0
  673. data/rbi/stripe/services/topup_service.rbi +176 -0
  674. data/rbi/stripe/services/transfer_reversal_service.rbi +101 -0
  675. data/rbi/stripe/services/transfer_service.rbi +152 -0
  676. data/rbi/stripe/services/treasury/credit_reversal_service.rbi +84 -0
  677. data/rbi/stripe/services/treasury/debit_reversal_service.rbi +88 -0
  678. data/rbi/stripe/services/treasury/financial_account_features_service.rbi +198 -0
  679. data/rbi/stripe/services/treasury/financial_account_service.rbi +562 -0
  680. data/rbi/stripe/services/treasury/inbound_transfer_service.rbi +117 -0
  681. data/rbi/stripe/services/treasury/outbound_payment_service.rbi +304 -0
  682. data/rbi/stripe/services/treasury/outbound_transfer_service.rbi +157 -0
  683. data/rbi/stripe/services/treasury/received_credit_service.rbi +72 -0
  684. data/rbi/stripe/services/treasury/received_debit_service.rbi +59 -0
  685. data/rbi/stripe/services/treasury/transaction_entry_service.rbi +111 -0
  686. data/rbi/stripe/services/treasury/transaction_service.rbi +122 -0
  687. data/rbi/stripe/services/treasury_service.rbi +18 -0
  688. data/rbi/stripe/services/v1_services.rbi +77 -0
  689. data/rbi/stripe/services/v2/billing/meter_event_adjustment_service.rbi +39 -0
  690. data/rbi/stripe/services/v2/billing/meter_event_service.rbi +42 -0
  691. data/rbi/stripe/services/v2/billing/meter_event_session_service.rbi +18 -0
  692. data/rbi/stripe/services/v2/billing/meter_event_stream_service.rbi +55 -0
  693. data/rbi/stripe/services/v2/billing_service.rbi +14 -0
  694. data/rbi/stripe/services/v2/core/event_destination_service.rbi +192 -0
  695. data/rbi/stripe/services/v2/core/event_service.rbi +36 -0
  696. data/rbi/stripe/services/v2/core_service.rbi +12 -0
  697. data/rbi/stripe/services/v2_services.rbi +10 -0
  698. data/rbi/stripe/services/webhook_endpoint_service.rbi +129 -0
  699. data/stripe.gemspec +10 -7
  700. metadata +599 -18
  701. data/lib/stripe/resources/bitcoin_receiver.rb +0 -24
  702. data/lib/stripe/resources/bitcoin_transaction.rb +0 -16
  703. data/lib/stripe/resources/issuing/card_details.rb +0 -9
  704. data/lib/stripe/resources/order.rb +0 -33
  705. data/lib/stripe/resources/order_return.rb +0 -10
  706. data/lib/stripe/resources/recipient.rb +0 -14
  707. data/lib/stripe/resources/sku.rb +0 -13
  708. data/lib/stripe/resources/three_d_secure.rb +0 -14
@@ -2,73 +2,3581 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Stripe
5
+ # Invoices are statements of amounts owed by a customer, and are either
6
+ # generated one-off, or generated periodically from a subscription.
7
+ #
8
+ # They contain [invoice items](https://stripe.com/docs/api#invoiceitems), and proration adjustments
9
+ # that may be caused by subscription upgrades/downgrades (if necessary).
10
+ #
11
+ # If your invoice is configured to be billed through automatic charges,
12
+ # Stripe automatically finalizes your invoice and attempts payment. Note
13
+ # that finalizing the invoice,
14
+ # [when automatic](https://stripe.com/docs/invoicing/integration/automatic-advancement-collection), does
15
+ # not happen immediately as the invoice is created. Stripe waits
16
+ # until one hour after the last webhook was successfully sent (or the last
17
+ # webhook timed out after failing). If you (and the platforms you may have
18
+ # connected to) have no webhooks configured, Stripe waits one hour after
19
+ # creation to finalize the invoice.
20
+ #
21
+ # If your invoice is configured to be billed by sending an email, then based on your
22
+ # [email settings](https://dashboard.stripe.com/account/billing/automatic),
23
+ # Stripe will email the invoice to your customer and await payment. These
24
+ # emails can contain a link to a hosted page to pay the invoice.
25
+ #
26
+ # Stripe applies any customer credit on the account before determining the
27
+ # amount due for the invoice (i.e., the amount that will be actually
28
+ # charged). If the amount due for the invoice is less than Stripe's [minimum allowed charge
29
+ # per currency](https://docs.stripe.com/docs/currencies#minimum-and-maximum-charge-amounts), the
30
+ # invoice is automatically marked paid, and we add the amount due to the
31
+ # customer's credit balance which is applied to the next invoice.
32
+ #
33
+ # More details on the customer's credit balance are
34
+ # [here](https://stripe.com/docs/billing/customer/balance).
35
+ #
36
+ # Related guide: [Send invoices to customers](https://stripe.com/docs/billing/invoices/sending)
5
37
  class Invoice < APIResource
6
38
  extend Stripe::APIOperations::Create
7
39
  include Stripe::APIOperations::Delete
8
40
  extend Stripe::APIOperations::List
41
+ extend Stripe::APIOperations::NestedResource
42
+ extend Stripe::APIOperations::Search
9
43
  include Stripe::APIOperations::Save
10
44
 
11
45
  OBJECT_NAME = "invoice"
46
+ def self.object_name
47
+ "invoice"
48
+ end
49
+
50
+ nested_resource_class_methods :line, operations: %i[list]
51
+
52
+ class AutomaticTax < Stripe::StripeObject
53
+ class Liability < Stripe::StripeObject
54
+ # The connected account being referenced when `type` is `account`.
55
+ attr_reader :account
56
+ # Type of the account referenced.
57
+ attr_reader :type
58
+ end
59
+ # If Stripe disabled automatic tax, this enum describes why.
60
+ attr_reader :disabled_reason
61
+ # Whether Stripe automatically computes tax on this invoice. Note that incompatible invoice items (invoice items with manually specified [tax rates](https://stripe.com/docs/api/tax_rates), negative amounts, or `tax_behavior=unspecified`) cannot be added to automatic tax invoices.
62
+ attr_reader :enabled
63
+ # The account that's liable for tax. If set, the business address and tax registrations required to perform the tax calculation are loaded from this account. The tax transaction is returned in the report of the connected account.
64
+ attr_reader :liability
65
+ # The tax provider powering automatic tax.
66
+ attr_reader :provider
67
+ # The status of the most recent automated tax calculation for this invoice.
68
+ attr_reader :status
69
+ end
70
+
71
+ class ConfirmationSecret < Stripe::StripeObject
72
+ # The client_secret of the payment that Stripe creates for the invoice after finalization.
73
+ attr_reader :client_secret
74
+ # The type of client_secret. Currently this is always payment_intent, referencing the default payment_intent that Stripe creates during invoice finalization
75
+ attr_reader :type
76
+ end
77
+
78
+ class CustomField < Stripe::StripeObject
79
+ # The name of the custom field.
80
+ attr_reader :name
81
+ # The value of the custom field.
82
+ attr_reader :value
83
+ end
84
+
85
+ class CustomerAddress < Stripe::StripeObject
86
+ # City, district, suburb, town, or village.
87
+ attr_reader :city
88
+ # Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
89
+ attr_reader :country
90
+ # Address line 1 (e.g., street, PO Box, or company name).
91
+ attr_reader :line1
92
+ # Address line 2 (e.g., apartment, suite, unit, or building).
93
+ attr_reader :line2
94
+ # ZIP or postal code.
95
+ attr_reader :postal_code
96
+ # State, county, province, or region.
97
+ attr_reader :state
98
+ end
99
+
100
+ class CustomerShipping < Stripe::StripeObject
101
+ class Address < Stripe::StripeObject
102
+ # City, district, suburb, town, or village.
103
+ attr_reader :city
104
+ # Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
105
+ attr_reader :country
106
+ # Address line 1 (e.g., street, PO Box, or company name).
107
+ attr_reader :line1
108
+ # Address line 2 (e.g., apartment, suite, unit, or building).
109
+ attr_reader :line2
110
+ # ZIP or postal code.
111
+ attr_reader :postal_code
112
+ # State, county, province, or region.
113
+ attr_reader :state
114
+ end
115
+ # Attribute for field address
116
+ attr_reader :address
117
+ # The delivery service that shipped a physical product, such as Fedex, UPS, USPS, etc.
118
+ attr_reader :carrier
119
+ # Recipient name.
120
+ attr_reader :name
121
+ # Recipient phone (including extension).
122
+ attr_reader :phone
123
+ # The tracking number for a physical product, obtained from the delivery service. If multiple tracking numbers were generated for this purchase, please separate them with commas.
124
+ attr_reader :tracking_number
125
+ end
126
+
127
+ class CustomerTaxId < Stripe::StripeObject
128
+ # The type of the tax ID, one of `ad_nrt`, `ar_cuit`, `eu_vat`, `bo_tin`, `br_cnpj`, `br_cpf`, `cn_tin`, `co_nit`, `cr_tin`, `do_rcn`, `ec_ruc`, `eu_oss_vat`, `hr_oib`, `pe_ruc`, `ro_tin`, `rs_pib`, `sv_nit`, `uy_ruc`, `ve_rif`, `vn_tin`, `gb_vat`, `nz_gst`, `au_abn`, `au_arn`, `in_gst`, `no_vat`, `no_voec`, `za_vat`, `ch_vat`, `mx_rfc`, `sg_uen`, `ru_inn`, `ru_kpp`, `ca_bn`, `hk_br`, `es_cif`, `tw_vat`, `th_vat`, `jp_cn`, `jp_rn`, `jp_trn`, `li_uid`, `li_vat`, `my_itn`, `us_ein`, `kr_brn`, `ca_qst`, `ca_gst_hst`, `ca_pst_bc`, `ca_pst_mb`, `ca_pst_sk`, `my_sst`, `sg_gst`, `ae_trn`, `cl_tin`, `sa_vat`, `id_npwp`, `my_frp`, `il_vat`, `ge_vat`, `ua_vat`, `is_vat`, `bg_uic`, `hu_tin`, `si_tin`, `ke_pin`, `tr_tin`, `eg_tin`, `ph_tin`, `al_tin`, `bh_vat`, `kz_bin`, `ng_tin`, `om_vat`, `de_stn`, `ch_uid`, `tz_vat`, `uz_vat`, `uz_tin`, `md_vat`, `ma_vat`, `by_tin`, `ao_tin`, `bs_tin`, `bb_tin`, `cd_nif`, `mr_nif`, `me_pib`, `zw_tin`, `ba_tin`, `gn_nif`, `mk_vat`, `sr_fin`, `sn_ninea`, `am_tin`, `np_pan`, `tj_tin`, `ug_tin`, `zm_tin`, `kh_tin`, `aw_tin`, `az_tin`, `bd_bin`, `bj_ifu`, `et_tin`, `kg_tin`, `la_tin`, `cm_niu`, `cv_nif`, `bf_ifu`, or `unknown`
129
+ attr_reader :type
130
+ # The value of the tax ID.
131
+ attr_reader :value
132
+ end
133
+
134
+ class FromInvoice < Stripe::StripeObject
135
+ # The relation between this invoice and the cloned invoice
136
+ attr_reader :action
137
+ # The invoice that was cloned.
138
+ attr_reader :invoice
139
+ end
140
+
141
+ class Issuer < Stripe::StripeObject
142
+ # The connected account being referenced when `type` is `account`.
143
+ attr_reader :account
144
+ # Type of the account referenced.
145
+ attr_reader :type
146
+ end
147
+
148
+ class LastFinalizationError < Stripe::StripeObject
149
+ # For card errors resulting from a card issuer decline, a short string indicating [how to proceed with an error](https://stripe.com/docs/declines#retrying-issuer-declines) if they provide one.
150
+ attr_reader :advice_code
151
+ # For card errors, the ID of the failed charge.
152
+ attr_reader :charge
153
+ # For some errors that could be handled programmatically, a short string indicating the [error code](https://stripe.com/docs/error-codes) reported.
154
+ attr_reader :code
155
+ # For card errors resulting from a card issuer decline, a short string indicating the [card issuer's reason for the decline](https://stripe.com/docs/declines#issuer-declines) if they provide one.
156
+ attr_reader :decline_code
157
+ # A URL to more information about the [error code](https://stripe.com/docs/error-codes) reported.
158
+ attr_reader :doc_url
159
+ # A human-readable message providing more details about the error. For card errors, these messages can be shown to your users.
160
+ attr_reader :message
161
+ # For card errors resulting from a card issuer decline, a 2 digit code which indicates the advice given to merchant by the card network on how to proceed with an error.
162
+ attr_reader :network_advice_code
163
+ # For card errors resulting from a card issuer decline, a brand specific 2, 3, or 4 digit code which indicates the reason the authorization failed.
164
+ attr_reader :network_decline_code
165
+ # If the error is parameter-specific, the parameter related to the error. For example, you can use this to display a message near the correct form field.
166
+ attr_reader :param
167
+ # A PaymentIntent guides you through the process of collecting a payment from your customer.
168
+ # We recommend that you create exactly one PaymentIntent for each order or
169
+ # customer session in your system. You can reference the PaymentIntent later to
170
+ # see the history of payment attempts for a particular session.
171
+ #
172
+ # A PaymentIntent transitions through
173
+ # [multiple statuses](https://stripe.com/docs/payments/intents#intent-statuses)
174
+ # throughout its lifetime as it interfaces with Stripe.js to perform
175
+ # authentication flows and ultimately creates at most one successful charge.
176
+ #
177
+ # Related guide: [Payment Intents API](https://stripe.com/docs/payments/payment-intents)
178
+ attr_reader :payment_intent
179
+ # PaymentMethod objects represent your customer's payment instruments.
180
+ # You can use them with [PaymentIntents](https://stripe.com/docs/payments/payment-intents) to collect payments or save them to
181
+ # Customer objects to store instrument details for future payments.
182
+ #
183
+ # Related guides: [Payment Methods](https://stripe.com/docs/payments/payment-methods) and [More Payment Scenarios](https://stripe.com/docs/payments/more-payment-scenarios).
184
+ attr_reader :payment_method
185
+ # If the error is specific to the type of payment method, the payment method type that had a problem. This field is only populated for invoice-related errors.
186
+ attr_reader :payment_method_type
187
+ # A URL to the request log entry in your dashboard.
188
+ attr_reader :request_log_url
189
+ # A SetupIntent guides you through the process of setting up and saving a customer's payment credentials for future payments.
190
+ # For example, you can use a SetupIntent to set up and save your customer's card without immediately collecting a payment.
191
+ # Later, you can use [PaymentIntents](https://stripe.com/docs/api#payment_intents) to drive the payment flow.
192
+ #
193
+ # Create a SetupIntent when you're ready to collect your customer's payment credentials.
194
+ # Don't maintain long-lived, unconfirmed SetupIntents because they might not be valid.
195
+ # The SetupIntent transitions through multiple [statuses](https://docs.stripe.com/payments/intents#intent-statuses) as it guides
196
+ # you through the setup process.
197
+ #
198
+ # Successful SetupIntents result in payment credentials that are optimized for future payments.
199
+ # For example, cardholders in [certain regions](https://stripe.com/guides/strong-customer-authentication) might need to be run through
200
+ # [Strong Customer Authentication](https://docs.stripe.com/strong-customer-authentication) during payment method collection
201
+ # to streamline later [off-session payments](https://docs.stripe.com/payments/setup-intents).
202
+ # If you use the SetupIntent with a [Customer](https://stripe.com/docs/api#setup_intent_object-customer),
203
+ # it automatically attaches the resulting payment method to that Customer after successful setup.
204
+ # We recommend using SetupIntents or [setup_future_usage](https://stripe.com/docs/api#payment_intent_object-setup_future_usage) on
205
+ # PaymentIntents to save payment methods to prevent saving invalid or unoptimized payment methods.
206
+ #
207
+ # By using SetupIntents, you can reduce friction for your customers, even as regulations change over time.
208
+ #
209
+ # Related guide: [Setup Intents API](https://docs.stripe.com/payments/setup-intents)
210
+ attr_reader :setup_intent
211
+ # Attribute for field source
212
+ attr_reader :source
213
+ # The type of error returned. One of `api_error`, `card_error`, `idempotency_error`, or `invalid_request_error`
214
+ attr_reader :type
215
+ end
216
+
217
+ class Parent < Stripe::StripeObject
218
+ class QuoteDetails < Stripe::StripeObject
219
+ # The quote that generated this invoice
220
+ attr_reader :quote
221
+ end
222
+
223
+ class SubscriptionDetails < Stripe::StripeObject
224
+ # Set of [key-value pairs](https://stripe.com/docs/api/metadata) defined as subscription metadata when an invoice is created. Becomes an immutable snapshot of the subscription metadata at the time of invoice finalization.
225
+ # *Note: This attribute is populated only for invoices created on or after June 29, 2023.*
226
+ attr_reader :metadata
227
+ # The subscription that generated this invoice
228
+ attr_reader :subscription
229
+ # Only set for upcoming invoices that preview prorations. The time used to calculate prorations.
230
+ attr_reader :subscription_proration_date
231
+ end
232
+ # Details about the quote that generated this invoice
233
+ attr_reader :quote_details
234
+ # Details about the subscription that generated this invoice
235
+ attr_reader :subscription_details
236
+ # The type of parent that generated this invoice
237
+ attr_reader :type
238
+ end
239
+
240
+ class PaymentSettings < Stripe::StripeObject
241
+ class PaymentMethodOptions < Stripe::StripeObject
242
+ class AcssDebit < Stripe::StripeObject
243
+ class MandateOptions < Stripe::StripeObject
244
+ # Transaction type of the mandate.
245
+ attr_reader :transaction_type
246
+ end
247
+ # Attribute for field mandate_options
248
+ attr_reader :mandate_options
249
+ # Bank account verification method.
250
+ attr_reader :verification_method
251
+ end
252
+
253
+ class Bancontact < Stripe::StripeObject
254
+ # Preferred language of the Bancontact authorization page that the customer is redirected to.
255
+ attr_reader :preferred_language
256
+ end
257
+
258
+ class Card < Stripe::StripeObject
259
+ class Installments < Stripe::StripeObject
260
+ # Whether Installments are enabled for this Invoice.
261
+ attr_reader :enabled
262
+ end
263
+ # Attribute for field installments
264
+ attr_reader :installments
265
+ # We strongly recommend that you rely on our SCA Engine to automatically prompt your customers for authentication based on risk level and [other requirements](https://stripe.com/docs/strong-customer-authentication). However, if you wish to request 3D Secure based on logic from your own fraud engine, provide this option. Read our guide on [manually requesting 3D Secure](https://stripe.com/docs/payments/3d-secure/authentication-flow#manual-three-ds) for more information on how this configuration interacts with Radar and our SCA Engine.
266
+ attr_reader :request_three_d_secure
267
+ end
268
+
269
+ class CustomerBalance < Stripe::StripeObject
270
+ class BankTransfer < Stripe::StripeObject
271
+ class EuBankTransfer < Stripe::StripeObject
272
+ # The desired country code of the bank account information. Permitted values include: `BE`, `DE`, `ES`, `FR`, `IE`, or `NL`.
273
+ attr_reader :country
274
+ end
275
+ # Attribute for field eu_bank_transfer
276
+ attr_reader :eu_bank_transfer
277
+ # The bank transfer type that can be used for funding. Permitted values include: `eu_bank_transfer`, `gb_bank_transfer`, `jp_bank_transfer`, `mx_bank_transfer`, or `us_bank_transfer`.
278
+ attr_reader :type
279
+ end
280
+ # Attribute for field bank_transfer
281
+ attr_reader :bank_transfer
282
+ # The funding method type to be used when there are not enough funds in the customer balance. Permitted values include: `bank_transfer`.
283
+ attr_reader :funding_type
284
+ end
285
+
286
+ class Konbini < Stripe::StripeObject; end
287
+ class SepaDebit < Stripe::StripeObject; end
288
+
289
+ class UsBankAccount < Stripe::StripeObject
290
+ class FinancialConnections < Stripe::StripeObject
291
+ class Filters < Stripe::StripeObject
292
+ # The account subcategories to use to filter for possible accounts to link. Valid subcategories are `checking` and `savings`.
293
+ attr_reader :account_subcategories
294
+ end
295
+ # Attribute for field filters
296
+ attr_reader :filters
297
+ # The list of permissions to request. The `payment_method` permission must be included.
298
+ attr_reader :permissions
299
+ # Data features requested to be retrieved upon account creation.
300
+ attr_reader :prefetch
301
+ end
302
+ # Attribute for field financial_connections
303
+ attr_reader :financial_connections
304
+ # Bank account verification method.
305
+ attr_reader :verification_method
306
+ end
307
+ # If paying by `acss_debit`, this sub-hash contains details about the Canadian pre-authorized debit payment method options to pass to the invoice’s PaymentIntent.
308
+ attr_reader :acss_debit
309
+ # If paying by `bancontact`, this sub-hash contains details about the Bancontact payment method options to pass to the invoice’s PaymentIntent.
310
+ attr_reader :bancontact
311
+ # If paying by `card`, this sub-hash contains details about the Card payment method options to pass to the invoice’s PaymentIntent.
312
+ attr_reader :card
313
+ # If paying by `customer_balance`, this sub-hash contains details about the Bank transfer payment method options to pass to the invoice’s PaymentIntent.
314
+ attr_reader :customer_balance
315
+ # If paying by `konbini`, this sub-hash contains details about the Konbini payment method options to pass to the invoice’s PaymentIntent.
316
+ attr_reader :konbini
317
+ # If paying by `sepa_debit`, this sub-hash contains details about the SEPA Direct Debit payment method options to pass to the invoice’s PaymentIntent.
318
+ attr_reader :sepa_debit
319
+ # If paying by `us_bank_account`, this sub-hash contains details about the ACH direct debit payment method options to pass to the invoice’s PaymentIntent.
320
+ attr_reader :us_bank_account
321
+ end
322
+ # ID of the mandate to be used for this invoice. It must correspond to the payment method used to pay the invoice, including the invoice's default_payment_method or default_source, if set.
323
+ attr_reader :default_mandate
324
+ # Payment-method-specific configuration to provide to the invoice’s PaymentIntent.
325
+ attr_reader :payment_method_options
326
+ # The list of payment method types (e.g. card) to provide to the invoice’s PaymentIntent. If not set, Stripe attempts to automatically determine the types to use by looking at the invoice’s default payment method, the subscription’s default payment method, the customer’s default payment method, and your [invoice template settings](https://dashboard.stripe.com/settings/billing/invoice).
327
+ attr_reader :payment_method_types
328
+ end
329
+
330
+ class Rendering < Stripe::StripeObject
331
+ class Pdf < Stripe::StripeObject
332
+ # Page size of invoice pdf. Options include a4, letter, and auto. If set to auto, page size will be switched to a4 or letter based on customer locale.
333
+ attr_reader :page_size
334
+ end
335
+ # How line-item prices and amounts will be displayed with respect to tax on invoice PDFs.
336
+ attr_reader :amount_tax_display
337
+ # Invoice pdf rendering options
338
+ attr_reader :pdf
339
+ # ID of the rendering template that the invoice is formatted by.
340
+ attr_reader :template
341
+ # Version of the rendering template that the invoice is using.
342
+ attr_reader :template_version
343
+ end
344
+
345
+ class ShippingCost < Stripe::StripeObject
346
+ class Tax < Stripe::StripeObject
347
+ # Amount of tax applied for this rate.
348
+ attr_reader :amount
349
+ # Tax rates can be applied to [invoices](/invoicing/taxes/tax-rates), [subscriptions](/billing/taxes/tax-rates) and [Checkout Sessions](/payments/checkout/use-manual-tax-rates) to collect tax.
350
+ #
351
+ # Related guide: [Tax rates](/billing/taxes/tax-rates)
352
+ attr_reader :rate
353
+ # The reasoning behind this tax, for example, if the product is tax exempt. The possible values for this field may be extended as new tax rules are supported.
354
+ attr_reader :taxability_reason
355
+ # The amount on which tax is calculated, in cents (or local equivalent).
356
+ attr_reader :taxable_amount
357
+ end
358
+ # Total shipping cost before any taxes are applied.
359
+ attr_reader :amount_subtotal
360
+ # Total tax amount applied due to shipping costs. If no tax was applied, defaults to 0.
361
+ attr_reader :amount_tax
362
+ # Total shipping cost after taxes are applied.
363
+ attr_reader :amount_total
364
+ # The ID of the ShippingRate for this invoice.
365
+ attr_reader :shipping_rate
366
+ # The taxes applied to the shipping rate.
367
+ attr_reader :taxes
368
+ end
369
+
370
+ class ShippingDetails < Stripe::StripeObject
371
+ class Address < Stripe::StripeObject
372
+ # City, district, suburb, town, or village.
373
+ attr_reader :city
374
+ # Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
375
+ attr_reader :country
376
+ # Address line 1 (e.g., street, PO Box, or company name).
377
+ attr_reader :line1
378
+ # Address line 2 (e.g., apartment, suite, unit, or building).
379
+ attr_reader :line2
380
+ # ZIP or postal code.
381
+ attr_reader :postal_code
382
+ # State, county, province, or region.
383
+ attr_reader :state
384
+ end
385
+ # Attribute for field address
386
+ attr_reader :address
387
+ # The delivery service that shipped a physical product, such as Fedex, UPS, USPS, etc.
388
+ attr_reader :carrier
389
+ # Recipient name.
390
+ attr_reader :name
391
+ # Recipient phone (including extension).
392
+ attr_reader :phone
393
+ # The tracking number for a physical product, obtained from the delivery service. If multiple tracking numbers were generated for this purchase, please separate them with commas.
394
+ attr_reader :tracking_number
395
+ end
396
+
397
+ class StatusTransitions < Stripe::StripeObject
398
+ # The time that the invoice draft was finalized.
399
+ attr_reader :finalized_at
400
+ # The time that the invoice was marked uncollectible.
401
+ attr_reader :marked_uncollectible_at
402
+ # The time that the invoice was paid.
403
+ attr_reader :paid_at
404
+ # The time that the invoice was voided.
405
+ attr_reader :voided_at
406
+ end
407
+
408
+ class ThresholdReason < Stripe::StripeObject
409
+ class ItemReason < Stripe::StripeObject
410
+ # The IDs of the line items that triggered the threshold invoice.
411
+ attr_reader :line_item_ids
412
+ # The quantity threshold boundary that applied to the given line item.
413
+ attr_reader :usage_gte
414
+ end
415
+ # The total invoice amount threshold boundary if it triggered the threshold invoice.
416
+ attr_reader :amount_gte
417
+ # Indicates which line items triggered a threshold invoice.
418
+ attr_reader :item_reasons
419
+ end
420
+
421
+ class TotalDiscountAmount < Stripe::StripeObject
422
+ # The amount, in cents (or local equivalent), of the discount.
423
+ attr_reader :amount
424
+ # The discount that was applied to get this discount amount.
425
+ attr_reader :discount
426
+ end
427
+
428
+ class TotalPretaxCreditAmount < Stripe::StripeObject
429
+ # The amount, in cents (or local equivalent), of the pretax credit amount.
430
+ attr_reader :amount
431
+ # The credit balance transaction that was applied to get this pretax credit amount.
432
+ attr_reader :credit_balance_transaction
433
+ # The discount that was applied to get this pretax credit amount.
434
+ attr_reader :discount
435
+ # Type of the pretax credit amount referenced.
436
+ attr_reader :type
437
+ end
438
+
439
+ class TotalTax < Stripe::StripeObject
440
+ class TaxRateDetails < Stripe::StripeObject
441
+ # Attribute for field tax_rate
442
+ attr_reader :tax_rate
443
+ end
444
+ # The amount of the tax, in cents (or local equivalent).
445
+ attr_reader :amount
446
+ # Whether this tax is inclusive or exclusive.
447
+ attr_reader :tax_behavior
448
+ # Additional details about the tax rate. Only present when `type` is `tax_rate_details`.
449
+ attr_reader :tax_rate_details
450
+ # The reasoning behind this tax, for example, if the product is tax exempt. The possible values for this field may be extended as new tax rules are supported.
451
+ attr_reader :taxability_reason
452
+ # The amount on which tax is calculated, in cents (or local equivalent).
453
+ attr_reader :taxable_amount
454
+ # The type of tax information.
455
+ attr_reader :type
456
+ end
457
+
458
+ class DeleteParams < Stripe::RequestParams; end
459
+
460
+ class UpdateParams < Stripe::RequestParams
461
+ class AutomaticTax < Stripe::RequestParams
462
+ class Liability < Stripe::RequestParams
463
+ # The connected account being referenced when `type` is `account`.
464
+ attr_accessor :account
465
+ # Type of the account referenced in the request.
466
+ attr_accessor :type
467
+
468
+ def initialize(account: nil, type: nil)
469
+ @account = account
470
+ @type = type
471
+ end
472
+ end
473
+ # Whether Stripe automatically computes tax on this invoice. Note that incompatible invoice items (invoice items with manually specified [tax rates](https://stripe.com/docs/api/tax_rates), negative amounts, or `tax_behavior=unspecified`) cannot be added to automatic tax invoices.
474
+ attr_accessor :enabled
475
+ # The account that's liable for tax. If set, the business address and tax registrations required to perform the tax calculation are loaded from this account. The tax transaction is returned in the report of the connected account.
476
+ attr_accessor :liability
477
+
478
+ def initialize(enabled: nil, liability: nil)
479
+ @enabled = enabled
480
+ @liability = liability
481
+ end
482
+ end
483
+
484
+ class CustomField < Stripe::RequestParams
485
+ # The name of the custom field. This may be up to 40 characters.
486
+ attr_accessor :name
487
+ # The value of the custom field. This may be up to 140 characters.
488
+ attr_accessor :value
489
+
490
+ def initialize(name: nil, value: nil)
491
+ @name = name
492
+ @value = value
493
+ end
494
+ end
495
+
496
+ class Discount < Stripe::RequestParams
497
+ # ID of the coupon to create a new discount for.
498
+ attr_accessor :coupon
499
+ # ID of an existing discount on the object (or one of its ancestors) to reuse.
500
+ attr_accessor :discount
501
+ # ID of the promotion code to create a new discount for.
502
+ attr_accessor :promotion_code
503
+
504
+ def initialize(coupon: nil, discount: nil, promotion_code: nil)
505
+ @coupon = coupon
506
+ @discount = discount
507
+ @promotion_code = promotion_code
508
+ end
509
+ end
510
+
511
+ class Issuer < Stripe::RequestParams
512
+ # The connected account being referenced when `type` is `account`.
513
+ attr_accessor :account
514
+ # Type of the account referenced in the request.
515
+ attr_accessor :type
516
+
517
+ def initialize(account: nil, type: nil)
518
+ @account = account
519
+ @type = type
520
+ end
521
+ end
522
+
523
+ class PaymentSettings < Stripe::RequestParams
524
+ class PaymentMethodOptions < Stripe::RequestParams
525
+ class AcssDebit < Stripe::RequestParams
526
+ class MandateOptions < Stripe::RequestParams
527
+ # Transaction type of the mandate.
528
+ attr_accessor :transaction_type
529
+
530
+ def initialize(transaction_type: nil)
531
+ @transaction_type = transaction_type
532
+ end
533
+ end
534
+ # Additional fields for Mandate creation
535
+ attr_accessor :mandate_options
536
+ # Verification method for the intent
537
+ attr_accessor :verification_method
538
+
539
+ def initialize(mandate_options: nil, verification_method: nil)
540
+ @mandate_options = mandate_options
541
+ @verification_method = verification_method
542
+ end
543
+ end
544
+
545
+ class Bancontact < Stripe::RequestParams
546
+ # Preferred language of the Bancontact authorization page that the customer is redirected to.
547
+ attr_accessor :preferred_language
548
+
549
+ def initialize(preferred_language: nil)
550
+ @preferred_language = preferred_language
551
+ end
552
+ end
553
+
554
+ class Card < Stripe::RequestParams
555
+ class Installments < Stripe::RequestParams
556
+ class Plan < Stripe::RequestParams
557
+ # For `fixed_count` installment plans, this is required. It represents the number of installment payments your customer will make to their credit card.
558
+ attr_accessor :count
559
+ # For `fixed_count` installment plans, this is required. It represents the interval between installment payments your customer will make to their credit card.
560
+ # One of `month`.
561
+ attr_accessor :interval
562
+ # Type of installment plan, one of `fixed_count`.
563
+ attr_accessor :type
564
+
565
+ def initialize(count: nil, interval: nil, type: nil)
566
+ @count = count
567
+ @interval = interval
568
+ @type = type
569
+ end
570
+ end
571
+ # Setting to true enables installments for this invoice.
572
+ # Setting to false will prevent any selected plan from applying to a payment.
573
+ attr_accessor :enabled
574
+ # The selected installment plan to use for this invoice.
575
+ attr_accessor :plan
576
+
577
+ def initialize(enabled: nil, plan: nil)
578
+ @enabled = enabled
579
+ @plan = plan
580
+ end
581
+ end
582
+ # Installment configuration for payments attempted on this invoice (Mexico Only).
583
+ #
584
+ # For more information, see the [installments integration guide](https://stripe.com/docs/payments/installments).
585
+ attr_accessor :installments
586
+ # We strongly recommend that you rely on our SCA Engine to automatically prompt your customers for authentication based on risk level and [other requirements](https://stripe.com/docs/strong-customer-authentication). However, if you wish to request 3D Secure based on logic from your own fraud engine, provide this option. Read our guide on [manually requesting 3D Secure](https://stripe.com/docs/payments/3d-secure/authentication-flow#manual-three-ds) for more information on how this configuration interacts with Radar and our SCA Engine.
587
+ attr_accessor :request_three_d_secure
588
+
589
+ def initialize(installments: nil, request_three_d_secure: nil)
590
+ @installments = installments
591
+ @request_three_d_secure = request_three_d_secure
592
+ end
593
+ end
594
+
595
+ class CustomerBalance < Stripe::RequestParams
596
+ class BankTransfer < Stripe::RequestParams
597
+ class EuBankTransfer < Stripe::RequestParams
598
+ # The desired country code of the bank account information. Permitted values include: `BE`, `DE`, `ES`, `FR`, `IE`, or `NL`.
599
+ attr_accessor :country
600
+
601
+ def initialize(country: nil)
602
+ @country = country
603
+ end
604
+ end
605
+ # Configuration for eu_bank_transfer funding type.
606
+ attr_accessor :eu_bank_transfer
607
+ # The bank transfer type that can be used for funding. Permitted values include: `eu_bank_transfer`, `gb_bank_transfer`, `jp_bank_transfer`, `mx_bank_transfer`, or `us_bank_transfer`.
608
+ attr_accessor :type
609
+
610
+ def initialize(eu_bank_transfer: nil, type: nil)
611
+ @eu_bank_transfer = eu_bank_transfer
612
+ @type = type
613
+ end
614
+ end
615
+ # Configuration for the bank transfer funding type, if the `funding_type` is set to `bank_transfer`.
616
+ attr_accessor :bank_transfer
617
+ # The funding method type to be used when there are not enough funds in the customer balance. Permitted values include: `bank_transfer`.
618
+ attr_accessor :funding_type
619
+
620
+ def initialize(bank_transfer: nil, funding_type: nil)
621
+ @bank_transfer = bank_transfer
622
+ @funding_type = funding_type
623
+ end
624
+ end
625
+
626
+ class Konbini < Stripe::RequestParams; end
627
+ class SepaDebit < Stripe::RequestParams; end
628
+
629
+ class UsBankAccount < Stripe::RequestParams
630
+ class FinancialConnections < Stripe::RequestParams
631
+ class Filters < Stripe::RequestParams
632
+ # The account subcategories to use to filter for selectable accounts. Valid subcategories are `checking` and `savings`.
633
+ attr_accessor :account_subcategories
634
+
635
+ def initialize(account_subcategories: nil)
636
+ @account_subcategories = account_subcategories
637
+ end
638
+ end
639
+ # Provide filters for the linked accounts that the customer can select for the payment method.
640
+ attr_accessor :filters
641
+ # The list of permissions to request. If this parameter is passed, the `payment_method` permission must be included. Valid permissions include: `balances`, `ownership`, `payment_method`, and `transactions`.
642
+ attr_accessor :permissions
643
+ # List of data features that you would like to retrieve upon account creation.
644
+ attr_accessor :prefetch
645
+
646
+ def initialize(filters: nil, permissions: nil, prefetch: nil)
647
+ @filters = filters
648
+ @permissions = permissions
649
+ @prefetch = prefetch
650
+ end
651
+ end
652
+ # Additional fields for Financial Connections Session creation
653
+ attr_accessor :financial_connections
654
+ # Verification method for the intent
655
+ attr_accessor :verification_method
656
+
657
+ def initialize(financial_connections: nil, verification_method: nil)
658
+ @financial_connections = financial_connections
659
+ @verification_method = verification_method
660
+ end
661
+ end
662
+ # If paying by `acss_debit`, this sub-hash contains details about the Canadian pre-authorized debit payment method options to pass to the invoice’s PaymentIntent.
663
+ attr_accessor :acss_debit
664
+ # If paying by `bancontact`, this sub-hash contains details about the Bancontact payment method options to pass to the invoice’s PaymentIntent.
665
+ attr_accessor :bancontact
666
+ # If paying by `card`, this sub-hash contains details about the Card payment method options to pass to the invoice’s PaymentIntent.
667
+ attr_accessor :card
668
+ # If paying by `customer_balance`, this sub-hash contains details about the Bank transfer payment method options to pass to the invoice’s PaymentIntent.
669
+ attr_accessor :customer_balance
670
+ # If paying by `konbini`, this sub-hash contains details about the Konbini payment method options to pass to the invoice’s PaymentIntent.
671
+ attr_accessor :konbini
672
+ # If paying by `sepa_debit`, this sub-hash contains details about the SEPA Direct Debit payment method options to pass to the invoice’s PaymentIntent.
673
+ attr_accessor :sepa_debit
674
+ # If paying by `us_bank_account`, this sub-hash contains details about the ACH direct debit payment method options to pass to the invoice’s PaymentIntent.
675
+ attr_accessor :us_bank_account
676
+
677
+ def initialize(
678
+ acss_debit: nil,
679
+ bancontact: nil,
680
+ card: nil,
681
+ customer_balance: nil,
682
+ konbini: nil,
683
+ sepa_debit: nil,
684
+ us_bank_account: nil
685
+ )
686
+ @acss_debit = acss_debit
687
+ @bancontact = bancontact
688
+ @card = card
689
+ @customer_balance = customer_balance
690
+ @konbini = konbini
691
+ @sepa_debit = sepa_debit
692
+ @us_bank_account = us_bank_account
693
+ end
694
+ end
695
+ # ID of the mandate to be used for this invoice. It must correspond to the payment method used to pay the invoice, including the invoice's default_payment_method or default_source, if set.
696
+ attr_accessor :default_mandate
697
+ # Payment-method-specific configuration to provide to the invoice’s PaymentIntent.
698
+ attr_accessor :payment_method_options
699
+ # The list of payment method types (e.g. card) to provide to the invoice’s PaymentIntent. If not set, Stripe attempts to automatically determine the types to use by looking at the invoice’s default payment method, the subscription’s default payment method, the customer’s default payment method, and your [invoice template settings](https://dashboard.stripe.com/settings/billing/invoice). Should not be specified with payment_method_configuration
700
+ attr_accessor :payment_method_types
701
+
702
+ def initialize(default_mandate: nil, payment_method_options: nil, payment_method_types: nil)
703
+ @default_mandate = default_mandate
704
+ @payment_method_options = payment_method_options
705
+ @payment_method_types = payment_method_types
706
+ end
707
+ end
708
+
709
+ class Rendering < Stripe::RequestParams
710
+ class Pdf < Stripe::RequestParams
711
+ # Page size for invoice PDF. Can be set to `a4`, `letter`, or `auto`.
712
+ # If set to `auto`, invoice PDF page size defaults to `a4` for customers with
713
+ # Japanese locale and `letter` for customers with other locales.
714
+ attr_accessor :page_size
715
+
716
+ def initialize(page_size: nil)
717
+ @page_size = page_size
718
+ end
719
+ end
720
+ # How line-item prices and amounts will be displayed with respect to tax on invoice PDFs. One of `exclude_tax` or `include_inclusive_tax`. `include_inclusive_tax` will include inclusive tax (and exclude exclusive tax) in invoice PDF amounts. `exclude_tax` will exclude all tax (inclusive and exclusive alike) from invoice PDF amounts.
721
+ attr_accessor :amount_tax_display
722
+ # Invoice pdf rendering options
723
+ attr_accessor :pdf
724
+ # ID of the invoice rendering template to use for this invoice.
725
+ attr_accessor :template
726
+ # The specific version of invoice rendering template to use for this invoice.
727
+ attr_accessor :template_version
728
+
729
+ def initialize(amount_tax_display: nil, pdf: nil, template: nil, template_version: nil)
730
+ @amount_tax_display = amount_tax_display
731
+ @pdf = pdf
732
+ @template = template
733
+ @template_version = template_version
734
+ end
735
+ end
736
+
737
+ class ShippingCost < Stripe::RequestParams
738
+ class ShippingRateData < Stripe::RequestParams
739
+ class DeliveryEstimate < Stripe::RequestParams
740
+ class Maximum < Stripe::RequestParams
741
+ # A unit of time.
742
+ attr_accessor :unit
743
+ # Must be greater than 0.
744
+ attr_accessor :value
745
+
746
+ def initialize(unit: nil, value: nil)
747
+ @unit = unit
748
+ @value = value
749
+ end
750
+ end
751
+
752
+ class Minimum < Stripe::RequestParams
753
+ # A unit of time.
754
+ attr_accessor :unit
755
+ # Must be greater than 0.
756
+ attr_accessor :value
757
+
758
+ def initialize(unit: nil, value: nil)
759
+ @unit = unit
760
+ @value = value
761
+ end
762
+ end
763
+ # The upper bound of the estimated range. If empty, represents no upper bound i.e., infinite.
764
+ attr_accessor :maximum
765
+ # The lower bound of the estimated range. If empty, represents no lower bound.
766
+ attr_accessor :minimum
767
+
768
+ def initialize(maximum: nil, minimum: nil)
769
+ @maximum = maximum
770
+ @minimum = minimum
771
+ end
772
+ end
773
+
774
+ class FixedAmount < Stripe::RequestParams
775
+ class CurrencyOptions < Stripe::RequestParams
776
+ # A non-negative integer in cents representing how much to charge.
777
+ attr_accessor :amount
778
+ # Specifies whether the rate is considered inclusive of taxes or exclusive of taxes. One of `inclusive`, `exclusive`, or `unspecified`.
779
+ attr_accessor :tax_behavior
780
+
781
+ def initialize(amount: nil, tax_behavior: nil)
782
+ @amount = amount
783
+ @tax_behavior = tax_behavior
784
+ end
785
+ end
786
+ # A non-negative integer in cents representing how much to charge.
787
+ attr_accessor :amount
788
+ # Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).
789
+ attr_accessor :currency
790
+ # Shipping rates defined in each available currency option. Each key must be a three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html) and a [supported currency](https://stripe.com/docs/currencies).
791
+ attr_accessor :currency_options
792
+
793
+ def initialize(amount: nil, currency: nil, currency_options: nil)
794
+ @amount = amount
795
+ @currency = currency
796
+ @currency_options = currency_options
797
+ end
798
+ end
799
+ # The estimated range for how long shipping will take, meant to be displayable to the customer. This will appear on CheckoutSessions.
800
+ attr_accessor :delivery_estimate
801
+ # The name of the shipping rate, meant to be displayable to the customer. This will appear on CheckoutSessions.
802
+ attr_accessor :display_name
803
+ # Describes a fixed amount to charge for shipping. Must be present if type is `fixed_amount`.
804
+ attr_accessor :fixed_amount
805
+ # 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`.
806
+ attr_accessor :metadata
807
+ # Specifies whether the rate is considered inclusive of taxes or exclusive of taxes. One of `inclusive`, `exclusive`, or `unspecified`.
808
+ attr_accessor :tax_behavior
809
+ # A [tax code](https://stripe.com/docs/tax/tax-categories) ID. The Shipping tax code is `txcd_92010001`.
810
+ attr_accessor :tax_code
811
+ # The type of calculation to use on the shipping rate.
812
+ attr_accessor :type
813
+
814
+ def initialize(
815
+ delivery_estimate: nil,
816
+ display_name: nil,
817
+ fixed_amount: nil,
818
+ metadata: nil,
819
+ tax_behavior: nil,
820
+ tax_code: nil,
821
+ type: nil
822
+ )
823
+ @delivery_estimate = delivery_estimate
824
+ @display_name = display_name
825
+ @fixed_amount = fixed_amount
826
+ @metadata = metadata
827
+ @tax_behavior = tax_behavior
828
+ @tax_code = tax_code
829
+ @type = type
830
+ end
831
+ end
832
+ # The ID of the shipping rate to use for this order.
833
+ attr_accessor :shipping_rate
834
+ # Parameters to create a new ad-hoc shipping rate for this order.
835
+ attr_accessor :shipping_rate_data
836
+
837
+ def initialize(shipping_rate: nil, shipping_rate_data: nil)
838
+ @shipping_rate = shipping_rate
839
+ @shipping_rate_data = shipping_rate_data
840
+ end
841
+ end
842
+
843
+ class ShippingDetails < Stripe::RequestParams
844
+ class Address < Stripe::RequestParams
845
+ # City, district, suburb, town, or village.
846
+ attr_accessor :city
847
+ # Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
848
+ attr_accessor :country
849
+ # Address line 1 (e.g., street, PO Box, or company name).
850
+ attr_accessor :line1
851
+ # Address line 2 (e.g., apartment, suite, unit, or building).
852
+ attr_accessor :line2
853
+ # ZIP or postal code.
854
+ attr_accessor :postal_code
855
+ # State, county, province, or region.
856
+ attr_accessor :state
857
+
858
+ def initialize(
859
+ city: nil,
860
+ country: nil,
861
+ line1: nil,
862
+ line2: nil,
863
+ postal_code: nil,
864
+ state: nil
865
+ )
866
+ @city = city
867
+ @country = country
868
+ @line1 = line1
869
+ @line2 = line2
870
+ @postal_code = postal_code
871
+ @state = state
872
+ end
873
+ end
874
+ # Shipping address
875
+ attr_accessor :address
876
+ # Recipient name.
877
+ attr_accessor :name
878
+ # Recipient phone (including extension)
879
+ attr_accessor :phone
880
+
881
+ def initialize(address: nil, name: nil, phone: nil)
882
+ @address = address
883
+ @name = name
884
+ @phone = phone
885
+ end
886
+ end
887
+
888
+ class TransferData < Stripe::RequestParams
889
+ # The amount that will be transferred automatically when the invoice is paid. If no amount is set, the full amount is transferred.
890
+ attr_accessor :amount
891
+ # ID of an existing, connected Stripe account.
892
+ attr_accessor :destination
893
+
894
+ def initialize(amount: nil, destination: nil)
895
+ @amount = amount
896
+ @destination = destination
897
+ end
898
+ end
899
+ # The account tax IDs associated with the invoice. Only editable when the invoice is a draft.
900
+ attr_accessor :account_tax_ids
901
+ # A fee in cents (or local equivalent) that will be applied to the invoice and transferred to the application owner's Stripe account. The request must be made with an OAuth key or the Stripe-Account header in order to take an application fee. For more information, see the application fees [documentation](https://stripe.com/docs/billing/invoices/connect#collecting-fees).
902
+ attr_accessor :application_fee_amount
903
+ # Controls whether Stripe performs [automatic collection](https://stripe.com/docs/invoicing/integration/automatic-advancement-collection) of the invoice.
904
+ attr_accessor :auto_advance
905
+ # Settings for automatic tax lookup for this invoice.
906
+ attr_accessor :automatic_tax
907
+ # The time when this invoice should be scheduled to finalize. The invoice will be finalized at this time if it is still in draft state. To turn off automatic finalization, set `auto_advance` to false.
908
+ attr_accessor :automatically_finalizes_at
909
+ # Either `charge_automatically` or `send_invoice`. This field can be updated only on `draft` invoices.
910
+ attr_accessor :collection_method
911
+ # A list of up to 4 custom fields to be displayed on the invoice. If a value for `custom_fields` is specified, the list specified will replace the existing custom field list on this invoice. Pass an empty string to remove previously-defined fields.
912
+ attr_accessor :custom_fields
913
+ # The number of days from which the invoice is created until it is due. Only valid for invoices where `collection_method=send_invoice`. This field can only be updated on `draft` invoices.
914
+ attr_accessor :days_until_due
915
+ # ID of the default payment method for the invoice. It must belong to the customer associated with the invoice. If not set, defaults to the subscription's default payment method, if any, or to the default payment method in the customer's invoice settings.
916
+ attr_accessor :default_payment_method
917
+ # ID of the default payment source for the invoice. It must belong to the customer associated with the invoice and be in a chargeable state. If not set, defaults to the subscription's default source, if any, or to the customer's default source.
918
+ attr_accessor :default_source
919
+ # The tax rates that will apply to any line item that does not have `tax_rates` set. Pass an empty string to remove previously-defined tax rates.
920
+ attr_accessor :default_tax_rates
921
+ # An arbitrary string attached to the object. Often useful for displaying to users. Referenced as 'memo' in the Dashboard.
922
+ attr_accessor :description
923
+ # The discounts that will apply to the invoice. Pass an empty string to remove previously-defined discounts.
924
+ attr_accessor :discounts
925
+ # The date on which payment for this invoice is due. Only valid for invoices where `collection_method=send_invoice`. This field can only be updated on `draft` invoices.
926
+ attr_accessor :due_date
927
+ # The date when this invoice is in effect. Same as `finalized_at` unless overwritten. When defined, this value replaces the system-generated 'Date of issue' printed on the invoice PDF and receipt.
928
+ attr_accessor :effective_at
929
+ # Specifies which fields in the response should be expanded.
930
+ attr_accessor :expand
931
+ # Footer to be displayed on the invoice.
932
+ attr_accessor :footer
933
+ # The connected account that issues the invoice. The invoice is presented with the branding and support information of the specified account.
934
+ attr_accessor :issuer
935
+ # 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`.
936
+ attr_accessor :metadata
937
+ # Set the number for this invoice. If no number is present then a number will be assigned automatically when the invoice is finalized. In many markets, regulations require invoices to be unique, sequential and / or gapless. You are responsible for ensuring this is true across all your different invoicing systems in the event that you edit the invoice number using our API. If you use only Stripe for your invoices and do not change invoice numbers, Stripe handles this aspect of compliance for you automatically.
938
+ attr_accessor :number
939
+ # The account (if any) for which the funds of the invoice payment are intended. If set, the invoice will be presented with the branding and support information of the specified account. See the [Invoices with Connect](https://stripe.com/docs/billing/invoices/connect) documentation for details.
940
+ attr_accessor :on_behalf_of
941
+ # Configuration settings for the PaymentIntent that is generated when the invoice is finalized.
942
+ attr_accessor :payment_settings
943
+ # The rendering-related settings that control how the invoice is displayed on customer-facing surfaces such as PDF and Hosted Invoice Page.
944
+ attr_accessor :rendering
945
+ # Settings for the cost of shipping for this invoice.
946
+ attr_accessor :shipping_cost
947
+ # Shipping details for the invoice. The Invoice PDF will use the `shipping_details` value if it is set, otherwise the PDF will render the shipping address from the customer.
948
+ attr_accessor :shipping_details
949
+ # Extra information about a charge for the customer's credit card statement. It must contain at least one letter. If not specified and this invoice is part of a subscription, the default `statement_descriptor` will be set to the first subscription item's product's `statement_descriptor`.
950
+ attr_accessor :statement_descriptor
951
+ # If specified, the funds from the invoice will be transferred to the destination and the ID of the resulting transfer will be found on the invoice's charge. This will be unset if you POST an empty value.
952
+ attr_accessor :transfer_data
953
+
954
+ def initialize(
955
+ account_tax_ids: nil,
956
+ application_fee_amount: nil,
957
+ auto_advance: nil,
958
+ automatic_tax: nil,
959
+ automatically_finalizes_at: nil,
960
+ collection_method: nil,
961
+ custom_fields: nil,
962
+ days_until_due: nil,
963
+ default_payment_method: nil,
964
+ default_source: nil,
965
+ default_tax_rates: nil,
966
+ description: nil,
967
+ discounts: nil,
968
+ due_date: nil,
969
+ effective_at: nil,
970
+ expand: nil,
971
+ footer: nil,
972
+ issuer: nil,
973
+ metadata: nil,
974
+ number: nil,
975
+ on_behalf_of: nil,
976
+ payment_settings: nil,
977
+ rendering: nil,
978
+ shipping_cost: nil,
979
+ shipping_details: nil,
980
+ statement_descriptor: nil,
981
+ transfer_data: nil
982
+ )
983
+ @account_tax_ids = account_tax_ids
984
+ @application_fee_amount = application_fee_amount
985
+ @auto_advance = auto_advance
986
+ @automatic_tax = automatic_tax
987
+ @automatically_finalizes_at = automatically_finalizes_at
988
+ @collection_method = collection_method
989
+ @custom_fields = custom_fields
990
+ @days_until_due = days_until_due
991
+ @default_payment_method = default_payment_method
992
+ @default_source = default_source
993
+ @default_tax_rates = default_tax_rates
994
+ @description = description
995
+ @discounts = discounts
996
+ @due_date = due_date
997
+ @effective_at = effective_at
998
+ @expand = expand
999
+ @footer = footer
1000
+ @issuer = issuer
1001
+ @metadata = metadata
1002
+ @number = number
1003
+ @on_behalf_of = on_behalf_of
1004
+ @payment_settings = payment_settings
1005
+ @rendering = rendering
1006
+ @shipping_cost = shipping_cost
1007
+ @shipping_details = shipping_details
1008
+ @statement_descriptor = statement_descriptor
1009
+ @transfer_data = transfer_data
1010
+ end
1011
+ end
1012
+
1013
+ class ListParams < Stripe::RequestParams
1014
+ class Created < Stripe::RequestParams
1015
+ # Minimum value to filter by (exclusive)
1016
+ attr_accessor :gt
1017
+ # Minimum value to filter by (inclusive)
1018
+ attr_accessor :gte
1019
+ # Maximum value to filter by (exclusive)
1020
+ attr_accessor :lt
1021
+ # Maximum value to filter by (inclusive)
1022
+ attr_accessor :lte
1023
+
1024
+ def initialize(gt: nil, gte: nil, lt: nil, lte: nil)
1025
+ @gt = gt
1026
+ @gte = gte
1027
+ @lt = lt
1028
+ @lte = lte
1029
+ end
1030
+ end
1031
+
1032
+ class DueDate < Stripe::RequestParams
1033
+ # Minimum value to filter by (exclusive)
1034
+ attr_accessor :gt
1035
+ # Minimum value to filter by (inclusive)
1036
+ attr_accessor :gte
1037
+ # Maximum value to filter by (exclusive)
1038
+ attr_accessor :lt
1039
+ # Maximum value to filter by (inclusive)
1040
+ attr_accessor :lte
1041
+
1042
+ def initialize(gt: nil, gte: nil, lt: nil, lte: nil)
1043
+ @gt = gt
1044
+ @gte = gte
1045
+ @lt = lt
1046
+ @lte = lte
1047
+ end
1048
+ end
1049
+ # The collection method of the invoice to retrieve. Either `charge_automatically` or `send_invoice`.
1050
+ attr_accessor :collection_method
1051
+ # Only return invoices that were created during the given date interval.
1052
+ attr_accessor :created
1053
+ # Only return invoices for the customer specified by this customer ID.
1054
+ attr_accessor :customer
1055
+ # Attribute for param field due_date
1056
+ attr_accessor :due_date
1057
+ # A cursor for use in pagination. `ending_before` is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, starting with `obj_bar`, your subsequent call can include `ending_before=obj_bar` in order to fetch the previous page of the list.
1058
+ attr_accessor :ending_before
1059
+ # Specifies which fields in the response should be expanded.
1060
+ attr_accessor :expand
1061
+ # A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.
1062
+ attr_accessor :limit
1063
+ # A cursor for use in pagination. `starting_after` is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with `obj_foo`, your subsequent call can include `starting_after=obj_foo` in order to fetch the next page of the list.
1064
+ attr_accessor :starting_after
1065
+ # The status of the invoice, one of `draft`, `open`, `paid`, `uncollectible`, or `void`. [Learn more](https://stripe.com/docs/billing/invoices/workflow#workflow-overview)
1066
+ attr_accessor :status
1067
+ # Only return invoices for the subscription specified by this subscription ID.
1068
+ attr_accessor :subscription
1069
+
1070
+ def initialize(
1071
+ collection_method: nil,
1072
+ created: nil,
1073
+ customer: nil,
1074
+ due_date: nil,
1075
+ ending_before: nil,
1076
+ expand: nil,
1077
+ limit: nil,
1078
+ starting_after: nil,
1079
+ status: nil,
1080
+ subscription: nil
1081
+ )
1082
+ @collection_method = collection_method
1083
+ @created = created
1084
+ @customer = customer
1085
+ @due_date = due_date
1086
+ @ending_before = ending_before
1087
+ @expand = expand
1088
+ @limit = limit
1089
+ @starting_after = starting_after
1090
+ @status = status
1091
+ @subscription = subscription
1092
+ end
1093
+ end
1094
+
1095
+ class CreateParams < Stripe::RequestParams
1096
+ class AutomaticTax < Stripe::RequestParams
1097
+ class Liability < Stripe::RequestParams
1098
+ # The connected account being referenced when `type` is `account`.
1099
+ attr_accessor :account
1100
+ # Type of the account referenced in the request.
1101
+ attr_accessor :type
1102
+
1103
+ def initialize(account: nil, type: nil)
1104
+ @account = account
1105
+ @type = type
1106
+ end
1107
+ end
1108
+ # Whether Stripe automatically computes tax on this invoice. Note that incompatible invoice items (invoice items with manually specified [tax rates](https://stripe.com/docs/api/tax_rates), negative amounts, or `tax_behavior=unspecified`) cannot be added to automatic tax invoices.
1109
+ attr_accessor :enabled
1110
+ # The account that's liable for tax. If set, the business address and tax registrations required to perform the tax calculation are loaded from this account. The tax transaction is returned in the report of the connected account.
1111
+ attr_accessor :liability
1112
+
1113
+ def initialize(enabled: nil, liability: nil)
1114
+ @enabled = enabled
1115
+ @liability = liability
1116
+ end
1117
+ end
1118
+
1119
+ class CustomField < Stripe::RequestParams
1120
+ # The name of the custom field. This may be up to 40 characters.
1121
+ attr_accessor :name
1122
+ # The value of the custom field. This may be up to 140 characters.
1123
+ attr_accessor :value
1124
+
1125
+ def initialize(name: nil, value: nil)
1126
+ @name = name
1127
+ @value = value
1128
+ end
1129
+ end
1130
+
1131
+ class Discount < Stripe::RequestParams
1132
+ # ID of the coupon to create a new discount for.
1133
+ attr_accessor :coupon
1134
+ # ID of an existing discount on the object (or one of its ancestors) to reuse.
1135
+ attr_accessor :discount
1136
+ # ID of the promotion code to create a new discount for.
1137
+ attr_accessor :promotion_code
1138
+
1139
+ def initialize(coupon: nil, discount: nil, promotion_code: nil)
1140
+ @coupon = coupon
1141
+ @discount = discount
1142
+ @promotion_code = promotion_code
1143
+ end
1144
+ end
1145
+
1146
+ class FromInvoice < Stripe::RequestParams
1147
+ # The relation between the new invoice and the original invoice. Currently, only 'revision' is permitted
1148
+ attr_accessor :action
1149
+ # The `id` of the invoice that will be cloned.
1150
+ attr_accessor :invoice
1151
+
1152
+ def initialize(action: nil, invoice: nil)
1153
+ @action = action
1154
+ @invoice = invoice
1155
+ end
1156
+ end
1157
+
1158
+ class Issuer < Stripe::RequestParams
1159
+ # The connected account being referenced when `type` is `account`.
1160
+ attr_accessor :account
1161
+ # Type of the account referenced in the request.
1162
+ attr_accessor :type
1163
+
1164
+ def initialize(account: nil, type: nil)
1165
+ @account = account
1166
+ @type = type
1167
+ end
1168
+ end
1169
+
1170
+ class PaymentSettings < Stripe::RequestParams
1171
+ class PaymentMethodOptions < Stripe::RequestParams
1172
+ class AcssDebit < Stripe::RequestParams
1173
+ class MandateOptions < Stripe::RequestParams
1174
+ # Transaction type of the mandate.
1175
+ attr_accessor :transaction_type
1176
+
1177
+ def initialize(transaction_type: nil)
1178
+ @transaction_type = transaction_type
1179
+ end
1180
+ end
1181
+ # Additional fields for Mandate creation
1182
+ attr_accessor :mandate_options
1183
+ # Verification method for the intent
1184
+ attr_accessor :verification_method
1185
+
1186
+ def initialize(mandate_options: nil, verification_method: nil)
1187
+ @mandate_options = mandate_options
1188
+ @verification_method = verification_method
1189
+ end
1190
+ end
1191
+
1192
+ class Bancontact < Stripe::RequestParams
1193
+ # Preferred language of the Bancontact authorization page that the customer is redirected to.
1194
+ attr_accessor :preferred_language
1195
+
1196
+ def initialize(preferred_language: nil)
1197
+ @preferred_language = preferred_language
1198
+ end
1199
+ end
1200
+
1201
+ class Card < Stripe::RequestParams
1202
+ class Installments < Stripe::RequestParams
1203
+ class Plan < Stripe::RequestParams
1204
+ # For `fixed_count` installment plans, this is required. It represents the number of installment payments your customer will make to their credit card.
1205
+ attr_accessor :count
1206
+ # For `fixed_count` installment plans, this is required. It represents the interval between installment payments your customer will make to their credit card.
1207
+ # One of `month`.
1208
+ attr_accessor :interval
1209
+ # Type of installment plan, one of `fixed_count`.
1210
+ attr_accessor :type
1211
+
1212
+ def initialize(count: nil, interval: nil, type: nil)
1213
+ @count = count
1214
+ @interval = interval
1215
+ @type = type
1216
+ end
1217
+ end
1218
+ # Setting to true enables installments for this invoice.
1219
+ # Setting to false will prevent any selected plan from applying to a payment.
1220
+ attr_accessor :enabled
1221
+ # The selected installment plan to use for this invoice.
1222
+ attr_accessor :plan
1223
+
1224
+ def initialize(enabled: nil, plan: nil)
1225
+ @enabled = enabled
1226
+ @plan = plan
1227
+ end
1228
+ end
1229
+ # Installment configuration for payments attempted on this invoice (Mexico Only).
1230
+ #
1231
+ # For more information, see the [installments integration guide](https://stripe.com/docs/payments/installments).
1232
+ attr_accessor :installments
1233
+ # We strongly recommend that you rely on our SCA Engine to automatically prompt your customers for authentication based on risk level and [other requirements](https://stripe.com/docs/strong-customer-authentication). However, if you wish to request 3D Secure based on logic from your own fraud engine, provide this option. Read our guide on [manually requesting 3D Secure](https://stripe.com/docs/payments/3d-secure/authentication-flow#manual-three-ds) for more information on how this configuration interacts with Radar and our SCA Engine.
1234
+ attr_accessor :request_three_d_secure
1235
+
1236
+ def initialize(installments: nil, request_three_d_secure: nil)
1237
+ @installments = installments
1238
+ @request_three_d_secure = request_three_d_secure
1239
+ end
1240
+ end
1241
+
1242
+ class CustomerBalance < Stripe::RequestParams
1243
+ class BankTransfer < Stripe::RequestParams
1244
+ class EuBankTransfer < Stripe::RequestParams
1245
+ # The desired country code of the bank account information. Permitted values include: `BE`, `DE`, `ES`, `FR`, `IE`, or `NL`.
1246
+ attr_accessor :country
1247
+
1248
+ def initialize(country: nil)
1249
+ @country = country
1250
+ end
1251
+ end
1252
+ # Configuration for eu_bank_transfer funding type.
1253
+ attr_accessor :eu_bank_transfer
1254
+ # The bank transfer type that can be used for funding. Permitted values include: `eu_bank_transfer`, `gb_bank_transfer`, `jp_bank_transfer`, `mx_bank_transfer`, or `us_bank_transfer`.
1255
+ attr_accessor :type
1256
+
1257
+ def initialize(eu_bank_transfer: nil, type: nil)
1258
+ @eu_bank_transfer = eu_bank_transfer
1259
+ @type = type
1260
+ end
1261
+ end
1262
+ # Configuration for the bank transfer funding type, if the `funding_type` is set to `bank_transfer`.
1263
+ attr_accessor :bank_transfer
1264
+ # The funding method type to be used when there are not enough funds in the customer balance. Permitted values include: `bank_transfer`.
1265
+ attr_accessor :funding_type
1266
+
1267
+ def initialize(bank_transfer: nil, funding_type: nil)
1268
+ @bank_transfer = bank_transfer
1269
+ @funding_type = funding_type
1270
+ end
1271
+ end
1272
+
1273
+ class Konbini < Stripe::RequestParams; end
1274
+ class SepaDebit < Stripe::RequestParams; end
1275
+
1276
+ class UsBankAccount < Stripe::RequestParams
1277
+ class FinancialConnections < Stripe::RequestParams
1278
+ class Filters < Stripe::RequestParams
1279
+ # The account subcategories to use to filter for selectable accounts. Valid subcategories are `checking` and `savings`.
1280
+ attr_accessor :account_subcategories
1281
+
1282
+ def initialize(account_subcategories: nil)
1283
+ @account_subcategories = account_subcategories
1284
+ end
1285
+ end
1286
+ # Provide filters for the linked accounts that the customer can select for the payment method.
1287
+ attr_accessor :filters
1288
+ # The list of permissions to request. If this parameter is passed, the `payment_method` permission must be included. Valid permissions include: `balances`, `ownership`, `payment_method`, and `transactions`.
1289
+ attr_accessor :permissions
1290
+ # List of data features that you would like to retrieve upon account creation.
1291
+ attr_accessor :prefetch
1292
+
1293
+ def initialize(filters: nil, permissions: nil, prefetch: nil)
1294
+ @filters = filters
1295
+ @permissions = permissions
1296
+ @prefetch = prefetch
1297
+ end
1298
+ end
1299
+ # Additional fields for Financial Connections Session creation
1300
+ attr_accessor :financial_connections
1301
+ # Verification method for the intent
1302
+ attr_accessor :verification_method
1303
+
1304
+ def initialize(financial_connections: nil, verification_method: nil)
1305
+ @financial_connections = financial_connections
1306
+ @verification_method = verification_method
1307
+ end
1308
+ end
1309
+ # If paying by `acss_debit`, this sub-hash contains details about the Canadian pre-authorized debit payment method options to pass to the invoice’s PaymentIntent.
1310
+ attr_accessor :acss_debit
1311
+ # If paying by `bancontact`, this sub-hash contains details about the Bancontact payment method options to pass to the invoice’s PaymentIntent.
1312
+ attr_accessor :bancontact
1313
+ # If paying by `card`, this sub-hash contains details about the Card payment method options to pass to the invoice’s PaymentIntent.
1314
+ attr_accessor :card
1315
+ # If paying by `customer_balance`, this sub-hash contains details about the Bank transfer payment method options to pass to the invoice’s PaymentIntent.
1316
+ attr_accessor :customer_balance
1317
+ # If paying by `konbini`, this sub-hash contains details about the Konbini payment method options to pass to the invoice’s PaymentIntent.
1318
+ attr_accessor :konbini
1319
+ # If paying by `sepa_debit`, this sub-hash contains details about the SEPA Direct Debit payment method options to pass to the invoice’s PaymentIntent.
1320
+ attr_accessor :sepa_debit
1321
+ # If paying by `us_bank_account`, this sub-hash contains details about the ACH direct debit payment method options to pass to the invoice’s PaymentIntent.
1322
+ attr_accessor :us_bank_account
1323
+
1324
+ def initialize(
1325
+ acss_debit: nil,
1326
+ bancontact: nil,
1327
+ card: nil,
1328
+ customer_balance: nil,
1329
+ konbini: nil,
1330
+ sepa_debit: nil,
1331
+ us_bank_account: nil
1332
+ )
1333
+ @acss_debit = acss_debit
1334
+ @bancontact = bancontact
1335
+ @card = card
1336
+ @customer_balance = customer_balance
1337
+ @konbini = konbini
1338
+ @sepa_debit = sepa_debit
1339
+ @us_bank_account = us_bank_account
1340
+ end
1341
+ end
1342
+ # ID of the mandate to be used for this invoice. It must correspond to the payment method used to pay the invoice, including the invoice's default_payment_method or default_source, if set.
1343
+ attr_accessor :default_mandate
1344
+ # Payment-method-specific configuration to provide to the invoice’s PaymentIntent.
1345
+ attr_accessor :payment_method_options
1346
+ # The list of payment method types (e.g. card) to provide to the invoice’s PaymentIntent. If not set, Stripe attempts to automatically determine the types to use by looking at the invoice’s default payment method, the subscription’s default payment method, the customer’s default payment method, and your [invoice template settings](https://dashboard.stripe.com/settings/billing/invoice). Should not be specified with payment_method_configuration
1347
+ attr_accessor :payment_method_types
1348
+
1349
+ def initialize(default_mandate: nil, payment_method_options: nil, payment_method_types: nil)
1350
+ @default_mandate = default_mandate
1351
+ @payment_method_options = payment_method_options
1352
+ @payment_method_types = payment_method_types
1353
+ end
1354
+ end
1355
+
1356
+ class Rendering < Stripe::RequestParams
1357
+ class Pdf < Stripe::RequestParams
1358
+ # Page size for invoice PDF. Can be set to `a4`, `letter`, or `auto`.
1359
+ # If set to `auto`, invoice PDF page size defaults to `a4` for customers with
1360
+ # Japanese locale and `letter` for customers with other locales.
1361
+ attr_accessor :page_size
1362
+
1363
+ def initialize(page_size: nil)
1364
+ @page_size = page_size
1365
+ end
1366
+ end
1367
+ # How line-item prices and amounts will be displayed with respect to tax on invoice PDFs. One of `exclude_tax` or `include_inclusive_tax`. `include_inclusive_tax` will include inclusive tax (and exclude exclusive tax) in invoice PDF amounts. `exclude_tax` will exclude all tax (inclusive and exclusive alike) from invoice PDF amounts.
1368
+ attr_accessor :amount_tax_display
1369
+ # Invoice pdf rendering options
1370
+ attr_accessor :pdf
1371
+ # ID of the invoice rendering template to use for this invoice.
1372
+ attr_accessor :template
1373
+ # The specific version of invoice rendering template to use for this invoice.
1374
+ attr_accessor :template_version
1375
+
1376
+ def initialize(amount_tax_display: nil, pdf: nil, template: nil, template_version: nil)
1377
+ @amount_tax_display = amount_tax_display
1378
+ @pdf = pdf
1379
+ @template = template
1380
+ @template_version = template_version
1381
+ end
1382
+ end
1383
+
1384
+ class ShippingCost < Stripe::RequestParams
1385
+ class ShippingRateData < Stripe::RequestParams
1386
+ class DeliveryEstimate < Stripe::RequestParams
1387
+ class Maximum < Stripe::RequestParams
1388
+ # A unit of time.
1389
+ attr_accessor :unit
1390
+ # Must be greater than 0.
1391
+ attr_accessor :value
1392
+
1393
+ def initialize(unit: nil, value: nil)
1394
+ @unit = unit
1395
+ @value = value
1396
+ end
1397
+ end
1398
+
1399
+ class Minimum < Stripe::RequestParams
1400
+ # A unit of time.
1401
+ attr_accessor :unit
1402
+ # Must be greater than 0.
1403
+ attr_accessor :value
1404
+
1405
+ def initialize(unit: nil, value: nil)
1406
+ @unit = unit
1407
+ @value = value
1408
+ end
1409
+ end
1410
+ # The upper bound of the estimated range. If empty, represents no upper bound i.e., infinite.
1411
+ attr_accessor :maximum
1412
+ # The lower bound of the estimated range. If empty, represents no lower bound.
1413
+ attr_accessor :minimum
1414
+
1415
+ def initialize(maximum: nil, minimum: nil)
1416
+ @maximum = maximum
1417
+ @minimum = minimum
1418
+ end
1419
+ end
1420
+
1421
+ class FixedAmount < Stripe::RequestParams
1422
+ class CurrencyOptions < Stripe::RequestParams
1423
+ # A non-negative integer in cents representing how much to charge.
1424
+ attr_accessor :amount
1425
+ # Specifies whether the rate is considered inclusive of taxes or exclusive of taxes. One of `inclusive`, `exclusive`, or `unspecified`.
1426
+ attr_accessor :tax_behavior
1427
+
1428
+ def initialize(amount: nil, tax_behavior: nil)
1429
+ @amount = amount
1430
+ @tax_behavior = tax_behavior
1431
+ end
1432
+ end
1433
+ # A non-negative integer in cents representing how much to charge.
1434
+ attr_accessor :amount
1435
+ # Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).
1436
+ attr_accessor :currency
1437
+ # Shipping rates defined in each available currency option. Each key must be a three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html) and a [supported currency](https://stripe.com/docs/currencies).
1438
+ attr_accessor :currency_options
1439
+
1440
+ def initialize(amount: nil, currency: nil, currency_options: nil)
1441
+ @amount = amount
1442
+ @currency = currency
1443
+ @currency_options = currency_options
1444
+ end
1445
+ end
1446
+ # The estimated range for how long shipping will take, meant to be displayable to the customer. This will appear on CheckoutSessions.
1447
+ attr_accessor :delivery_estimate
1448
+ # The name of the shipping rate, meant to be displayable to the customer. This will appear on CheckoutSessions.
1449
+ attr_accessor :display_name
1450
+ # Describes a fixed amount to charge for shipping. Must be present if type is `fixed_amount`.
1451
+ attr_accessor :fixed_amount
1452
+ # 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`.
1453
+ attr_accessor :metadata
1454
+ # Specifies whether the rate is considered inclusive of taxes or exclusive of taxes. One of `inclusive`, `exclusive`, or `unspecified`.
1455
+ attr_accessor :tax_behavior
1456
+ # A [tax code](https://stripe.com/docs/tax/tax-categories) ID. The Shipping tax code is `txcd_92010001`.
1457
+ attr_accessor :tax_code
1458
+ # The type of calculation to use on the shipping rate.
1459
+ attr_accessor :type
1460
+
1461
+ def initialize(
1462
+ delivery_estimate: nil,
1463
+ display_name: nil,
1464
+ fixed_amount: nil,
1465
+ metadata: nil,
1466
+ tax_behavior: nil,
1467
+ tax_code: nil,
1468
+ type: nil
1469
+ )
1470
+ @delivery_estimate = delivery_estimate
1471
+ @display_name = display_name
1472
+ @fixed_amount = fixed_amount
1473
+ @metadata = metadata
1474
+ @tax_behavior = tax_behavior
1475
+ @tax_code = tax_code
1476
+ @type = type
1477
+ end
1478
+ end
1479
+ # The ID of the shipping rate to use for this order.
1480
+ attr_accessor :shipping_rate
1481
+ # Parameters to create a new ad-hoc shipping rate for this order.
1482
+ attr_accessor :shipping_rate_data
1483
+
1484
+ def initialize(shipping_rate: nil, shipping_rate_data: nil)
1485
+ @shipping_rate = shipping_rate
1486
+ @shipping_rate_data = shipping_rate_data
1487
+ end
1488
+ end
1489
+
1490
+ class ShippingDetails < Stripe::RequestParams
1491
+ class Address < Stripe::RequestParams
1492
+ # City, district, suburb, town, or village.
1493
+ attr_accessor :city
1494
+ # Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
1495
+ attr_accessor :country
1496
+ # Address line 1 (e.g., street, PO Box, or company name).
1497
+ attr_accessor :line1
1498
+ # Address line 2 (e.g., apartment, suite, unit, or building).
1499
+ attr_accessor :line2
1500
+ # ZIP or postal code.
1501
+ attr_accessor :postal_code
1502
+ # State, county, province, or region.
1503
+ attr_accessor :state
1504
+
1505
+ def initialize(
1506
+ city: nil,
1507
+ country: nil,
1508
+ line1: nil,
1509
+ line2: nil,
1510
+ postal_code: nil,
1511
+ state: nil
1512
+ )
1513
+ @city = city
1514
+ @country = country
1515
+ @line1 = line1
1516
+ @line2 = line2
1517
+ @postal_code = postal_code
1518
+ @state = state
1519
+ end
1520
+ end
1521
+ # Shipping address
1522
+ attr_accessor :address
1523
+ # Recipient name.
1524
+ attr_accessor :name
1525
+ # Recipient phone (including extension)
1526
+ attr_accessor :phone
1527
+
1528
+ def initialize(address: nil, name: nil, phone: nil)
1529
+ @address = address
1530
+ @name = name
1531
+ @phone = phone
1532
+ end
1533
+ end
1534
+
1535
+ class TransferData < Stripe::RequestParams
1536
+ # The amount that will be transferred automatically when the invoice is paid. If no amount is set, the full amount is transferred.
1537
+ attr_accessor :amount
1538
+ # ID of an existing, connected Stripe account.
1539
+ attr_accessor :destination
1540
+
1541
+ def initialize(amount: nil, destination: nil)
1542
+ @amount = amount
1543
+ @destination = destination
1544
+ end
1545
+ end
1546
+ # The account tax IDs associated with the invoice. Only editable when the invoice is a draft.
1547
+ attr_accessor :account_tax_ids
1548
+ # A fee in cents (or local equivalent) that will be applied to the invoice and transferred to the application owner's Stripe account. The request must be made with an OAuth key or the Stripe-Account header in order to take an application fee. For more information, see the application fees [documentation](https://stripe.com/docs/billing/invoices/connect#collecting-fees).
1549
+ attr_accessor :application_fee_amount
1550
+ # Controls whether Stripe performs [automatic collection](https://stripe.com/docs/invoicing/integration/automatic-advancement-collection) of the invoice. If `false`, the invoice's state doesn't automatically advance without an explicit action.
1551
+ attr_accessor :auto_advance
1552
+ # Settings for automatic tax lookup for this invoice.
1553
+ attr_accessor :automatic_tax
1554
+ # The time when this invoice should be scheduled to finalize. The invoice will be finalized at this time if it is still in draft state.
1555
+ attr_accessor :automatically_finalizes_at
1556
+ # Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay this invoice using the default source attached to the customer. When sending an invoice, Stripe will email this invoice to the customer with payment instructions. Defaults to `charge_automatically`.
1557
+ attr_accessor :collection_method
1558
+ # The currency to create this invoice in. Defaults to that of `customer` if not specified.
1559
+ attr_accessor :currency
1560
+ # A list of up to 4 custom fields to be displayed on the invoice.
1561
+ attr_accessor :custom_fields
1562
+ # The ID of the customer who will be billed.
1563
+ attr_accessor :customer
1564
+ # The number of days from when the invoice is created until it is due. Valid only for invoices where `collection_method=send_invoice`.
1565
+ attr_accessor :days_until_due
1566
+ # ID of the default payment method for the invoice. It must belong to the customer associated with the invoice. If not set, defaults to the subscription's default payment method, if any, or to the default payment method in the customer's invoice settings.
1567
+ attr_accessor :default_payment_method
1568
+ # ID of the default payment source for the invoice. It must belong to the customer associated with the invoice and be in a chargeable state. If not set, defaults to the subscription's default source, if any, or to the customer's default source.
1569
+ attr_accessor :default_source
1570
+ # The tax rates that will apply to any line item that does not have `tax_rates` set.
1571
+ attr_accessor :default_tax_rates
1572
+ # An arbitrary string attached to the object. Often useful for displaying to users. Referenced as 'memo' in the Dashboard.
1573
+ attr_accessor :description
1574
+ # The coupons and promotion codes to redeem into discounts for the invoice. If not specified, inherits the discount from the invoice's customer. Pass an empty string to avoid inheriting any discounts.
1575
+ attr_accessor :discounts
1576
+ # The date on which payment for this invoice is due. Valid only for invoices where `collection_method=send_invoice`.
1577
+ attr_accessor :due_date
1578
+ # The date when this invoice is in effect. Same as `finalized_at` unless overwritten. When defined, this value replaces the system-generated 'Date of issue' printed on the invoice PDF and receipt.
1579
+ attr_accessor :effective_at
1580
+ # Specifies which fields in the response should be expanded.
1581
+ attr_accessor :expand
1582
+ # Footer to be displayed on the invoice.
1583
+ attr_accessor :footer
1584
+ # Revise an existing invoice. The new invoice will be created in `status=draft`. See the [revision documentation](https://stripe.com/docs/invoicing/invoice-revisions) for more details.
1585
+ attr_accessor :from_invoice
1586
+ # The connected account that issues the invoice. The invoice is presented with the branding and support information of the specified account.
1587
+ attr_accessor :issuer
1588
+ # 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`.
1589
+ attr_accessor :metadata
1590
+ # Set the number for this invoice. If no number is present then a number will be assigned automatically when the invoice is finalized. In many markets, regulations require invoices to be unique, sequential and / or gapless. You are responsible for ensuring this is true across all your different invoicing systems in the event that you edit the invoice number using our API. If you use only Stripe for your invoices and do not change invoice numbers, Stripe handles this aspect of compliance for you automatically.
1591
+ attr_accessor :number
1592
+ # The account (if any) for which the funds of the invoice payment are intended. If set, the invoice will be presented with the branding and support information of the specified account. See the [Invoices with Connect](https://stripe.com/docs/billing/invoices/connect) documentation for details.
1593
+ attr_accessor :on_behalf_of
1594
+ # Configuration settings for the PaymentIntent that is generated when the invoice is finalized.
1595
+ attr_accessor :payment_settings
1596
+ # How to handle pending invoice items on invoice creation. Defaults to `exclude` if the parameter is omitted.
1597
+ attr_accessor :pending_invoice_items_behavior
1598
+ # The rendering-related settings that control how the invoice is displayed on customer-facing surfaces such as PDF and Hosted Invoice Page.
1599
+ attr_accessor :rendering
1600
+ # Settings for the cost of shipping for this invoice.
1601
+ attr_accessor :shipping_cost
1602
+ # Shipping details for the invoice. The Invoice PDF will use the `shipping_details` value if it is set, otherwise the PDF will render the shipping address from the customer.
1603
+ attr_accessor :shipping_details
1604
+ # Extra information about a charge for the customer's credit card statement. It must contain at least one letter. If not specified and this invoice is part of a subscription, the default `statement_descriptor` will be set to the first subscription item's product's `statement_descriptor`.
1605
+ attr_accessor :statement_descriptor
1606
+ # The ID of the subscription to invoice, if any. If set, the created invoice will only include pending invoice items for that subscription. The subscription's billing cycle and regular subscription events won't be affected.
1607
+ attr_accessor :subscription
1608
+ # If specified, the funds from the invoice will be transferred to the destination and the ID of the resulting transfer will be found on the invoice's charge.
1609
+ attr_accessor :transfer_data
1610
+
1611
+ def initialize(
1612
+ account_tax_ids: nil,
1613
+ application_fee_amount: nil,
1614
+ auto_advance: nil,
1615
+ automatic_tax: nil,
1616
+ automatically_finalizes_at: nil,
1617
+ collection_method: nil,
1618
+ currency: nil,
1619
+ custom_fields: nil,
1620
+ customer: nil,
1621
+ days_until_due: nil,
1622
+ default_payment_method: nil,
1623
+ default_source: nil,
1624
+ default_tax_rates: nil,
1625
+ description: nil,
1626
+ discounts: nil,
1627
+ due_date: nil,
1628
+ effective_at: nil,
1629
+ expand: nil,
1630
+ footer: nil,
1631
+ from_invoice: nil,
1632
+ issuer: nil,
1633
+ metadata: nil,
1634
+ number: nil,
1635
+ on_behalf_of: nil,
1636
+ payment_settings: nil,
1637
+ pending_invoice_items_behavior: nil,
1638
+ rendering: nil,
1639
+ shipping_cost: nil,
1640
+ shipping_details: nil,
1641
+ statement_descriptor: nil,
1642
+ subscription: nil,
1643
+ transfer_data: nil
1644
+ )
1645
+ @account_tax_ids = account_tax_ids
1646
+ @application_fee_amount = application_fee_amount
1647
+ @auto_advance = auto_advance
1648
+ @automatic_tax = automatic_tax
1649
+ @automatically_finalizes_at = automatically_finalizes_at
1650
+ @collection_method = collection_method
1651
+ @currency = currency
1652
+ @custom_fields = custom_fields
1653
+ @customer = customer
1654
+ @days_until_due = days_until_due
1655
+ @default_payment_method = default_payment_method
1656
+ @default_source = default_source
1657
+ @default_tax_rates = default_tax_rates
1658
+ @description = description
1659
+ @discounts = discounts
1660
+ @due_date = due_date
1661
+ @effective_at = effective_at
1662
+ @expand = expand
1663
+ @footer = footer
1664
+ @from_invoice = from_invoice
1665
+ @issuer = issuer
1666
+ @metadata = metadata
1667
+ @number = number
1668
+ @on_behalf_of = on_behalf_of
1669
+ @payment_settings = payment_settings
1670
+ @pending_invoice_items_behavior = pending_invoice_items_behavior
1671
+ @rendering = rendering
1672
+ @shipping_cost = shipping_cost
1673
+ @shipping_details = shipping_details
1674
+ @statement_descriptor = statement_descriptor
1675
+ @subscription = subscription
1676
+ @transfer_data = transfer_data
1677
+ end
1678
+ end
1679
+
1680
+ class SearchParams < Stripe::RequestParams
1681
+ # Specifies which fields in the response should be expanded.
1682
+ attr_accessor :expand
1683
+ # A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.
1684
+ attr_accessor :limit
1685
+ # A cursor for pagination across multiple pages of results. Don't include this parameter on the first call. Use the next_page value returned in a previous response to request subsequent results.
1686
+ attr_accessor :page
1687
+ # The search query string. See [search query language](https://stripe.com/docs/search#search-query-language) and the list of supported [query fields for invoices](https://stripe.com/docs/search#query-fields-for-invoices).
1688
+ attr_accessor :query
1689
+
1690
+ def initialize(expand: nil, limit: nil, page: nil, query: nil)
1691
+ @expand = expand
1692
+ @limit = limit
1693
+ @page = page
1694
+ @query = query
1695
+ end
1696
+ end
1697
+
1698
+ class AddLinesParams < Stripe::RequestParams
1699
+ class Line < Stripe::RequestParams
1700
+ class Discount < Stripe::RequestParams
1701
+ # ID of the coupon to create a new discount for.
1702
+ attr_accessor :coupon
1703
+ # ID of an existing discount on the object (or one of its ancestors) to reuse.
1704
+ attr_accessor :discount
1705
+ # ID of the promotion code to create a new discount for.
1706
+ attr_accessor :promotion_code
1707
+
1708
+ def initialize(coupon: nil, discount: nil, promotion_code: nil)
1709
+ @coupon = coupon
1710
+ @discount = discount
1711
+ @promotion_code = promotion_code
1712
+ end
1713
+ end
1714
+
1715
+ class Period < Stripe::RequestParams
1716
+ # The end of the period, which must be greater than or equal to the start. This value is inclusive.
1717
+ attr_accessor :end
1718
+ # The start of the period. This value is inclusive.
1719
+ attr_accessor :start
1720
+
1721
+ def initialize(end_: nil, start: nil)
1722
+ @end = end_
1723
+ @start = start
1724
+ end
1725
+ end
1726
+
1727
+ class PriceData < Stripe::RequestParams
1728
+ class ProductData < Stripe::RequestParams
1729
+ # The product's description, meant to be displayable to the customer. Use this field to optionally store a long form explanation of the product being sold for your own rendering purposes.
1730
+ attr_accessor :description
1731
+ # A list of up to 8 URLs of images for this product, meant to be displayable to the customer.
1732
+ attr_accessor :images
1733
+ # 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`.
1734
+ attr_accessor :metadata
1735
+ # The product's name, meant to be displayable to the customer.
1736
+ attr_accessor :name
1737
+ # A [tax code](https://stripe.com/docs/tax/tax-categories) ID.
1738
+ attr_accessor :tax_code
1739
+
1740
+ def initialize(description: nil, images: nil, metadata: nil, name: nil, tax_code: nil)
1741
+ @description = description
1742
+ @images = images
1743
+ @metadata = metadata
1744
+ @name = name
1745
+ @tax_code = tax_code
1746
+ end
1747
+ end
1748
+ # Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).
1749
+ attr_accessor :currency
1750
+ # The ID of the [Product](https://docs.stripe.com/api/products) that this [Price](https://docs.stripe.com/api/prices) will belong to. One of `product` or `product_data` is required.
1751
+ attr_accessor :product
1752
+ # Data used to generate a new [Product](https://docs.stripe.com/api/products) object inline. One of `product` or `product_data` is required.
1753
+ attr_accessor :product_data
1754
+ # Only required if a [default tax behavior](https://stripe.com/docs/tax/products-prices-tax-categories-tax-behavior#setting-a-default-tax-behavior-(recommended)) was not provided in the Stripe Tax settings. Specifies whether the price is considered inclusive of taxes or exclusive of taxes. One of `inclusive`, `exclusive`, or `unspecified`. Once specified as either `inclusive` or `exclusive`, it cannot be changed.
1755
+ attr_accessor :tax_behavior
1756
+ # A non-negative integer in cents (or local equivalent) representing how much to charge. One of `unit_amount` or `unit_amount_decimal` is required.
1757
+ attr_accessor :unit_amount
1758
+ # Same as `unit_amount`, but accepts a decimal value in cents (or local equivalent) with at most 12 decimal places. Only one of `unit_amount` and `unit_amount_decimal` can be set.
1759
+ attr_accessor :unit_amount_decimal
1760
+
1761
+ def initialize(
1762
+ currency: nil,
1763
+ product: nil,
1764
+ product_data: nil,
1765
+ tax_behavior: nil,
1766
+ unit_amount: nil,
1767
+ unit_amount_decimal: nil
1768
+ )
1769
+ @currency = currency
1770
+ @product = product
1771
+ @product_data = product_data
1772
+ @tax_behavior = tax_behavior
1773
+ @unit_amount = unit_amount
1774
+ @unit_amount_decimal = unit_amount_decimal
1775
+ end
1776
+ end
1777
+
1778
+ class Pricing < Stripe::RequestParams
1779
+ # The ID of the price object.
1780
+ attr_accessor :price
1781
+
1782
+ def initialize(price: nil)
1783
+ @price = price
1784
+ end
1785
+ end
1786
+
1787
+ class TaxAmount < Stripe::RequestParams
1788
+ class TaxRateData < Stripe::RequestParams
1789
+ # Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
1790
+ attr_accessor :country
1791
+ # An arbitrary string attached to the tax rate for your internal use only. It will not be visible to your customers.
1792
+ attr_accessor :description
1793
+ # The display name of the tax rate, which will be shown to users.
1794
+ attr_accessor :display_name
1795
+ # This specifies if the tax rate is inclusive or exclusive.
1796
+ attr_accessor :inclusive
1797
+ # The jurisdiction for the tax rate. You can use this label field for tax reporting purposes. It also appears on your customer’s invoice.
1798
+ attr_accessor :jurisdiction
1799
+ # The level of the jurisdiction that imposes this tax rate.
1800
+ attr_accessor :jurisdiction_level
1801
+ # The statutory tax rate percent. This field accepts decimal values between 0 and 100 inclusive with at most 4 decimal places. To accommodate fixed-amount taxes, set the percentage to zero. Stripe will not display zero percentages on the invoice unless the `amount` of the tax is also zero.
1802
+ attr_accessor :percentage
1803
+ # [ISO 3166-2 subdivision code](https://en.wikipedia.org/wiki/ISO_3166-2:US), without country prefix. For example, "NY" for New York, United States.
1804
+ attr_accessor :state
1805
+ # The high-level tax type, such as `vat` or `sales_tax`.
1806
+ attr_accessor :tax_type
1807
+
1808
+ def initialize(
1809
+ country: nil,
1810
+ description: nil,
1811
+ display_name: nil,
1812
+ inclusive: nil,
1813
+ jurisdiction: nil,
1814
+ jurisdiction_level: nil,
1815
+ percentage: nil,
1816
+ state: nil,
1817
+ tax_type: nil
1818
+ )
1819
+ @country = country
1820
+ @description = description
1821
+ @display_name = display_name
1822
+ @inclusive = inclusive
1823
+ @jurisdiction = jurisdiction
1824
+ @jurisdiction_level = jurisdiction_level
1825
+ @percentage = percentage
1826
+ @state = state
1827
+ @tax_type = tax_type
1828
+ end
1829
+ end
1830
+ # The amount, in cents (or local equivalent), of the tax.
1831
+ attr_accessor :amount
1832
+ # Data to find or create a TaxRate object.
1833
+ #
1834
+ # Stripe automatically creates or reuses a TaxRate object for each tax amount. If the `tax_rate_data` exactly matches a previous value, Stripe will reuse the TaxRate object. TaxRate objects created automatically by Stripe are immediately archived, do not appear in the line item’s `tax_rates`, and cannot be directly added to invoices, payments, or line items.
1835
+ attr_accessor :tax_rate_data
1836
+ # The reasoning behind this tax, for example, if the product is tax exempt.
1837
+ attr_accessor :taxability_reason
1838
+ # The amount on which tax is calculated, in cents (or local equivalent).
1839
+ attr_accessor :taxable_amount
1840
+
1841
+ def initialize(
1842
+ amount: nil,
1843
+ tax_rate_data: nil,
1844
+ taxability_reason: nil,
1845
+ taxable_amount: nil
1846
+ )
1847
+ @amount = amount
1848
+ @tax_rate_data = tax_rate_data
1849
+ @taxability_reason = taxability_reason
1850
+ @taxable_amount = taxable_amount
1851
+ end
1852
+ end
1853
+ # The integer amount in cents (or local equivalent) of the charge to be applied to the upcoming invoice. If you want to apply a credit to the customer's account, pass a negative amount.
1854
+ attr_accessor :amount
1855
+ # An arbitrary string which you can attach to the invoice item. The description is displayed in the invoice for easy tracking.
1856
+ attr_accessor :description
1857
+ # Controls whether discounts apply to this line item. Defaults to false for prorations or negative line items, and true for all other line items. Cannot be set to true for prorations.
1858
+ attr_accessor :discountable
1859
+ # The coupons, promotion codes & existing discounts which apply to the line item. Item discounts are applied before invoice discounts. Pass an empty string to remove previously-defined discounts.
1860
+ attr_accessor :discounts
1861
+ # ID of an unassigned invoice item to assign to this invoice. If not provided, a new item will be created.
1862
+ attr_accessor :invoice_item
1863
+ # 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`.
1864
+ attr_accessor :metadata
1865
+ # The period associated with this invoice item. When set to different values, the period will be rendered on the invoice. If you have [Stripe Revenue Recognition](https://stripe.com/docs/revenue-recognition) enabled, the period will be used to recognize and defer revenue. See the [Revenue Recognition documentation](https://stripe.com/docs/revenue-recognition/methodology/subscriptions-and-invoicing) for details.
1866
+ attr_accessor :period
1867
+ # Data used to generate a new [Price](https://stripe.com/docs/api/prices) object inline.
1868
+ attr_accessor :price_data
1869
+ # The pricing information for the invoice item.
1870
+ attr_accessor :pricing
1871
+ # Non-negative integer. The quantity of units for the line item.
1872
+ attr_accessor :quantity
1873
+ # A list of up to 10 tax amounts for this line item. This can be useful if you calculate taxes on your own or use a third-party to calculate them. You cannot set tax amounts if any line item has [tax_rates](https://stripe.com/docs/api/invoices/line_item#invoice_line_item_object-tax_rates) or if the invoice has [default_tax_rates](https://stripe.com/docs/api/invoices/object#invoice_object-default_tax_rates) or uses [automatic tax](https://stripe.com/docs/tax/invoicing). Pass an empty string to remove previously defined tax amounts.
1874
+ attr_accessor :tax_amounts
1875
+ # The tax rates which apply to the line item. When set, the `default_tax_rates` on the invoice do not apply to this line item. Pass an empty string to remove previously-defined tax rates.
1876
+ attr_accessor :tax_rates
1877
+
1878
+ def initialize(
1879
+ amount: nil,
1880
+ description: nil,
1881
+ discountable: nil,
1882
+ discounts: nil,
1883
+ invoice_item: nil,
1884
+ metadata: nil,
1885
+ period: nil,
1886
+ price_data: nil,
1887
+ pricing: nil,
1888
+ quantity: nil,
1889
+ tax_amounts: nil,
1890
+ tax_rates: nil
1891
+ )
1892
+ @amount = amount
1893
+ @description = description
1894
+ @discountable = discountable
1895
+ @discounts = discounts
1896
+ @invoice_item = invoice_item
1897
+ @metadata = metadata
1898
+ @period = period
1899
+ @price_data = price_data
1900
+ @pricing = pricing
1901
+ @quantity = quantity
1902
+ @tax_amounts = tax_amounts
1903
+ @tax_rates = tax_rates
1904
+ end
1905
+ end
1906
+ # Specifies which fields in the response should be expanded.
1907
+ attr_accessor :expand
1908
+ # 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`.
1909
+ attr_accessor :invoice_metadata
1910
+ # The line items to add.
1911
+ attr_accessor :lines
1912
+
1913
+ def initialize(expand: nil, invoice_metadata: nil, lines: nil)
1914
+ @expand = expand
1915
+ @invoice_metadata = invoice_metadata
1916
+ @lines = lines
1917
+ end
1918
+ end
1919
+
1920
+ class AttachPaymentParams < Stripe::RequestParams
1921
+ # Specifies which fields in the response should be expanded.
1922
+ attr_accessor :expand
1923
+ # The ID of the PaymentIntent to attach to the invoice.
1924
+ attr_accessor :payment_intent
1925
+
1926
+ def initialize(expand: nil, payment_intent: nil)
1927
+ @expand = expand
1928
+ @payment_intent = payment_intent
1929
+ end
1930
+ end
1931
+
1932
+ class FinalizeInvoiceParams < Stripe::RequestParams
1933
+ # Controls whether Stripe performs [automatic collection](https://stripe.com/docs/invoicing/integration/automatic-advancement-collection) of the invoice. If `false`, the invoice's state doesn't automatically advance without an explicit action.
1934
+ attr_accessor :auto_advance
1935
+ # Specifies which fields in the response should be expanded.
1936
+ attr_accessor :expand
1937
+
1938
+ def initialize(auto_advance: nil, expand: nil)
1939
+ @auto_advance = auto_advance
1940
+ @expand = expand
1941
+ end
1942
+ end
1943
+
1944
+ class MarkUncollectibleParams < Stripe::RequestParams
1945
+ # Specifies which fields in the response should be expanded.
1946
+ attr_accessor :expand
1947
+
1948
+ def initialize(expand: nil)
1949
+ @expand = expand
1950
+ end
1951
+ end
1952
+
1953
+ class PayParams < Stripe::RequestParams
1954
+ # Specifies which fields in the response should be expanded.
1955
+ attr_accessor :expand
1956
+ # In cases where the source used to pay the invoice has insufficient funds, passing `forgive=true` controls whether a charge should be attempted for the full amount available on the source, up to the amount to fully pay the invoice. This effectively forgives the difference between the amount available on the source and the amount due.
1957
+ #
1958
+ # Passing `forgive=false` will fail the charge if the source hasn't been pre-funded with the right amount. An example for this case is with ACH Credit Transfers and wires: if the amount wired is less than the amount due by a small amount, you might want to forgive the difference. Defaults to `false`.
1959
+ attr_accessor :forgive
1960
+ # ID of the mandate to be used for this invoice. It must correspond to the payment method used to pay the invoice, including the payment_method param or the invoice's default_payment_method or default_source, if set.
1961
+ attr_accessor :mandate
1962
+ # Indicates if a customer is on or off-session while an invoice payment is attempted. Defaults to `true` (off-session).
1963
+ attr_accessor :off_session
1964
+ # Boolean representing whether an invoice is paid outside of Stripe. This will result in no charge being made. Defaults to `false`.
1965
+ attr_accessor :paid_out_of_band
1966
+ # A PaymentMethod to be charged. The PaymentMethod must be the ID of a PaymentMethod belonging to the customer associated with the invoice being paid.
1967
+ attr_accessor :payment_method
1968
+ # A payment source to be charged. The source must be the ID of a source belonging to the customer associated with the invoice being paid.
1969
+ attr_accessor :source
1970
+
1971
+ def initialize(
1972
+ expand: nil,
1973
+ forgive: nil,
1974
+ mandate: nil,
1975
+ off_session: nil,
1976
+ paid_out_of_band: nil,
1977
+ payment_method: nil,
1978
+ source: nil
1979
+ )
1980
+ @expand = expand
1981
+ @forgive = forgive
1982
+ @mandate = mandate
1983
+ @off_session = off_session
1984
+ @paid_out_of_band = paid_out_of_band
1985
+ @payment_method = payment_method
1986
+ @source = source
1987
+ end
1988
+ end
1989
+
1990
+ class RemoveLinesParams < Stripe::RequestParams
1991
+ class Line < Stripe::RequestParams
1992
+ # Either `delete` or `unassign`. Deleted line items are permanently deleted. Unassigned line items can be reassigned to an invoice.
1993
+ attr_accessor :behavior
1994
+ # ID of an existing line item to remove from this invoice.
1995
+ attr_accessor :id
1996
+
1997
+ def initialize(behavior: nil, id: nil)
1998
+ @behavior = behavior
1999
+ @id = id
2000
+ end
2001
+ end
2002
+ # Specifies which fields in the response should be expanded.
2003
+ attr_accessor :expand
2004
+ # 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`.
2005
+ attr_accessor :invoice_metadata
2006
+ # The line items to remove.
2007
+ attr_accessor :lines
2008
+
2009
+ def initialize(expand: nil, invoice_metadata: nil, lines: nil)
2010
+ @expand = expand
2011
+ @invoice_metadata = invoice_metadata
2012
+ @lines = lines
2013
+ end
2014
+ end
2015
+
2016
+ class SendInvoiceParams < Stripe::RequestParams
2017
+ # Specifies which fields in the response should be expanded.
2018
+ attr_accessor :expand
2019
+
2020
+ def initialize(expand: nil)
2021
+ @expand = expand
2022
+ end
2023
+ end
2024
+
2025
+ class UpdateLinesParams < Stripe::RequestParams
2026
+ class Line < Stripe::RequestParams
2027
+ class Discount < Stripe::RequestParams
2028
+ # ID of the coupon to create a new discount for.
2029
+ attr_accessor :coupon
2030
+ # ID of an existing discount on the object (or one of its ancestors) to reuse.
2031
+ attr_accessor :discount
2032
+ # ID of the promotion code to create a new discount for.
2033
+ attr_accessor :promotion_code
2034
+
2035
+ def initialize(coupon: nil, discount: nil, promotion_code: nil)
2036
+ @coupon = coupon
2037
+ @discount = discount
2038
+ @promotion_code = promotion_code
2039
+ end
2040
+ end
2041
+
2042
+ class Period < Stripe::RequestParams
2043
+ # The end of the period, which must be greater than or equal to the start. This value is inclusive.
2044
+ attr_accessor :end
2045
+ # The start of the period. This value is inclusive.
2046
+ attr_accessor :start
2047
+
2048
+ def initialize(end_: nil, start: nil)
2049
+ @end = end_
2050
+ @start = start
2051
+ end
2052
+ end
2053
+
2054
+ class PriceData < Stripe::RequestParams
2055
+ class ProductData < Stripe::RequestParams
2056
+ # The product's description, meant to be displayable to the customer. Use this field to optionally store a long form explanation of the product being sold for your own rendering purposes.
2057
+ attr_accessor :description
2058
+ # A list of up to 8 URLs of images for this product, meant to be displayable to the customer.
2059
+ attr_accessor :images
2060
+ # 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`.
2061
+ attr_accessor :metadata
2062
+ # The product's name, meant to be displayable to the customer.
2063
+ attr_accessor :name
2064
+ # A [tax code](https://stripe.com/docs/tax/tax-categories) ID.
2065
+ attr_accessor :tax_code
12
2066
 
13
- custom_method :finalize_invoice, http_verb: :post, http_path: "finalize"
14
- custom_method :mark_uncollectible, http_verb: :post
15
- custom_method :pay, http_verb: :post
16
- custom_method :send_invoice, http_verb: :post, http_path: "send"
17
- custom_method :void_invoice, http_verb: :post, http_path: "void"
2067
+ def initialize(description: nil, images: nil, metadata: nil, name: nil, tax_code: nil)
2068
+ @description = description
2069
+ @images = images
2070
+ @metadata = metadata
2071
+ @name = name
2072
+ @tax_code = tax_code
2073
+ end
2074
+ end
2075
+ # Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).
2076
+ attr_accessor :currency
2077
+ # The ID of the [Product](https://docs.stripe.com/api/products) that this [Price](https://docs.stripe.com/api/prices) will belong to. One of `product` or `product_data` is required.
2078
+ attr_accessor :product
2079
+ # Data used to generate a new [Product](https://docs.stripe.com/api/products) object inline. One of `product` or `product_data` is required.
2080
+ attr_accessor :product_data
2081
+ # Only required if a [default tax behavior](https://stripe.com/docs/tax/products-prices-tax-categories-tax-behavior#setting-a-default-tax-behavior-(recommended)) was not provided in the Stripe Tax settings. Specifies whether the price is considered inclusive of taxes or exclusive of taxes. One of `inclusive`, `exclusive`, or `unspecified`. Once specified as either `inclusive` or `exclusive`, it cannot be changed.
2082
+ attr_accessor :tax_behavior
2083
+ # A non-negative integer in cents (or local equivalent) representing how much to charge. One of `unit_amount` or `unit_amount_decimal` is required.
2084
+ attr_accessor :unit_amount
2085
+ # Same as `unit_amount`, but accepts a decimal value in cents (or local equivalent) with at most 12 decimal places. Only one of `unit_amount` and `unit_amount_decimal` can be set.
2086
+ attr_accessor :unit_amount_decimal
18
2087
 
2088
+ def initialize(
2089
+ currency: nil,
2090
+ product: nil,
2091
+ product_data: nil,
2092
+ tax_behavior: nil,
2093
+ unit_amount: nil,
2094
+ unit_amount_decimal: nil
2095
+ )
2096
+ @currency = currency
2097
+ @product = product
2098
+ @product_data = product_data
2099
+ @tax_behavior = tax_behavior
2100
+ @unit_amount = unit_amount
2101
+ @unit_amount_decimal = unit_amount_decimal
2102
+ end
2103
+ end
2104
+
2105
+ class Pricing < Stripe::RequestParams
2106
+ # The ID of the price object.
2107
+ attr_accessor :price
2108
+
2109
+ def initialize(price: nil)
2110
+ @price = price
2111
+ end
2112
+ end
2113
+
2114
+ class TaxAmount < Stripe::RequestParams
2115
+ class TaxRateData < Stripe::RequestParams
2116
+ # Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
2117
+ attr_accessor :country
2118
+ # An arbitrary string attached to the tax rate for your internal use only. It will not be visible to your customers.
2119
+ attr_accessor :description
2120
+ # The display name of the tax rate, which will be shown to users.
2121
+ attr_accessor :display_name
2122
+ # This specifies if the tax rate is inclusive or exclusive.
2123
+ attr_accessor :inclusive
2124
+ # The jurisdiction for the tax rate. You can use this label field for tax reporting purposes. It also appears on your customer’s invoice.
2125
+ attr_accessor :jurisdiction
2126
+ # The level of the jurisdiction that imposes this tax rate.
2127
+ attr_accessor :jurisdiction_level
2128
+ # The statutory tax rate percent. This field accepts decimal values between 0 and 100 inclusive with at most 4 decimal places. To accommodate fixed-amount taxes, set the percentage to zero. Stripe will not display zero percentages on the invoice unless the `amount` of the tax is also zero.
2129
+ attr_accessor :percentage
2130
+ # [ISO 3166-2 subdivision code](https://en.wikipedia.org/wiki/ISO_3166-2:US), without country prefix. For example, "NY" for New York, United States.
2131
+ attr_accessor :state
2132
+ # The high-level tax type, such as `vat` or `sales_tax`.
2133
+ attr_accessor :tax_type
2134
+
2135
+ def initialize(
2136
+ country: nil,
2137
+ description: nil,
2138
+ display_name: nil,
2139
+ inclusive: nil,
2140
+ jurisdiction: nil,
2141
+ jurisdiction_level: nil,
2142
+ percentage: nil,
2143
+ state: nil,
2144
+ tax_type: nil
2145
+ )
2146
+ @country = country
2147
+ @description = description
2148
+ @display_name = display_name
2149
+ @inclusive = inclusive
2150
+ @jurisdiction = jurisdiction
2151
+ @jurisdiction_level = jurisdiction_level
2152
+ @percentage = percentage
2153
+ @state = state
2154
+ @tax_type = tax_type
2155
+ end
2156
+ end
2157
+ # The amount, in cents (or local equivalent), of the tax.
2158
+ attr_accessor :amount
2159
+ # Data to find or create a TaxRate object.
2160
+ #
2161
+ # Stripe automatically creates or reuses a TaxRate object for each tax amount. If the `tax_rate_data` exactly matches a previous value, Stripe will reuse the TaxRate object. TaxRate objects created automatically by Stripe are immediately archived, do not appear in the line item’s `tax_rates`, and cannot be directly added to invoices, payments, or line items.
2162
+ attr_accessor :tax_rate_data
2163
+ # The reasoning behind this tax, for example, if the product is tax exempt.
2164
+ attr_accessor :taxability_reason
2165
+ # The amount on which tax is calculated, in cents (or local equivalent).
2166
+ attr_accessor :taxable_amount
2167
+
2168
+ def initialize(
2169
+ amount: nil,
2170
+ tax_rate_data: nil,
2171
+ taxability_reason: nil,
2172
+ taxable_amount: nil
2173
+ )
2174
+ @amount = amount
2175
+ @tax_rate_data = tax_rate_data
2176
+ @taxability_reason = taxability_reason
2177
+ @taxable_amount = taxable_amount
2178
+ end
2179
+ end
2180
+ # The integer amount in cents (or local equivalent) of the charge to be applied to the upcoming invoice. If you want to apply a credit to the customer's account, pass a negative amount.
2181
+ attr_accessor :amount
2182
+ # An arbitrary string which you can attach to the invoice item. The description is displayed in the invoice for easy tracking.
2183
+ attr_accessor :description
2184
+ # Controls whether discounts apply to this line item. Defaults to false for prorations or negative line items, and true for all other line items. Cannot be set to true for prorations.
2185
+ attr_accessor :discountable
2186
+ # The coupons, promotion codes & existing discounts which apply to the line item. Item discounts are applied before invoice discounts. Pass an empty string to remove previously-defined discounts.
2187
+ attr_accessor :discounts
2188
+ # ID of an existing line item on the invoice.
2189
+ attr_accessor :id
2190
+ # 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`. For [type=subscription](https://stripe.com/docs/api/invoices/line_item#invoice_line_item_object-type) line items, the incoming metadata specified on the request is directly used to set this value, in contrast to [type=invoiceitem](api/invoices/line_item#invoice_line_item_object-type) line items, where any existing metadata on the invoice line is merged with the incoming data.
2191
+ attr_accessor :metadata
2192
+ # The period associated with this invoice item. When set to different values, the period will be rendered on the invoice. If you have [Stripe Revenue Recognition](https://stripe.com/docs/revenue-recognition) enabled, the period will be used to recognize and defer revenue. See the [Revenue Recognition documentation](https://stripe.com/docs/revenue-recognition/methodology/subscriptions-and-invoicing) for details.
2193
+ attr_accessor :period
2194
+ # Data used to generate a new [Price](https://stripe.com/docs/api/prices) object inline.
2195
+ attr_accessor :price_data
2196
+ # The pricing information for the invoice item.
2197
+ attr_accessor :pricing
2198
+ # Non-negative integer. The quantity of units for the line item.
2199
+ attr_accessor :quantity
2200
+ # A list of up to 10 tax amounts for this line item. This can be useful if you calculate taxes on your own or use a third-party to calculate them. You cannot set tax amounts if any line item has [tax_rates](https://stripe.com/docs/api/invoices/line_item#invoice_line_item_object-tax_rates) or if the invoice has [default_tax_rates](https://stripe.com/docs/api/invoices/object#invoice_object-default_tax_rates) or uses [automatic tax](https://stripe.com/docs/tax/invoicing). Pass an empty string to remove previously defined tax amounts.
2201
+ attr_accessor :tax_amounts
2202
+ # The tax rates which apply to the line item. When set, the `default_tax_rates` on the invoice do not apply to this line item. Pass an empty string to remove previously-defined tax rates.
2203
+ attr_accessor :tax_rates
2204
+
2205
+ def initialize(
2206
+ amount: nil,
2207
+ description: nil,
2208
+ discountable: nil,
2209
+ discounts: nil,
2210
+ id: nil,
2211
+ metadata: nil,
2212
+ period: nil,
2213
+ price_data: nil,
2214
+ pricing: nil,
2215
+ quantity: nil,
2216
+ tax_amounts: nil,
2217
+ tax_rates: nil
2218
+ )
2219
+ @amount = amount
2220
+ @description = description
2221
+ @discountable = discountable
2222
+ @discounts = discounts
2223
+ @id = id
2224
+ @metadata = metadata
2225
+ @period = period
2226
+ @price_data = price_data
2227
+ @pricing = pricing
2228
+ @quantity = quantity
2229
+ @tax_amounts = tax_amounts
2230
+ @tax_rates = tax_rates
2231
+ end
2232
+ end
2233
+ # Specifies which fields in the response should be expanded.
2234
+ attr_accessor :expand
2235
+ # 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`. For [type=subscription](https://stripe.com/docs/api/invoices/line_item#invoice_line_item_object-type) line items, the incoming metadata specified on the request is directly used to set this value, in contrast to [type=invoiceitem](api/invoices/line_item#invoice_line_item_object-type) line items, where any existing metadata on the invoice line is merged with the incoming data.
2236
+ attr_accessor :invoice_metadata
2237
+ # The line items to update.
2238
+ attr_accessor :lines
2239
+
2240
+ def initialize(expand: nil, invoice_metadata: nil, lines: nil)
2241
+ @expand = expand
2242
+ @invoice_metadata = invoice_metadata
2243
+ @lines = lines
2244
+ end
2245
+ end
2246
+
2247
+ class VoidInvoiceParams < Stripe::RequestParams
2248
+ # Specifies which fields in the response should be expanded.
2249
+ attr_accessor :expand
2250
+
2251
+ def initialize(expand: nil)
2252
+ @expand = expand
2253
+ end
2254
+ end
2255
+
2256
+ class CreatePreviewParams < Stripe::RequestParams
2257
+ class AutomaticTax < Stripe::RequestParams
2258
+ class Liability < Stripe::RequestParams
2259
+ # The connected account being referenced when `type` is `account`.
2260
+ attr_accessor :account
2261
+ # Type of the account referenced in the request.
2262
+ attr_accessor :type
2263
+
2264
+ def initialize(account: nil, type: nil)
2265
+ @account = account
2266
+ @type = type
2267
+ end
2268
+ end
2269
+ # Whether Stripe automatically computes tax on this invoice. Note that incompatible invoice items (invoice items with manually specified [tax rates](https://stripe.com/docs/api/tax_rates), negative amounts, or `tax_behavior=unspecified`) cannot be added to automatic tax invoices.
2270
+ attr_accessor :enabled
2271
+ # The account that's liable for tax. If set, the business address and tax registrations required to perform the tax calculation are loaded from this account. The tax transaction is returned in the report of the connected account.
2272
+ attr_accessor :liability
2273
+
2274
+ def initialize(enabled: nil, liability: nil)
2275
+ @enabled = enabled
2276
+ @liability = liability
2277
+ end
2278
+ end
2279
+
2280
+ class CustomerDetails < Stripe::RequestParams
2281
+ class Address < Stripe::RequestParams
2282
+ # City, district, suburb, town, or village.
2283
+ attr_accessor :city
2284
+ # Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
2285
+ attr_accessor :country
2286
+ # Address line 1 (e.g., street, PO Box, or company name).
2287
+ attr_accessor :line1
2288
+ # Address line 2 (e.g., apartment, suite, unit, or building).
2289
+ attr_accessor :line2
2290
+ # ZIP or postal code.
2291
+ attr_accessor :postal_code
2292
+ # State, county, province, or region.
2293
+ attr_accessor :state
2294
+
2295
+ def initialize(
2296
+ city: nil,
2297
+ country: nil,
2298
+ line1: nil,
2299
+ line2: nil,
2300
+ postal_code: nil,
2301
+ state: nil
2302
+ )
2303
+ @city = city
2304
+ @country = country
2305
+ @line1 = line1
2306
+ @line2 = line2
2307
+ @postal_code = postal_code
2308
+ @state = state
2309
+ end
2310
+ end
2311
+
2312
+ class Shipping < Stripe::RequestParams
2313
+ class Address < Stripe::RequestParams
2314
+ # City, district, suburb, town, or village.
2315
+ attr_accessor :city
2316
+ # A freeform text field for the country. However, in order to activate some tax features, the format should be a two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
2317
+ attr_accessor :country
2318
+ # Address line 1 (e.g., street, PO Box, or company name).
2319
+ attr_accessor :line1
2320
+ # Address line 2 (e.g., apartment, suite, unit, or building).
2321
+ attr_accessor :line2
2322
+ # ZIP or postal code.
2323
+ attr_accessor :postal_code
2324
+ # State, county, province, or region.
2325
+ attr_accessor :state
2326
+
2327
+ def initialize(
2328
+ city: nil,
2329
+ country: nil,
2330
+ line1: nil,
2331
+ line2: nil,
2332
+ postal_code: nil,
2333
+ state: nil
2334
+ )
2335
+ @city = city
2336
+ @country = country
2337
+ @line1 = line1
2338
+ @line2 = line2
2339
+ @postal_code = postal_code
2340
+ @state = state
2341
+ end
2342
+ end
2343
+ # Customer shipping address.
2344
+ attr_accessor :address
2345
+ # Customer name.
2346
+ attr_accessor :name
2347
+ # Customer phone (including extension).
2348
+ attr_accessor :phone
2349
+
2350
+ def initialize(address: nil, name: nil, phone: nil)
2351
+ @address = address
2352
+ @name = name
2353
+ @phone = phone
2354
+ end
2355
+ end
2356
+
2357
+ class Tax < Stripe::RequestParams
2358
+ # A recent IP address of the customer used for tax reporting and tax location inference. Stripe recommends updating the IP address when a new PaymentMethod is attached or the address field on the customer is updated. We recommend against updating this field more frequently since it could result in unexpected tax location/reporting outcomes.
2359
+ attr_accessor :ip_address
2360
+
2361
+ def initialize(ip_address: nil)
2362
+ @ip_address = ip_address
2363
+ end
2364
+ end
2365
+
2366
+ class TaxId < Stripe::RequestParams
2367
+ # Type of the tax ID, one of `ad_nrt`, `ae_trn`, `al_tin`, `am_tin`, `ao_tin`, `ar_cuit`, `au_abn`, `au_arn`, `aw_tin`, `az_tin`, `ba_tin`, `bb_tin`, `bd_bin`, `bf_ifu`, `bg_uic`, `bh_vat`, `bj_ifu`, `bo_tin`, `br_cnpj`, `br_cpf`, `bs_tin`, `by_tin`, `ca_bn`, `ca_gst_hst`, `ca_pst_bc`, `ca_pst_mb`, `ca_pst_sk`, `ca_qst`, `cd_nif`, `ch_uid`, `ch_vat`, `cl_tin`, `cm_niu`, `cn_tin`, `co_nit`, `cr_tin`, `cv_nif`, `de_stn`, `do_rcn`, `ec_ruc`, `eg_tin`, `es_cif`, `et_tin`, `eu_oss_vat`, `eu_vat`, `gb_vat`, `ge_vat`, `gn_nif`, `hk_br`, `hr_oib`, `hu_tin`, `id_npwp`, `il_vat`, `in_gst`, `is_vat`, `jp_cn`, `jp_rn`, `jp_trn`, `ke_pin`, `kg_tin`, `kh_tin`, `kr_brn`, `kz_bin`, `la_tin`, `li_uid`, `li_vat`, `ma_vat`, `md_vat`, `me_pib`, `mk_vat`, `mr_nif`, `mx_rfc`, `my_frp`, `my_itn`, `my_sst`, `ng_tin`, `no_vat`, `no_voec`, `np_pan`, `nz_gst`, `om_vat`, `pe_ruc`, `ph_tin`, `ro_tin`, `rs_pib`, `ru_inn`, `ru_kpp`, `sa_vat`, `sg_gst`, `sg_uen`, `si_tin`, `sn_ninea`, `sr_fin`, `sv_nit`, `th_vat`, `tj_tin`, `tr_tin`, `tw_vat`, `tz_vat`, `ua_vat`, `ug_tin`, `us_ein`, `uy_ruc`, `uz_tin`, `uz_vat`, `ve_rif`, `vn_tin`, `za_vat`, `zm_tin`, or `zw_tin`
2368
+ attr_accessor :type
2369
+ # Value of the tax ID.
2370
+ attr_accessor :value
2371
+
2372
+ def initialize(type: nil, value: nil)
2373
+ @type = type
2374
+ @value = value
2375
+ end
2376
+ end
2377
+ # The customer's address.
2378
+ attr_accessor :address
2379
+ # The customer's shipping information. Appears on invoices emailed to this customer.
2380
+ attr_accessor :shipping
2381
+ # Tax details about the customer.
2382
+ attr_accessor :tax
2383
+ # The customer's tax exemption. One of `none`, `exempt`, or `reverse`.
2384
+ attr_accessor :tax_exempt
2385
+ # The customer's tax IDs.
2386
+ attr_accessor :tax_ids
2387
+
2388
+ def initialize(address: nil, shipping: nil, tax: nil, tax_exempt: nil, tax_ids: nil)
2389
+ @address = address
2390
+ @shipping = shipping
2391
+ @tax = tax
2392
+ @tax_exempt = tax_exempt
2393
+ @tax_ids = tax_ids
2394
+ end
2395
+ end
2396
+
2397
+ class Discount < Stripe::RequestParams
2398
+ # ID of the coupon to create a new discount for.
2399
+ attr_accessor :coupon
2400
+ # ID of an existing discount on the object (or one of its ancestors) to reuse.
2401
+ attr_accessor :discount
2402
+ # ID of the promotion code to create a new discount for.
2403
+ attr_accessor :promotion_code
2404
+
2405
+ def initialize(coupon: nil, discount: nil, promotion_code: nil)
2406
+ @coupon = coupon
2407
+ @discount = discount
2408
+ @promotion_code = promotion_code
2409
+ end
2410
+ end
2411
+
2412
+ class InvoiceItem < Stripe::RequestParams
2413
+ class Discount < Stripe::RequestParams
2414
+ # ID of the coupon to create a new discount for.
2415
+ attr_accessor :coupon
2416
+ # ID of an existing discount on the object (or one of its ancestors) to reuse.
2417
+ attr_accessor :discount
2418
+ # ID of the promotion code to create a new discount for.
2419
+ attr_accessor :promotion_code
2420
+
2421
+ def initialize(coupon: nil, discount: nil, promotion_code: nil)
2422
+ @coupon = coupon
2423
+ @discount = discount
2424
+ @promotion_code = promotion_code
2425
+ end
2426
+ end
2427
+
2428
+ class Period < Stripe::RequestParams
2429
+ # The end of the period, which must be greater than or equal to the start. This value is inclusive.
2430
+ attr_accessor :end
2431
+ # The start of the period. This value is inclusive.
2432
+ attr_accessor :start
2433
+
2434
+ def initialize(end_: nil, start: nil)
2435
+ @end = end_
2436
+ @start = start
2437
+ end
2438
+ end
2439
+
2440
+ class PriceData < Stripe::RequestParams
2441
+ # Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).
2442
+ attr_accessor :currency
2443
+ # The ID of the [Product](https://docs.stripe.com/api/products) that this [Price](https://docs.stripe.com/api/prices) will belong to.
2444
+ attr_accessor :product
2445
+ # Only required if a [default tax behavior](https://stripe.com/docs/tax/products-prices-tax-categories-tax-behavior#setting-a-default-tax-behavior-(recommended)) was not provided in the Stripe Tax settings. Specifies whether the price is considered inclusive of taxes or exclusive of taxes. One of `inclusive`, `exclusive`, or `unspecified`. Once specified as either `inclusive` or `exclusive`, it cannot be changed.
2446
+ attr_accessor :tax_behavior
2447
+ # A positive integer in cents (or local equivalent) (or 0 for a free price) representing how much to charge.
2448
+ attr_accessor :unit_amount
2449
+ # Same as `unit_amount`, but accepts a decimal value in cents (or local equivalent) with at most 12 decimal places. Only one of `unit_amount` and `unit_amount_decimal` can be set.
2450
+ attr_accessor :unit_amount_decimal
2451
+
2452
+ def initialize(
2453
+ currency: nil,
2454
+ product: nil,
2455
+ tax_behavior: nil,
2456
+ unit_amount: nil,
2457
+ unit_amount_decimal: nil
2458
+ )
2459
+ @currency = currency
2460
+ @product = product
2461
+ @tax_behavior = tax_behavior
2462
+ @unit_amount = unit_amount
2463
+ @unit_amount_decimal = unit_amount_decimal
2464
+ end
2465
+ end
2466
+ # The integer amount in cents (or local equivalent) of previewed invoice item.
2467
+ attr_accessor :amount
2468
+ # Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies). Only applicable to new invoice items.
2469
+ attr_accessor :currency
2470
+ # An arbitrary string which you can attach to the invoice item. The description is displayed in the invoice for easy tracking.
2471
+ attr_accessor :description
2472
+ # Explicitly controls whether discounts apply to this invoice item. Defaults to true, except for negative invoice items.
2473
+ attr_accessor :discountable
2474
+ # The coupons to redeem into discounts for the invoice item in the preview.
2475
+ attr_accessor :discounts
2476
+ # The ID of the invoice item to update in preview. If not specified, a new invoice item will be added to the preview of the upcoming invoice.
2477
+ attr_accessor :invoiceitem
2478
+ # 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`.
2479
+ attr_accessor :metadata
2480
+ # The period associated with this invoice item. When set to different values, the period will be rendered on the invoice. If you have [Stripe Revenue Recognition](https://stripe.com/docs/revenue-recognition) enabled, the period will be used to recognize and defer revenue. See the [Revenue Recognition documentation](https://stripe.com/docs/revenue-recognition/methodology/subscriptions-and-invoicing) for details.
2481
+ attr_accessor :period
2482
+ # The ID of the price object. One of `price` or `price_data` is required.
2483
+ attr_accessor :price
2484
+ # Data used to generate a new [Price](https://stripe.com/docs/api/prices) object inline. One of `price` or `price_data` is required.
2485
+ attr_accessor :price_data
2486
+ # Non-negative integer. The quantity of units for the invoice item.
2487
+ attr_accessor :quantity
2488
+ # Only required if a [default tax behavior](https://stripe.com/docs/tax/products-prices-tax-categories-tax-behavior#setting-a-default-tax-behavior-(recommended)) was not provided in the Stripe Tax settings. Specifies whether the price is considered inclusive of taxes or exclusive of taxes. One of `inclusive`, `exclusive`, or `unspecified`. Once specified as either `inclusive` or `exclusive`, it cannot be changed.
2489
+ attr_accessor :tax_behavior
2490
+ # A [tax code](https://stripe.com/docs/tax/tax-categories) ID.
2491
+ attr_accessor :tax_code
2492
+ # The tax rates that apply to the item. When set, any `default_tax_rates` do not apply to this item.
2493
+ attr_accessor :tax_rates
2494
+ # The integer unit amount in cents (or local equivalent) of the charge to be applied to the upcoming invoice. This unit_amount will be multiplied by the quantity to get the full amount. If you want to apply a credit to the customer's account, pass a negative unit_amount.
2495
+ attr_accessor :unit_amount
2496
+ # Same as `unit_amount`, but accepts a decimal value in cents (or local equivalent) with at most 12 decimal places. Only one of `unit_amount` and `unit_amount_decimal` can be set.
2497
+ attr_accessor :unit_amount_decimal
2498
+
2499
+ def initialize(
2500
+ amount: nil,
2501
+ currency: nil,
2502
+ description: nil,
2503
+ discountable: nil,
2504
+ discounts: nil,
2505
+ invoiceitem: nil,
2506
+ metadata: nil,
2507
+ period: nil,
2508
+ price: nil,
2509
+ price_data: nil,
2510
+ quantity: nil,
2511
+ tax_behavior: nil,
2512
+ tax_code: nil,
2513
+ tax_rates: nil,
2514
+ unit_amount: nil,
2515
+ unit_amount_decimal: nil
2516
+ )
2517
+ @amount = amount
2518
+ @currency = currency
2519
+ @description = description
2520
+ @discountable = discountable
2521
+ @discounts = discounts
2522
+ @invoiceitem = invoiceitem
2523
+ @metadata = metadata
2524
+ @period = period
2525
+ @price = price
2526
+ @price_data = price_data
2527
+ @quantity = quantity
2528
+ @tax_behavior = tax_behavior
2529
+ @tax_code = tax_code
2530
+ @tax_rates = tax_rates
2531
+ @unit_amount = unit_amount
2532
+ @unit_amount_decimal = unit_amount_decimal
2533
+ end
2534
+ end
2535
+
2536
+ class Issuer < Stripe::RequestParams
2537
+ # The connected account being referenced when `type` is `account`.
2538
+ attr_accessor :account
2539
+ # Type of the account referenced in the request.
2540
+ attr_accessor :type
2541
+
2542
+ def initialize(account: nil, type: nil)
2543
+ @account = account
2544
+ @type = type
2545
+ end
2546
+ end
2547
+
2548
+ class ScheduleDetails < Stripe::RequestParams
2549
+ class Phase < Stripe::RequestParams
2550
+ class AddInvoiceItem < Stripe::RequestParams
2551
+ class Discount < Stripe::RequestParams
2552
+ # ID of the coupon to create a new discount for.
2553
+ attr_accessor :coupon
2554
+ # ID of an existing discount on the object (or one of its ancestors) to reuse.
2555
+ attr_accessor :discount
2556
+ # ID of the promotion code to create a new discount for.
2557
+ attr_accessor :promotion_code
2558
+
2559
+ def initialize(coupon: nil, discount: nil, promotion_code: nil)
2560
+ @coupon = coupon
2561
+ @discount = discount
2562
+ @promotion_code = promotion_code
2563
+ end
2564
+ end
2565
+
2566
+ class PriceData < Stripe::RequestParams
2567
+ # Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).
2568
+ attr_accessor :currency
2569
+ # The ID of the [Product](https://docs.stripe.com/api/products) that this [Price](https://docs.stripe.com/api/prices) will belong to.
2570
+ attr_accessor :product
2571
+ # Only required if a [default tax behavior](https://stripe.com/docs/tax/products-prices-tax-categories-tax-behavior#setting-a-default-tax-behavior-(recommended)) was not provided in the Stripe Tax settings. Specifies whether the price is considered inclusive of taxes or exclusive of taxes. One of `inclusive`, `exclusive`, or `unspecified`. Once specified as either `inclusive` or `exclusive`, it cannot be changed.
2572
+ attr_accessor :tax_behavior
2573
+ # A positive integer in cents (or local equivalent) (or 0 for a free price) representing how much to charge or a negative integer representing the amount to credit to the customer.
2574
+ attr_accessor :unit_amount
2575
+ # Same as `unit_amount`, but accepts a decimal value in cents (or local equivalent) with at most 12 decimal places. Only one of `unit_amount` and `unit_amount_decimal` can be set.
2576
+ attr_accessor :unit_amount_decimal
2577
+
2578
+ def initialize(
2579
+ currency: nil,
2580
+ product: nil,
2581
+ tax_behavior: nil,
2582
+ unit_amount: nil,
2583
+ unit_amount_decimal: nil
2584
+ )
2585
+ @currency = currency
2586
+ @product = product
2587
+ @tax_behavior = tax_behavior
2588
+ @unit_amount = unit_amount
2589
+ @unit_amount_decimal = unit_amount_decimal
2590
+ end
2591
+ end
2592
+ # The coupons to redeem into discounts for the item.
2593
+ attr_accessor :discounts
2594
+ # The ID of the price object. One of `price` or `price_data` is required.
2595
+ attr_accessor :price
2596
+ # Data used to generate a new [Price](https://stripe.com/docs/api/prices) object inline. One of `price` or `price_data` is required.
2597
+ attr_accessor :price_data
2598
+ # Quantity for this item. Defaults to 1.
2599
+ attr_accessor :quantity
2600
+ # The tax rates which apply to the item. When set, the `default_tax_rates` do not apply to this item.
2601
+ attr_accessor :tax_rates
2602
+
2603
+ def initialize(
2604
+ discounts: nil,
2605
+ price: nil,
2606
+ price_data: nil,
2607
+ quantity: nil,
2608
+ tax_rates: nil
2609
+ )
2610
+ @discounts = discounts
2611
+ @price = price
2612
+ @price_data = price_data
2613
+ @quantity = quantity
2614
+ @tax_rates = tax_rates
2615
+ end
2616
+ end
2617
+
2618
+ class AutomaticTax < Stripe::RequestParams
2619
+ class Liability < Stripe::RequestParams
2620
+ # The connected account being referenced when `type` is `account`.
2621
+ attr_accessor :account
2622
+ # Type of the account referenced in the request.
2623
+ attr_accessor :type
2624
+
2625
+ def initialize(account: nil, type: nil)
2626
+ @account = account
2627
+ @type = type
2628
+ end
2629
+ end
2630
+ # Enabled automatic tax calculation which will automatically compute tax rates on all invoices generated by the subscription.
2631
+ attr_accessor :enabled
2632
+ # The account that's liable for tax. If set, the business address and tax registrations required to perform the tax calculation are loaded from this account. The tax transaction is returned in the report of the connected account.
2633
+ attr_accessor :liability
2634
+
2635
+ def initialize(enabled: nil, liability: nil)
2636
+ @enabled = enabled
2637
+ @liability = liability
2638
+ end
2639
+ end
2640
+
2641
+ class BillingThresholds < Stripe::RequestParams
2642
+ # Monetary threshold that triggers the subscription to advance to a new billing period
2643
+ attr_accessor :amount_gte
2644
+ # 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.
2645
+ attr_accessor :reset_billing_cycle_anchor
2646
+
2647
+ def initialize(amount_gte: nil, reset_billing_cycle_anchor: nil)
2648
+ @amount_gte = amount_gte
2649
+ @reset_billing_cycle_anchor = reset_billing_cycle_anchor
2650
+ end
2651
+ end
2652
+
2653
+ class Discount < Stripe::RequestParams
2654
+ # ID of the coupon to create a new discount for.
2655
+ attr_accessor :coupon
2656
+ # ID of an existing discount on the object (or one of its ancestors) to reuse.
2657
+ attr_accessor :discount
2658
+ # ID of the promotion code to create a new discount for.
2659
+ attr_accessor :promotion_code
2660
+
2661
+ def initialize(coupon: nil, discount: nil, promotion_code: nil)
2662
+ @coupon = coupon
2663
+ @discount = discount
2664
+ @promotion_code = promotion_code
2665
+ end
2666
+ end
2667
+
2668
+ class InvoiceSettings < Stripe::RequestParams
2669
+ class Issuer < Stripe::RequestParams
2670
+ # The connected account being referenced when `type` is `account`.
2671
+ attr_accessor :account
2672
+ # Type of the account referenced in the request.
2673
+ attr_accessor :type
2674
+
2675
+ def initialize(account: nil, type: nil)
2676
+ @account = account
2677
+ @type = type
2678
+ end
2679
+ end
2680
+ # The account tax IDs associated with this phase of the subscription schedule. Will be set on invoices generated by this phase of the subscription schedule.
2681
+ attr_accessor :account_tax_ids
2682
+ # Number of days within which a customer must pay invoices generated by this subscription schedule. This value will be `null` for subscription schedules where `billing=charge_automatically`.
2683
+ attr_accessor :days_until_due
2684
+ # The connected account that issues the invoice. The invoice is presented with the branding and support information of the specified account.
2685
+ attr_accessor :issuer
2686
+
2687
+ def initialize(account_tax_ids: nil, days_until_due: nil, issuer: nil)
2688
+ @account_tax_ids = account_tax_ids
2689
+ @days_until_due = days_until_due
2690
+ @issuer = issuer
2691
+ end
2692
+ end
2693
+
2694
+ class Item < Stripe::RequestParams
2695
+ class BillingThresholds < Stripe::RequestParams
2696
+ # 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))
2697
+ attr_accessor :usage_gte
2698
+
2699
+ def initialize(usage_gte: nil)
2700
+ @usage_gte = usage_gte
2701
+ end
2702
+ end
2703
+
2704
+ class Discount < Stripe::RequestParams
2705
+ # ID of the coupon to create a new discount for.
2706
+ attr_accessor :coupon
2707
+ # ID of an existing discount on the object (or one of its ancestors) to reuse.
2708
+ attr_accessor :discount
2709
+ # ID of the promotion code to create a new discount for.
2710
+ attr_accessor :promotion_code
2711
+
2712
+ def initialize(coupon: nil, discount: nil, promotion_code: nil)
2713
+ @coupon = coupon
2714
+ @discount = discount
2715
+ @promotion_code = promotion_code
2716
+ end
2717
+ end
2718
+
2719
+ class PriceData < Stripe::RequestParams
2720
+ class Recurring < Stripe::RequestParams
2721
+ # Specifies billing frequency. Either `day`, `week`, `month` or `year`.
2722
+ attr_accessor :interval
2723
+ # The number of intervals between subscription billings. For example, `interval=month` and `interval_count=3` bills every 3 months. Maximum of three years interval allowed (3 years, 36 months, or 156 weeks).
2724
+ attr_accessor :interval_count
2725
+
2726
+ def initialize(interval: nil, interval_count: nil)
2727
+ @interval = interval
2728
+ @interval_count = interval_count
2729
+ end
2730
+ end
2731
+ # Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).
2732
+ attr_accessor :currency
2733
+ # The ID of the [Product](https://docs.stripe.com/api/products) that this [Price](https://docs.stripe.com/api/prices) will belong to.
2734
+ attr_accessor :product
2735
+ # The recurring components of a price such as `interval` and `interval_count`.
2736
+ attr_accessor :recurring
2737
+ # Only required if a [default tax behavior](https://stripe.com/docs/tax/products-prices-tax-categories-tax-behavior#setting-a-default-tax-behavior-(recommended)) was not provided in the Stripe Tax settings. Specifies whether the price is considered inclusive of taxes or exclusive of taxes. One of `inclusive`, `exclusive`, or `unspecified`. Once specified as either `inclusive` or `exclusive`, it cannot be changed.
2738
+ attr_accessor :tax_behavior
2739
+ # A positive integer in cents (or local equivalent) (or 0 for a free price) representing how much to charge.
2740
+ attr_accessor :unit_amount
2741
+ # Same as `unit_amount`, but accepts a decimal value in cents (or local equivalent) with at most 12 decimal places. Only one of `unit_amount` and `unit_amount_decimal` can be set.
2742
+ attr_accessor :unit_amount_decimal
2743
+
2744
+ def initialize(
2745
+ currency: nil,
2746
+ product: nil,
2747
+ recurring: nil,
2748
+ tax_behavior: nil,
2749
+ unit_amount: nil,
2750
+ unit_amount_decimal: nil
2751
+ )
2752
+ @currency = currency
2753
+ @product = product
2754
+ @recurring = recurring
2755
+ @tax_behavior = tax_behavior
2756
+ @unit_amount = unit_amount
2757
+ @unit_amount_decimal = unit_amount_decimal
2758
+ end
2759
+ end
2760
+ # 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.
2761
+ attr_accessor :billing_thresholds
2762
+ # The coupons to redeem into discounts for the subscription item.
2763
+ attr_accessor :discounts
2764
+ # Set of [key-value pairs](https://stripe.com/docs/api/metadata) that you can attach to a configuration item. Metadata on a configuration item will update the underlying subscription item's `metadata` when the phase is entered, adding new keys and replacing existing keys. Individual keys in the subscription item's `metadata` can be unset by posting an empty value to them in the configuration item's `metadata`. To unset all keys in the subscription item's `metadata`, update the subscription item directly or unset every key individually from the configuration item's `metadata`.
2765
+ attr_accessor :metadata
2766
+ # The plan ID to subscribe to. You may specify the same ID in `plan` and `price`.
2767
+ attr_accessor :plan
2768
+ # The ID of the price object.
2769
+ attr_accessor :price
2770
+ # Data used to generate a new [Price](https://stripe.com/docs/api/prices) object inline.
2771
+ attr_accessor :price_data
2772
+ # Quantity for the given price. Can be set only if the price's `usage_type` is `licensed` and not `metered`.
2773
+ attr_accessor :quantity
2774
+ # A list of [Tax Rate](https://stripe.com/docs/api/tax_rates) ids. These Tax Rates will override the [`default_tax_rates`](https://stripe.com/docs/api/subscriptions/create#create_subscription-default_tax_rates) on the Subscription. When updating, pass an empty string to remove previously-defined tax rates.
2775
+ attr_accessor :tax_rates
2776
+
2777
+ def initialize(
2778
+ billing_thresholds: nil,
2779
+ discounts: nil,
2780
+ metadata: nil,
2781
+ plan: nil,
2782
+ price: nil,
2783
+ price_data: nil,
2784
+ quantity: nil,
2785
+ tax_rates: nil
2786
+ )
2787
+ @billing_thresholds = billing_thresholds
2788
+ @discounts = discounts
2789
+ @metadata = metadata
2790
+ @plan = plan
2791
+ @price = price
2792
+ @price_data = price_data
2793
+ @quantity = quantity
2794
+ @tax_rates = tax_rates
2795
+ end
2796
+ end
2797
+
2798
+ class TransferData < Stripe::RequestParams
2799
+ # 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 destination account. By default, the entire amount is transferred to the destination.
2800
+ attr_accessor :amount_percent
2801
+ # ID of an existing, connected Stripe account.
2802
+ attr_accessor :destination
2803
+
2804
+ def initialize(amount_percent: nil, destination: nil)
2805
+ @amount_percent = amount_percent
2806
+ @destination = destination
2807
+ end
2808
+ end
2809
+ # A list of prices and quantities that will generate invoice items appended to the next invoice for this phase. You may pass up to 20 items.
2810
+ attr_accessor :add_invoice_items
2811
+ # 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).
2812
+ attr_accessor :application_fee_percent
2813
+ # Automatic tax settings for this phase.
2814
+ attr_accessor :automatic_tax
2815
+ # Can be set to `phase_start` to set the anchor to the start of the phase or `automatic` to automatically change it if needed. Cannot be set to `phase_start` if this phase specifies a trial. For more information, see the billing cycle [documentation](https://stripe.com/docs/billing/subscriptions/billing-cycle).
2816
+ attr_accessor :billing_cycle_anchor
2817
+ # 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.
2818
+ attr_accessor :billing_thresholds
2819
+ # Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay the underlying subscription at the end of each billing cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions and mark the subscription as `active`. Defaults to `charge_automatically` on creation.
2820
+ attr_accessor :collection_method
2821
+ # Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).
2822
+ attr_accessor :currency
2823
+ # ID of the default payment method for the subscription schedule. It must belong to the customer associated with the subscription schedule. If not set, invoices will use the default payment method in the customer's invoice settings.
2824
+ attr_accessor :default_payment_method
2825
+ # A list of [Tax Rate](https://stripe.com/docs/api/tax_rates) ids. These Tax Rates will set the Subscription's [`default_tax_rates`](https://stripe.com/docs/api/subscriptions/create#create_subscription-default_tax_rates), which means they will be the Invoice's [`default_tax_rates`](https://stripe.com/docs/api/invoices/create#create_invoice-default_tax_rates) for any Invoices issued by the Subscription during this Phase.
2826
+ attr_accessor :default_tax_rates
2827
+ # Subscription description, meant to be displayable to the customer. Use this field to optionally store an explanation of the subscription for rendering in Stripe surfaces and certain local payment methods UIs.
2828
+ attr_accessor :description
2829
+ # The coupons to redeem into discounts for the schedule phase. If not specified, inherits the discount from the subscription's customer. Pass an empty string to avoid inheriting any discounts.
2830
+ attr_accessor :discounts
2831
+ # The date at which this phase of the subscription schedule ends. If set, `iterations` must not be set.
2832
+ attr_accessor :end_date
2833
+ # All invoices will be billed using the specified settings.
2834
+ attr_accessor :invoice_settings
2835
+ # List of configuration items, each with an attached price, to apply during this phase of the subscription schedule.
2836
+ attr_accessor :items
2837
+ # Integer representing the multiplier applied to the price interval. For example, `iterations=2` applied to a price with `interval=month` and `interval_count=3` results in a phase of duration `2 * 3 months = 6 months`. If set, `end_date` must not be set.
2838
+ attr_accessor :iterations
2839
+ # Set of [key-value pairs](https://stripe.com/docs/api/metadata) that you can attach to a phase. Metadata on a schedule's phase will update the underlying subscription's `metadata` when the phase is entered, adding new keys and replacing existing keys in the subscription's `metadata`. Individual keys in the subscription's `metadata` can be unset by posting an empty value to them in the phase's `metadata`. To unset all keys in the subscription's `metadata`, update the subscription directly or unset every key individually from the phase's `metadata`.
2840
+ attr_accessor :metadata
2841
+ # The account on behalf of which to charge, for each of the associated subscription's invoices.
2842
+ attr_accessor :on_behalf_of
2843
+ # Controls whether the subscription schedule should create [prorations](https://stripe.com/docs/billing/subscriptions/prorations) when transitioning to this phase if there is a difference in billing configuration. It's different from the request-level [proration_behavior](https://stripe.com/docs/api/subscription_schedules/update#update_subscription_schedule-proration_behavior) parameter which controls what happens if the update request affects the billing configuration (item price, quantity, etc.) of the current phase.
2844
+ attr_accessor :proration_behavior
2845
+ # The date at which this phase of the subscription schedule starts or `now`. Must be set on the first phase.
2846
+ attr_accessor :start_date
2847
+ # The data with which to automatically create a Transfer for each of the associated subscription's invoices.
2848
+ attr_accessor :transfer_data
2849
+ # If set to true the entire phase is counted as a trial and the customer will not be charged for any fees.
2850
+ attr_accessor :trial
2851
+ # Sets the phase to trialing from the start date to this date. Must be before the phase end date, can not be combined with `trial`
2852
+ attr_accessor :trial_end
2853
+
2854
+ def initialize(
2855
+ add_invoice_items: nil,
2856
+ application_fee_percent: nil,
2857
+ automatic_tax: nil,
2858
+ billing_cycle_anchor: nil,
2859
+ billing_thresholds: nil,
2860
+ collection_method: nil,
2861
+ currency: nil,
2862
+ default_payment_method: nil,
2863
+ default_tax_rates: nil,
2864
+ description: nil,
2865
+ discounts: nil,
2866
+ end_date: nil,
2867
+ invoice_settings: nil,
2868
+ items: nil,
2869
+ iterations: nil,
2870
+ metadata: nil,
2871
+ on_behalf_of: nil,
2872
+ proration_behavior: nil,
2873
+ start_date: nil,
2874
+ transfer_data: nil,
2875
+ trial: nil,
2876
+ trial_end: nil
2877
+ )
2878
+ @add_invoice_items = add_invoice_items
2879
+ @application_fee_percent = application_fee_percent
2880
+ @automatic_tax = automatic_tax
2881
+ @billing_cycle_anchor = billing_cycle_anchor
2882
+ @billing_thresholds = billing_thresholds
2883
+ @collection_method = collection_method
2884
+ @currency = currency
2885
+ @default_payment_method = default_payment_method
2886
+ @default_tax_rates = default_tax_rates
2887
+ @description = description
2888
+ @discounts = discounts
2889
+ @end_date = end_date
2890
+ @invoice_settings = invoice_settings
2891
+ @items = items
2892
+ @iterations = iterations
2893
+ @metadata = metadata
2894
+ @on_behalf_of = on_behalf_of
2895
+ @proration_behavior = proration_behavior
2896
+ @start_date = start_date
2897
+ @transfer_data = transfer_data
2898
+ @trial = trial
2899
+ @trial_end = trial_end
2900
+ end
2901
+ end
2902
+ # Behavior of the subscription schedule and underlying subscription when it ends. Possible values are `release` or `cancel` with the default being `release`. `release` will end the subscription schedule and keep the underlying subscription running. `cancel` will end the subscription schedule and cancel the underlying subscription.
2903
+ attr_accessor :end_behavior
2904
+ # List representing phases of the subscription schedule. Each phase can be customized to have different durations, plans, and coupons. If there are multiple phases, the `end_date` of one phase will always equal the `start_date` of the next phase.
2905
+ attr_accessor :phases
2906
+ # In cases where the `schedule_details` params update the currently active phase, specifies if and how to prorate at the time of the request.
2907
+ attr_accessor :proration_behavior
2908
+
2909
+ def initialize(end_behavior: nil, phases: nil, proration_behavior: nil)
2910
+ @end_behavior = end_behavior
2911
+ @phases = phases
2912
+ @proration_behavior = proration_behavior
2913
+ end
2914
+ end
2915
+
2916
+ class SubscriptionDetails < Stripe::RequestParams
2917
+ class Item < Stripe::RequestParams
2918
+ class BillingThresholds < Stripe::RequestParams
2919
+ # 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))
2920
+ attr_accessor :usage_gte
2921
+
2922
+ def initialize(usage_gte: nil)
2923
+ @usage_gte = usage_gte
2924
+ end
2925
+ end
2926
+
2927
+ class Discount < Stripe::RequestParams
2928
+ # ID of the coupon to create a new discount for.
2929
+ attr_accessor :coupon
2930
+ # ID of an existing discount on the object (or one of its ancestors) to reuse.
2931
+ attr_accessor :discount
2932
+ # ID of the promotion code to create a new discount for.
2933
+ attr_accessor :promotion_code
2934
+
2935
+ def initialize(coupon: nil, discount: nil, promotion_code: nil)
2936
+ @coupon = coupon
2937
+ @discount = discount
2938
+ @promotion_code = promotion_code
2939
+ end
2940
+ end
2941
+
2942
+ class PriceData < Stripe::RequestParams
2943
+ class Recurring < Stripe::RequestParams
2944
+ # Specifies billing frequency. Either `day`, `week`, `month` or `year`.
2945
+ attr_accessor :interval
2946
+ # The number of intervals between subscription billings. For example, `interval=month` and `interval_count=3` bills every 3 months. Maximum of three years interval allowed (3 years, 36 months, or 156 weeks).
2947
+ attr_accessor :interval_count
2948
+
2949
+ def initialize(interval: nil, interval_count: nil)
2950
+ @interval = interval
2951
+ @interval_count = interval_count
2952
+ end
2953
+ end
2954
+ # Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).
2955
+ attr_accessor :currency
2956
+ # The ID of the [Product](https://docs.stripe.com/api/products) that this [Price](https://docs.stripe.com/api/prices) will belong to.
2957
+ attr_accessor :product
2958
+ # The recurring components of a price such as `interval` and `interval_count`.
2959
+ attr_accessor :recurring
2960
+ # Only required if a [default tax behavior](https://stripe.com/docs/tax/products-prices-tax-categories-tax-behavior#setting-a-default-tax-behavior-(recommended)) was not provided in the Stripe Tax settings. Specifies whether the price is considered inclusive of taxes or exclusive of taxes. One of `inclusive`, `exclusive`, or `unspecified`. Once specified as either `inclusive` or `exclusive`, it cannot be changed.
2961
+ attr_accessor :tax_behavior
2962
+ # A positive integer in cents (or local equivalent) (or 0 for a free price) representing how much to charge.
2963
+ attr_accessor :unit_amount
2964
+ # Same as `unit_amount`, but accepts a decimal value in cents (or local equivalent) with at most 12 decimal places. Only one of `unit_amount` and `unit_amount_decimal` can be set.
2965
+ attr_accessor :unit_amount_decimal
2966
+
2967
+ def initialize(
2968
+ currency: nil,
2969
+ product: nil,
2970
+ recurring: nil,
2971
+ tax_behavior: nil,
2972
+ unit_amount: nil,
2973
+ unit_amount_decimal: nil
2974
+ )
2975
+ @currency = currency
2976
+ @product = product
2977
+ @recurring = recurring
2978
+ @tax_behavior = tax_behavior
2979
+ @unit_amount = unit_amount
2980
+ @unit_amount_decimal = unit_amount_decimal
2981
+ end
2982
+ end
2983
+ # 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.
2984
+ attr_accessor :billing_thresholds
2985
+ # 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.
2986
+ attr_accessor :clear_usage
2987
+ # A flag that, if set to `true`, will delete the specified item.
2988
+ attr_accessor :deleted
2989
+ # The coupons to redeem into discounts for the subscription item.
2990
+ attr_accessor :discounts
2991
+ # Subscription item to update.
2992
+ attr_accessor :id
2993
+ # 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`.
2994
+ attr_accessor :metadata
2995
+ # Plan ID for this item, as a string.
2996
+ attr_accessor :plan
2997
+ # The ID of the price object. One of `price` or `price_data` is required. When changing a subscription item's price, `quantity` is set to 1 unless a `quantity` parameter is provided.
2998
+ attr_accessor :price
2999
+ # Data used to generate a new [Price](https://stripe.com/docs/api/prices) object inline. One of `price` or `price_data` is required.
3000
+ attr_accessor :price_data
3001
+ # Quantity for this item.
3002
+ attr_accessor :quantity
3003
+ # A list of [Tax Rate](https://stripe.com/docs/api/tax_rates) ids. These Tax Rates will override the [`default_tax_rates`](https://stripe.com/docs/api/subscriptions/create#create_subscription-default_tax_rates) on the Subscription. When updating, pass an empty string to remove previously-defined tax rates.
3004
+ attr_accessor :tax_rates
3005
+
3006
+ def initialize(
3007
+ billing_thresholds: nil,
3008
+ clear_usage: nil,
3009
+ deleted: nil,
3010
+ discounts: nil,
3011
+ id: nil,
3012
+ metadata: nil,
3013
+ plan: nil,
3014
+ price: nil,
3015
+ price_data: nil,
3016
+ quantity: nil,
3017
+ tax_rates: nil
3018
+ )
3019
+ @billing_thresholds = billing_thresholds
3020
+ @clear_usage = clear_usage
3021
+ @deleted = deleted
3022
+ @discounts = discounts
3023
+ @id = id
3024
+ @metadata = metadata
3025
+ @plan = plan
3026
+ @price = price
3027
+ @price_data = price_data
3028
+ @quantity = quantity
3029
+ @tax_rates = tax_rates
3030
+ end
3031
+ end
3032
+ # For new subscriptions, a future timestamp to anchor the subscription's [billing cycle](https://stripe.com/docs/subscriptions/billing-cycle). This is used to determine the date of the first full invoice, and, for plans with `month` or `year` intervals, the day of the month for subsequent invoices. For existing subscriptions, the value can only be set to `now` or `unchanged`.
3033
+ attr_accessor :billing_cycle_anchor
3034
+ # 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.
3035
+ attr_accessor :cancel_at
3036
+ # Indicate whether this subscription should cancel at the end of the current period (`current_period_end`). Defaults to `false`. This param will be removed in a future API version. Please use `cancel_at` instead.
3037
+ attr_accessor :cancel_at_period_end
3038
+ # This simulates the subscription being canceled or expired immediately.
3039
+ attr_accessor :cancel_now
3040
+ # If provided, the invoice returned will preview updating or creating a subscription with these default tax rates. The default tax rates will apply to any line item that does not have `tax_rates` set.
3041
+ attr_accessor :default_tax_rates
3042
+ # A list of up to 20 subscription items, each with an attached price.
3043
+ attr_accessor :items
3044
+ # 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`.
3045
+ attr_accessor :proration_behavior
3046
+ # If previewing an update to a subscription, and doing proration, `subscription_details.proration_date` forces the proration to be calculated as though the update was done at the specified time. The time given must be within the current subscription period and within the current phase of the schedule backing this subscription, if the schedule exists. If set, `subscription`, and one of `subscription_details.items`, or `subscription_details.trial_end` are required. Also, `subscription_details.proration_behavior` cannot be set to 'none'.
3047
+ attr_accessor :proration_date
3048
+ # For paused subscriptions, setting `subscription_details.resume_at` to `now` will preview the invoice that will be generated if the subscription is resumed.
3049
+ attr_accessor :resume_at
3050
+ # Date a subscription is intended to start (can be future or past).
3051
+ attr_accessor :start_date
3052
+ # If provided, the invoice returned will preview updating or creating a subscription with that trial end. If set, one of `subscription_details.items` or `subscription` is required.
3053
+ attr_accessor :trial_end
3054
+
3055
+ def initialize(
3056
+ billing_cycle_anchor: nil,
3057
+ cancel_at: nil,
3058
+ cancel_at_period_end: nil,
3059
+ cancel_now: nil,
3060
+ default_tax_rates: nil,
3061
+ items: nil,
3062
+ proration_behavior: nil,
3063
+ proration_date: nil,
3064
+ resume_at: nil,
3065
+ start_date: nil,
3066
+ trial_end: nil
3067
+ )
3068
+ @billing_cycle_anchor = billing_cycle_anchor
3069
+ @cancel_at = cancel_at
3070
+ @cancel_at_period_end = cancel_at_period_end
3071
+ @cancel_now = cancel_now
3072
+ @default_tax_rates = default_tax_rates
3073
+ @items = items
3074
+ @proration_behavior = proration_behavior
3075
+ @proration_date = proration_date
3076
+ @resume_at = resume_at
3077
+ @start_date = start_date
3078
+ @trial_end = trial_end
3079
+ end
3080
+ end
3081
+ # Settings for automatic tax lookup for this invoice preview.
3082
+ attr_accessor :automatic_tax
3083
+ # The currency to preview this invoice in. Defaults to that of `customer` if not specified.
3084
+ attr_accessor :currency
3085
+ # The identifier of the customer whose upcoming invoice you'd like to retrieve. If `automatic_tax` is enabled then one of `customer`, `customer_details`, `subscription`, or `schedule` must be set.
3086
+ attr_accessor :customer
3087
+ # Details about the customer you want to invoice or overrides for an existing customer. If `automatic_tax` is enabled then one of `customer`, `customer_details`, `subscription`, or `schedule` must be set.
3088
+ attr_accessor :customer_details
3089
+ # The coupons to redeem into discounts for the invoice preview. If not specified, inherits the discount from the subscription or customer. This works for both coupons directly applied to an invoice and coupons applied to a subscription. Pass an empty string to avoid inheriting any discounts.
3090
+ attr_accessor :discounts
3091
+ # Specifies which fields in the response should be expanded.
3092
+ attr_accessor :expand
3093
+ # List of invoice items to add or update in the upcoming invoice preview (up to 250).
3094
+ attr_accessor :invoice_items
3095
+ # The connected account that issues the invoice. The invoice is presented with the branding and support information of the specified account.
3096
+ attr_accessor :issuer
3097
+ # The account (if any) for which the funds of the invoice payment are intended. If set, the invoice will be presented with the branding and support information of the specified account. See the [Invoices with Connect](https://stripe.com/docs/billing/invoices/connect) documentation for details.
3098
+ attr_accessor :on_behalf_of
3099
+ # Customizes the types of values to include when calculating the invoice. Defaults to `next` if unspecified.
3100
+ attr_accessor :preview_mode
3101
+ # The identifier of the schedule whose upcoming invoice you'd like to retrieve. Cannot be used with subscription or subscription fields.
3102
+ attr_accessor :schedule
3103
+ # The schedule creation or modification params to apply as a preview. Cannot be used with `subscription` or `subscription_` prefixed fields.
3104
+ attr_accessor :schedule_details
3105
+ # The identifier of the subscription for which you'd like to retrieve the upcoming invoice. If not provided, but a `subscription_details.items` is provided, you will preview creating a subscription with those items. If neither `subscription` nor `subscription_details.items` is provided, you will retrieve the next upcoming invoice from among the customer's subscriptions.
3106
+ attr_accessor :subscription
3107
+ # The subscription creation or modification params to apply as a preview. Cannot be used with `schedule` or `schedule_details` fields.
3108
+ attr_accessor :subscription_details
3109
+
3110
+ def initialize(
3111
+ automatic_tax: nil,
3112
+ currency: nil,
3113
+ customer: nil,
3114
+ customer_details: nil,
3115
+ discounts: nil,
3116
+ expand: nil,
3117
+ invoice_items: nil,
3118
+ issuer: nil,
3119
+ on_behalf_of: nil,
3120
+ preview_mode: nil,
3121
+ schedule: nil,
3122
+ schedule_details: nil,
3123
+ subscription: nil,
3124
+ subscription_details: nil
3125
+ )
3126
+ @automatic_tax = automatic_tax
3127
+ @currency = currency
3128
+ @customer = customer
3129
+ @customer_details = customer_details
3130
+ @discounts = discounts
3131
+ @expand = expand
3132
+ @invoice_items = invoice_items
3133
+ @issuer = issuer
3134
+ @on_behalf_of = on_behalf_of
3135
+ @preview_mode = preview_mode
3136
+ @schedule = schedule
3137
+ @schedule_details = schedule_details
3138
+ @subscription = subscription
3139
+ @subscription_details = subscription_details
3140
+ end
3141
+ end
3142
+ # The country of the business associated with this invoice, most often the business creating the invoice.
3143
+ attr_reader :account_country
3144
+ # The public name of the business associated with this invoice, most often the business creating the invoice.
3145
+ attr_reader :account_name
3146
+ # The account tax IDs associated with the invoice. Only editable when the invoice is a draft.
3147
+ attr_reader :account_tax_ids
3148
+ # Final amount due at this time for this invoice. If the invoice's total is smaller than the minimum charge amount, for example, or if there is account credit that can be applied to the invoice, the `amount_due` may be 0. If there is a positive `starting_balance` for the invoice (the customer owes money), the `amount_due` will also take that into account. The charge that gets generated for the invoice will be for the amount specified in `amount_due`.
3149
+ attr_reader :amount_due
3150
+ # Amount that was overpaid on the invoice. The amount overpaid is credited to the customer's credit balance.
3151
+ attr_reader :amount_overpaid
3152
+ # The amount, in cents (or local equivalent), that was paid.
3153
+ attr_reader :amount_paid
3154
+ # The difference between amount_due and amount_paid, in cents (or local equivalent).
3155
+ attr_reader :amount_remaining
3156
+ # This is the sum of all the shipping amounts.
3157
+ attr_reader :amount_shipping
3158
+ # ID of the Connect Application that created the invoice.
3159
+ attr_reader :application
3160
+ # Number of payment attempts made for this invoice, from the perspective of the payment retry schedule. Any payment attempt counts as the first attempt, and subsequently only automatic retries increment the attempt count. In other words, manual payment attempts after the first attempt do not affect the retry schedule. If a failure is returned with a non-retryable return code, the invoice can no longer be retried unless a new payment method is obtained. Retries will continue to be scheduled, and attempt_count will continue to increment, but retries will only be executed if a new payment method is obtained.
3161
+ attr_reader :attempt_count
3162
+ # Whether an attempt has been made to pay the invoice. An invoice is not attempted until 1 hour after the `invoice.created` webhook, for example, so you might not want to display that invoice as unpaid to your users.
3163
+ attr_reader :attempted
3164
+ # Controls whether Stripe performs [automatic collection](https://stripe.com/docs/invoicing/integration/automatic-advancement-collection) of the invoice. If `false`, the invoice's state doesn't automatically advance without an explicit action.
3165
+ attr_reader :auto_advance
3166
+ # Attribute for field automatic_tax
3167
+ attr_reader :automatic_tax
3168
+ # The time when this invoice is currently scheduled to be automatically finalized. The field will be `null` if the invoice is not scheduled to finalize in the future. If the invoice is not in the draft state, this field will always be `null` - see `finalized_at` for the time when an already-finalized invoice was finalized.
3169
+ attr_reader :automatically_finalizes_at
3170
+ # Indicates the reason why the invoice was created.
3171
+ #
3172
+ # * `manual`: Unrelated to a subscription, for example, created via the invoice editor.
3173
+ # * `subscription`: No longer in use. Applies to subscriptions from before May 2018 where no distinction was made between updates, cycles, and thresholds.
3174
+ # * `subscription_create`: A new subscription was created.
3175
+ # * `subscription_cycle`: A subscription advanced into a new period.
3176
+ # * `subscription_threshold`: A subscription reached a billing threshold.
3177
+ # * `subscription_update`: A subscription was updated.
3178
+ # * `upcoming`: Reserved for simulated invoices, per the upcoming invoice endpoint.
3179
+ attr_reader :billing_reason
3180
+ # Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay this invoice using the default source attached to the customer. When sending an invoice, Stripe will email this invoice to the customer with payment instructions.
3181
+ attr_reader :collection_method
3182
+ # The confirmation secret associated with this invoice. Currently, this contains the client_secret of the PaymentIntent that Stripe creates during invoice finalization.
3183
+ attr_reader :confirmation_secret
3184
+ # Time at which the object was created. Measured in seconds since the Unix epoch.
3185
+ attr_reader :created
3186
+ # Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).
3187
+ attr_reader :currency
3188
+ # Custom fields displayed on the invoice.
3189
+ attr_reader :custom_fields
3190
+ # The ID of the customer who will be billed.
3191
+ attr_reader :customer
3192
+ # The customer's address. Until the invoice is finalized, this field will equal `customer.address`. Once the invoice is finalized, this field will no longer be updated.
3193
+ attr_reader :customer_address
3194
+ # The customer's email. Until the invoice is finalized, this field will equal `customer.email`. Once the invoice is finalized, this field will no longer be updated.
3195
+ attr_reader :customer_email
3196
+ # The customer's name. Until the invoice is finalized, this field will equal `customer.name`. Once the invoice is finalized, this field will no longer be updated.
3197
+ attr_reader :customer_name
3198
+ # The customer's phone number. Until the invoice is finalized, this field will equal `customer.phone`. Once the invoice is finalized, this field will no longer be updated.
3199
+ attr_reader :customer_phone
3200
+ # The customer's shipping information. Until the invoice is finalized, this field will equal `customer.shipping`. Once the invoice is finalized, this field will no longer be updated.
3201
+ attr_reader :customer_shipping
3202
+ # The customer's tax exempt status. Until the invoice is finalized, this field will equal `customer.tax_exempt`. Once the invoice is finalized, this field will no longer be updated.
3203
+ attr_reader :customer_tax_exempt
3204
+ # The customer's tax IDs. Until the invoice is finalized, this field will contain the same tax IDs as `customer.tax_ids`. Once the invoice is finalized, this field will no longer be updated.
3205
+ attr_reader :customer_tax_ids
3206
+ # ID of the default payment method for the invoice. It must belong to the customer associated with the invoice. If not set, defaults to the subscription's default payment method, if any, or to the default payment method in the customer's invoice settings.
3207
+ attr_reader :default_payment_method
3208
+ # ID of the default payment source for the invoice. It must belong to the customer associated with the invoice and be in a chargeable state. If not set, defaults to the subscription's default source, if any, or to the customer's default source.
3209
+ attr_reader :default_source
3210
+ # The tax rates applied to this invoice, if any.
3211
+ attr_reader :default_tax_rates
3212
+ # An arbitrary string attached to the object. Often useful for displaying to users. Referenced as 'memo' in the Dashboard.
3213
+ attr_reader :description
3214
+ # The discounts applied to the invoice. Line item discounts are applied before invoice discounts. Use `expand[]=discounts` to expand each discount.
3215
+ attr_reader :discounts
3216
+ # The date on which payment for this invoice is due. This value will be `null` for invoices where `collection_method=charge_automatically`.
3217
+ attr_reader :due_date
3218
+ # The date when this invoice is in effect. Same as `finalized_at` unless overwritten. When defined, this value replaces the system-generated 'Date of issue' printed on the invoice PDF and receipt.
3219
+ attr_reader :effective_at
3220
+ # Ending customer balance after the invoice is finalized. Invoices are finalized approximately an hour after successful webhook delivery or when payment collection is attempted for the invoice. If the invoice has not been finalized yet, this will be null.
3221
+ attr_reader :ending_balance
3222
+ # Footer displayed on the invoice.
3223
+ attr_reader :footer
3224
+ # Details of the invoice that was cloned. See the [revision documentation](https://stripe.com/docs/invoicing/invoice-revisions) for more details.
3225
+ attr_reader :from_invoice
3226
+ # The URL for the hosted invoice page, which allows customers to view and pay an invoice. If the invoice has not been finalized yet, this will be null.
3227
+ attr_reader :hosted_invoice_url
3228
+ # Unique identifier for the object. For preview invoices created using the [create preview](https://stripe.com/docs/api/invoices/create_preview) endpoint, this id will be prefixed with `upcoming_in`.
3229
+ attr_reader :id
3230
+ # The link to download the PDF for the invoice. If the invoice has not been finalized yet, this will be null.
3231
+ attr_reader :invoice_pdf
3232
+ # Attribute for field issuer
3233
+ attr_reader :issuer
3234
+ # The error encountered during the previous attempt to finalize the invoice. This field is cleared when the invoice is successfully finalized.
3235
+ attr_reader :last_finalization_error
3236
+ # The ID of the most recent non-draft revision of this invoice
3237
+ attr_reader :latest_revision
3238
+ # The individual line items that make up the invoice. `lines` is sorted as follows: (1) pending invoice items (including prorations) in reverse chronological order, (2) subscription items in reverse chronological order, and (3) invoice items added after invoice creation in chronological order.
3239
+ attr_reader :lines
3240
+ # Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.
3241
+ attr_reader :livemode
3242
+ # 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.
3243
+ attr_reader :metadata
3244
+ # The time at which payment will next be attempted. This value will be `null` for invoices where `collection_method=send_invoice`.
3245
+ attr_reader :next_payment_attempt
3246
+ # A unique, identifying string that appears on emails sent to the customer for this invoice. This starts with the customer's unique invoice_prefix if it is specified.
3247
+ attr_reader :number
3248
+ # String representing the object's type. Objects of the same type share the same value.
3249
+ attr_reader :object
3250
+ # The account (if any) for which the funds of the invoice payment are intended. If set, the invoice will be presented with the branding and support information of the specified account. See the [Invoices with Connect](https://stripe.com/docs/billing/invoices/connect) documentation for details.
3251
+ attr_reader :on_behalf_of
3252
+ # The parent that generated this invoice
3253
+ attr_reader :parent
3254
+ # Attribute for field payment_settings
3255
+ attr_reader :payment_settings
3256
+ # Payments for this invoice
3257
+ attr_reader :payments
3258
+ # End of the usage period during which invoice items were added to this invoice. This looks back one period for a subscription invoice. Use the [line item period](/api/invoices/line_item#invoice_line_item_object-period) to get the service period for each price.
3259
+ attr_reader :period_end
3260
+ # Start of the usage period during which invoice items were added to this invoice. This looks back one period for a subscription invoice. Use the [line item period](/api/invoices/line_item#invoice_line_item_object-period) to get the service period for each price.
3261
+ attr_reader :period_start
3262
+ # Total amount of all post-payment credit notes issued for this invoice.
3263
+ attr_reader :post_payment_credit_notes_amount
3264
+ # Total amount of all pre-payment credit notes issued for this invoice.
3265
+ attr_reader :pre_payment_credit_notes_amount
3266
+ # This is the transaction number that appears on email receipts sent for this invoice.
3267
+ attr_reader :receipt_number
3268
+ # The rendering-related settings that control how the invoice is displayed on customer-facing surfaces such as PDF and Hosted Invoice Page.
3269
+ attr_reader :rendering
3270
+ # The details of the cost of shipping, including the ShippingRate applied on the invoice.
3271
+ attr_reader :shipping_cost
3272
+ # Shipping details for the invoice. The Invoice PDF will use the `shipping_details` value if it is set, otherwise the PDF will render the shipping address from the customer.
3273
+ attr_reader :shipping_details
3274
+ # Starting customer balance before the invoice is finalized. If the invoice has not been finalized yet, this will be the current customer balance. For revision invoices, this also includes any customer balance that was applied to the original invoice.
3275
+ attr_reader :starting_balance
3276
+ # Extra information about an invoice for the customer's credit card statement.
3277
+ attr_reader :statement_descriptor
3278
+ # The status of the invoice, one of `draft`, `open`, `paid`, `uncollectible`, or `void`. [Learn more](https://stripe.com/docs/billing/invoices/workflow#workflow-overview)
3279
+ attr_reader :status
3280
+ # Attribute for field status_transitions
3281
+ attr_reader :status_transitions
3282
+ # Total of all subscriptions, invoice items, and prorations on the invoice before any invoice level discount or exclusive tax is applied. Item discounts are already incorporated
3283
+ attr_reader :subtotal
3284
+ # The integer amount in cents (or local equivalent) representing the subtotal of the invoice before any invoice level discount or tax is applied. Item discounts are already incorporated
3285
+ attr_reader :subtotal_excluding_tax
3286
+ # ID of the test clock this invoice belongs to.
3287
+ attr_reader :test_clock
3288
+ # Attribute for field threshold_reason
3289
+ attr_reader :threshold_reason
3290
+ # Total after discounts and taxes.
3291
+ attr_reader :total
3292
+ # The aggregate amounts calculated per discount across all line items.
3293
+ attr_reader :total_discount_amounts
3294
+ # The integer amount in cents (or local equivalent) representing the total amount of the invoice including all discounts but excluding all tax.
3295
+ attr_reader :total_excluding_tax
3296
+ # Contains pretax credit amounts (ex: discount, credit grants, etc) that apply to this invoice. This is a combined list of total_pretax_credit_amounts across all invoice line items.
3297
+ attr_reader :total_pretax_credit_amounts
3298
+ # The aggregate tax information of all line items.
3299
+ attr_reader :total_taxes
3300
+ # Invoices are automatically paid or sent 1 hour after webhooks are delivered, or until all webhook delivery attempts have [been exhausted](https://stripe.com/docs/billing/webhooks#understand). This field tracks the time when webhooks for this invoice were successfully delivered. If the invoice had no webhooks to deliver, this will be set while the invoice is being created.
3301
+ attr_reader :webhooks_delivered_at
3302
+ # Always true for a deleted object
3303
+ attr_reader :deleted
3304
+
3305
+ # Adds multiple line items to an invoice. This is only possible when an invoice is still a draft.
3306
+ def add_lines(params = {}, opts = {})
3307
+ request_stripe_object(
3308
+ method: :post,
3309
+ path: format("/v1/invoices/%<invoice>s/add_lines", { invoice: CGI.escape(self["id"]) }),
3310
+ params: params,
3311
+ opts: opts
3312
+ )
3313
+ end
3314
+
3315
+ # Adds multiple line items to an invoice. This is only possible when an invoice is still a draft.
3316
+ def self.add_lines(invoice, params = {}, opts = {})
3317
+ request_stripe_object(
3318
+ method: :post,
3319
+ path: format("/v1/invoices/%<invoice>s/add_lines", { invoice: CGI.escape(invoice) }),
3320
+ params: params,
3321
+ opts: opts
3322
+ )
3323
+ end
3324
+
3325
+ # Attaches a PaymentIntent or an Out of Band Payment to the invoice, adding it to the list of payments.
3326
+ #
3327
+ # For the PaymentIntent, when the PaymentIntent's status changes to succeeded, the payment is credited
3328
+ # to the invoice, increasing its amount_paid. When the invoice is fully paid, the
3329
+ # invoice's status becomes paid.
3330
+ #
3331
+ # If the PaymentIntent's status is already succeeded when it's attached, it's
3332
+ # credited to the invoice immediately.
3333
+ #
3334
+ # See: [Partial payments](https://docs.stripe.com/docs/invoicing/partial-payments) to learn more.
3335
+ def attach_payment(params = {}, opts = {})
3336
+ request_stripe_object(
3337
+ method: :post,
3338
+ path: format("/v1/invoices/%<invoice>s/attach_payment", { invoice: CGI.escape(self["id"]) }),
3339
+ params: params,
3340
+ opts: opts
3341
+ )
3342
+ end
3343
+
3344
+ # Attaches a PaymentIntent or an Out of Band Payment to the invoice, adding it to the list of payments.
3345
+ #
3346
+ # For the PaymentIntent, when the PaymentIntent's status changes to succeeded, the payment is credited
3347
+ # to the invoice, increasing its amount_paid. When the invoice is fully paid, the
3348
+ # invoice's status becomes paid.
3349
+ #
3350
+ # If the PaymentIntent's status is already succeeded when it's attached, it's
3351
+ # credited to the invoice immediately.
3352
+ #
3353
+ # See: [Partial payments](https://docs.stripe.com/docs/invoicing/partial-payments) to learn more.
3354
+ def self.attach_payment(invoice, params = {}, opts = {})
3355
+ request_stripe_object(
3356
+ method: :post,
3357
+ path: format("/v1/invoices/%<invoice>s/attach_payment", { invoice: CGI.escape(invoice) }),
3358
+ params: params,
3359
+ opts: opts
3360
+ )
3361
+ end
3362
+
3363
+ # This endpoint creates a draft invoice for a given customer. The invoice remains a draft until you [finalize the invoice, which allows you to [pay](#pay_invoice) or <a href="#send_invoice">send](https://docs.stripe.com/api#finalize_invoice) the invoice to your customers.
3364
+ def self.create(params = {}, opts = {})
3365
+ request_stripe_object(method: :post, path: "/v1/invoices", params: params, opts: opts)
3366
+ end
3367
+
3368
+ # At any time, you can preview the upcoming invoice for a subscription or subscription schedule. This will show you all the charges that are pending, including subscription renewal charges, invoice item charges, etc. It will also show you any discounts that are applicable to the invoice.
3369
+ #
3370
+ # You can also preview the effects of creating or updating a subscription or subscription schedule, including a preview of any prorations that will take place. To ensure that the actual proration is calculated exactly the same as the previewed proration, you should pass the subscription_details.proration_date parameter when doing the actual subscription update.
3371
+ #
3372
+ # The recommended way to get only the prorations being previewed on the invoice is to consider line items where parent.subscription_item_details.proration is true.
3373
+ #
3374
+ # Note that when you are viewing an upcoming invoice, you are simply viewing a preview – the invoice has not yet been created. As such, the upcoming invoice will not show up in invoice listing calls, and you cannot use the API to pay or edit the invoice. If you want to change the amount that your customer will be billed, you can add, remove, or update pending invoice items, or update the customer's discount.
3375
+ #
3376
+ # Note: Currency conversion calculations use the latest exchange rates. Exchange rates may vary between the time of the preview and the time of the actual invoice creation. [Learn more](https://docs.stripe.com/currencies/conversions)
3377
+ def self.create_preview(params = {}, opts = {})
3378
+ request_stripe_object(
3379
+ method: :post,
3380
+ path: "/v1/invoices/create_preview",
3381
+ params: params,
3382
+ opts: opts
3383
+ )
3384
+ end
3385
+
3386
+ # Permanently deletes a one-off invoice draft. This cannot be undone. Attempts to delete invoices that are no longer in a draft state will fail; once an invoice has been finalized or if an invoice is for a subscription, it must be [voided](https://docs.stripe.com/api#void_invoice).
3387
+ def self.delete(invoice, params = {}, opts = {})
3388
+ request_stripe_object(
3389
+ method: :delete,
3390
+ path: format("/v1/invoices/%<invoice>s", { invoice: CGI.escape(invoice) }),
3391
+ params: params,
3392
+ opts: opts
3393
+ )
3394
+ end
3395
+
3396
+ # Permanently deletes a one-off invoice draft. This cannot be undone. Attempts to delete invoices that are no longer in a draft state will fail; once an invoice has been finalized or if an invoice is for a subscription, it must be [voided](https://docs.stripe.com/api#void_invoice).
3397
+ def delete(params = {}, opts = {})
3398
+ request_stripe_object(
3399
+ method: :delete,
3400
+ path: format("/v1/invoices/%<invoice>s", { invoice: CGI.escape(self["id"]) }),
3401
+ params: params,
3402
+ opts: opts
3403
+ )
3404
+ end
3405
+
3406
+ # Stripe automatically finalizes drafts before sending and attempting payment on invoices. However, if you'd like to finalize a draft invoice manually, you can do so using this method.
19
3407
  def finalize_invoice(params = {}, opts = {})
20
3408
  request_stripe_object(
21
3409
  method: :post,
22
- path: resource_url + "/finalize",
3410
+ path: format("/v1/invoices/%<invoice>s/finalize", { invoice: CGI.escape(self["id"]) }),
23
3411
  params: params,
24
3412
  opts: opts
25
3413
  )
26
3414
  end
27
3415
 
3416
+ # Stripe automatically finalizes drafts before sending and attempting payment on invoices. However, if you'd like to finalize a draft invoice manually, you can do so using this method.
3417
+ def self.finalize_invoice(invoice, params = {}, opts = {})
3418
+ request_stripe_object(
3419
+ method: :post,
3420
+ path: format("/v1/invoices/%<invoice>s/finalize", { invoice: CGI.escape(invoice) }),
3421
+ params: params,
3422
+ opts: opts
3423
+ )
3424
+ end
3425
+
3426
+ # You can list all invoices, or list the invoices for a specific customer. The invoices are returned sorted by creation date, with the most recently created invoices appearing first.
3427
+ def self.list(params = {}, opts = {})
3428
+ request_stripe_object(method: :get, path: "/v1/invoices", params: params, opts: opts)
3429
+ end
3430
+
3431
+ # Marking an invoice as uncollectible is useful for keeping track of bad debts that can be written off for accounting purposes.
28
3432
  def mark_uncollectible(params = {}, opts = {})
29
3433
  request_stripe_object(
30
3434
  method: :post,
31
- path: resource_url + "/mark_uncollectible",
3435
+ path: format("/v1/invoices/%<invoice>s/mark_uncollectible", { invoice: CGI.escape(self["id"]) }),
32
3436
  params: params,
33
3437
  opts: opts
34
3438
  )
35
3439
  end
36
3440
 
3441
+ # Marking an invoice as uncollectible is useful for keeping track of bad debts that can be written off for accounting purposes.
3442
+ def self.mark_uncollectible(invoice, params = {}, opts = {})
3443
+ request_stripe_object(
3444
+ method: :post,
3445
+ path: format("/v1/invoices/%<invoice>s/mark_uncollectible", { invoice: CGI.escape(invoice) }),
3446
+ params: params,
3447
+ opts: opts
3448
+ )
3449
+ end
3450
+
3451
+ # Stripe automatically creates and then attempts to collect payment on invoices for customers on subscriptions according to your [subscriptions settings](https://dashboard.stripe.com/account/billing/automatic). However, if you'd like to attempt payment on an invoice out of the normal collection schedule or for some other reason, you can do so.
37
3452
  def pay(params = {}, opts = {})
38
3453
  request_stripe_object(
39
3454
  method: :post,
40
- path: resource_url + "/pay",
3455
+ path: format("/v1/invoices/%<invoice>s/pay", { invoice: CGI.escape(self["id"]) }),
3456
+ params: params,
3457
+ opts: opts
3458
+ )
3459
+ end
3460
+
3461
+ # Stripe automatically creates and then attempts to collect payment on invoices for customers on subscriptions according to your [subscriptions settings](https://dashboard.stripe.com/account/billing/automatic). However, if you'd like to attempt payment on an invoice out of the normal collection schedule or for some other reason, you can do so.
3462
+ def self.pay(invoice, params = {}, opts = {})
3463
+ request_stripe_object(
3464
+ method: :post,
3465
+ path: format("/v1/invoices/%<invoice>s/pay", { invoice: CGI.escape(invoice) }),
41
3466
  params: params,
42
3467
  opts: opts
43
3468
  )
44
3469
  end
45
3470
 
3471
+ # Removes multiple line items from an invoice. This is only possible when an invoice is still a draft.
3472
+ def remove_lines(params = {}, opts = {})
3473
+ request_stripe_object(
3474
+ method: :post,
3475
+ path: format("/v1/invoices/%<invoice>s/remove_lines", { invoice: CGI.escape(self["id"]) }),
3476
+ params: params,
3477
+ opts: opts
3478
+ )
3479
+ end
3480
+
3481
+ # Removes multiple line items from an invoice. This is only possible when an invoice is still a draft.
3482
+ def self.remove_lines(invoice, params = {}, opts = {})
3483
+ request_stripe_object(
3484
+ method: :post,
3485
+ path: format("/v1/invoices/%<invoice>s/remove_lines", { invoice: CGI.escape(invoice) }),
3486
+ params: params,
3487
+ opts: opts
3488
+ )
3489
+ end
3490
+
3491
+ def self.search(params = {}, opts = {})
3492
+ request_stripe_object(method: :get, path: "/v1/invoices/search", params: params, opts: opts)
3493
+ end
3494
+
3495
+ def self.search_auto_paging_each(params = {}, opts = {}, &blk)
3496
+ search(params, opts).auto_paging_each(&blk)
3497
+ end
3498
+
3499
+ # Stripe will automatically send invoices to customers according to your [subscriptions settings](https://dashboard.stripe.com/account/billing/automatic). However, if you'd like to manually send an invoice to your customer out of the normal schedule, you can do so. When sending invoices that have already been paid, there will be no reference to the payment in the email.
3500
+ #
3501
+ # Requests made in test-mode result in no emails being sent, despite sending an invoice.sent event.
46
3502
  def send_invoice(params = {}, opts = {})
47
3503
  request_stripe_object(
48
3504
  method: :post,
49
- path: resource_url + "/send",
3505
+ path: format("/v1/invoices/%<invoice>s/send", { invoice: CGI.escape(self["id"]) }),
50
3506
  params: params,
51
3507
  opts: opts
52
3508
  )
53
3509
  end
54
3510
 
55
- def void_invoice(params = {}, opts = {})
3511
+ # Stripe will automatically send invoices to customers according to your [subscriptions settings](https://dashboard.stripe.com/account/billing/automatic). However, if you'd like to manually send an invoice to your customer out of the normal schedule, you can do so. When sending invoices that have already been paid, there will be no reference to the payment in the email.
3512
+ #
3513
+ # Requests made in test-mode result in no emails being sent, despite sending an invoice.sent event.
3514
+ def self.send_invoice(invoice, params = {}, opts = {})
56
3515
  request_stripe_object(
57
3516
  method: :post,
58
- path: resource_url + "/void",
3517
+ path: format("/v1/invoices/%<invoice>s/send", { invoice: CGI.escape(invoice) }),
59
3518
  params: params,
60
3519
  opts: opts
61
3520
  )
62
3521
  end
63
3522
 
64
- def self.upcoming(params, opts = {})
65
- resp, opts = execute_resource_request(:get, resource_url + "/upcoming", params, opts)
66
- Util.convert_to_stripe_object(resp.data, opts)
3523
+ # Draft invoices are fully editable. Once an invoice is [finalized](https://docs.stripe.com/docs/billing/invoices/workflow#finalized),
3524
+ # monetary values, as well as collection_method, become uneditable.
3525
+ #
3526
+ # If you would like to stop the Stripe Billing engine from automatically finalizing, reattempting payments on,
3527
+ # sending reminders for, or [automatically reconciling](https://docs.stripe.com/docs/billing/invoices/reconciliation) invoices, pass
3528
+ # auto_advance=false.
3529
+ def self.update(invoice, params = {}, opts = {})
3530
+ request_stripe_object(
3531
+ method: :post,
3532
+ path: format("/v1/invoices/%<invoice>s", { invoice: CGI.escape(invoice) }),
3533
+ params: params,
3534
+ opts: opts
3535
+ )
67
3536
  end
68
3537
 
69
- def self.list_upcoming_line_items(params, opts = {})
70
- resp, opts = execute_resource_request(:get, resource_url + "/upcoming/lines", params, opts)
71
- Util.convert_to_stripe_object(resp.data, opts)
3538
+ # Updates multiple line items on an invoice. This is only possible when an invoice is still a draft.
3539
+ def update_lines(params = {}, opts = {})
3540
+ request_stripe_object(
3541
+ method: :post,
3542
+ path: format("/v1/invoices/%<invoice>s/update_lines", { invoice: CGI.escape(self["id"]) }),
3543
+ params: params,
3544
+ opts: opts
3545
+ )
3546
+ end
3547
+
3548
+ # Updates multiple line items on an invoice. This is only possible when an invoice is still a draft.
3549
+ def self.update_lines(invoice, params = {}, opts = {})
3550
+ request_stripe_object(
3551
+ method: :post,
3552
+ path: format("/v1/invoices/%<invoice>s/update_lines", { invoice: CGI.escape(invoice) }),
3553
+ params: params,
3554
+ opts: opts
3555
+ )
3556
+ end
3557
+
3558
+ # Mark a finalized invoice as void. This cannot be undone. Voiding an invoice is similar to [deletion](https://docs.stripe.com/api#delete_invoice), however it only applies to finalized invoices and maintains a papertrail where the invoice can still be found.
3559
+ #
3560
+ # Consult with local regulations to determine whether and how an invoice might be amended, canceled, or voided in the jurisdiction you're doing business in. You might need to [issue another invoice or <a href="#create_credit_note">credit note](https://docs.stripe.com/api#create_invoice) instead. Stripe recommends that you consult with your legal counsel for advice specific to your business.
3561
+ def void_invoice(params = {}, opts = {})
3562
+ request_stripe_object(
3563
+ method: :post,
3564
+ path: format("/v1/invoices/%<invoice>s/void", { invoice: CGI.escape(self["id"]) }),
3565
+ params: params,
3566
+ opts: opts
3567
+ )
3568
+ end
3569
+
3570
+ # Mark a finalized invoice as void. This cannot be undone. Voiding an invoice is similar to [deletion](https://docs.stripe.com/api#delete_invoice), however it only applies to finalized invoices and maintains a papertrail where the invoice can still be found.
3571
+ #
3572
+ # Consult with local regulations to determine whether and how an invoice might be amended, canceled, or voided in the jurisdiction you're doing business in. You might need to [issue another invoice or <a href="#create_credit_note">credit note](https://docs.stripe.com/api#create_invoice) instead. Stripe recommends that you consult with your legal counsel for advice specific to your business.
3573
+ def self.void_invoice(invoice, params = {}, opts = {})
3574
+ request_stripe_object(
3575
+ method: :post,
3576
+ path: format("/v1/invoices/%<invoice>s/void", { invoice: CGI.escape(invoice) }),
3577
+ params: params,
3578
+ opts: opts
3579
+ )
72
3580
  end
73
3581
  end
74
3582
  end