Skip to content

Billing Admin

Endpoints

GET  /api/v1/admin/payment-requests?status=...     list (limit 200, sorted -createdAt)
POST /api/v1/admin/payment-requests/:id/approve    approve  { admin_notes? }
POST /api/v1/admin/payment-requests/:id/reject     reject   { admin_notes? }
GET  /api/v1/admin/subscriptions                   list with workspace + user enrichment
GET  /api/v1/admin/invoices                        list invoices

All require admin.

Payment requests

A payment request is created when a user submits a manual payment proof (bank transfer, cheque) for a plan upgrade. Each request carries:

  • status: pending | approved | rejected
  • workspace_id, requested_by (user)
  • Workspace name and user (name, email) joined for display
  • admin_notes (max 2 000 chars) — captured at approval / rejection time

Approving a request flips the workspace's plan and unlocks features; rejecting it leaves the existing plan unchanged and surfaces admin_notes to the requester.

Subscriptions

The subscriptions list rolls up every active and past subscription with the workspace and owning user joined in. Use it for ad-hoc support — finding "the workspace whose payment failed last Tuesday" — or auditing.

Invoices

/admin/invoices lists every invoice issued, regardless of status (paid, open, void). Useful for accounting reconciliation; full export is a roadmap item.