mirror of
https://github.com/stripe/stripe-ruby.git
synced 2025-10-04 00:00:47 -04:00
163 lines
5.4 KiB
Ruby
163 lines
5.4 KiB
Ruby
# File generated from our OpenAPI spec
|
|
# frozen_string_literal: true
|
|
|
|
module Stripe
|
|
# Invoices are statements of amounts owed by a customer, and are either
|
|
# generated one-off, or generated periodically from a subscription.
|
|
#
|
|
# They contain [invoice items](https://stripe.com/docs/api#invoiceitems), and proration adjustments
|
|
# that may be caused by subscription upgrades/downgrades (if necessary).
|
|
#
|
|
# If your invoice is configured to be billed through automatic charges,
|
|
# Stripe automatically finalizes your invoice and attempts payment. Note
|
|
# that finalizing the invoice,
|
|
# [when automatic](https://stripe.com/docs/billing/invoices/workflow/#auto_advance), does
|
|
# not happen immediately as the invoice is created. Stripe waits
|
|
# until one hour after the last webhook was successfully sent (or the last
|
|
# webhook timed out after failing). If you (and the platforms you may have
|
|
# connected to) have no webhooks configured, Stripe waits one hour after
|
|
# creation to finalize the invoice.
|
|
#
|
|
# If your invoice is configured to be billed by sending an email, then based on your
|
|
# [email settings](https://dashboard.stripe.com/account/billing/automatic),
|
|
# Stripe will email the invoice to your customer and await payment. These
|
|
# emails can contain a link to a hosted page to pay the invoice.
|
|
#
|
|
# Stripe applies any customer credit on the account before determining the
|
|
# amount due for the invoice (i.e., the amount that will be actually
|
|
# charged). If the amount due for the invoice is less than Stripe's [minimum allowed charge
|
|
# per currency](https://stripe.com/docs/currencies#minimum-and-maximum-charge-amounts), the
|
|
# invoice is automatically marked paid, and we add the amount due to the
|
|
# customer's credit balance which is applied to the next invoice.
|
|
#
|
|
# More details on the customer's credit balance are
|
|
# [here](https://stripe.com/docs/billing/customer/balance).
|
|
#
|
|
# Related guide: [Send Invoices to Customers](https://stripe.com/docs/billing/invoices/sending).
|
|
class Invoice < APIResource
|
|
extend Stripe::APIOperations::Create
|
|
include Stripe::APIOperations::Delete
|
|
extend Stripe::APIOperations::List
|
|
extend Stripe::APIOperations::Search
|
|
include Stripe::APIOperations::Save
|
|
|
|
OBJECT_NAME = "invoice"
|
|
|
|
def finalize_invoice(params = {}, opts = {})
|
|
request_stripe_object(
|
|
method: :post,
|
|
path: format("/v1/invoices/%<invoice>s/finalize", { invoice: CGI.escape(self["id"]) }),
|
|
params: params,
|
|
opts: opts
|
|
)
|
|
end
|
|
|
|
def mark_uncollectible(params = {}, opts = {})
|
|
request_stripe_object(
|
|
method: :post,
|
|
path: format("/v1/invoices/%<invoice>s/mark_uncollectible", { invoice: CGI.escape(self["id"]) }),
|
|
params: params,
|
|
opts: opts
|
|
)
|
|
end
|
|
|
|
def pay(params = {}, opts = {})
|
|
request_stripe_object(
|
|
method: :post,
|
|
path: format("/v1/invoices/%<invoice>s/pay", { invoice: CGI.escape(self["id"]) }),
|
|
params: params,
|
|
opts: opts
|
|
)
|
|
end
|
|
|
|
def send_invoice(params = {}, opts = {})
|
|
request_stripe_object(
|
|
method: :post,
|
|
path: format("/v1/invoices/%<invoice>s/send", { invoice: CGI.escape(self["id"]) }),
|
|
params: params,
|
|
opts: opts
|
|
)
|
|
end
|
|
|
|
def void_invoice(params = {}, opts = {})
|
|
request_stripe_object(
|
|
method: :post,
|
|
path: format("/v1/invoices/%<invoice>s/void", { invoice: CGI.escape(self["id"]) }),
|
|
params: params,
|
|
opts: opts
|
|
)
|
|
end
|
|
|
|
def self.finalize_invoice(invoice, params = {}, opts = {})
|
|
request_stripe_object(
|
|
method: :post,
|
|
path: format("/v1/invoices/%<invoice>s/finalize", { invoice: CGI.escape(invoice) }),
|
|
params: params,
|
|
opts: opts
|
|
)
|
|
end
|
|
|
|
def self.list_upcoming_line_items(params = {}, opts = {})
|
|
request_stripe_object(
|
|
method: :get,
|
|
path: "/v1/invoices/upcoming/lines",
|
|
params: params,
|
|
opts: opts
|
|
)
|
|
end
|
|
|
|
def self.mark_uncollectible(invoice, params = {}, opts = {})
|
|
request_stripe_object(
|
|
method: :post,
|
|
path: format("/v1/invoices/%<invoice>s/mark_uncollectible", { invoice: CGI.escape(invoice) }),
|
|
params: params,
|
|
opts: opts
|
|
)
|
|
end
|
|
|
|
def self.pay(invoice, params = {}, opts = {})
|
|
request_stripe_object(
|
|
method: :post,
|
|
path: format("/v1/invoices/%<invoice>s/pay", { invoice: CGI.escape(invoice) }),
|
|
params: params,
|
|
opts: opts
|
|
)
|
|
end
|
|
|
|
def self.send_invoice(invoice, params = {}, opts = {})
|
|
request_stripe_object(
|
|
method: :post,
|
|
path: format("/v1/invoices/%<invoice>s/send", { invoice: CGI.escape(invoice) }),
|
|
params: params,
|
|
opts: opts
|
|
)
|
|
end
|
|
|
|
def self.upcoming(params = {}, opts = {})
|
|
request_stripe_object(
|
|
method: :get,
|
|
path: "/v1/invoices/upcoming",
|
|
params: params,
|
|
opts: opts
|
|
)
|
|
end
|
|
|
|
def self.void_invoice(invoice, params = {}, opts = {})
|
|
request_stripe_object(
|
|
method: :post,
|
|
path: format("/v1/invoices/%<invoice>s/void", { invoice: CGI.escape(invoice) }),
|
|
params: params,
|
|
opts: opts
|
|
)
|
|
end
|
|
|
|
def self.search(params = {}, opts = {})
|
|
_search("/v1/invoices/search", params, opts)
|
|
end
|
|
|
|
def self.search_auto_paging_each(params = {}, opts = {}, &blk)
|
|
search(params, opts).auto_paging_each(&blk)
|
|
end
|
|
end
|
|
end
|