A single admin surface for everything the operator sells — basic services, bill-cycles, price-plans and free-unit bundles. Every change is validated and persisted by the rating core, so the commercial catalogue and the billing engine never drift apart.
No hard-coded service set. Operators add, rename and retire basic services on the fly — rename "Data" to "5G traffic", or introduce an entirely new rateable service — and every downstream flow (rating, billing, invoicing, statistics) follows automatically.
Price-plans carry per-service unit prices and a monthly fee; bundles carry the monthly free-unit allowances (with unlimited supported). Separating price from allowance lets the same plan pair with different bundles, so commercial offers are composed rather than duplicated.
The catalogue protects the live base. A plan, bundle or bill-cycle cannot be retired while an active subscriber still holds it, and a service cannot be retired while any active plan or bundle still references it — the refusal names exactly what to fix first, so clean-up is unambiguous.
Changing a subscriber's plan or bundle observes a cutover instant: usage that started before the change is rated with the previous parameters, usage at or after with the new ones. Bill-cycle moves take effect from the next cycle, so a customer's current period is never split or double-billed.