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
- 200
- default
A successful response.
An unexpected error response.