Skip to content

Invoice.collect

POST /{namespace}/invoices/{invoice}/collect

Collect charges a Customer’s saved payment method for an open Invoice and retries on failure.

Mode
do
Event
Invoice.collected

Inputs

InputTypeRequiredDescription
invoiceInvoicerequiredThe open Invoice.

Outputs

OutputTypeRequiredDescription
invoiceInvoicerequiredThe paid Invoice.

Effects

  • Emits Invoice.collected.
  • Performed by the Billing Specialist.
  • One-way (money, customer): it waits out its delay window, and runs in the send and do modes.
  • Retries on the Startup’s retry schedule before the Invoice is marked uncollectible.
  • On a send Invoice, charges nothing: it records the Customer’s bank transfer when it reconciles and emits Invoice.collected then.

Refuses when

CheckErrorFixThen call
The operation is part of an Offer the caller has not accepted or paid for.payment-requiredAccept the Offer named in the response, then retry the call.Offer.accept
The key is valid, but its scopes do not allow this operation.forbiddenUse a key whose scopes cover the operation, or ask an owner of the namespace to grant them.Invoice.collect
The record is not in a state that allows this Verb, so the call is refused.refusedRead the record, run the Verb that moves it to an allowed state, then retry.Invoice.collect

When it waits

GateDefault
Decision classMedium: one-way, bounded (money, customer)
Delay window1 business hour, in which a watcher can pause, redirect or cancel it; then it runs.
LimitThe spend Limit of the Permission or Mandate it runs under.
Over the LimitIt waits pending for an Approval from the Founder. Approved, it runs; refused, it ends refused with limit-exceeded; unanswered by its deadline, it ends canceled.