Module: PaymentKit::Resources::Invoices
- Included in:
- Client
- Defined in:
- lib/payment_kit/resources/invoices.rb
Overview
Invoices and floating (pending) invoice items.
Instance Method Summary collapse
-
#bill_pending_items(params = nil) ⇒ Object
Sweeps floating items into standalone invoices (one per currency), finalizes them and attempts collection.
-
#create_invoice(params = nil) ⇒ Object
POST /invoices/ — creates a one-off invoice in
draft. -
#create_invoice_item(params = nil) ⇒ Object
POST /invoice-items/ — creates a floating (pending) item, collected at the next renewal or on demand via #bill_pending_items.
-
#finalize_invoice(id) ⇒ Object
Moves a draft invoice to
openand locks its amounts. -
#list_invoice_items(params = {}) ⇒ Object
GET /invoice-items/ — auto-paginated; filter with
subscription_idand status: "floating" to list pending items. -
#list_invoices(params = {}) ⇒ Object
GET /invoices/ — auto-paginated Array of invoices.
-
#mark_invoice_uncollectible(id) ⇒ Object
Only permitted from
OPENorPAST_DUE; other states return 422. -
#pay_invoice(id, params = nil) ⇒ Object
Attempts collection on an open invoice (finalizing it first if draft).
-
#retrieve_invoice(id, params = {}) ⇒ Object
Supports
expand, e.g. -
#retrieve_invoice_item(id) ⇒ Object
GET /invoice-items/id.
-
#retrieve_invoice_pdf(id) ⇒ Object
Returns { "pdf_url" => ..., "status" => "available" | "generating" }; poll again while
statusisgenerating. -
#update_invoice_item(id, params = nil) ⇒ Object
PATCH /invoice-items/id.
-
#void_invoice(id) ⇒ Object
Cancels the invoice so no payment is expected.
Instance Method Details
#bill_pending_items(params = nil) ⇒ Object
Sweeps floating items into standalone invoices (one per currency),
finalizes them and attempts collection. Always pass a stable
idempotency_key or duplicate requests create duplicate invoices.
40 41 42 |
# File 'lib/payment_kit/resources/invoices.rb', line 40 def bill_pending_items(params = nil, **) post("/invoices/bill-pending-items", params, **) end |
#create_invoice(params = nil) ⇒ Object
POST /invoices/ — creates a one-off invoice in draft. Each entry in
items takes an amount, a unit_amount with quantity, or a
catalog price_id.
10 |
# File 'lib/payment_kit/resources/invoices.rb', line 10 def create_invoice(params = nil, **) = post("/invoices/", params, **) |
#create_invoice_item(params = nil) ⇒ Object
POST /invoice-items/ — creates a floating (pending) item, collected at
the next renewal or on demand via #bill_pending_items. The subscription
must be active or trialing and belong to the same customer.
49 |
# File 'lib/payment_kit/resources/invoices.rb', line 49 def create_invoice_item(params = nil, **) = post("/invoice-items/", params, **) |
#finalize_invoice(id) ⇒ Object
Moves a draft invoice to open and locks its amounts.
30 |
# File 'lib/payment_kit/resources/invoices.rb', line 30 def finalize_invoice(id, **) = post("/invoices/#{id}/finalize", {}, **) |
#list_invoice_items(params = {}) ⇒ Object
GET /invoice-items/ — auto-paginated; filter with subscription_id and
status: "floating" to list pending items.
56 |
# File 'lib/payment_kit/resources/invoices.rb', line 56 def list_invoice_items(params = {}) = list("/invoice-items/", params) |
#list_invoices(params = {}) ⇒ Object
GET /invoices/ — auto-paginated Array of invoices.
16 |
# File 'lib/payment_kit/resources/invoices.rb', line 16 def list_invoices(params = {}) = list("/invoices/", params) |
#mark_invoice_uncollectible(id) ⇒ Object
Only permitted from OPEN or PAST_DUE; other states return 422.
33 34 35 |
# File 'lib/payment_kit/resources/invoices.rb', line 33 def mark_invoice_uncollectible(id, **) post("/invoices/#{id}/mark-uncollectible", {}, **) end |
#pay_invoice(id, params = nil) ⇒ Object
Attempts collection on an open invoice (finalizing it first if draft). A decline raises PaymentKit::CardError and leaves the invoice payable.
24 |
# File 'lib/payment_kit/resources/invoices.rb', line 24 def pay_invoice(id, params = nil, **) = post("/invoices/#{id}/collect", params, **) |
#retrieve_invoice(id, params = {}) ⇒ Object
Supports expand, e.g. retrieve_invoice("in_1", expand: "custom_fields").
13 |
# File 'lib/payment_kit/resources/invoices.rb', line 13 def retrieve_invoice(id, params = {}) = get("/invoices/#{id}", params) |
#retrieve_invoice_item(id) ⇒ Object
GET /invoice-items/id
52 |
# File 'lib/payment_kit/resources/invoices.rb', line 52 def retrieve_invoice_item(id) = get("/invoice-items/#{id}") |
#retrieve_invoice_pdf(id) ⇒ Object
Returns { "pdf_url" => ..., "status" => "available" | "generating" };
poll again while status is generating.
20 |
# File 'lib/payment_kit/resources/invoices.rb', line 20 def retrieve_invoice_pdf(id) = get("/invoices/#{id}/pdf") |
#update_invoice_item(id, params = nil) ⇒ Object
PATCH /invoice-items/id
59 60 61 |
# File 'lib/payment_kit/resources/invoices.rb', line 59 def update_invoice_item(id, params = nil, **) patch("/invoice-items/#{id}", params, **) end |
#void_invoice(id) ⇒ Object
Cancels the invoice so no payment is expected.
27 |
# File 'lib/payment_kit/resources/invoices.rb', line 27 def void_invoice(id, **) = post("/invoices/#{id}/void", {}, **) |