Billing Hub — SanadiqCloud
Product version: 1.0.0+1 Last updated: 2026-08-03 Audience: Tenant Owners and users with
billing:read
A. Billing Hub Overview
The Billing Hub (/billing) is the landing screen for organization subscription billing (tenant → SanadiqCloud). It shows a subscription hero (when available) and explore tiles — it does not open Subscription by default.
Not the same as Sales invoices. Merchant customer/sale invoices live under Sales. Billing invoices are subscription invoices for plan charges and capacity updates.
Access
- Side rail Billing (requires
billing:read). - Hub tiles (permission-gated):
| Section | Path | Description |
|---|---|---|
| Subscription | /billing/subscription |
Current plan, status, seats/months/storage |
| Plans | /billing/plans |
Rate catalog + quote + Pay (new subscription) |
| Subscription invoices | /billing/invoices |
List, detail, pay unpaid (open pre-filter from hub CTAs) |
| Usage | /billing/usage |
Usage metrics for the active subscription period |
| Roadmap | /billing/roadmap |
Guided setup path (subscribe → manage → invoices/usage) |
Primary hub CTA (when billing:update): complete pending payment, Pay update invoice, Update subscription (adjust), or browse plans.
Welcome subscription
When an organization is created, billing creates a welcome free subscription (typically 1 seat / 1 month, zero charge, active). Paid upgrades start from Plans.
Pricing model (summary)
Tenants choose months (1–24), employees/seats (1–500), and storage GB (1–1000). Totals use plan rates: per month, per employee, and per GB above free storage. See Subscription and Plans.
Updating an existing subscription stages increases as an unpaid invoice (prorated remaining period + full added months); new limits apply after payment. Decreases are scheduled for period end with no credit. See Subscription and the Refund Policy.
B. How Payments Work (Stripe Checkout)
SanadiqCloud uses Stripe Hosted Checkout only:
| Purpose | API mode |
|---|---|
| New / pending subscription | Subscription Checkout (POST /subscription/checkout) |
| Unpaid invoice (e.g. after adjust) | Payment Checkout (POST /invoices/{id}/checkout) |
- App creates a checkout session.
- Browser/app opens the Stripe Checkout URL.
- Return routes under
/billing/subscription/checkout/success|cancelconfirm or abandon; the server also completes via Stripe webhooks.
There is no in-app Stripe Elements card form, no Payments history page, no Customer Portal, and no “card on file” management screen.
C. Permissions
| Permission | Effect |
|---|---|
billing:read |
See Billing rail and pages |
billing:update |
Pay / checkout / adjust / renew API / cancel API CTAs (cancel has no tenant page) |
billing:delete |
Delete unpaid invoices (where the UI exposes it) |
Global plan definitions are managed outside the tenant SaaS app. Tenants only browse and subscribe to published plans.
Tenant cancel subscription and dedicated renew screens are not shipped in the organization app (APIs may exist for future use). Contact support if you need to end a subscription.
D. Related Guides
- Subscription | Plans | Invoices | Usage
- Payments (Checkout) — checkout behavior only
- Statistics — not shipped (no tenant page; no
/statsAPI) - Settings → Subscription — read-only organization snapshot
Need help? support@sanadiq.com