Skip to content

Invoice programs: bill, collect, refund, void

The Invoice Verbs bill, collect, refund, void as MCP do programs, with inputs, result, refusals and an example.

Reference for Invoice, one group of Invoice programs.

Invoice.bill

Bill finalizes an Invoice and presents it to the Customer for payment. Verb page.

Text
do: return await $.Invoice.bill(input)

Emits Invoice.billed.

Inputs

InputTypeRequiredDescription
invoiceInvoicerequiredThe draft Invoice.

Returns

OutputTypeRequiredDescription
invoiceInvoicerequiredThe open Invoice.

Refuses when

CheckErrorFixThen call
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.None.
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.None.

Example

JSON
{
  "name": "do",
  "arguments": {
    "code": "return await $.Invoice.bill({ invoice: 'inv_KjgRxmhMzZ' })"
  }
}

Invoice.collect

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

Text
do: return await $.Invoice.collect(input)

Emits Invoice.collected.

Inputs

InputTypeRequiredDescription
invoiceInvoicerequiredThe open Invoice.

Returns

OutputTypeRequiredDescription
invoiceInvoicerequiredThe paid Invoice.

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.None.
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.None.

Example

JSON
{
  "name": "do",
  "arguments": {
    "code": "return await $.Invoice.collect({ invoice: 'inv_FXANyzQojc' })"
  }
}

Invoice.refund

Refund returns all or part of a paid Invoice to the Customer’s original payment method and posts the reversing Entries. Verb page.

Text
do: return await $.Invoice.refund(input)

Emits Invoice.refunded.

Inputs

InputTypeRequiredDescription
invoiceInvoicerequiredThe paid Invoice.
amountmoneyThe amount. Defaults to the full payment; pro rata takes the unused part of the Period.
reasontextrequiredWhy the money goes back, kept on the Invoice.

Returns

OutputTypeRequiredDescription
invoiceInvoicerequiredThe Invoice, with its refunded amount.

Refuses when

CheckErrorFixThen call
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.None.
A Dispute on the Invoice is openrefusedClear what the check names, then call it again.None.

Example

JSON
{
  "name": "do",
  "arguments": {
    "code": "return await $.Invoice.refund({ invoice: 'inv_9sfvgeRT7L', reason: 'Example reason' })"
  }
}

Invoice.void

Void cancels an unpaid Invoice, keeps it on record, and posts the reversing Entries. Verb page.

Text
do: return await $.Invoice.void(input)

Emits Invoice.voided.

Inputs

InputTypeRequiredDescription
invoiceInvoicerequiredThe unpaid Invoice.
reasontextrequiredWhy the amount is no longer due.

Returns

OutputTypeRequiredDescription
invoiceInvoicerequiredThe voided Invoice, kept forever.

Refuses when

CheckErrorFixThen call
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.None.
The record changed since it was read, so the write would overwrite a newer version.conflictRead the record again, then retry the write against its current state.None.
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.None.

Example

JSON
{
  "name": "do",
  "arguments": {
    "code": "return await $.Invoice.void({ invoice: 'inv_KjgRxmhMzZ', reason: 'Example reason' })"
  }
}