Source snapshot: 13 October 2026. These pages describe the current implementation, including unfinished controls. See coverage and review notes.
- English
- മലയാളം
Tenant billing operations
Host:control.<ROOT_DOMAIN> · Route: /tenants/[tenantId]/billingPurpose and access
Manage the persisted subscription, invoices, and payment records for one tenant.You need an account session and platform access. Platform privileges are separate from tenant roles; privileged writes remain subject to endpoint role checks.Screen layout
The screen groups Subscription, Invoices, and Payments. Subscription selects a plan and status. Invoice creation asks amount, description, and due date; payment recording asks amount, method, and reference.Fields and displayed information
Fields and filters: Tenant subscription editor
Displayed table columns: Amount, Description, Status, Issued, Due.
Fields and filters: Create invoice dialog
Displayed table columns: Amount, Method, Reference, Recorded.
Fields and filters: Record payment dialog
Actions
Linked navigation
Interaction sequence
Assign plan or change status → refresh. Issue invoice → enter amount/details → save. Mark paid or Void operates on an invoice. Record payment creates a separate payment record.States and rules
Display amounts are converted to minor units before posting. Invoice status changes and payment recording are distinct API calls; do not assume recording a payment automatically settles an invoice. This is separate from the tenant’s static billing UI.The rendered action controls bind loading indicators to pending state. Failed API saves keep their documented error/notification path; a loading indicator alone does not establish persistence.Implementation references
Paths below are relative to the application repository. This is source-reviewed behavior, not a recorded browser test.apps/web/src/app/sites/control/(app)/tenants/[tenantId]/billing/page.tsxapps/web/src/features/platform/tenant-subscription-editor.tsxapps/web/src/features/platform/invoices-panel.tsxapps/web/src/features/platform/create-invoice-dialog.tsxapps/web/src/features/platform/payments-panel.tsxapps/web/src/features/platform/record-payment-dialog.tsx
apps/web/src/lib/session.ts, apps/web/src/lib/server-api.ts, apps/web/src/lib/platform.ts, apps/web/src/lib/billing.ts, apps/web/src/lib/api-client.tsAPI behavior references
apps/api/src/platform/platform-tenant-access.controller.tsapps/api/src/platform/platform.controller.tsapps/api/src/billing/plans.controller.tsapps/api/src/billing/tenant-billing.controller.tsapps/api/src/features/features.controller.tsapps/api/src/features/tenant-features.controller.tsapps/api/src/forms/forms.controller.tsapps/api/src/analytics/analytics.controller.tsapps/api/src/analytics/tenant-analytics.controller.ts