Skip to main content

MarkAsPaid records manual payment and marks invoice as paid.

POST 

/api/v1/billing/invoices/:id/mark-paid

Use this when payment was received outside the system (bank transfer, cheque, cash) and needs to be recorded manually.

Authorization

Requires billing:admin permission.

Behavior

  • Creates a Payment record linked to the invoice
  • Updates invoice status to 'paid'
  • Sets paid_at timestamp
  • Sends payment confirmation email

Response

Returns updated Invoice with paid status.

Errors

  • NOT_FOUND: Invoice does not exist
  • FAILED_PRECONDITION: Invoice already paid or voided
  • PERMISSION_DENIED: Caller lacks billing:admin permission

Request

Responses

A successful response.