The telecom pattern is one of the most operationally complex in commercial billing - carriers run prepaid wallet balances, postpaid recurring plans, included allowances per metered dimension, per-destination-country roaming pricing, family-plan pooled allowances, and overage handling, all inside a single subscription. Every primitive in Kontorion shows up somewhere in a carrier's billing model.
Real-world examples. T-Mobile, Vodafone, Verizon, AT&T, Free Mobile, Vodafone Italy, Telekom Deutschland, Orange, O2, Three UK, Mint Mobile. Common shape: monthly plan with X minutes + Y SMS + Z GB included, additional usage at per-unit rates, roaming priced per destination country and per service type, family plan with pooled allowance across N lines, prepaid option with topup-and-spend wallet model.
The shape of the problem
Telecoms hit nearly every operational complexity dimension at once:
Prepaid + postpaid coexistence. The same carrier offers customer-funded wallet balances (prepaid SIMs - load €20, talk until empty) and monthly recurring plans (postpaid - bill at the end of the month). Often one customer has both.
Multi-dimensional metered allowances. A single plan includes minutes, SMS, and data, each with their own allowance and own overage rate. Real-time visibility per dimension is non-negotiable.
Roaming as keyed pricing. International roaming charges per destination country and per service (call vs SMS vs data). Modeling each as a separate product creates 200+ entries per service; modeling roaming as a keyed product (key = destination country + service) collapses to one.
Family plans / pooled allowances. A family plan has 5 lines but shares a pooled allowance for data; minutes might be per-line. Pool semantics live at the subscription level, per-line semantics at the line level.
Real-time hard caps. Customers expect to be able to set "stop me from using more than 5 GB this month" caps that actually enforce in real time, not "send me an invoice after the fact."
Mid-cycle plan changes. Upgrading from a 5GB plan to a 20GB plan mid-cycle triggers immediate access to the new allowance (less the consumed portion of the old one) and prorated billing.
The first event consumes 5 minutes of the 1,000-minute domestic allowance; the second is roaming-priced from event 1 because roaming products carry no allowance.
When the customer crosses 25 GB in the period, Kontorion fires the webhook to the network OSS, which blocks further data sessions for that MSISDN until the next cycle. No "I got a $500 surprise bill" support tickets.
Variations
Prepaid SIM mode. Same products, but no recurring plan - all events charge against a wallet balance. Top-ups credit the wallet via a manual or auto-topup flow.
Family plan with pooled data. Use a single subscription with multiple metadata.line_id values on each event; aggregator pools them all into the same bucket.
Unlimited plans with fair-use throttling. Set the data product's allowance to a very high number (effectively unlimited) and use a billing milestone to throttle (not bill overage) when the customer crosses a fair-use threshold.
Add-on data packs. Customer buys a one-time 5GB pack: post a wallet_credit of 5GB to a data-specific allowance pool that the aggregator consumes before the plan allowance.
What you don't have to build
Per-dimension allowance bookkeeping with real-time drawdown