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
@@ -0,0 +1,2900 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ class InvoiceService < StripeService
6
+ attr_reader :line_items
7
+
8
+ def initialize(requestor)
9
+ super
10
+ @line_items = Stripe::InvoiceLineItemService.new(@requestor)
11
+ end
12
+
13
+ class DeleteParams < Stripe::RequestParams; end
14
+
15
+ class RetrieveParams < Stripe::RequestParams
16
+ # Specifies which fields in the response should be expanded.
17
+ attr_accessor :expand
18
+
19
+ def initialize(expand: nil)
20
+ @expand = expand
21
+ end
22
+ end
23
+
24
+ class UpdateParams < Stripe::RequestParams
25
+ class AutomaticTax < Stripe::RequestParams
26
+ class Liability < Stripe::RequestParams
27
+ # The connected account being referenced when `type` is `account`.
28
+ attr_accessor :account
29
+ # Type of the account referenced in the request.
30
+ attr_accessor :type
31
+
32
+ def initialize(account: nil, type: nil)
33
+ @account = account
34
+ @type = type
35
+ end
36
+ end
37
+ # 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.
38
+ attr_accessor :enabled
39
+ # 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.
40
+ attr_accessor :liability
41
+
42
+ def initialize(enabled: nil, liability: nil)
43
+ @enabled = enabled
44
+ @liability = liability
45
+ end
46
+ end
47
+
48
+ class CustomField < Stripe::RequestParams
49
+ # The name of the custom field. This may be up to 40 characters.
50
+ attr_accessor :name
51
+ # The value of the custom field. This may be up to 140 characters.
52
+ attr_accessor :value
53
+
54
+ def initialize(name: nil, value: nil)
55
+ @name = name
56
+ @value = value
57
+ end
58
+ end
59
+
60
+ class Discount < Stripe::RequestParams
61
+ # ID of the coupon to create a new discount for.
62
+ attr_accessor :coupon
63
+ # ID of an existing discount on the object (or one of its ancestors) to reuse.
64
+ attr_accessor :discount
65
+ # ID of the promotion code to create a new discount for.
66
+ attr_accessor :promotion_code
67
+
68
+ def initialize(coupon: nil, discount: nil, promotion_code: nil)
69
+ @coupon = coupon
70
+ @discount = discount
71
+ @promotion_code = promotion_code
72
+ end
73
+ end
74
+
75
+ class Issuer < Stripe::RequestParams
76
+ # The connected account being referenced when `type` is `account`.
77
+ attr_accessor :account
78
+ # Type of the account referenced in the request.
79
+ attr_accessor :type
80
+
81
+ def initialize(account: nil, type: nil)
82
+ @account = account
83
+ @type = type
84
+ end
85
+ end
86
+
87
+ class PaymentSettings < Stripe::RequestParams
88
+ class PaymentMethodOptions < Stripe::RequestParams
89
+ class AcssDebit < Stripe::RequestParams
90
+ class MandateOptions < Stripe::RequestParams
91
+ # Transaction type of the mandate.
92
+ attr_accessor :transaction_type
93
+
94
+ def initialize(transaction_type: nil)
95
+ @transaction_type = transaction_type
96
+ end
97
+ end
98
+ # Additional fields for Mandate creation
99
+ attr_accessor :mandate_options
100
+ # Verification method for the intent
101
+ attr_accessor :verification_method
102
+
103
+ def initialize(mandate_options: nil, verification_method: nil)
104
+ @mandate_options = mandate_options
105
+ @verification_method = verification_method
106
+ end
107
+ end
108
+
109
+ class Bancontact < Stripe::RequestParams
110
+ # Preferred language of the Bancontact authorization page that the customer is redirected to.
111
+ attr_accessor :preferred_language
112
+
113
+ def initialize(preferred_language: nil)
114
+ @preferred_language = preferred_language
115
+ end
116
+ end
117
+
118
+ class Card < Stripe::RequestParams
119
+ class Installments < Stripe::RequestParams
120
+ class Plan < Stripe::RequestParams
121
+ # For `fixed_count` installment plans, this is required. It represents the number of installment payments your customer will make to their credit card.
122
+ attr_accessor :count
123
+ # For `fixed_count` installment plans, this is required. It represents the interval between installment payments your customer will make to their credit card.
124
+ # One of `month`.
125
+ attr_accessor :interval
126
+ # Type of installment plan, one of `fixed_count`.
127
+ attr_accessor :type
128
+
129
+ def initialize(count: nil, interval: nil, type: nil)
130
+ @count = count
131
+ @interval = interval
132
+ @type = type
133
+ end
134
+ end
135
+ # Setting to true enables installments for this invoice.
136
+ # Setting to false will prevent any selected plan from applying to a payment.
137
+ attr_accessor :enabled
138
+ # The selected installment plan to use for this invoice.
139
+ attr_accessor :plan
140
+
141
+ def initialize(enabled: nil, plan: nil)
142
+ @enabled = enabled
143
+ @plan = plan
144
+ end
145
+ end
146
+ # Installment configuration for payments attempted on this invoice (Mexico Only).
147
+ #
148
+ # For more information, see the [installments integration guide](https://stripe.com/docs/payments/installments).
149
+ attr_accessor :installments
150
+ # 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.
151
+ attr_accessor :request_three_d_secure
152
+
153
+ def initialize(installments: nil, request_three_d_secure: nil)
154
+ @installments = installments
155
+ @request_three_d_secure = request_three_d_secure
156
+ end
157
+ end
158
+
159
+ class CustomerBalance < Stripe::RequestParams
160
+ class BankTransfer < Stripe::RequestParams
161
+ class EuBankTransfer < Stripe::RequestParams
162
+ # The desired country code of the bank account information. Permitted values include: `BE`, `DE`, `ES`, `FR`, `IE`, or `NL`.
163
+ attr_accessor :country
164
+
165
+ def initialize(country: nil)
166
+ @country = country
167
+ end
168
+ end
169
+ # Configuration for eu_bank_transfer funding type.
170
+ attr_accessor :eu_bank_transfer
171
+ # 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`.
172
+ attr_accessor :type
173
+
174
+ def initialize(eu_bank_transfer: nil, type: nil)
175
+ @eu_bank_transfer = eu_bank_transfer
176
+ @type = type
177
+ end
178
+ end
179
+ # Configuration for the bank transfer funding type, if the `funding_type` is set to `bank_transfer`.
180
+ attr_accessor :bank_transfer
181
+ # The funding method type to be used when there are not enough funds in the customer balance. Permitted values include: `bank_transfer`.
182
+ attr_accessor :funding_type
183
+
184
+ def initialize(bank_transfer: nil, funding_type: nil)
185
+ @bank_transfer = bank_transfer
186
+ @funding_type = funding_type
187
+ end
188
+ end
189
+
190
+ class Konbini < Stripe::RequestParams; end
191
+ class SepaDebit < Stripe::RequestParams; end
192
+
193
+ class UsBankAccount < Stripe::RequestParams
194
+ class FinancialConnections < Stripe::RequestParams
195
+ class Filters < Stripe::RequestParams
196
+ # The account subcategories to use to filter for selectable accounts. Valid subcategories are `checking` and `savings`.
197
+ attr_accessor :account_subcategories
198
+
199
+ def initialize(account_subcategories: nil)
200
+ @account_subcategories = account_subcategories
201
+ end
202
+ end
203
+ # Provide filters for the linked accounts that the customer can select for the payment method.
204
+ attr_accessor :filters
205
+ # 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`.
206
+ attr_accessor :permissions
207
+ # List of data features that you would like to retrieve upon account creation.
208
+ attr_accessor :prefetch
209
+
210
+ def initialize(filters: nil, permissions: nil, prefetch: nil)
211
+ @filters = filters
212
+ @permissions = permissions
213
+ @prefetch = prefetch
214
+ end
215
+ end
216
+ # Additional fields for Financial Connections Session creation
217
+ attr_accessor :financial_connections
218
+ # Verification method for the intent
219
+ attr_accessor :verification_method
220
+
221
+ def initialize(financial_connections: nil, verification_method: nil)
222
+ @financial_connections = financial_connections
223
+ @verification_method = verification_method
224
+ end
225
+ end
226
+ # 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.
227
+ attr_accessor :acss_debit
228
+ # If paying by `bancontact`, this sub-hash contains details about the Bancontact payment method options to pass to the invoice’s PaymentIntent.
229
+ attr_accessor :bancontact
230
+ # If paying by `card`, this sub-hash contains details about the Card payment method options to pass to the invoice’s PaymentIntent.
231
+ attr_accessor :card
232
+ # If paying by `customer_balance`, this sub-hash contains details about the Bank transfer payment method options to pass to the invoice’s PaymentIntent.
233
+ attr_accessor :customer_balance
234
+ # If paying by `konbini`, this sub-hash contains details about the Konbini payment method options to pass to the invoice’s PaymentIntent.
235
+ attr_accessor :konbini
236
+ # 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.
237
+ attr_accessor :sepa_debit
238
+ # 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.
239
+ attr_accessor :us_bank_account
240
+
241
+ def initialize(
242
+ acss_debit: nil,
243
+ bancontact: nil,
244
+ card: nil,
245
+ customer_balance: nil,
246
+ konbini: nil,
247
+ sepa_debit: nil,
248
+ us_bank_account: nil
249
+ )
250
+ @acss_debit = acss_debit
251
+ @bancontact = bancontact
252
+ @card = card
253
+ @customer_balance = customer_balance
254
+ @konbini = konbini
255
+ @sepa_debit = sepa_debit
256
+ @us_bank_account = us_bank_account
257
+ end
258
+ end
259
+ # 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.
260
+ attr_accessor :default_mandate
261
+ # Payment-method-specific configuration to provide to the invoice’s PaymentIntent.
262
+ attr_accessor :payment_method_options
263
+ # 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
264
+ attr_accessor :payment_method_types
265
+
266
+ def initialize(default_mandate: nil, payment_method_options: nil, payment_method_types: nil)
267
+ @default_mandate = default_mandate
268
+ @payment_method_options = payment_method_options
269
+ @payment_method_types = payment_method_types
270
+ end
271
+ end
272
+
273
+ class Rendering < Stripe::RequestParams
274
+ class Pdf < Stripe::RequestParams
275
+ # Page size for invoice PDF. Can be set to `a4`, `letter`, or `auto`.
276
+ # If set to `auto`, invoice PDF page size defaults to `a4` for customers with
277
+ # Japanese locale and `letter` for customers with other locales.
278
+ attr_accessor :page_size
279
+
280
+ def initialize(page_size: nil)
281
+ @page_size = page_size
282
+ end
283
+ end
284
+ # 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.
285
+ attr_accessor :amount_tax_display
286
+ # Invoice pdf rendering options
287
+ attr_accessor :pdf
288
+ # ID of the invoice rendering template to use for this invoice.
289
+ attr_accessor :template
290
+ # The specific version of invoice rendering template to use for this invoice.
291
+ attr_accessor :template_version
292
+
293
+ def initialize(amount_tax_display: nil, pdf: nil, template: nil, template_version: nil)
294
+ @amount_tax_display = amount_tax_display
295
+ @pdf = pdf
296
+ @template = template
297
+ @template_version = template_version
298
+ end
299
+ end
300
+
301
+ class ShippingCost < Stripe::RequestParams
302
+ class ShippingRateData < Stripe::RequestParams
303
+ class DeliveryEstimate < Stripe::RequestParams
304
+ class Maximum < Stripe::RequestParams
305
+ # A unit of time.
306
+ attr_accessor :unit
307
+ # Must be greater than 0.
308
+ attr_accessor :value
309
+
310
+ def initialize(unit: nil, value: nil)
311
+ @unit = unit
312
+ @value = value
313
+ end
314
+ end
315
+
316
+ class Minimum < Stripe::RequestParams
317
+ # A unit of time.
318
+ attr_accessor :unit
319
+ # Must be greater than 0.
320
+ attr_accessor :value
321
+
322
+ def initialize(unit: nil, value: nil)
323
+ @unit = unit
324
+ @value = value
325
+ end
326
+ end
327
+ # The upper bound of the estimated range. If empty, represents no upper bound i.e., infinite.
328
+ attr_accessor :maximum
329
+ # The lower bound of the estimated range. If empty, represents no lower bound.
330
+ attr_accessor :minimum
331
+
332
+ def initialize(maximum: nil, minimum: nil)
333
+ @maximum = maximum
334
+ @minimum = minimum
335
+ end
336
+ end
337
+
338
+ class FixedAmount < Stripe::RequestParams
339
+ class CurrencyOptions < Stripe::RequestParams
340
+ # A non-negative integer in cents representing how much to charge.
341
+ attr_accessor :amount
342
+ # Specifies whether the rate is considered inclusive of taxes or exclusive of taxes. One of `inclusive`, `exclusive`, or `unspecified`.
343
+ attr_accessor :tax_behavior
344
+
345
+ def initialize(amount: nil, tax_behavior: nil)
346
+ @amount = amount
347
+ @tax_behavior = tax_behavior
348
+ end
349
+ end
350
+ # A non-negative integer in cents representing how much to charge.
351
+ attr_accessor :amount
352
+ # 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).
353
+ attr_accessor :currency
354
+ # 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).
355
+ attr_accessor :currency_options
356
+
357
+ def initialize(amount: nil, currency: nil, currency_options: nil)
358
+ @amount = amount
359
+ @currency = currency
360
+ @currency_options = currency_options
361
+ end
362
+ end
363
+ # The estimated range for how long shipping will take, meant to be displayable to the customer. This will appear on CheckoutSessions.
364
+ attr_accessor :delivery_estimate
365
+ # The name of the shipping rate, meant to be displayable to the customer. This will appear on CheckoutSessions.
366
+ attr_accessor :display_name
367
+ # Describes a fixed amount to charge for shipping. Must be present if type is `fixed_amount`.
368
+ attr_accessor :fixed_amount
369
+ # 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`.
370
+ attr_accessor :metadata
371
+ # Specifies whether the rate is considered inclusive of taxes or exclusive of taxes. One of `inclusive`, `exclusive`, or `unspecified`.
372
+ attr_accessor :tax_behavior
373
+ # A [tax code](https://stripe.com/docs/tax/tax-categories) ID. The Shipping tax code is `txcd_92010001`.
374
+ attr_accessor :tax_code
375
+ # The type of calculation to use on the shipping rate.
376
+ attr_accessor :type
377
+
378
+ def initialize(
379
+ delivery_estimate: nil,
380
+ display_name: nil,
381
+ fixed_amount: nil,
382
+ metadata: nil,
383
+ tax_behavior: nil,
384
+ tax_code: nil,
385
+ type: nil
386
+ )
387
+ @delivery_estimate = delivery_estimate
388
+ @display_name = display_name
389
+ @fixed_amount = fixed_amount
390
+ @metadata = metadata
391
+ @tax_behavior = tax_behavior
392
+ @tax_code = tax_code
393
+ @type = type
394
+ end
395
+ end
396
+ # The ID of the shipping rate to use for this order.
397
+ attr_accessor :shipping_rate
398
+ # Parameters to create a new ad-hoc shipping rate for this order.
399
+ attr_accessor :shipping_rate_data
400
+
401
+ def initialize(shipping_rate: nil, shipping_rate_data: nil)
402
+ @shipping_rate = shipping_rate
403
+ @shipping_rate_data = shipping_rate_data
404
+ end
405
+ end
406
+
407
+ class ShippingDetails < Stripe::RequestParams
408
+ class Address < Stripe::RequestParams
409
+ # City, district, suburb, town, or village.
410
+ attr_accessor :city
411
+ # Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
412
+ attr_accessor :country
413
+ # Address line 1 (e.g., street, PO Box, or company name).
414
+ attr_accessor :line1
415
+ # Address line 2 (e.g., apartment, suite, unit, or building).
416
+ attr_accessor :line2
417
+ # ZIP or postal code.
418
+ attr_accessor :postal_code
419
+ # State, county, province, or region.
420
+ attr_accessor :state
421
+
422
+ def initialize(
423
+ city: nil,
424
+ country: nil,
425
+ line1: nil,
426
+ line2: nil,
427
+ postal_code: nil,
428
+ state: nil
429
+ )
430
+ @city = city
431
+ @country = country
432
+ @line1 = line1
433
+ @line2 = line2
434
+ @postal_code = postal_code
435
+ @state = state
436
+ end
437
+ end
438
+ # Shipping address
439
+ attr_accessor :address
440
+ # Recipient name.
441
+ attr_accessor :name
442
+ # Recipient phone (including extension)
443
+ attr_accessor :phone
444
+
445
+ def initialize(address: nil, name: nil, phone: nil)
446
+ @address = address
447
+ @name = name
448
+ @phone = phone
449
+ end
450
+ end
451
+
452
+ class TransferData < Stripe::RequestParams
453
+ # The amount that will be transferred automatically when the invoice is paid. If no amount is set, the full amount is transferred.
454
+ attr_accessor :amount
455
+ # ID of an existing, connected Stripe account.
456
+ attr_accessor :destination
457
+
458
+ def initialize(amount: nil, destination: nil)
459
+ @amount = amount
460
+ @destination = destination
461
+ end
462
+ end
463
+ # The account tax IDs associated with the invoice. Only editable when the invoice is a draft.
464
+ attr_accessor :account_tax_ids
465
+ # 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).
466
+ attr_accessor :application_fee_amount
467
+ # Controls whether Stripe performs [automatic collection](https://stripe.com/docs/invoicing/integration/automatic-advancement-collection) of the invoice.
468
+ attr_accessor :auto_advance
469
+ # Settings for automatic tax lookup for this invoice.
470
+ attr_accessor :automatic_tax
471
+ # 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.
472
+ attr_accessor :automatically_finalizes_at
473
+ # Either `charge_automatically` or `send_invoice`. This field can be updated only on `draft` invoices.
474
+ attr_accessor :collection_method
475
+ # 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.
476
+ attr_accessor :custom_fields
477
+ # 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.
478
+ attr_accessor :days_until_due
479
+ # 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.
480
+ attr_accessor :default_payment_method
481
+ # 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.
482
+ attr_accessor :default_source
483
+ # 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.
484
+ attr_accessor :default_tax_rates
485
+ # An arbitrary string attached to the object. Often useful for displaying to users. Referenced as 'memo' in the Dashboard.
486
+ attr_accessor :description
487
+ # The discounts that will apply to the invoice. Pass an empty string to remove previously-defined discounts.
488
+ attr_accessor :discounts
489
+ # 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.
490
+ attr_accessor :due_date
491
+ # 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.
492
+ attr_accessor :effective_at
493
+ # Specifies which fields in the response should be expanded.
494
+ attr_accessor :expand
495
+ # Footer to be displayed on the invoice.
496
+ attr_accessor :footer
497
+ # The connected account that issues the invoice. The invoice is presented with the branding and support information of the specified account.
498
+ attr_accessor :issuer
499
+ # 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`.
500
+ attr_accessor :metadata
501
+ # 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.
502
+ attr_accessor :number
503
+ # 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.
504
+ attr_accessor :on_behalf_of
505
+ # Configuration settings for the PaymentIntent that is generated when the invoice is finalized.
506
+ attr_accessor :payment_settings
507
+ # The rendering-related settings that control how the invoice is displayed on customer-facing surfaces such as PDF and Hosted Invoice Page.
508
+ attr_accessor :rendering
509
+ # Settings for the cost of shipping for this invoice.
510
+ attr_accessor :shipping_cost
511
+ # 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.
512
+ attr_accessor :shipping_details
513
+ # 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`.
514
+ attr_accessor :statement_descriptor
515
+ # 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.
516
+ attr_accessor :transfer_data
517
+
518
+ def initialize(
519
+ account_tax_ids: nil,
520
+ application_fee_amount: nil,
521
+ auto_advance: nil,
522
+ automatic_tax: nil,
523
+ automatically_finalizes_at: nil,
524
+ collection_method: nil,
525
+ custom_fields: nil,
526
+ days_until_due: nil,
527
+ default_payment_method: nil,
528
+ default_source: nil,
529
+ default_tax_rates: nil,
530
+ description: nil,
531
+ discounts: nil,
532
+ due_date: nil,
533
+ effective_at: nil,
534
+ expand: nil,
535
+ footer: nil,
536
+ issuer: nil,
537
+ metadata: nil,
538
+ number: nil,
539
+ on_behalf_of: nil,
540
+ payment_settings: nil,
541
+ rendering: nil,
542
+ shipping_cost: nil,
543
+ shipping_details: nil,
544
+ statement_descriptor: nil,
545
+ transfer_data: nil
546
+ )
547
+ @account_tax_ids = account_tax_ids
548
+ @application_fee_amount = application_fee_amount
549
+ @auto_advance = auto_advance
550
+ @automatic_tax = automatic_tax
551
+ @automatically_finalizes_at = automatically_finalizes_at
552
+ @collection_method = collection_method
553
+ @custom_fields = custom_fields
554
+ @days_until_due = days_until_due
555
+ @default_payment_method = default_payment_method
556
+ @default_source = default_source
557
+ @default_tax_rates = default_tax_rates
558
+ @description = description
559
+ @discounts = discounts
560
+ @due_date = due_date
561
+ @effective_at = effective_at
562
+ @expand = expand
563
+ @footer = footer
564
+ @issuer = issuer
565
+ @metadata = metadata
566
+ @number = number
567
+ @on_behalf_of = on_behalf_of
568
+ @payment_settings = payment_settings
569
+ @rendering = rendering
570
+ @shipping_cost = shipping_cost
571
+ @shipping_details = shipping_details
572
+ @statement_descriptor = statement_descriptor
573
+ @transfer_data = transfer_data
574
+ end
575
+ end
576
+
577
+ class ListParams < Stripe::RequestParams
578
+ class Created < Stripe::RequestParams
579
+ # Minimum value to filter by (exclusive)
580
+ attr_accessor :gt
581
+ # Minimum value to filter by (inclusive)
582
+ attr_accessor :gte
583
+ # Maximum value to filter by (exclusive)
584
+ attr_accessor :lt
585
+ # Maximum value to filter by (inclusive)
586
+ attr_accessor :lte
587
+
588
+ def initialize(gt: nil, gte: nil, lt: nil, lte: nil)
589
+ @gt = gt
590
+ @gte = gte
591
+ @lt = lt
592
+ @lte = lte
593
+ end
594
+ end
595
+
596
+ class DueDate < Stripe::RequestParams
597
+ # Minimum value to filter by (exclusive)
598
+ attr_accessor :gt
599
+ # Minimum value to filter by (inclusive)
600
+ attr_accessor :gte
601
+ # Maximum value to filter by (exclusive)
602
+ attr_accessor :lt
603
+ # Maximum value to filter by (inclusive)
604
+ attr_accessor :lte
605
+
606
+ def initialize(gt: nil, gte: nil, lt: nil, lte: nil)
607
+ @gt = gt
608
+ @gte = gte
609
+ @lt = lt
610
+ @lte = lte
611
+ end
612
+ end
613
+ # The collection method of the invoice to retrieve. Either `charge_automatically` or `send_invoice`.
614
+ attr_accessor :collection_method
615
+ # Only return invoices that were created during the given date interval.
616
+ attr_accessor :created
617
+ # Only return invoices for the customer specified by this customer ID.
618
+ attr_accessor :customer
619
+ # Attribute for param field due_date
620
+ attr_accessor :due_date
621
+ # 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.
622
+ attr_accessor :ending_before
623
+ # Specifies which fields in the response should be expanded.
624
+ attr_accessor :expand
625
+ # A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.
626
+ attr_accessor :limit
627
+ # 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.
628
+ attr_accessor :starting_after
629
+ # The status of the invoice, one of `draft`, `open`, `paid`, `uncollectible`, or `void`. [Learn more](https://stripe.com/docs/billing/invoices/workflow#workflow-overview)
630
+ attr_accessor :status
631
+ # Only return invoices for the subscription specified by this subscription ID.
632
+ attr_accessor :subscription
633
+
634
+ def initialize(
635
+ collection_method: nil,
636
+ created: nil,
637
+ customer: nil,
638
+ due_date: nil,
639
+ ending_before: nil,
640
+ expand: nil,
641
+ limit: nil,
642
+ starting_after: nil,
643
+ status: nil,
644
+ subscription: nil
645
+ )
646
+ @collection_method = collection_method
647
+ @created = created
648
+ @customer = customer
649
+ @due_date = due_date
650
+ @ending_before = ending_before
651
+ @expand = expand
652
+ @limit = limit
653
+ @starting_after = starting_after
654
+ @status = status
655
+ @subscription = subscription
656
+ end
657
+ end
658
+
659
+ class CreateParams < Stripe::RequestParams
660
+ class AutomaticTax < Stripe::RequestParams
661
+ class Liability < Stripe::RequestParams
662
+ # The connected account being referenced when `type` is `account`.
663
+ attr_accessor :account
664
+ # Type of the account referenced in the request.
665
+ attr_accessor :type
666
+
667
+ def initialize(account: nil, type: nil)
668
+ @account = account
669
+ @type = type
670
+ end
671
+ end
672
+ # 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.
673
+ attr_accessor :enabled
674
+ # 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.
675
+ attr_accessor :liability
676
+
677
+ def initialize(enabled: nil, liability: nil)
678
+ @enabled = enabled
679
+ @liability = liability
680
+ end
681
+ end
682
+
683
+ class CustomField < Stripe::RequestParams
684
+ # The name of the custom field. This may be up to 40 characters.
685
+ attr_accessor :name
686
+ # The value of the custom field. This may be up to 140 characters.
687
+ attr_accessor :value
688
+
689
+ def initialize(name: nil, value: nil)
690
+ @name = name
691
+ @value = value
692
+ end
693
+ end
694
+
695
+ class Discount < Stripe::RequestParams
696
+ # ID of the coupon to create a new discount for.
697
+ attr_accessor :coupon
698
+ # ID of an existing discount on the object (or one of its ancestors) to reuse.
699
+ attr_accessor :discount
700
+ # ID of the promotion code to create a new discount for.
701
+ attr_accessor :promotion_code
702
+
703
+ def initialize(coupon: nil, discount: nil, promotion_code: nil)
704
+ @coupon = coupon
705
+ @discount = discount
706
+ @promotion_code = promotion_code
707
+ end
708
+ end
709
+
710
+ class FromInvoice < Stripe::RequestParams
711
+ # The relation between the new invoice and the original invoice. Currently, only 'revision' is permitted
712
+ attr_accessor :action
713
+ # The `id` of the invoice that will be cloned.
714
+ attr_accessor :invoice
715
+
716
+ def initialize(action: nil, invoice: nil)
717
+ @action = action
718
+ @invoice = invoice
719
+ end
720
+ end
721
+
722
+ class Issuer < Stripe::RequestParams
723
+ # The connected account being referenced when `type` is `account`.
724
+ attr_accessor :account
725
+ # Type of the account referenced in the request.
726
+ attr_accessor :type
727
+
728
+ def initialize(account: nil, type: nil)
729
+ @account = account
730
+ @type = type
731
+ end
732
+ end
733
+
734
+ class PaymentSettings < Stripe::RequestParams
735
+ class PaymentMethodOptions < Stripe::RequestParams
736
+ class AcssDebit < Stripe::RequestParams
737
+ class MandateOptions < Stripe::RequestParams
738
+ # Transaction type of the mandate.
739
+ attr_accessor :transaction_type
740
+
741
+ def initialize(transaction_type: nil)
742
+ @transaction_type = transaction_type
743
+ end
744
+ end
745
+ # Additional fields for Mandate creation
746
+ attr_accessor :mandate_options
747
+ # Verification method for the intent
748
+ attr_accessor :verification_method
749
+
750
+ def initialize(mandate_options: nil, verification_method: nil)
751
+ @mandate_options = mandate_options
752
+ @verification_method = verification_method
753
+ end
754
+ end
755
+
756
+ class Bancontact < Stripe::RequestParams
757
+ # Preferred language of the Bancontact authorization page that the customer is redirected to.
758
+ attr_accessor :preferred_language
759
+
760
+ def initialize(preferred_language: nil)
761
+ @preferred_language = preferred_language
762
+ end
763
+ end
764
+
765
+ class Card < Stripe::RequestParams
766
+ class Installments < Stripe::RequestParams
767
+ class Plan < Stripe::RequestParams
768
+ # For `fixed_count` installment plans, this is required. It represents the number of installment payments your customer will make to their credit card.
769
+ attr_accessor :count
770
+ # For `fixed_count` installment plans, this is required. It represents the interval between installment payments your customer will make to their credit card.
771
+ # One of `month`.
772
+ attr_accessor :interval
773
+ # Type of installment plan, one of `fixed_count`.
774
+ attr_accessor :type
775
+
776
+ def initialize(count: nil, interval: nil, type: nil)
777
+ @count = count
778
+ @interval = interval
779
+ @type = type
780
+ end
781
+ end
782
+ # Setting to true enables installments for this invoice.
783
+ # Setting to false will prevent any selected plan from applying to a payment.
784
+ attr_accessor :enabled
785
+ # The selected installment plan to use for this invoice.
786
+ attr_accessor :plan
787
+
788
+ def initialize(enabled: nil, plan: nil)
789
+ @enabled = enabled
790
+ @plan = plan
791
+ end
792
+ end
793
+ # Installment configuration for payments attempted on this invoice (Mexico Only).
794
+ #
795
+ # For more information, see the [installments integration guide](https://stripe.com/docs/payments/installments).
796
+ attr_accessor :installments
797
+ # 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.
798
+ attr_accessor :request_three_d_secure
799
+
800
+ def initialize(installments: nil, request_three_d_secure: nil)
801
+ @installments = installments
802
+ @request_three_d_secure = request_three_d_secure
803
+ end
804
+ end
805
+
806
+ class CustomerBalance < Stripe::RequestParams
807
+ class BankTransfer < Stripe::RequestParams
808
+ class EuBankTransfer < Stripe::RequestParams
809
+ # The desired country code of the bank account information. Permitted values include: `BE`, `DE`, `ES`, `FR`, `IE`, or `NL`.
810
+ attr_accessor :country
811
+
812
+ def initialize(country: nil)
813
+ @country = country
814
+ end
815
+ end
816
+ # Configuration for eu_bank_transfer funding type.
817
+ attr_accessor :eu_bank_transfer
818
+ # 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`.
819
+ attr_accessor :type
820
+
821
+ def initialize(eu_bank_transfer: nil, type: nil)
822
+ @eu_bank_transfer = eu_bank_transfer
823
+ @type = type
824
+ end
825
+ end
826
+ # Configuration for the bank transfer funding type, if the `funding_type` is set to `bank_transfer`.
827
+ attr_accessor :bank_transfer
828
+ # The funding method type to be used when there are not enough funds in the customer balance. Permitted values include: `bank_transfer`.
829
+ attr_accessor :funding_type
830
+
831
+ def initialize(bank_transfer: nil, funding_type: nil)
832
+ @bank_transfer = bank_transfer
833
+ @funding_type = funding_type
834
+ end
835
+ end
836
+
837
+ class Konbini < Stripe::RequestParams; end
838
+ class SepaDebit < Stripe::RequestParams; end
839
+
840
+ class UsBankAccount < Stripe::RequestParams
841
+ class FinancialConnections < Stripe::RequestParams
842
+ class Filters < Stripe::RequestParams
843
+ # The account subcategories to use to filter for selectable accounts. Valid subcategories are `checking` and `savings`.
844
+ attr_accessor :account_subcategories
845
+
846
+ def initialize(account_subcategories: nil)
847
+ @account_subcategories = account_subcategories
848
+ end
849
+ end
850
+ # Provide filters for the linked accounts that the customer can select for the payment method.
851
+ attr_accessor :filters
852
+ # 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`.
853
+ attr_accessor :permissions
854
+ # List of data features that you would like to retrieve upon account creation.
855
+ attr_accessor :prefetch
856
+
857
+ def initialize(filters: nil, permissions: nil, prefetch: nil)
858
+ @filters = filters
859
+ @permissions = permissions
860
+ @prefetch = prefetch
861
+ end
862
+ end
863
+ # Additional fields for Financial Connections Session creation
864
+ attr_accessor :financial_connections
865
+ # Verification method for the intent
866
+ attr_accessor :verification_method
867
+
868
+ def initialize(financial_connections: nil, verification_method: nil)
869
+ @financial_connections = financial_connections
870
+ @verification_method = verification_method
871
+ end
872
+ end
873
+ # 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.
874
+ attr_accessor :acss_debit
875
+ # If paying by `bancontact`, this sub-hash contains details about the Bancontact payment method options to pass to the invoice’s PaymentIntent.
876
+ attr_accessor :bancontact
877
+ # If paying by `card`, this sub-hash contains details about the Card payment method options to pass to the invoice’s PaymentIntent.
878
+ attr_accessor :card
879
+ # If paying by `customer_balance`, this sub-hash contains details about the Bank transfer payment method options to pass to the invoice’s PaymentIntent.
880
+ attr_accessor :customer_balance
881
+ # If paying by `konbini`, this sub-hash contains details about the Konbini payment method options to pass to the invoice’s PaymentIntent.
882
+ attr_accessor :konbini
883
+ # 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.
884
+ attr_accessor :sepa_debit
885
+ # 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.
886
+ attr_accessor :us_bank_account
887
+
888
+ def initialize(
889
+ acss_debit: nil,
890
+ bancontact: nil,
891
+ card: nil,
892
+ customer_balance: nil,
893
+ konbini: nil,
894
+ sepa_debit: nil,
895
+ us_bank_account: nil
896
+ )
897
+ @acss_debit = acss_debit
898
+ @bancontact = bancontact
899
+ @card = card
900
+ @customer_balance = customer_balance
901
+ @konbini = konbini
902
+ @sepa_debit = sepa_debit
903
+ @us_bank_account = us_bank_account
904
+ end
905
+ end
906
+ # 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.
907
+ attr_accessor :default_mandate
908
+ # Payment-method-specific configuration to provide to the invoice’s PaymentIntent.
909
+ attr_accessor :payment_method_options
910
+ # 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
911
+ attr_accessor :payment_method_types
912
+
913
+ def initialize(default_mandate: nil, payment_method_options: nil, payment_method_types: nil)
914
+ @default_mandate = default_mandate
915
+ @payment_method_options = payment_method_options
916
+ @payment_method_types = payment_method_types
917
+ end
918
+ end
919
+
920
+ class Rendering < Stripe::RequestParams
921
+ class Pdf < Stripe::RequestParams
922
+ # Page size for invoice PDF. Can be set to `a4`, `letter`, or `auto`.
923
+ # If set to `auto`, invoice PDF page size defaults to `a4` for customers with
924
+ # Japanese locale and `letter` for customers with other locales.
925
+ attr_accessor :page_size
926
+
927
+ def initialize(page_size: nil)
928
+ @page_size = page_size
929
+ end
930
+ end
931
+ # 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.
932
+ attr_accessor :amount_tax_display
933
+ # Invoice pdf rendering options
934
+ attr_accessor :pdf
935
+ # ID of the invoice rendering template to use for this invoice.
936
+ attr_accessor :template
937
+ # The specific version of invoice rendering template to use for this invoice.
938
+ attr_accessor :template_version
939
+
940
+ def initialize(amount_tax_display: nil, pdf: nil, template: nil, template_version: nil)
941
+ @amount_tax_display = amount_tax_display
942
+ @pdf = pdf
943
+ @template = template
944
+ @template_version = template_version
945
+ end
946
+ end
947
+
948
+ class ShippingCost < Stripe::RequestParams
949
+ class ShippingRateData < Stripe::RequestParams
950
+ class DeliveryEstimate < Stripe::RequestParams
951
+ class Maximum < Stripe::RequestParams
952
+ # A unit of time.
953
+ attr_accessor :unit
954
+ # Must be greater than 0.
955
+ attr_accessor :value
956
+
957
+ def initialize(unit: nil, value: nil)
958
+ @unit = unit
959
+ @value = value
960
+ end
961
+ end
962
+
963
+ class Minimum < Stripe::RequestParams
964
+ # A unit of time.
965
+ attr_accessor :unit
966
+ # Must be greater than 0.
967
+ attr_accessor :value
968
+
969
+ def initialize(unit: nil, value: nil)
970
+ @unit = unit
971
+ @value = value
972
+ end
973
+ end
974
+ # The upper bound of the estimated range. If empty, represents no upper bound i.e., infinite.
975
+ attr_accessor :maximum
976
+ # The lower bound of the estimated range. If empty, represents no lower bound.
977
+ attr_accessor :minimum
978
+
979
+ def initialize(maximum: nil, minimum: nil)
980
+ @maximum = maximum
981
+ @minimum = minimum
982
+ end
983
+ end
984
+
985
+ class FixedAmount < Stripe::RequestParams
986
+ class CurrencyOptions < Stripe::RequestParams
987
+ # A non-negative integer in cents representing how much to charge.
988
+ attr_accessor :amount
989
+ # Specifies whether the rate is considered inclusive of taxes or exclusive of taxes. One of `inclusive`, `exclusive`, or `unspecified`.
990
+ attr_accessor :tax_behavior
991
+
992
+ def initialize(amount: nil, tax_behavior: nil)
993
+ @amount = amount
994
+ @tax_behavior = tax_behavior
995
+ end
996
+ end
997
+ # A non-negative integer in cents representing how much to charge.
998
+ attr_accessor :amount
999
+ # 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).
1000
+ attr_accessor :currency
1001
+ # 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).
1002
+ attr_accessor :currency_options
1003
+
1004
+ def initialize(amount: nil, currency: nil, currency_options: nil)
1005
+ @amount = amount
1006
+ @currency = currency
1007
+ @currency_options = currency_options
1008
+ end
1009
+ end
1010
+ # The estimated range for how long shipping will take, meant to be displayable to the customer. This will appear on CheckoutSessions.
1011
+ attr_accessor :delivery_estimate
1012
+ # The name of the shipping rate, meant to be displayable to the customer. This will appear on CheckoutSessions.
1013
+ attr_accessor :display_name
1014
+ # Describes a fixed amount to charge for shipping. Must be present if type is `fixed_amount`.
1015
+ attr_accessor :fixed_amount
1016
+ # 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`.
1017
+ attr_accessor :metadata
1018
+ # Specifies whether the rate is considered inclusive of taxes or exclusive of taxes. One of `inclusive`, `exclusive`, or `unspecified`.
1019
+ attr_accessor :tax_behavior
1020
+ # A [tax code](https://stripe.com/docs/tax/tax-categories) ID. The Shipping tax code is `txcd_92010001`.
1021
+ attr_accessor :tax_code
1022
+ # The type of calculation to use on the shipping rate.
1023
+ attr_accessor :type
1024
+
1025
+ def initialize(
1026
+ delivery_estimate: nil,
1027
+ display_name: nil,
1028
+ fixed_amount: nil,
1029
+ metadata: nil,
1030
+ tax_behavior: nil,
1031
+ tax_code: nil,
1032
+ type: nil
1033
+ )
1034
+ @delivery_estimate = delivery_estimate
1035
+ @display_name = display_name
1036
+ @fixed_amount = fixed_amount
1037
+ @metadata = metadata
1038
+ @tax_behavior = tax_behavior
1039
+ @tax_code = tax_code
1040
+ @type = type
1041
+ end
1042
+ end
1043
+ # The ID of the shipping rate to use for this order.
1044
+ attr_accessor :shipping_rate
1045
+ # Parameters to create a new ad-hoc shipping rate for this order.
1046
+ attr_accessor :shipping_rate_data
1047
+
1048
+ def initialize(shipping_rate: nil, shipping_rate_data: nil)
1049
+ @shipping_rate = shipping_rate
1050
+ @shipping_rate_data = shipping_rate_data
1051
+ end
1052
+ end
1053
+
1054
+ class ShippingDetails < Stripe::RequestParams
1055
+ class Address < Stripe::RequestParams
1056
+ # City, district, suburb, town, or village.
1057
+ attr_accessor :city
1058
+ # Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
1059
+ attr_accessor :country
1060
+ # Address line 1 (e.g., street, PO Box, or company name).
1061
+ attr_accessor :line1
1062
+ # Address line 2 (e.g., apartment, suite, unit, or building).
1063
+ attr_accessor :line2
1064
+ # ZIP or postal code.
1065
+ attr_accessor :postal_code
1066
+ # State, county, province, or region.
1067
+ attr_accessor :state
1068
+
1069
+ def initialize(
1070
+ city: nil,
1071
+ country: nil,
1072
+ line1: nil,
1073
+ line2: nil,
1074
+ postal_code: nil,
1075
+ state: nil
1076
+ )
1077
+ @city = city
1078
+ @country = country
1079
+ @line1 = line1
1080
+ @line2 = line2
1081
+ @postal_code = postal_code
1082
+ @state = state
1083
+ end
1084
+ end
1085
+ # Shipping address
1086
+ attr_accessor :address
1087
+ # Recipient name.
1088
+ attr_accessor :name
1089
+ # Recipient phone (including extension)
1090
+ attr_accessor :phone
1091
+
1092
+ def initialize(address: nil, name: nil, phone: nil)
1093
+ @address = address
1094
+ @name = name
1095
+ @phone = phone
1096
+ end
1097
+ end
1098
+
1099
+ class TransferData < Stripe::RequestParams
1100
+ # The amount that will be transferred automatically when the invoice is paid. If no amount is set, the full amount is transferred.
1101
+ attr_accessor :amount
1102
+ # ID of an existing, connected Stripe account.
1103
+ attr_accessor :destination
1104
+
1105
+ def initialize(amount: nil, destination: nil)
1106
+ @amount = amount
1107
+ @destination = destination
1108
+ end
1109
+ end
1110
+ # The account tax IDs associated with the invoice. Only editable when the invoice is a draft.
1111
+ attr_accessor :account_tax_ids
1112
+ # 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).
1113
+ attr_accessor :application_fee_amount
1114
+ # 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.
1115
+ attr_accessor :auto_advance
1116
+ # Settings for automatic tax lookup for this invoice.
1117
+ attr_accessor :automatic_tax
1118
+ # 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.
1119
+ attr_accessor :automatically_finalizes_at
1120
+ # 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`.
1121
+ attr_accessor :collection_method
1122
+ # The currency to create this invoice in. Defaults to that of `customer` if not specified.
1123
+ attr_accessor :currency
1124
+ # A list of up to 4 custom fields to be displayed on the invoice.
1125
+ attr_accessor :custom_fields
1126
+ # The ID of the customer who will be billed.
1127
+ attr_accessor :customer
1128
+ # The number of days from when the invoice is created until it is due. Valid only for invoices where `collection_method=send_invoice`.
1129
+ attr_accessor :days_until_due
1130
+ # 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.
1131
+ attr_accessor :default_payment_method
1132
+ # 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.
1133
+ attr_accessor :default_source
1134
+ # The tax rates that will apply to any line item that does not have `tax_rates` set.
1135
+ attr_accessor :default_tax_rates
1136
+ # An arbitrary string attached to the object. Often useful for displaying to users. Referenced as 'memo' in the Dashboard.
1137
+ attr_accessor :description
1138
+ # 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.
1139
+ attr_accessor :discounts
1140
+ # The date on which payment for this invoice is due. Valid only for invoices where `collection_method=send_invoice`.
1141
+ attr_accessor :due_date
1142
+ # 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.
1143
+ attr_accessor :effective_at
1144
+ # Specifies which fields in the response should be expanded.
1145
+ attr_accessor :expand
1146
+ # Footer to be displayed on the invoice.
1147
+ attr_accessor :footer
1148
+ # 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.
1149
+ attr_accessor :from_invoice
1150
+ # The connected account that issues the invoice. The invoice is presented with the branding and support information of the specified account.
1151
+ attr_accessor :issuer
1152
+ # 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`.
1153
+ attr_accessor :metadata
1154
+ # 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.
1155
+ attr_accessor :number
1156
+ # 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.
1157
+ attr_accessor :on_behalf_of
1158
+ # Configuration settings for the PaymentIntent that is generated when the invoice is finalized.
1159
+ attr_accessor :payment_settings
1160
+ # How to handle pending invoice items on invoice creation. Defaults to `exclude` if the parameter is omitted.
1161
+ attr_accessor :pending_invoice_items_behavior
1162
+ # The rendering-related settings that control how the invoice is displayed on customer-facing surfaces such as PDF and Hosted Invoice Page.
1163
+ attr_accessor :rendering
1164
+ # Settings for the cost of shipping for this invoice.
1165
+ attr_accessor :shipping_cost
1166
+ # 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.
1167
+ attr_accessor :shipping_details
1168
+ # 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`.
1169
+ attr_accessor :statement_descriptor
1170
+ # 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.
1171
+ attr_accessor :subscription
1172
+ # 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.
1173
+ attr_accessor :transfer_data
1174
+
1175
+ def initialize(
1176
+ account_tax_ids: nil,
1177
+ application_fee_amount: nil,
1178
+ auto_advance: nil,
1179
+ automatic_tax: nil,
1180
+ automatically_finalizes_at: nil,
1181
+ collection_method: nil,
1182
+ currency: nil,
1183
+ custom_fields: nil,
1184
+ customer: nil,
1185
+ days_until_due: nil,
1186
+ default_payment_method: nil,
1187
+ default_source: nil,
1188
+ default_tax_rates: nil,
1189
+ description: nil,
1190
+ discounts: nil,
1191
+ due_date: nil,
1192
+ effective_at: nil,
1193
+ expand: nil,
1194
+ footer: nil,
1195
+ from_invoice: nil,
1196
+ issuer: nil,
1197
+ metadata: nil,
1198
+ number: nil,
1199
+ on_behalf_of: nil,
1200
+ payment_settings: nil,
1201
+ pending_invoice_items_behavior: nil,
1202
+ rendering: nil,
1203
+ shipping_cost: nil,
1204
+ shipping_details: nil,
1205
+ statement_descriptor: nil,
1206
+ subscription: nil,
1207
+ transfer_data: nil
1208
+ )
1209
+ @account_tax_ids = account_tax_ids
1210
+ @application_fee_amount = application_fee_amount
1211
+ @auto_advance = auto_advance
1212
+ @automatic_tax = automatic_tax
1213
+ @automatically_finalizes_at = automatically_finalizes_at
1214
+ @collection_method = collection_method
1215
+ @currency = currency
1216
+ @custom_fields = custom_fields
1217
+ @customer = customer
1218
+ @days_until_due = days_until_due
1219
+ @default_payment_method = default_payment_method
1220
+ @default_source = default_source
1221
+ @default_tax_rates = default_tax_rates
1222
+ @description = description
1223
+ @discounts = discounts
1224
+ @due_date = due_date
1225
+ @effective_at = effective_at
1226
+ @expand = expand
1227
+ @footer = footer
1228
+ @from_invoice = from_invoice
1229
+ @issuer = issuer
1230
+ @metadata = metadata
1231
+ @number = number
1232
+ @on_behalf_of = on_behalf_of
1233
+ @payment_settings = payment_settings
1234
+ @pending_invoice_items_behavior = pending_invoice_items_behavior
1235
+ @rendering = rendering
1236
+ @shipping_cost = shipping_cost
1237
+ @shipping_details = shipping_details
1238
+ @statement_descriptor = statement_descriptor
1239
+ @subscription = subscription
1240
+ @transfer_data = transfer_data
1241
+ end
1242
+ end
1243
+
1244
+ class SearchParams < Stripe::RequestParams
1245
+ # Specifies which fields in the response should be expanded.
1246
+ attr_accessor :expand
1247
+ # A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.
1248
+ attr_accessor :limit
1249
+ # 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.
1250
+ attr_accessor :page
1251
+ # 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).
1252
+ attr_accessor :query
1253
+
1254
+ def initialize(expand: nil, limit: nil, page: nil, query: nil)
1255
+ @expand = expand
1256
+ @limit = limit
1257
+ @page = page
1258
+ @query = query
1259
+ end
1260
+ end
1261
+
1262
+ class AddLinesParams < Stripe::RequestParams
1263
+ class Line < Stripe::RequestParams
1264
+ class Discount < Stripe::RequestParams
1265
+ # ID of the coupon to create a new discount for.
1266
+ attr_accessor :coupon
1267
+ # ID of an existing discount on the object (or one of its ancestors) to reuse.
1268
+ attr_accessor :discount
1269
+ # ID of the promotion code to create a new discount for.
1270
+ attr_accessor :promotion_code
1271
+
1272
+ def initialize(coupon: nil, discount: nil, promotion_code: nil)
1273
+ @coupon = coupon
1274
+ @discount = discount
1275
+ @promotion_code = promotion_code
1276
+ end
1277
+ end
1278
+
1279
+ class Period < Stripe::RequestParams
1280
+ # The end of the period, which must be greater than or equal to the start. This value is inclusive.
1281
+ attr_accessor :end
1282
+ # The start of the period. This value is inclusive.
1283
+ attr_accessor :start
1284
+
1285
+ def initialize(end_: nil, start: nil)
1286
+ @end = end_
1287
+ @start = start
1288
+ end
1289
+ end
1290
+
1291
+ class PriceData < Stripe::RequestParams
1292
+ class ProductData < Stripe::RequestParams
1293
+ # 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.
1294
+ attr_accessor :description
1295
+ # A list of up to 8 URLs of images for this product, meant to be displayable to the customer.
1296
+ attr_accessor :images
1297
+ # 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`.
1298
+ attr_accessor :metadata
1299
+ # The product's name, meant to be displayable to the customer.
1300
+ attr_accessor :name
1301
+ # A [tax code](https://stripe.com/docs/tax/tax-categories) ID.
1302
+ attr_accessor :tax_code
1303
+
1304
+ def initialize(description: nil, images: nil, metadata: nil, name: nil, tax_code: nil)
1305
+ @description = description
1306
+ @images = images
1307
+ @metadata = metadata
1308
+ @name = name
1309
+ @tax_code = tax_code
1310
+ end
1311
+ end
1312
+ # 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).
1313
+ attr_accessor :currency
1314
+ # 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.
1315
+ attr_accessor :product
1316
+ # Data used to generate a new [Product](https://docs.stripe.com/api/products) object inline. One of `product` or `product_data` is required.
1317
+ attr_accessor :product_data
1318
+ # 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.
1319
+ attr_accessor :tax_behavior
1320
+ # A non-negative integer in cents (or local equivalent) representing how much to charge. One of `unit_amount` or `unit_amount_decimal` is required.
1321
+ attr_accessor :unit_amount
1322
+ # 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.
1323
+ attr_accessor :unit_amount_decimal
1324
+
1325
+ def initialize(
1326
+ currency: nil,
1327
+ product: nil,
1328
+ product_data: nil,
1329
+ tax_behavior: nil,
1330
+ unit_amount: nil,
1331
+ unit_amount_decimal: nil
1332
+ )
1333
+ @currency = currency
1334
+ @product = product
1335
+ @product_data = product_data
1336
+ @tax_behavior = tax_behavior
1337
+ @unit_amount = unit_amount
1338
+ @unit_amount_decimal = unit_amount_decimal
1339
+ end
1340
+ end
1341
+
1342
+ class Pricing < Stripe::RequestParams
1343
+ # The ID of the price object.
1344
+ attr_accessor :price
1345
+
1346
+ def initialize(price: nil)
1347
+ @price = price
1348
+ end
1349
+ end
1350
+
1351
+ class TaxAmount < Stripe::RequestParams
1352
+ class TaxRateData < Stripe::RequestParams
1353
+ # Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
1354
+ attr_accessor :country
1355
+ # An arbitrary string attached to the tax rate for your internal use only. It will not be visible to your customers.
1356
+ attr_accessor :description
1357
+ # The display name of the tax rate, which will be shown to users.
1358
+ attr_accessor :display_name
1359
+ # This specifies if the tax rate is inclusive or exclusive.
1360
+ attr_accessor :inclusive
1361
+ # The jurisdiction for the tax rate. You can use this label field for tax reporting purposes. It also appears on your customer’s invoice.
1362
+ attr_accessor :jurisdiction
1363
+ # The level of the jurisdiction that imposes this tax rate.
1364
+ attr_accessor :jurisdiction_level
1365
+ # 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.
1366
+ attr_accessor :percentage
1367
+ # [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.
1368
+ attr_accessor :state
1369
+ # The high-level tax type, such as `vat` or `sales_tax`.
1370
+ attr_accessor :tax_type
1371
+
1372
+ def initialize(
1373
+ country: nil,
1374
+ description: nil,
1375
+ display_name: nil,
1376
+ inclusive: nil,
1377
+ jurisdiction: nil,
1378
+ jurisdiction_level: nil,
1379
+ percentage: nil,
1380
+ state: nil,
1381
+ tax_type: nil
1382
+ )
1383
+ @country = country
1384
+ @description = description
1385
+ @display_name = display_name
1386
+ @inclusive = inclusive
1387
+ @jurisdiction = jurisdiction
1388
+ @jurisdiction_level = jurisdiction_level
1389
+ @percentage = percentage
1390
+ @state = state
1391
+ @tax_type = tax_type
1392
+ end
1393
+ end
1394
+ # The amount, in cents (or local equivalent), of the tax.
1395
+ attr_accessor :amount
1396
+ # Data to find or create a TaxRate object.
1397
+ #
1398
+ # 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.
1399
+ attr_accessor :tax_rate_data
1400
+ # The reasoning behind this tax, for example, if the product is tax exempt.
1401
+ attr_accessor :taxability_reason
1402
+ # The amount on which tax is calculated, in cents (or local equivalent).
1403
+ attr_accessor :taxable_amount
1404
+
1405
+ def initialize(
1406
+ amount: nil,
1407
+ tax_rate_data: nil,
1408
+ taxability_reason: nil,
1409
+ taxable_amount: nil
1410
+ )
1411
+ @amount = amount
1412
+ @tax_rate_data = tax_rate_data
1413
+ @taxability_reason = taxability_reason
1414
+ @taxable_amount = taxable_amount
1415
+ end
1416
+ end
1417
+ # 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.
1418
+ attr_accessor :amount
1419
+ # An arbitrary string which you can attach to the invoice item. The description is displayed in the invoice for easy tracking.
1420
+ attr_accessor :description
1421
+ # 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.
1422
+ attr_accessor :discountable
1423
+ # 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.
1424
+ attr_accessor :discounts
1425
+ # ID of an unassigned invoice item to assign to this invoice. If not provided, a new item will be created.
1426
+ attr_accessor :invoice_item
1427
+ # 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`.
1428
+ attr_accessor :metadata
1429
+ # 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.
1430
+ attr_accessor :period
1431
+ # Data used to generate a new [Price](https://stripe.com/docs/api/prices) object inline.
1432
+ attr_accessor :price_data
1433
+ # The pricing information for the invoice item.
1434
+ attr_accessor :pricing
1435
+ # Non-negative integer. The quantity of units for the line item.
1436
+ attr_accessor :quantity
1437
+ # 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.
1438
+ attr_accessor :tax_amounts
1439
+ # 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.
1440
+ attr_accessor :tax_rates
1441
+
1442
+ def initialize(
1443
+ amount: nil,
1444
+ description: nil,
1445
+ discountable: nil,
1446
+ discounts: nil,
1447
+ invoice_item: nil,
1448
+ metadata: nil,
1449
+ period: nil,
1450
+ price_data: nil,
1451
+ pricing: nil,
1452
+ quantity: nil,
1453
+ tax_amounts: nil,
1454
+ tax_rates: nil
1455
+ )
1456
+ @amount = amount
1457
+ @description = description
1458
+ @discountable = discountable
1459
+ @discounts = discounts
1460
+ @invoice_item = invoice_item
1461
+ @metadata = metadata
1462
+ @period = period
1463
+ @price_data = price_data
1464
+ @pricing = pricing
1465
+ @quantity = quantity
1466
+ @tax_amounts = tax_amounts
1467
+ @tax_rates = tax_rates
1468
+ end
1469
+ end
1470
+ # Specifies which fields in the response should be expanded.
1471
+ attr_accessor :expand
1472
+ # 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`.
1473
+ attr_accessor :invoice_metadata
1474
+ # The line items to add.
1475
+ attr_accessor :lines
1476
+
1477
+ def initialize(expand: nil, invoice_metadata: nil, lines: nil)
1478
+ @expand = expand
1479
+ @invoice_metadata = invoice_metadata
1480
+ @lines = lines
1481
+ end
1482
+ end
1483
+
1484
+ class AttachPaymentParams < Stripe::RequestParams
1485
+ # Specifies which fields in the response should be expanded.
1486
+ attr_accessor :expand
1487
+ # The ID of the PaymentIntent to attach to the invoice.
1488
+ attr_accessor :payment_intent
1489
+
1490
+ def initialize(expand: nil, payment_intent: nil)
1491
+ @expand = expand
1492
+ @payment_intent = payment_intent
1493
+ end
1494
+ end
1495
+
1496
+ class FinalizeInvoiceParams < Stripe::RequestParams
1497
+ # 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.
1498
+ attr_accessor :auto_advance
1499
+ # Specifies which fields in the response should be expanded.
1500
+ attr_accessor :expand
1501
+
1502
+ def initialize(auto_advance: nil, expand: nil)
1503
+ @auto_advance = auto_advance
1504
+ @expand = expand
1505
+ end
1506
+ end
1507
+
1508
+ class MarkUncollectibleParams < Stripe::RequestParams
1509
+ # Specifies which fields in the response should be expanded.
1510
+ attr_accessor :expand
1511
+
1512
+ def initialize(expand: nil)
1513
+ @expand = expand
1514
+ end
1515
+ end
1516
+
1517
+ class PayParams < Stripe::RequestParams
1518
+ # Specifies which fields in the response should be expanded.
1519
+ attr_accessor :expand
1520
+ # 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.
1521
+ #
1522
+ # 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`.
1523
+ attr_accessor :forgive
1524
+ # 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.
1525
+ attr_accessor :mandate
1526
+ # Indicates if a customer is on or off-session while an invoice payment is attempted. Defaults to `true` (off-session).
1527
+ attr_accessor :off_session
1528
+ # Boolean representing whether an invoice is paid outside of Stripe. This will result in no charge being made. Defaults to `false`.
1529
+ attr_accessor :paid_out_of_band
1530
+ # A PaymentMethod to be charged. The PaymentMethod must be the ID of a PaymentMethod belonging to the customer associated with the invoice being paid.
1531
+ attr_accessor :payment_method
1532
+ # 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.
1533
+ attr_accessor :source
1534
+
1535
+ def initialize(
1536
+ expand: nil,
1537
+ forgive: nil,
1538
+ mandate: nil,
1539
+ off_session: nil,
1540
+ paid_out_of_band: nil,
1541
+ payment_method: nil,
1542
+ source: nil
1543
+ )
1544
+ @expand = expand
1545
+ @forgive = forgive
1546
+ @mandate = mandate
1547
+ @off_session = off_session
1548
+ @paid_out_of_band = paid_out_of_band
1549
+ @payment_method = payment_method
1550
+ @source = source
1551
+ end
1552
+ end
1553
+
1554
+ class RemoveLinesParams < Stripe::RequestParams
1555
+ class Line < Stripe::RequestParams
1556
+ # Either `delete` or `unassign`. Deleted line items are permanently deleted. Unassigned line items can be reassigned to an invoice.
1557
+ attr_accessor :behavior
1558
+ # ID of an existing line item to remove from this invoice.
1559
+ attr_accessor :id
1560
+
1561
+ def initialize(behavior: nil, id: nil)
1562
+ @behavior = behavior
1563
+ @id = id
1564
+ end
1565
+ end
1566
+ # Specifies which fields in the response should be expanded.
1567
+ attr_accessor :expand
1568
+ # 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`.
1569
+ attr_accessor :invoice_metadata
1570
+ # The line items to remove.
1571
+ attr_accessor :lines
1572
+
1573
+ def initialize(expand: nil, invoice_metadata: nil, lines: nil)
1574
+ @expand = expand
1575
+ @invoice_metadata = invoice_metadata
1576
+ @lines = lines
1577
+ end
1578
+ end
1579
+
1580
+ class SendInvoiceParams < Stripe::RequestParams
1581
+ # Specifies which fields in the response should be expanded.
1582
+ attr_accessor :expand
1583
+
1584
+ def initialize(expand: nil)
1585
+ @expand = expand
1586
+ end
1587
+ end
1588
+
1589
+ class UpdateLinesParams < Stripe::RequestParams
1590
+ class Line < Stripe::RequestParams
1591
+ class Discount < Stripe::RequestParams
1592
+ # ID of the coupon to create a new discount for.
1593
+ attr_accessor :coupon
1594
+ # ID of an existing discount on the object (or one of its ancestors) to reuse.
1595
+ attr_accessor :discount
1596
+ # ID of the promotion code to create a new discount for.
1597
+ attr_accessor :promotion_code
1598
+
1599
+ def initialize(coupon: nil, discount: nil, promotion_code: nil)
1600
+ @coupon = coupon
1601
+ @discount = discount
1602
+ @promotion_code = promotion_code
1603
+ end
1604
+ end
1605
+
1606
+ class Period < Stripe::RequestParams
1607
+ # The end of the period, which must be greater than or equal to the start. This value is inclusive.
1608
+ attr_accessor :end
1609
+ # The start of the period. This value is inclusive.
1610
+ attr_accessor :start
1611
+
1612
+ def initialize(end_: nil, start: nil)
1613
+ @end = end_
1614
+ @start = start
1615
+ end
1616
+ end
1617
+
1618
+ class PriceData < Stripe::RequestParams
1619
+ class ProductData < Stripe::RequestParams
1620
+ # 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.
1621
+ attr_accessor :description
1622
+ # A list of up to 8 URLs of images for this product, meant to be displayable to the customer.
1623
+ attr_accessor :images
1624
+ # 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`.
1625
+ attr_accessor :metadata
1626
+ # The product's name, meant to be displayable to the customer.
1627
+ attr_accessor :name
1628
+ # A [tax code](https://stripe.com/docs/tax/tax-categories) ID.
1629
+ attr_accessor :tax_code
1630
+
1631
+ def initialize(description: nil, images: nil, metadata: nil, name: nil, tax_code: nil)
1632
+ @description = description
1633
+ @images = images
1634
+ @metadata = metadata
1635
+ @name = name
1636
+ @tax_code = tax_code
1637
+ end
1638
+ end
1639
+ # 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).
1640
+ attr_accessor :currency
1641
+ # 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.
1642
+ attr_accessor :product
1643
+ # Data used to generate a new [Product](https://docs.stripe.com/api/products) object inline. One of `product` or `product_data` is required.
1644
+ attr_accessor :product_data
1645
+ # 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.
1646
+ attr_accessor :tax_behavior
1647
+ # A non-negative integer in cents (or local equivalent) representing how much to charge. One of `unit_amount` or `unit_amount_decimal` is required.
1648
+ attr_accessor :unit_amount
1649
+ # 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.
1650
+ attr_accessor :unit_amount_decimal
1651
+
1652
+ def initialize(
1653
+ currency: nil,
1654
+ product: nil,
1655
+ product_data: nil,
1656
+ tax_behavior: nil,
1657
+ unit_amount: nil,
1658
+ unit_amount_decimal: nil
1659
+ )
1660
+ @currency = currency
1661
+ @product = product
1662
+ @product_data = product_data
1663
+ @tax_behavior = tax_behavior
1664
+ @unit_amount = unit_amount
1665
+ @unit_amount_decimal = unit_amount_decimal
1666
+ end
1667
+ end
1668
+
1669
+ class Pricing < Stripe::RequestParams
1670
+ # The ID of the price object.
1671
+ attr_accessor :price
1672
+
1673
+ def initialize(price: nil)
1674
+ @price = price
1675
+ end
1676
+ end
1677
+
1678
+ class TaxAmount < Stripe::RequestParams
1679
+ class TaxRateData < Stripe::RequestParams
1680
+ # Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
1681
+ attr_accessor :country
1682
+ # An arbitrary string attached to the tax rate for your internal use only. It will not be visible to your customers.
1683
+ attr_accessor :description
1684
+ # The display name of the tax rate, which will be shown to users.
1685
+ attr_accessor :display_name
1686
+ # This specifies if the tax rate is inclusive or exclusive.
1687
+ attr_accessor :inclusive
1688
+ # The jurisdiction for the tax rate. You can use this label field for tax reporting purposes. It also appears on your customer’s invoice.
1689
+ attr_accessor :jurisdiction
1690
+ # The level of the jurisdiction that imposes this tax rate.
1691
+ attr_accessor :jurisdiction_level
1692
+ # 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.
1693
+ attr_accessor :percentage
1694
+ # [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.
1695
+ attr_accessor :state
1696
+ # The high-level tax type, such as `vat` or `sales_tax`.
1697
+ attr_accessor :tax_type
1698
+
1699
+ def initialize(
1700
+ country: nil,
1701
+ description: nil,
1702
+ display_name: nil,
1703
+ inclusive: nil,
1704
+ jurisdiction: nil,
1705
+ jurisdiction_level: nil,
1706
+ percentage: nil,
1707
+ state: nil,
1708
+ tax_type: nil
1709
+ )
1710
+ @country = country
1711
+ @description = description
1712
+ @display_name = display_name
1713
+ @inclusive = inclusive
1714
+ @jurisdiction = jurisdiction
1715
+ @jurisdiction_level = jurisdiction_level
1716
+ @percentage = percentage
1717
+ @state = state
1718
+ @tax_type = tax_type
1719
+ end
1720
+ end
1721
+ # The amount, in cents (or local equivalent), of the tax.
1722
+ attr_accessor :amount
1723
+ # Data to find or create a TaxRate object.
1724
+ #
1725
+ # 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.
1726
+ attr_accessor :tax_rate_data
1727
+ # The reasoning behind this tax, for example, if the product is tax exempt.
1728
+ attr_accessor :taxability_reason
1729
+ # The amount on which tax is calculated, in cents (or local equivalent).
1730
+ attr_accessor :taxable_amount
1731
+
1732
+ def initialize(
1733
+ amount: nil,
1734
+ tax_rate_data: nil,
1735
+ taxability_reason: nil,
1736
+ taxable_amount: nil
1737
+ )
1738
+ @amount = amount
1739
+ @tax_rate_data = tax_rate_data
1740
+ @taxability_reason = taxability_reason
1741
+ @taxable_amount = taxable_amount
1742
+ end
1743
+ end
1744
+ # 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.
1745
+ attr_accessor :amount
1746
+ # An arbitrary string which you can attach to the invoice item. The description is displayed in the invoice for easy tracking.
1747
+ attr_accessor :description
1748
+ # 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.
1749
+ attr_accessor :discountable
1750
+ # 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.
1751
+ attr_accessor :discounts
1752
+ # ID of an existing line item on the invoice.
1753
+ attr_accessor :id
1754
+ # 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.
1755
+ attr_accessor :metadata
1756
+ # 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.
1757
+ attr_accessor :period
1758
+ # Data used to generate a new [Price](https://stripe.com/docs/api/prices) object inline.
1759
+ attr_accessor :price_data
1760
+ # The pricing information for the invoice item.
1761
+ attr_accessor :pricing
1762
+ # Non-negative integer. The quantity of units for the line item.
1763
+ attr_accessor :quantity
1764
+ # 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.
1765
+ attr_accessor :tax_amounts
1766
+ # 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.
1767
+ attr_accessor :tax_rates
1768
+
1769
+ def initialize(
1770
+ amount: nil,
1771
+ description: nil,
1772
+ discountable: nil,
1773
+ discounts: nil,
1774
+ id: nil,
1775
+ metadata: nil,
1776
+ period: nil,
1777
+ price_data: nil,
1778
+ pricing: nil,
1779
+ quantity: nil,
1780
+ tax_amounts: nil,
1781
+ tax_rates: nil
1782
+ )
1783
+ @amount = amount
1784
+ @description = description
1785
+ @discountable = discountable
1786
+ @discounts = discounts
1787
+ @id = id
1788
+ @metadata = metadata
1789
+ @period = period
1790
+ @price_data = price_data
1791
+ @pricing = pricing
1792
+ @quantity = quantity
1793
+ @tax_amounts = tax_amounts
1794
+ @tax_rates = tax_rates
1795
+ end
1796
+ end
1797
+ # Specifies which fields in the response should be expanded.
1798
+ attr_accessor :expand
1799
+ # 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.
1800
+ attr_accessor :invoice_metadata
1801
+ # The line items to update.
1802
+ attr_accessor :lines
1803
+
1804
+ def initialize(expand: nil, invoice_metadata: nil, lines: nil)
1805
+ @expand = expand
1806
+ @invoice_metadata = invoice_metadata
1807
+ @lines = lines
1808
+ end
1809
+ end
1810
+
1811
+ class VoidInvoiceParams < Stripe::RequestParams
1812
+ # Specifies which fields in the response should be expanded.
1813
+ attr_accessor :expand
1814
+
1815
+ def initialize(expand: nil)
1816
+ @expand = expand
1817
+ end
1818
+ end
1819
+
1820
+ class CreatePreviewParams < Stripe::RequestParams
1821
+ class AutomaticTax < Stripe::RequestParams
1822
+ class Liability < Stripe::RequestParams
1823
+ # The connected account being referenced when `type` is `account`.
1824
+ attr_accessor :account
1825
+ # Type of the account referenced in the request.
1826
+ attr_accessor :type
1827
+
1828
+ def initialize(account: nil, type: nil)
1829
+ @account = account
1830
+ @type = type
1831
+ end
1832
+ end
1833
+ # 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.
1834
+ attr_accessor :enabled
1835
+ # 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.
1836
+ attr_accessor :liability
1837
+
1838
+ def initialize(enabled: nil, liability: nil)
1839
+ @enabled = enabled
1840
+ @liability = liability
1841
+ end
1842
+ end
1843
+
1844
+ class CustomerDetails < Stripe::RequestParams
1845
+ class Address < Stripe::RequestParams
1846
+ # City, district, suburb, town, or village.
1847
+ attr_accessor :city
1848
+ # Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
1849
+ attr_accessor :country
1850
+ # Address line 1 (e.g., street, PO Box, or company name).
1851
+ attr_accessor :line1
1852
+ # Address line 2 (e.g., apartment, suite, unit, or building).
1853
+ attr_accessor :line2
1854
+ # ZIP or postal code.
1855
+ attr_accessor :postal_code
1856
+ # State, county, province, or region.
1857
+ attr_accessor :state
1858
+
1859
+ def initialize(
1860
+ city: nil,
1861
+ country: nil,
1862
+ line1: nil,
1863
+ line2: nil,
1864
+ postal_code: nil,
1865
+ state: nil
1866
+ )
1867
+ @city = city
1868
+ @country = country
1869
+ @line1 = line1
1870
+ @line2 = line2
1871
+ @postal_code = postal_code
1872
+ @state = state
1873
+ end
1874
+ end
1875
+
1876
+ class Shipping < Stripe::RequestParams
1877
+ class Address < Stripe::RequestParams
1878
+ # City, district, suburb, town, or village.
1879
+ attr_accessor :city
1880
+ # 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)).
1881
+ attr_accessor :country
1882
+ # Address line 1 (e.g., street, PO Box, or company name).
1883
+ attr_accessor :line1
1884
+ # Address line 2 (e.g., apartment, suite, unit, or building).
1885
+ attr_accessor :line2
1886
+ # ZIP or postal code.
1887
+ attr_accessor :postal_code
1888
+ # State, county, province, or region.
1889
+ attr_accessor :state
1890
+
1891
+ def initialize(
1892
+ city: nil,
1893
+ country: nil,
1894
+ line1: nil,
1895
+ line2: nil,
1896
+ postal_code: nil,
1897
+ state: nil
1898
+ )
1899
+ @city = city
1900
+ @country = country
1901
+ @line1 = line1
1902
+ @line2 = line2
1903
+ @postal_code = postal_code
1904
+ @state = state
1905
+ end
1906
+ end
1907
+ # Customer shipping address.
1908
+ attr_accessor :address
1909
+ # Customer name.
1910
+ attr_accessor :name
1911
+ # Customer phone (including extension).
1912
+ attr_accessor :phone
1913
+
1914
+ def initialize(address: nil, name: nil, phone: nil)
1915
+ @address = address
1916
+ @name = name
1917
+ @phone = phone
1918
+ end
1919
+ end
1920
+
1921
+ class Tax < Stripe::RequestParams
1922
+ # 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.
1923
+ attr_accessor :ip_address
1924
+
1925
+ def initialize(ip_address: nil)
1926
+ @ip_address = ip_address
1927
+ end
1928
+ end
1929
+
1930
+ class TaxId < Stripe::RequestParams
1931
+ # 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`
1932
+ attr_accessor :type
1933
+ # Value of the tax ID.
1934
+ attr_accessor :value
1935
+
1936
+ def initialize(type: nil, value: nil)
1937
+ @type = type
1938
+ @value = value
1939
+ end
1940
+ end
1941
+ # The customer's address.
1942
+ attr_accessor :address
1943
+ # The customer's shipping information. Appears on invoices emailed to this customer.
1944
+ attr_accessor :shipping
1945
+ # Tax details about the customer.
1946
+ attr_accessor :tax
1947
+ # The customer's tax exemption. One of `none`, `exempt`, or `reverse`.
1948
+ attr_accessor :tax_exempt
1949
+ # The customer's tax IDs.
1950
+ attr_accessor :tax_ids
1951
+
1952
+ def initialize(address: nil, shipping: nil, tax: nil, tax_exempt: nil, tax_ids: nil)
1953
+ @address = address
1954
+ @shipping = shipping
1955
+ @tax = tax
1956
+ @tax_exempt = tax_exempt
1957
+ @tax_ids = tax_ids
1958
+ end
1959
+ end
1960
+
1961
+ class Discount < Stripe::RequestParams
1962
+ # ID of the coupon to create a new discount for.
1963
+ attr_accessor :coupon
1964
+ # ID of an existing discount on the object (or one of its ancestors) to reuse.
1965
+ attr_accessor :discount
1966
+ # ID of the promotion code to create a new discount for.
1967
+ attr_accessor :promotion_code
1968
+
1969
+ def initialize(coupon: nil, discount: nil, promotion_code: nil)
1970
+ @coupon = coupon
1971
+ @discount = discount
1972
+ @promotion_code = promotion_code
1973
+ end
1974
+ end
1975
+
1976
+ class InvoiceItem < Stripe::RequestParams
1977
+ class Discount < Stripe::RequestParams
1978
+ # ID of the coupon to create a new discount for.
1979
+ attr_accessor :coupon
1980
+ # ID of an existing discount on the object (or one of its ancestors) to reuse.
1981
+ attr_accessor :discount
1982
+ # ID of the promotion code to create a new discount for.
1983
+ attr_accessor :promotion_code
1984
+
1985
+ def initialize(coupon: nil, discount: nil, promotion_code: nil)
1986
+ @coupon = coupon
1987
+ @discount = discount
1988
+ @promotion_code = promotion_code
1989
+ end
1990
+ end
1991
+
1992
+ class Period < Stripe::RequestParams
1993
+ # The end of the period, which must be greater than or equal to the start. This value is inclusive.
1994
+ attr_accessor :end
1995
+ # The start of the period. This value is inclusive.
1996
+ attr_accessor :start
1997
+
1998
+ def initialize(end_: nil, start: nil)
1999
+ @end = end_
2000
+ @start = start
2001
+ end
2002
+ end
2003
+
2004
+ class PriceData < Stripe::RequestParams
2005
+ # 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).
2006
+ attr_accessor :currency
2007
+ # The ID of the [Product](https://docs.stripe.com/api/products) that this [Price](https://docs.stripe.com/api/prices) will belong to.
2008
+ attr_accessor :product
2009
+ # 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.
2010
+ attr_accessor :tax_behavior
2011
+ # A positive integer in cents (or local equivalent) (or 0 for a free price) representing how much to charge.
2012
+ attr_accessor :unit_amount
2013
+ # 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.
2014
+ attr_accessor :unit_amount_decimal
2015
+
2016
+ def initialize(
2017
+ currency: nil,
2018
+ product: nil,
2019
+ tax_behavior: nil,
2020
+ unit_amount: nil,
2021
+ unit_amount_decimal: nil
2022
+ )
2023
+ @currency = currency
2024
+ @product = product
2025
+ @tax_behavior = tax_behavior
2026
+ @unit_amount = unit_amount
2027
+ @unit_amount_decimal = unit_amount_decimal
2028
+ end
2029
+ end
2030
+ # The integer amount in cents (or local equivalent) of previewed invoice item.
2031
+ attr_accessor :amount
2032
+ # 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.
2033
+ attr_accessor :currency
2034
+ # An arbitrary string which you can attach to the invoice item. The description is displayed in the invoice for easy tracking.
2035
+ attr_accessor :description
2036
+ # Explicitly controls whether discounts apply to this invoice item. Defaults to true, except for negative invoice items.
2037
+ attr_accessor :discountable
2038
+ # The coupons to redeem into discounts for the invoice item in the preview.
2039
+ attr_accessor :discounts
2040
+ # 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.
2041
+ attr_accessor :invoiceitem
2042
+ # 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`.
2043
+ attr_accessor :metadata
2044
+ # 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.
2045
+ attr_accessor :period
2046
+ # The ID of the price object. One of `price` or `price_data` is required.
2047
+ attr_accessor :price
2048
+ # Data used to generate a new [Price](https://stripe.com/docs/api/prices) object inline. One of `price` or `price_data` is required.
2049
+ attr_accessor :price_data
2050
+ # Non-negative integer. The quantity of units for the invoice item.
2051
+ attr_accessor :quantity
2052
+ # 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.
2053
+ attr_accessor :tax_behavior
2054
+ # A [tax code](https://stripe.com/docs/tax/tax-categories) ID.
2055
+ attr_accessor :tax_code
2056
+ # The tax rates that apply to the item. When set, any `default_tax_rates` do not apply to this item.
2057
+ attr_accessor :tax_rates
2058
+ # 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.
2059
+ attr_accessor :unit_amount
2060
+ # 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.
2061
+ attr_accessor :unit_amount_decimal
2062
+
2063
+ def initialize(
2064
+ amount: nil,
2065
+ currency: nil,
2066
+ description: nil,
2067
+ discountable: nil,
2068
+ discounts: nil,
2069
+ invoiceitem: nil,
2070
+ metadata: nil,
2071
+ period: nil,
2072
+ price: nil,
2073
+ price_data: nil,
2074
+ quantity: nil,
2075
+ tax_behavior: nil,
2076
+ tax_code: nil,
2077
+ tax_rates: nil,
2078
+ unit_amount: nil,
2079
+ unit_amount_decimal: nil
2080
+ )
2081
+ @amount = amount
2082
+ @currency = currency
2083
+ @description = description
2084
+ @discountable = discountable
2085
+ @discounts = discounts
2086
+ @invoiceitem = invoiceitem
2087
+ @metadata = metadata
2088
+ @period = period
2089
+ @price = price
2090
+ @price_data = price_data
2091
+ @quantity = quantity
2092
+ @tax_behavior = tax_behavior
2093
+ @tax_code = tax_code
2094
+ @tax_rates = tax_rates
2095
+ @unit_amount = unit_amount
2096
+ @unit_amount_decimal = unit_amount_decimal
2097
+ end
2098
+ end
2099
+
2100
+ class Issuer < Stripe::RequestParams
2101
+ # The connected account being referenced when `type` is `account`.
2102
+ attr_accessor :account
2103
+ # Type of the account referenced in the request.
2104
+ attr_accessor :type
2105
+
2106
+ def initialize(account: nil, type: nil)
2107
+ @account = account
2108
+ @type = type
2109
+ end
2110
+ end
2111
+
2112
+ class ScheduleDetails < Stripe::RequestParams
2113
+ class Phase < Stripe::RequestParams
2114
+ class AddInvoiceItem < Stripe::RequestParams
2115
+ class Discount < Stripe::RequestParams
2116
+ # ID of the coupon to create a new discount for.
2117
+ attr_accessor :coupon
2118
+ # ID of an existing discount on the object (or one of its ancestors) to reuse.
2119
+ attr_accessor :discount
2120
+ # ID of the promotion code to create a new discount for.
2121
+ attr_accessor :promotion_code
2122
+
2123
+ def initialize(coupon: nil, discount: nil, promotion_code: nil)
2124
+ @coupon = coupon
2125
+ @discount = discount
2126
+ @promotion_code = promotion_code
2127
+ end
2128
+ end
2129
+
2130
+ class PriceData < Stripe::RequestParams
2131
+ # 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).
2132
+ attr_accessor :currency
2133
+ # The ID of the [Product](https://docs.stripe.com/api/products) that this [Price](https://docs.stripe.com/api/prices) will belong to.
2134
+ attr_accessor :product
2135
+ # 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.
2136
+ attr_accessor :tax_behavior
2137
+ # 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.
2138
+ attr_accessor :unit_amount
2139
+ # 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.
2140
+ attr_accessor :unit_amount_decimal
2141
+
2142
+ def initialize(
2143
+ currency: nil,
2144
+ product: nil,
2145
+ tax_behavior: nil,
2146
+ unit_amount: nil,
2147
+ unit_amount_decimal: nil
2148
+ )
2149
+ @currency = currency
2150
+ @product = product
2151
+ @tax_behavior = tax_behavior
2152
+ @unit_amount = unit_amount
2153
+ @unit_amount_decimal = unit_amount_decimal
2154
+ end
2155
+ end
2156
+ # The coupons to redeem into discounts for the item.
2157
+ attr_accessor :discounts
2158
+ # The ID of the price object. One of `price` or `price_data` is required.
2159
+ attr_accessor :price
2160
+ # Data used to generate a new [Price](https://stripe.com/docs/api/prices) object inline. One of `price` or `price_data` is required.
2161
+ attr_accessor :price_data
2162
+ # Quantity for this item. Defaults to 1.
2163
+ attr_accessor :quantity
2164
+ # The tax rates which apply to the item. When set, the `default_tax_rates` do not apply to this item.
2165
+ attr_accessor :tax_rates
2166
+
2167
+ def initialize(
2168
+ discounts: nil,
2169
+ price: nil,
2170
+ price_data: nil,
2171
+ quantity: nil,
2172
+ tax_rates: nil
2173
+ )
2174
+ @discounts = discounts
2175
+ @price = price
2176
+ @price_data = price_data
2177
+ @quantity = quantity
2178
+ @tax_rates = tax_rates
2179
+ end
2180
+ end
2181
+
2182
+ class AutomaticTax < Stripe::RequestParams
2183
+ class Liability < Stripe::RequestParams
2184
+ # The connected account being referenced when `type` is `account`.
2185
+ attr_accessor :account
2186
+ # Type of the account referenced in the request.
2187
+ attr_accessor :type
2188
+
2189
+ def initialize(account: nil, type: nil)
2190
+ @account = account
2191
+ @type = type
2192
+ end
2193
+ end
2194
+ # Enabled automatic tax calculation which will automatically compute tax rates on all invoices generated by the subscription.
2195
+ attr_accessor :enabled
2196
+ # 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.
2197
+ attr_accessor :liability
2198
+
2199
+ def initialize(enabled: nil, liability: nil)
2200
+ @enabled = enabled
2201
+ @liability = liability
2202
+ end
2203
+ end
2204
+
2205
+ class BillingThresholds < Stripe::RequestParams
2206
+ # Monetary threshold that triggers the subscription to advance to a new billing period
2207
+ attr_accessor :amount_gte
2208
+ # 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.
2209
+ attr_accessor :reset_billing_cycle_anchor
2210
+
2211
+ def initialize(amount_gte: nil, reset_billing_cycle_anchor: nil)
2212
+ @amount_gte = amount_gte
2213
+ @reset_billing_cycle_anchor = reset_billing_cycle_anchor
2214
+ end
2215
+ end
2216
+
2217
+ class Discount < Stripe::RequestParams
2218
+ # ID of the coupon to create a new discount for.
2219
+ attr_accessor :coupon
2220
+ # ID of an existing discount on the object (or one of its ancestors) to reuse.
2221
+ attr_accessor :discount
2222
+ # ID of the promotion code to create a new discount for.
2223
+ attr_accessor :promotion_code
2224
+
2225
+ def initialize(coupon: nil, discount: nil, promotion_code: nil)
2226
+ @coupon = coupon
2227
+ @discount = discount
2228
+ @promotion_code = promotion_code
2229
+ end
2230
+ end
2231
+
2232
+ class InvoiceSettings < Stripe::RequestParams
2233
+ class Issuer < Stripe::RequestParams
2234
+ # The connected account being referenced when `type` is `account`.
2235
+ attr_accessor :account
2236
+ # Type of the account referenced in the request.
2237
+ attr_accessor :type
2238
+
2239
+ def initialize(account: nil, type: nil)
2240
+ @account = account
2241
+ @type = type
2242
+ end
2243
+ end
2244
+ # 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.
2245
+ attr_accessor :account_tax_ids
2246
+ # 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`.
2247
+ attr_accessor :days_until_due
2248
+ # The connected account that issues the invoice. The invoice is presented with the branding and support information of the specified account.
2249
+ attr_accessor :issuer
2250
+
2251
+ def initialize(account_tax_ids: nil, days_until_due: nil, issuer: nil)
2252
+ @account_tax_ids = account_tax_ids
2253
+ @days_until_due = days_until_due
2254
+ @issuer = issuer
2255
+ end
2256
+ end
2257
+
2258
+ class Item < Stripe::RequestParams
2259
+ class BillingThresholds < Stripe::RequestParams
2260
+ # 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))
2261
+ attr_accessor :usage_gte
2262
+
2263
+ def initialize(usage_gte: nil)
2264
+ @usage_gte = usage_gte
2265
+ end
2266
+ end
2267
+
2268
+ class Discount < Stripe::RequestParams
2269
+ # ID of the coupon to create a new discount for.
2270
+ attr_accessor :coupon
2271
+ # ID of an existing discount on the object (or one of its ancestors) to reuse.
2272
+ attr_accessor :discount
2273
+ # ID of the promotion code to create a new discount for.
2274
+ attr_accessor :promotion_code
2275
+
2276
+ def initialize(coupon: nil, discount: nil, promotion_code: nil)
2277
+ @coupon = coupon
2278
+ @discount = discount
2279
+ @promotion_code = promotion_code
2280
+ end
2281
+ end
2282
+
2283
+ class PriceData < Stripe::RequestParams
2284
+ class Recurring < Stripe::RequestParams
2285
+ # Specifies billing frequency. Either `day`, `week`, `month` or `year`.
2286
+ attr_accessor :interval
2287
+ # 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).
2288
+ attr_accessor :interval_count
2289
+
2290
+ def initialize(interval: nil, interval_count: nil)
2291
+ @interval = interval
2292
+ @interval_count = interval_count
2293
+ end
2294
+ end
2295
+ # 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).
2296
+ attr_accessor :currency
2297
+ # The ID of the [Product](https://docs.stripe.com/api/products) that this [Price](https://docs.stripe.com/api/prices) will belong to.
2298
+ attr_accessor :product
2299
+ # The recurring components of a price such as `interval` and `interval_count`.
2300
+ attr_accessor :recurring
2301
+ # 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.
2302
+ attr_accessor :tax_behavior
2303
+ # A positive integer in cents (or local equivalent) (or 0 for a free price) representing how much to charge.
2304
+ attr_accessor :unit_amount
2305
+ # 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.
2306
+ attr_accessor :unit_amount_decimal
2307
+
2308
+ def initialize(
2309
+ currency: nil,
2310
+ product: nil,
2311
+ recurring: nil,
2312
+ tax_behavior: nil,
2313
+ unit_amount: nil,
2314
+ unit_amount_decimal: nil
2315
+ )
2316
+ @currency = currency
2317
+ @product = product
2318
+ @recurring = recurring
2319
+ @tax_behavior = tax_behavior
2320
+ @unit_amount = unit_amount
2321
+ @unit_amount_decimal = unit_amount_decimal
2322
+ end
2323
+ end
2324
+ # 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.
2325
+ attr_accessor :billing_thresholds
2326
+ # The coupons to redeem into discounts for the subscription item.
2327
+ attr_accessor :discounts
2328
+ # 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`.
2329
+ attr_accessor :metadata
2330
+ # The plan ID to subscribe to. You may specify the same ID in `plan` and `price`.
2331
+ attr_accessor :plan
2332
+ # The ID of the price object.
2333
+ attr_accessor :price
2334
+ # Data used to generate a new [Price](https://stripe.com/docs/api/prices) object inline.
2335
+ attr_accessor :price_data
2336
+ # Quantity for the given price. Can be set only if the price's `usage_type` is `licensed` and not `metered`.
2337
+ attr_accessor :quantity
2338
+ # 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.
2339
+ attr_accessor :tax_rates
2340
+
2341
+ def initialize(
2342
+ billing_thresholds: nil,
2343
+ discounts: nil,
2344
+ metadata: nil,
2345
+ plan: nil,
2346
+ price: nil,
2347
+ price_data: nil,
2348
+ quantity: nil,
2349
+ tax_rates: nil
2350
+ )
2351
+ @billing_thresholds = billing_thresholds
2352
+ @discounts = discounts
2353
+ @metadata = metadata
2354
+ @plan = plan
2355
+ @price = price
2356
+ @price_data = price_data
2357
+ @quantity = quantity
2358
+ @tax_rates = tax_rates
2359
+ end
2360
+ end
2361
+
2362
+ class TransferData < Stripe::RequestParams
2363
+ # 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.
2364
+ attr_accessor :amount_percent
2365
+ # ID of an existing, connected Stripe account.
2366
+ attr_accessor :destination
2367
+
2368
+ def initialize(amount_percent: nil, destination: nil)
2369
+ @amount_percent = amount_percent
2370
+ @destination = destination
2371
+ end
2372
+ end
2373
+ # 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.
2374
+ attr_accessor :add_invoice_items
2375
+ # 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).
2376
+ attr_accessor :application_fee_percent
2377
+ # Automatic tax settings for this phase.
2378
+ attr_accessor :automatic_tax
2379
+ # 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).
2380
+ attr_accessor :billing_cycle_anchor
2381
+ # 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.
2382
+ attr_accessor :billing_thresholds
2383
+ # 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.
2384
+ attr_accessor :collection_method
2385
+ # 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).
2386
+ attr_accessor :currency
2387
+ # 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.
2388
+ attr_accessor :default_payment_method
2389
+ # 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.
2390
+ attr_accessor :default_tax_rates
2391
+ # 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.
2392
+ attr_accessor :description
2393
+ # 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.
2394
+ attr_accessor :discounts
2395
+ # The date at which this phase of the subscription schedule ends. If set, `iterations` must not be set.
2396
+ attr_accessor :end_date
2397
+ # All invoices will be billed using the specified settings.
2398
+ attr_accessor :invoice_settings
2399
+ # List of configuration items, each with an attached price, to apply during this phase of the subscription schedule.
2400
+ attr_accessor :items
2401
+ # 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.
2402
+ attr_accessor :iterations
2403
+ # 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`.
2404
+ attr_accessor :metadata
2405
+ # The account on behalf of which to charge, for each of the associated subscription's invoices.
2406
+ attr_accessor :on_behalf_of
2407
+ # 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.
2408
+ attr_accessor :proration_behavior
2409
+ # The date at which this phase of the subscription schedule starts or `now`. Must be set on the first phase.
2410
+ attr_accessor :start_date
2411
+ # The data with which to automatically create a Transfer for each of the associated subscription's invoices.
2412
+ attr_accessor :transfer_data
2413
+ # If set to true the entire phase is counted as a trial and the customer will not be charged for any fees.
2414
+ attr_accessor :trial
2415
+ # 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`
2416
+ attr_accessor :trial_end
2417
+
2418
+ def initialize(
2419
+ add_invoice_items: nil,
2420
+ application_fee_percent: nil,
2421
+ automatic_tax: nil,
2422
+ billing_cycle_anchor: nil,
2423
+ billing_thresholds: nil,
2424
+ collection_method: nil,
2425
+ currency: nil,
2426
+ default_payment_method: nil,
2427
+ default_tax_rates: nil,
2428
+ description: nil,
2429
+ discounts: nil,
2430
+ end_date: nil,
2431
+ invoice_settings: nil,
2432
+ items: nil,
2433
+ iterations: nil,
2434
+ metadata: nil,
2435
+ on_behalf_of: nil,
2436
+ proration_behavior: nil,
2437
+ start_date: nil,
2438
+ transfer_data: nil,
2439
+ trial: nil,
2440
+ trial_end: nil
2441
+ )
2442
+ @add_invoice_items = add_invoice_items
2443
+ @application_fee_percent = application_fee_percent
2444
+ @automatic_tax = automatic_tax
2445
+ @billing_cycle_anchor = billing_cycle_anchor
2446
+ @billing_thresholds = billing_thresholds
2447
+ @collection_method = collection_method
2448
+ @currency = currency
2449
+ @default_payment_method = default_payment_method
2450
+ @default_tax_rates = default_tax_rates
2451
+ @description = description
2452
+ @discounts = discounts
2453
+ @end_date = end_date
2454
+ @invoice_settings = invoice_settings
2455
+ @items = items
2456
+ @iterations = iterations
2457
+ @metadata = metadata
2458
+ @on_behalf_of = on_behalf_of
2459
+ @proration_behavior = proration_behavior
2460
+ @start_date = start_date
2461
+ @transfer_data = transfer_data
2462
+ @trial = trial
2463
+ @trial_end = trial_end
2464
+ end
2465
+ end
2466
+ # 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.
2467
+ attr_accessor :end_behavior
2468
+ # 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.
2469
+ attr_accessor :phases
2470
+ # In cases where the `schedule_details` params update the currently active phase, specifies if and how to prorate at the time of the request.
2471
+ attr_accessor :proration_behavior
2472
+
2473
+ def initialize(end_behavior: nil, phases: nil, proration_behavior: nil)
2474
+ @end_behavior = end_behavior
2475
+ @phases = phases
2476
+ @proration_behavior = proration_behavior
2477
+ end
2478
+ end
2479
+
2480
+ class SubscriptionDetails < Stripe::RequestParams
2481
+ class Item < Stripe::RequestParams
2482
+ class BillingThresholds < Stripe::RequestParams
2483
+ # 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))
2484
+ attr_accessor :usage_gte
2485
+
2486
+ def initialize(usage_gte: nil)
2487
+ @usage_gte = usage_gte
2488
+ end
2489
+ end
2490
+
2491
+ class Discount < Stripe::RequestParams
2492
+ # ID of the coupon to create a new discount for.
2493
+ attr_accessor :coupon
2494
+ # ID of an existing discount on the object (or one of its ancestors) to reuse.
2495
+ attr_accessor :discount
2496
+ # ID of the promotion code to create a new discount for.
2497
+ attr_accessor :promotion_code
2498
+
2499
+ def initialize(coupon: nil, discount: nil, promotion_code: nil)
2500
+ @coupon = coupon
2501
+ @discount = discount
2502
+ @promotion_code = promotion_code
2503
+ end
2504
+ end
2505
+
2506
+ class PriceData < Stripe::RequestParams
2507
+ class Recurring < Stripe::RequestParams
2508
+ # Specifies billing frequency. Either `day`, `week`, `month` or `year`.
2509
+ attr_accessor :interval
2510
+ # 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).
2511
+ attr_accessor :interval_count
2512
+
2513
+ def initialize(interval: nil, interval_count: nil)
2514
+ @interval = interval
2515
+ @interval_count = interval_count
2516
+ end
2517
+ end
2518
+ # 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).
2519
+ attr_accessor :currency
2520
+ # The ID of the [Product](https://docs.stripe.com/api/products) that this [Price](https://docs.stripe.com/api/prices) will belong to.
2521
+ attr_accessor :product
2522
+ # The recurring components of a price such as `interval` and `interval_count`.
2523
+ attr_accessor :recurring
2524
+ # 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.
2525
+ attr_accessor :tax_behavior
2526
+ # A positive integer in cents (or local equivalent) (or 0 for a free price) representing how much to charge.
2527
+ attr_accessor :unit_amount
2528
+ # 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.
2529
+ attr_accessor :unit_amount_decimal
2530
+
2531
+ def initialize(
2532
+ currency: nil,
2533
+ product: nil,
2534
+ recurring: nil,
2535
+ tax_behavior: nil,
2536
+ unit_amount: nil,
2537
+ unit_amount_decimal: nil
2538
+ )
2539
+ @currency = currency
2540
+ @product = product
2541
+ @recurring = recurring
2542
+ @tax_behavior = tax_behavior
2543
+ @unit_amount = unit_amount
2544
+ @unit_amount_decimal = unit_amount_decimal
2545
+ end
2546
+ end
2547
+ # 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.
2548
+ attr_accessor :billing_thresholds
2549
+ # 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.
2550
+ attr_accessor :clear_usage
2551
+ # A flag that, if set to `true`, will delete the specified item.
2552
+ attr_accessor :deleted
2553
+ # The coupons to redeem into discounts for the subscription item.
2554
+ attr_accessor :discounts
2555
+ # Subscription item to update.
2556
+ attr_accessor :id
2557
+ # 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`.
2558
+ attr_accessor :metadata
2559
+ # Plan ID for this item, as a string.
2560
+ attr_accessor :plan
2561
+ # 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.
2562
+ attr_accessor :price
2563
+ # Data used to generate a new [Price](https://stripe.com/docs/api/prices) object inline. One of `price` or `price_data` is required.
2564
+ attr_accessor :price_data
2565
+ # Quantity for this item.
2566
+ attr_accessor :quantity
2567
+ # 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.
2568
+ attr_accessor :tax_rates
2569
+
2570
+ def initialize(
2571
+ billing_thresholds: nil,
2572
+ clear_usage: nil,
2573
+ deleted: nil,
2574
+ discounts: nil,
2575
+ id: nil,
2576
+ metadata: nil,
2577
+ plan: nil,
2578
+ price: nil,
2579
+ price_data: nil,
2580
+ quantity: nil,
2581
+ tax_rates: nil
2582
+ )
2583
+ @billing_thresholds = billing_thresholds
2584
+ @clear_usage = clear_usage
2585
+ @deleted = deleted
2586
+ @discounts = discounts
2587
+ @id = id
2588
+ @metadata = metadata
2589
+ @plan = plan
2590
+ @price = price
2591
+ @price_data = price_data
2592
+ @quantity = quantity
2593
+ @tax_rates = tax_rates
2594
+ end
2595
+ end
2596
+ # 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`.
2597
+ attr_accessor :billing_cycle_anchor
2598
+ # 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.
2599
+ attr_accessor :cancel_at
2600
+ # 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.
2601
+ attr_accessor :cancel_at_period_end
2602
+ # This simulates the subscription being canceled or expired immediately.
2603
+ attr_accessor :cancel_now
2604
+ # 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.
2605
+ attr_accessor :default_tax_rates
2606
+ # A list of up to 20 subscription items, each with an attached price.
2607
+ attr_accessor :items
2608
+ # 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`.
2609
+ attr_accessor :proration_behavior
2610
+ # 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'.
2611
+ attr_accessor :proration_date
2612
+ # For paused subscriptions, setting `subscription_details.resume_at` to `now` will preview the invoice that will be generated if the subscription is resumed.
2613
+ attr_accessor :resume_at
2614
+ # Date a subscription is intended to start (can be future or past).
2615
+ attr_accessor :start_date
2616
+ # 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.
2617
+ attr_accessor :trial_end
2618
+
2619
+ def initialize(
2620
+ billing_cycle_anchor: nil,
2621
+ cancel_at: nil,
2622
+ cancel_at_period_end: nil,
2623
+ cancel_now: nil,
2624
+ default_tax_rates: nil,
2625
+ items: nil,
2626
+ proration_behavior: nil,
2627
+ proration_date: nil,
2628
+ resume_at: nil,
2629
+ start_date: nil,
2630
+ trial_end: nil
2631
+ )
2632
+ @billing_cycle_anchor = billing_cycle_anchor
2633
+ @cancel_at = cancel_at
2634
+ @cancel_at_period_end = cancel_at_period_end
2635
+ @cancel_now = cancel_now
2636
+ @default_tax_rates = default_tax_rates
2637
+ @items = items
2638
+ @proration_behavior = proration_behavior
2639
+ @proration_date = proration_date
2640
+ @resume_at = resume_at
2641
+ @start_date = start_date
2642
+ @trial_end = trial_end
2643
+ end
2644
+ end
2645
+ # Settings for automatic tax lookup for this invoice preview.
2646
+ attr_accessor :automatic_tax
2647
+ # The currency to preview this invoice in. Defaults to that of `customer` if not specified.
2648
+ attr_accessor :currency
2649
+ # 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.
2650
+ attr_accessor :customer
2651
+ # 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.
2652
+ attr_accessor :customer_details
2653
+ # 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.
2654
+ attr_accessor :discounts
2655
+ # Specifies which fields in the response should be expanded.
2656
+ attr_accessor :expand
2657
+ # List of invoice items to add or update in the upcoming invoice preview (up to 250).
2658
+ attr_accessor :invoice_items
2659
+ # The connected account that issues the invoice. The invoice is presented with the branding and support information of the specified account.
2660
+ attr_accessor :issuer
2661
+ # 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.
2662
+ attr_accessor :on_behalf_of
2663
+ # Customizes the types of values to include when calculating the invoice. Defaults to `next` if unspecified.
2664
+ attr_accessor :preview_mode
2665
+ # The identifier of the schedule whose upcoming invoice you'd like to retrieve. Cannot be used with subscription or subscription fields.
2666
+ attr_accessor :schedule
2667
+ # The schedule creation or modification params to apply as a preview. Cannot be used with `subscription` or `subscription_` prefixed fields.
2668
+ attr_accessor :schedule_details
2669
+ # 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.
2670
+ attr_accessor :subscription
2671
+ # The subscription creation or modification params to apply as a preview. Cannot be used with `schedule` or `schedule_details` fields.
2672
+ attr_accessor :subscription_details
2673
+
2674
+ def initialize(
2675
+ automatic_tax: nil,
2676
+ currency: nil,
2677
+ customer: nil,
2678
+ customer_details: nil,
2679
+ discounts: nil,
2680
+ expand: nil,
2681
+ invoice_items: nil,
2682
+ issuer: nil,
2683
+ on_behalf_of: nil,
2684
+ preview_mode: nil,
2685
+ schedule: nil,
2686
+ schedule_details: nil,
2687
+ subscription: nil,
2688
+ subscription_details: nil
2689
+ )
2690
+ @automatic_tax = automatic_tax
2691
+ @currency = currency
2692
+ @customer = customer
2693
+ @customer_details = customer_details
2694
+ @discounts = discounts
2695
+ @expand = expand
2696
+ @invoice_items = invoice_items
2697
+ @issuer = issuer
2698
+ @on_behalf_of = on_behalf_of
2699
+ @preview_mode = preview_mode
2700
+ @schedule = schedule
2701
+ @schedule_details = schedule_details
2702
+ @subscription = subscription
2703
+ @subscription_details = subscription_details
2704
+ end
2705
+ end
2706
+
2707
+ # Adds multiple line items to an invoice. This is only possible when an invoice is still a draft.
2708
+ def add_lines(invoice, params = {}, opts = {})
2709
+ request(
2710
+ method: :post,
2711
+ path: format("/v1/invoices/%<invoice>s/add_lines", { invoice: CGI.escape(invoice) }),
2712
+ params: params,
2713
+ opts: opts,
2714
+ base_address: :api
2715
+ )
2716
+ end
2717
+
2718
+ # Attaches a PaymentIntent or an Out of Band Payment to the invoice, adding it to the list of payments.
2719
+ #
2720
+ # For the PaymentIntent, when the PaymentIntent's status changes to succeeded, the payment is credited
2721
+ # to the invoice, increasing its amount_paid. When the invoice is fully paid, the
2722
+ # invoice's status becomes paid.
2723
+ #
2724
+ # If the PaymentIntent's status is already succeeded when it's attached, it's
2725
+ # credited to the invoice immediately.
2726
+ #
2727
+ # See: [Partial payments](https://docs.stripe.com/docs/invoicing/partial-payments) to learn more.
2728
+ def attach_payment(invoice, params = {}, opts = {})
2729
+ request(
2730
+ method: :post,
2731
+ path: format("/v1/invoices/%<invoice>s/attach_payment", { invoice: CGI.escape(invoice) }),
2732
+ params: params,
2733
+ opts: opts,
2734
+ base_address: :api
2735
+ )
2736
+ end
2737
+
2738
+ # 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.
2739
+ def create(params = {}, opts = {})
2740
+ request(method: :post, path: "/v1/invoices", params: params, opts: opts, base_address: :api)
2741
+ end
2742
+
2743
+ # 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.
2744
+ #
2745
+ # 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.
2746
+ #
2747
+ # 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.
2748
+ #
2749
+ # 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.
2750
+ #
2751
+ # 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)
2752
+ def create_preview(params = {}, opts = {})
2753
+ request(
2754
+ method: :post,
2755
+ path: "/v1/invoices/create_preview",
2756
+ params: params,
2757
+ opts: opts,
2758
+ base_address: :api
2759
+ )
2760
+ end
2761
+
2762
+ # 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).
2763
+ def delete(invoice, params = {}, opts = {})
2764
+ request(
2765
+ method: :delete,
2766
+ path: format("/v1/invoices/%<invoice>s", { invoice: CGI.escape(invoice) }),
2767
+ params: params,
2768
+ opts: opts,
2769
+ base_address: :api
2770
+ )
2771
+ end
2772
+
2773
+ # 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.
2774
+ def finalize_invoice(invoice, params = {}, opts = {})
2775
+ request(
2776
+ method: :post,
2777
+ path: format("/v1/invoices/%<invoice>s/finalize", { invoice: CGI.escape(invoice) }),
2778
+ params: params,
2779
+ opts: opts,
2780
+ base_address: :api
2781
+ )
2782
+ end
2783
+
2784
+ # 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.
2785
+ def list(params = {}, opts = {})
2786
+ request(method: :get, path: "/v1/invoices", params: params, opts: opts, base_address: :api)
2787
+ end
2788
+
2789
+ # Marking an invoice as uncollectible is useful for keeping track of bad debts that can be written off for accounting purposes.
2790
+ def mark_uncollectible(invoice, params = {}, opts = {})
2791
+ request(
2792
+ method: :post,
2793
+ path: format("/v1/invoices/%<invoice>s/mark_uncollectible", { invoice: CGI.escape(invoice) }),
2794
+ params: params,
2795
+ opts: opts,
2796
+ base_address: :api
2797
+ )
2798
+ end
2799
+
2800
+ # 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.
2801
+ def pay(invoice, params = {}, opts = {})
2802
+ request(
2803
+ method: :post,
2804
+ path: format("/v1/invoices/%<invoice>s/pay", { invoice: CGI.escape(invoice) }),
2805
+ params: params,
2806
+ opts: opts,
2807
+ base_address: :api
2808
+ )
2809
+ end
2810
+
2811
+ # Removes multiple line items from an invoice. This is only possible when an invoice is still a draft.
2812
+ def remove_lines(invoice, params = {}, opts = {})
2813
+ request(
2814
+ method: :post,
2815
+ path: format("/v1/invoices/%<invoice>s/remove_lines", { invoice: CGI.escape(invoice) }),
2816
+ params: params,
2817
+ opts: opts,
2818
+ base_address: :api
2819
+ )
2820
+ end
2821
+
2822
+ # Retrieves the invoice with the given ID.
2823
+ def retrieve(invoice, params = {}, opts = {})
2824
+ request(
2825
+ method: :get,
2826
+ path: format("/v1/invoices/%<invoice>s", { invoice: CGI.escape(invoice) }),
2827
+ params: params,
2828
+ opts: opts,
2829
+ base_address: :api
2830
+ )
2831
+ end
2832
+
2833
+ # Search for invoices you've previously created using Stripe's [Search Query Language](https://docs.stripe.com/docs/search#search-query-language).
2834
+ # Don't use search in read-after-write flows where strict consistency is necessary. Under normal operating
2835
+ # conditions, data is searchable in less than a minute. Occasionally, propagation of new or updated data can be up
2836
+ # to an hour behind during outages. Search functionality is not available to merchants in India.
2837
+ def search(params = {}, opts = {})
2838
+ request(
2839
+ method: :get,
2840
+ path: "/v1/invoices/search",
2841
+ params: params,
2842
+ opts: opts,
2843
+ base_address: :api
2844
+ )
2845
+ end
2846
+
2847
+ # 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.
2848
+ #
2849
+ # Requests made in test-mode result in no emails being sent, despite sending an invoice.sent event.
2850
+ def send_invoice(invoice, params = {}, opts = {})
2851
+ request(
2852
+ method: :post,
2853
+ path: format("/v1/invoices/%<invoice>s/send", { invoice: CGI.escape(invoice) }),
2854
+ params: params,
2855
+ opts: opts,
2856
+ base_address: :api
2857
+ )
2858
+ end
2859
+
2860
+ # Draft invoices are fully editable. Once an invoice is [finalized](https://docs.stripe.com/docs/billing/invoices/workflow#finalized),
2861
+ # monetary values, as well as collection_method, become uneditable.
2862
+ #
2863
+ # If you would like to stop the Stripe Billing engine from automatically finalizing, reattempting payments on,
2864
+ # sending reminders for, or [automatically reconciling](https://docs.stripe.com/docs/billing/invoices/reconciliation) invoices, pass
2865
+ # auto_advance=false.
2866
+ def update(invoice, params = {}, opts = {})
2867
+ request(
2868
+ method: :post,
2869
+ path: format("/v1/invoices/%<invoice>s", { invoice: CGI.escape(invoice) }),
2870
+ params: params,
2871
+ opts: opts,
2872
+ base_address: :api
2873
+ )
2874
+ end
2875
+
2876
+ # Updates multiple line items on an invoice. This is only possible when an invoice is still a draft.
2877
+ def update_lines(invoice, params = {}, opts = {})
2878
+ request(
2879
+ method: :post,
2880
+ path: format("/v1/invoices/%<invoice>s/update_lines", { invoice: CGI.escape(invoice) }),
2881
+ params: params,
2882
+ opts: opts,
2883
+ base_address: :api
2884
+ )
2885
+ end
2886
+
2887
+ # 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.
2888
+ #
2889
+ # 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.
2890
+ def void_invoice(invoice, params = {}, opts = {})
2891
+ request(
2892
+ method: :post,
2893
+ path: format("/v1/invoices/%<invoice>s/void", { invoice: CGI.escape(invoice) }),
2894
+ params: params,
2895
+ opts: opts,
2896
+ base_address: :api
2897
+ )
2898
+ end
2899
+ end
2900
+ end