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, include_zero_quantity_line_items: nil, request_options: {}) ⇒ Orb::Models::Invoice
Some parameter documentations has been truncated, see Models::InvoiceFetchParams for more details.
-
#fetch_upcoming(subscription_id:, include_zero_quantity_line_items: nil, request_options: {}) ⇒ Orb::Models::InvoiceFetchUpcomingResponse
Some parameter documentations has been truncated, see Models::InvoiceFetchUpcomingParams for more details.
-
#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, include_zero_quantity_line_items: 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.
-
#regenerate_invoice_pdf(invoice_id, request_options: {}) ⇒ Orb::Models::Invoice
This endpoint triggers a regeneration of the PDF for a finalized invoice.
-
#regenerate_receipt_pdf(invoice_id, request_options: {}) ⇒ Orb::Models::Invoice
This endpoint triggers a regeneration of the receipt PDF for a paid 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.
596 597 598 |
# File 'lib/orb/resources/invoices.rb', line 596 def initialize(client:) @client = client end |
Instance Method Details
#`void` ⇒ Object
131 |
# File 'sig/orb/resources/invoices.rbs', line 131
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.
199 200 201 202 203 204 205 206 207 208 209 210 211 |
# File 'lib/orb/resources/invoices.rb', line 199 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, include_zero_quantity_line_items: nil, request_options: {}) ⇒ Orb::Models::Invoice
Some parameter documentations has been truncated, see Models::InvoiceFetchParams for more details.
This endpoint is used to fetch an Invoice given an
identifier.
230 231 232 233 234 235 236 237 238 239 240 |
# File 'lib/orb/resources/invoices.rb', line 230 def fetch(invoice_id, params = {}) parsed, = Orb::InvoiceFetchParams.dump_request(params) query = Orb::Internal::Util.encode_query_params(parsed) @client.request( method: :get, path: ["invoices/%1$s", invoice_id], query: query, model: Orb::Invoice, options: ) end |
#fetch_upcoming(subscription_id:, include_zero_quantity_line_items: nil, request_options: {}) ⇒ Orb::Models::InvoiceFetchUpcomingResponse
Some parameter documentations has been truncated, see Models::InvoiceFetchUpcomingParams for more details.
This endpoint can be used to fetch the upcoming invoice for the current billing period given a subscription.
260 261 262 263 264 265 266 267 268 269 270 |
# File 'lib/orb/resources/invoices.rb', line 260 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).
293 294 295 296 297 298 299 300 301 302 |
# File 'lib/orb/resources/invoices.rb', line 293 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.
328 329 330 331 332 333 334 335 336 337 |
# File 'lib/orb/resources/invoices.rb', line 328 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, include_zero_quantity_line_items: 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.
162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 |
# File 'lib/orb/resources/invoices.rb', line 162 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.
404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 |
# File 'lib/orb/resources/invoices.rb', line 404 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.
444 445 446 447 448 449 450 451 452 453 |
# File 'lib/orb/resources/invoices.rb', line 444 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".
471 472 473 474 475 476 477 478 479 480 |
# File 'lib/orb/resources/invoices.rb', line 471 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 |
#regenerate_invoice_pdf(invoice_id, request_options: {}) ⇒ Orb::Models::Invoice
This endpoint triggers a regeneration of the PDF for a finalized invoice.
The invoice must be finalized (issued, paid, synced, or void) and must
already have an existing PDF. The original PDF is archived (not permanently
deleted) to maintain an audit trail.
Important Legal Considerations:
Regenerating invoice PDFs may not be permitted in all jurisdictions. Many tax authorities require that issued invoices remain unmodified. Before using this endpoint, ensure that:
- Your local tax regulations permit modification of issued billing documents
- You have a legitimate business reason (e.g., fixing template errors, updating branding)
- You maintain proper records of the original PDF (archived automatically by Orb)
Recommended use cases:
- Correcting template rendering issues
- Applying updated company branding
- Updating customer data that was incorrect at issuance
514 515 516 517 518 519 520 521 |
# File 'lib/orb/resources/invoices.rb', line 514 def regenerate_invoice_pdf(invoice_id, params = {}) @client.request( method: :post, path: ["invoices/%1$s/regenerate_invoice_pdf", invoice_id], model: Orb::Invoice, options: params[:request_options] ) end |
#regenerate_receipt_pdf(invoice_id, request_options: {}) ⇒ Orb::Models::Invoice
This endpoint triggers a regeneration of the receipt PDF for a paid invoice.
The invoice must be in paid status and must already have an existing receipt
PDF. The original PDF is archived (not permanently deleted) to maintain an audit
trail.
Important Legal Considerations:
Regenerating receipt PDFs may not be permitted in all jurisdictions. Many tax authorities require that issued receipts remain unmodified. Before using this endpoint, ensure that:
- Your local tax regulations permit modification of issued billing documents
- You have a legitimate business reason (e.g., fixing template errors, updating branding)
- You maintain proper records of the original PDF (archived automatically by Orb)
Recommended use cases:
- Correcting template rendering issues
- Applying updated company branding
- Updating customer data that was incorrect at issuance
555 556 557 558 559 560 561 562 |
# File 'lib/orb/resources/invoices.rb', line 555 def regenerate_receipt_pdf(invoice_id, params = {}) @client.request( method: :post, path: ["invoices/%1$s/regenerate_receipt_pdf", invoice_id], model: Orb::Invoice, options: params[:request_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.
584 585 586 587 588 589 590 591 |
# File 'lib/orb/resources/invoices.rb', line 584 def void(invoice_id, params = {}) @client.request( method: :post, path: ["invoices/%1$s/void", invoice_id], model: Orb::Invoice, options: params[:request_options] ) end |