Class: Orb::Resources::Invoices
- Inherits:
-
Object
- Object
- Orb::Resources::Invoices
- Defined in:
- lib/orb/resources/invoices.rb,
sig/orb/resources/invoices.rbs
Overview
An Invoice is a fundamental billing entity,
representing the request for payment for a single subscription. This includes a
set of line items, which correspond to prices in the subscription's plan and can
represent fixed recurring fees or usage-based fees. They are generated at the
end of a billing period, or as the result of an action, such as a cancellation.
Instance Method Summary collapse
- #`void` ⇒ Object
-
#create(currency:, invoice_date:, line_items:, auto_collection: nil, customer_id: nil, discount: nil, due_date: nil, external_customer_id: nil, memo: nil, metadata: nil, net_terms: nil, will_auto_issue: nil, request_options: {}) ⇒ Orb::Models::Invoice
Some parameter documentations has been truncated, see Models::InvoiceCreateParams for more details.
-
#delete_line_item(line_item_id, invoice_id:, request_options: {}) ⇒ nil
This endpoint deletes an invoice line item from a draft invoice.
-
#fetch(invoice_id, request_options: {}) ⇒ Orb::Models::Invoice
This endpoint is used to fetch an
Invoicegiven an identifier. -
#fetch_upcoming(subscription_id:, request_options: {}) ⇒ Orb::Models::InvoiceFetchUpcomingResponse
This endpoint can be used to fetch the upcoming invoice for the current billing period given a subscription.
-
#initialize(client:) ⇒ Invoices
constructor
private
A new instance of Invoices.
-
#issue(invoice_id, synchronous: nil, request_options: {}) ⇒ Orb::Models::Invoice
Some parameter documentations has been truncated, see Models::InvoiceIssueParams for more details.
-
#issue_summary(invoice_id, synchronous: nil, request_options: {}) ⇒ Orb::Models::InvoiceIssueSummaryResponse
Some parameter documentations has been truncated, see Models::InvoiceIssueSummaryParams for more details.
-
#list(amount: nil, amount_gt: nil, amount_lt: nil, cursor: nil, customer_id: nil, date_type: nil, due_date: nil, due_date_window: nil, due_date_gt: nil, due_date_lt: nil, external_customer_id: nil, invoice_date_gt: nil, invoice_date_gte: nil, invoice_date_lt: nil, invoice_date_lte: nil, is_recurring: nil, limit: nil, status: nil, subscription_id: nil, request_options: {}) ⇒ Orb::Internal::Page<Orb::Models::Invoice>
Some parameter documentations has been truncated, see Models::InvoiceListParams for more details.
-
#list_summary(amount: nil, amount_gt: nil, amount_lt: nil, cursor: nil, customer_id: nil, date_type: nil, due_date: nil, due_date_window: nil, due_date_gt: nil, due_date_lt: nil, external_customer_id: nil, invoice_date_gt: nil, invoice_date_gte: nil, invoice_date_lt: nil, invoice_date_lte: nil, is_recurring: nil, limit: nil, status: nil, subscription_id: nil, request_options: {}) ⇒ Orb::Internal::Page<Orb::Models::InvoiceListSummaryResponse>
Some parameter documentations has been truncated, see Models::InvoiceListSummaryParams for more details.
-
#mark_paid(invoice_id, payment_received_date:, external_id: nil, notes: nil, request_options: {}) ⇒ Orb::Models::Invoice
This endpoint allows an invoice's status to be set to the
paidstatus. -
#pay(invoice_id, shared_payment_token_id:, request_options: {}) ⇒ Orb::Models::Invoice
This endpoint collects payment for an invoice.
-
#update(invoice_id, auto_collection: nil, due_date: nil, invoice_date: nil, metadata: nil, net_terms: nil, request_options: {}) ⇒ Orb::Models::Invoice
Some parameter documentations has been truncated, see Models::InvoiceUpdateParams for more details.
-
#void(invoice_id, request_options: {}) ⇒ Orb::Models::Invoice
This endpoint allows an invoice's status to be set to the
voidstatus.
Constructor Details
#initialize(client:) ⇒ Invoices
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of Invoices.
497 498 499 |
# File 'lib/orb/resources/invoices.rb', line 497 def initialize(client:) @client = client end |
Instance Method Details
#`void` ⇒ Object
118 |
# File 'sig/orb/resources/invoices.rbs', line 118
def `void`: (
|
#create(currency:, invoice_date:, line_items:, auto_collection: nil, customer_id: nil, discount: nil, due_date: nil, external_customer_id: nil, memo: nil, metadata: nil, net_terms: nil, will_auto_issue: nil, request_options: {}) ⇒ Orb::Models::Invoice
Some parameter documentations has been truncated, see Models::InvoiceCreateParams for more details.
This endpoint is used to create a one-off invoice for a customer.
47 48 49 50 |
# File 'lib/orb/resources/invoices.rb', line 47 def create(params) parsed, = Orb::InvoiceCreateParams.dump_request(params) @client.request(method: :post, path: "invoices", body: parsed, model: Orb::Invoice, options: ) end |
#delete_line_item(line_item_id, invoice_id:, request_options: {}) ⇒ nil
This endpoint deletes an invoice line item from a draft invoice.
This endpoint only allows deletion of one-off line items (not subscription-based line items). The invoice must be in a draft status for this operation to succeed.
197 198 199 200 201 202 203 204 205 206 207 208 209 |
# File 'lib/orb/resources/invoices.rb', line 197 def delete_line_item(line_item_id, params) parsed, = Orb::InvoiceDeleteLineItemParams.dump_request(params) invoice_id = parsed.delete(:invoice_id) do raise ArgumentError.new("missing required path argument #{_1}") end @client.request( method: :delete, path: ["invoices/%1$s/invoice_line_items/%2$s", invoice_id, line_item_id], model: NilClass, options: ) end |
#fetch(invoice_id, request_options: {}) ⇒ Orb::Models::Invoice
This endpoint is used to fetch an Invoice given an
identifier.
222 223 224 225 226 227 228 229 |
# File 'lib/orb/resources/invoices.rb', line 222 def fetch(invoice_id, params = {}) @client.request( method: :get, path: ["invoices/%1$s", invoice_id], model: Orb::Invoice, options: params[:request_options] ) end |
#fetch_upcoming(subscription_id:, request_options: {}) ⇒ Orb::Models::InvoiceFetchUpcomingResponse
This endpoint can be used to fetch the upcoming invoice for the current billing period given a subscription.
243 244 245 246 247 248 249 250 251 252 253 |
# File 'lib/orb/resources/invoices.rb', line 243 def fetch_upcoming(params) parsed, = Orb::InvoiceFetchUpcomingParams.dump_request(params) query = Orb::Internal::Util.encode_query_params(parsed) @client.request( method: :get, path: "invoices/upcoming", query: query, model: Orb::Models::InvoiceFetchUpcomingResponse, options: ) end |
#issue(invoice_id, synchronous: nil, request_options: {}) ⇒ Orb::Models::Invoice
Some parameter documentations has been truncated, see Models::InvoiceIssueParams for more details.
This endpoint allows an eligible invoice to be issued manually. This is only
possible with invoices where status is draft, will_auto_issue is false, and
an eligible_to_issue_at is a time in the past. Issuing an invoice could
possibly trigger side effects, some of which could be customer-visible (e.g.
sending emails, auto-collecting payment, syncing the invoice to external
providers, etc).
276 277 278 279 280 281 282 283 284 285 |
# File 'lib/orb/resources/invoices.rb', line 276 def issue(invoice_id, params = {}) parsed, = Orb::InvoiceIssueParams.dump_request(params) @client.request( method: :post, path: ["invoices/%1$s/issue", invoice_id], body: parsed, model: Orb::Invoice, options: ) end |
#issue_summary(invoice_id, synchronous: nil, request_options: {}) ⇒ Orb::Models::InvoiceIssueSummaryResponse
Some parameter documentations has been truncated, see Models::InvoiceIssueSummaryParams for more details.
This endpoint allows an eligible invoice to be issued manually. This is only
possible with invoices where status is draft, will_auto_issue is false, and
an eligible_to_issue_at is a time in the past. Issuing an invoice could
possibly trigger side effects, some of which could be customer-visible (e.g.
sending emails, auto-collecting payment, syncing the invoice to external
providers, etc).
This is a lighter-weight alternative to the issue invoice endpoint, returning an invoice summary without any line item details.
311 312 313 314 315 316 317 318 319 320 |
# File 'lib/orb/resources/invoices.rb', line 311 def issue_summary(invoice_id, params = {}) parsed, = Orb::InvoiceIssueSummaryParams.dump_request(params) @client.request( method: :post, path: ["invoices/summary/%1$s/issue", invoice_id], body: parsed, model: Orb::Models::InvoiceIssueSummaryResponse, options: ) end |
#list(amount: nil, amount_gt: nil, amount_lt: nil, cursor: nil, customer_id: nil, date_type: nil, due_date: nil, due_date_window: nil, due_date_gt: nil, due_date_lt: nil, external_customer_id: nil, invoice_date_gt: nil, invoice_date_gte: nil, invoice_date_lt: nil, invoice_date_lte: nil, is_recurring: nil, limit: nil, status: nil, subscription_id: nil, request_options: {}) ⇒ Orb::Internal::Page<Orb::Models::Invoice>
Some parameter documentations has been truncated, see Models::InvoiceListParams for more details.
This endpoint returns a list of all Invoices for an
account in a list format.
The list of invoices is ordered starting from the most recently issued invoice
date. The response also includes
pagination_metadata, which lets the caller
retrieve the next page of results if they exist.
By default, this only returns invoices that are issued, paid, or synced.
When fetching any draft invoices, this returns the last-computed invoice
values for each draft invoice, which may not always be up-to-date since Orb
regularly refreshes invoices asynchronously.
If you don't need line item details, minimums, maximums, or discounts, prefer the list invoices summary endpoint for better performance.
160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 |
# File 'lib/orb/resources/invoices.rb', line 160 def list(params = {}) parsed, = Orb::InvoiceListParams.dump_request(params) query = Orb::Internal::Util.encode_query_params(parsed) @client.request( method: :get, path: "invoices", query: query.transform_keys( amount_gt: "amount[gt]", amount_lt: "amount[lt]", due_date_gt: "due_date[gt]", due_date_lt: "due_date[lt]", invoice_date_gt: "invoice_date[gt]", invoice_date_gte: "invoice_date[gte]", invoice_date_lt: "invoice_date[lt]", invoice_date_lte: "invoice_date[lte]" ), page: Orb::Internal::Page, model: Orb::Invoice, options: ) end |
#list_summary(amount: nil, amount_gt: nil, amount_lt: nil, cursor: nil, customer_id: nil, date_type: nil, due_date: nil, due_date_window: nil, due_date_gt: nil, due_date_lt: nil, external_customer_id: nil, invoice_date_gt: nil, invoice_date_gte: nil, invoice_date_lt: nil, invoice_date_lte: nil, is_recurring: nil, limit: nil, status: nil, subscription_id: nil, request_options: {}) ⇒ Orb::Internal::Page<Orb::Models::InvoiceListSummaryResponse>
Some parameter documentations has been truncated, see Models::InvoiceListSummaryParams for more details.
This is a lighter-weight endpoint that returns a list of all
Invoice summaries for an account in a list format.
These invoice summaries do not include line item details, minimums, maximums, and discounts, making this endpoint more efficient.
The list of invoices is ordered starting from the most recently issued invoice
date. The response also includes
pagination_metadata, which lets the caller
retrieve the next page of results if they exist.
By default, this only returns invoices that are issued, paid, or synced.
When fetching any draft invoices, this returns the last-computed invoice
values for each draft invoice, which may not always be up-to-date since Orb
regularly refreshes invoices asynchronously.
387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 |
# File 'lib/orb/resources/invoices.rb', line 387 def list_summary(params = {}) parsed, = Orb::InvoiceListSummaryParams.dump_request(params) query = Orb::Internal::Util.encode_query_params(parsed) @client.request( method: :get, path: "invoices/summary", query: query.transform_keys( amount_gt: "amount[gt]", amount_lt: "amount[lt]", due_date_gt: "due_date[gt]", due_date_lt: "due_date[lt]", invoice_date_gt: "invoice_date[gt]", invoice_date_gte: "invoice_date[gte]", invoice_date_lt: "invoice_date[lt]", invoice_date_lte: "invoice_date[lte]" ), page: Orb::Internal::Page, model: Orb::Models::InvoiceListSummaryResponse, options: ) end |
#mark_paid(invoice_id, payment_received_date:, external_id: nil, notes: nil, request_options: {}) ⇒ Orb::Models::Invoice
This endpoint allows an invoice's status to be set to the paid status. This
can only be done to invoices that are in the issued or synced status.
427 428 429 430 431 432 433 434 435 436 |
# File 'lib/orb/resources/invoices.rb', line 427 def mark_paid(invoice_id, params) parsed, = Orb::InvoiceMarkPaidParams.dump_request(params) @client.request( method: :post, path: ["invoices/%1$s/mark_paid", invoice_id], body: parsed, model: Orb::Invoice, options: ) end |
#pay(invoice_id, shared_payment_token_id:, request_options: {}) ⇒ Orb::Models::Invoice
This endpoint collects payment for an invoice. By default, it uses the customer's default payment method. Optionally, a shared payment token (SPT) can be provided to pay using agent-granted credentials instead. This action can only be taken on invoices with status "issued".
454 455 456 457 458 459 460 461 462 463 |
# File 'lib/orb/resources/invoices.rb', line 454 def pay(invoice_id, params) parsed, = Orb::InvoicePayParams.dump_request(params) @client.request( method: :post, path: ["invoices/%1$s/pay", invoice_id], body: parsed, model: Orb::Invoice, options: ) end |
#update(invoice_id, auto_collection: nil, due_date: nil, invoice_date: nil, metadata: nil, net_terms: nil, request_options: {}) ⇒ Orb::Models::Invoice
Some parameter documentations has been truncated, see Models::InvoiceUpdateParams for more details.
This endpoint allows you to update the metadata, net_terms, due_date,
invoice_date, and auto_collection properties on an invoice. If you pass null
for the metadata value, it will clear any existing metadata for that invoice.
metadata can be modified regardless of invoice state. net_terms, due_date,
invoice_date, and auto_collection can only be modified if the invoice is in
a draft state. invoice_date can only be modified for non-subscription
invoices.
83 84 85 86 87 88 89 90 91 92 |
# File 'lib/orb/resources/invoices.rb', line 83 def update(invoice_id, params = {}) parsed, = Orb::InvoiceUpdateParams.dump_request(params) @client.request( method: :put, path: ["invoices/%1$s", invoice_id], body: parsed, model: Orb::Invoice, options: ) end |
#void(invoice_id, request_options: {}) ⇒ Orb::Models::Invoice
This endpoint allows an invoice's status to be set to the void status. This
can only be done to invoices that are in the issued status.
If the associated invoice has used the customer balance to change the amount due, the customer balance operation will be reverted. For example, if the invoice used $10 of customer balance, that amount will be added back to the customer balance upon voiding.
If the invoice was used to purchase a credit block, but the invoice is not yet paid, the credit block will be voided. If the invoice was created due to a top-up, the top-up will be disabled.
485 486 487 488 489 490 491 492 |
# File 'lib/orb/resources/invoices.rb', line 485 def void(invoice_id, params = {}) @client.request( method: :post, path: ["invoices/%1$s/void", invoice_id], model: Orb::Invoice, options: params[:request_options] ) end |