User Story
As a mobile service provider offering combo plans (two products under one long-term contract), I want to support 28-day billing period (regardless of calendar months and weeks) and prorate charges and discounts at contract start and end, so that invoices, discounts, and termination fees are calculated correctly when a contract starts or ends mid-cycle.
Example of use
End customer: John Smith owning 1 MSISDN
Standard billing cycle for this customer:
28-day cycles, e.g.
Cycle 1: 2026-09-10 00:00:00 – 2026-10-07 23:59:59
Cycle 2: 2026-10-08 00:00:00 – 2026-11-04 23:59:59
…
Cycle 14: 2027-09-09 00:00:00 – 2027-10-06 23:59:59
John Smith signs a 12 months contract for two products on 2026-09-15 10:30:00 (while PortaBilling charges for the whole day according to its day-level precision calculation logic)
Contract end: 2027-09-15 00:00:00
Products:
Product 1 (P1): “Mobile Bundle 5Gb+400VSMS” for 12 EUR per 28-day cycle taxed exclusively at 21%
Product 2 (P2): “Gym membership” 15 EUR per 28-day cycle taxed exclusively at 9%
In-contract discount (given for a simultaneous usage of 2 products for long-term):
P1 = 15% for 6 months
P2 = 10% for 6 months
Standard discount (given for a simultaneus usage of 2 products):
P1 = 7%
P2 = 5%
Contract may be cancelled early. In that case an early termination penalty is calculated as the sum of the net charges the customer would have paid for each remaining day of the contract, had the contract not been terminated early.
The system must:
Issue 28-day invoices on the customer’s existing cycle dates
Prorate charges and discounts when the contract starts mid-cycle (2026-09-15 00:00:00 in Cycle 1)
Switch to out-of-contract pricing and discounts when the contract ends mid-cycle (2027-09-15 00:00:00 in Cycle 14)
Calculate early termination penalties accurately if the customer cancels before the planned end date.
Business Model
MVNO
Current Solution
The billing platform already:
Supports recurring billing cycles (typically monthly or weekly patterns)
Charges recurring product fees per cycle
Prorates charges when products are activated or cancelled mid-cycle
Applies percentage discounts on product charges or invoice totals
Stores contract terms and can apply fixed or generic early cancellation penalties
Exposes invoices and transactions via API in machine-readable format
Gaps to close:
Introduce 28-day billing cycles as a standard
Stakeholders and Their Benefits
| Stakeholders / Benefits | Better Market Fit | Automated Invoicing and Billing | Revenue Assurance |
|---|---|---|---|
| CSP | |||
| Resellers |
Use Cases
Use Case #1 – Contract Starts in the Middle of a 28-day Cycle
Preconditions
- CSP has the following service offerings for customers:
- Subscribe to one of the available products (no discount):
- Mobile bundle (voice, SMS and data volume): 12 EUR per billing cycle
- Gym: 15 EUR per billing cycle
- Subscribe to a combination of products (Mobile + Gym) and get a standard 7% recurring discount for Mobile and 5% for Gym.
- Subscribe to a combo contract with the following conditions:
- Combo contract is a long-term agreement between a customer and a CSP for the simultaneous usage of at least two add-on products for a specific period, e.g., 12 months. Contract duration is defined as the number of calendar months independently from customer billing cycle, and the miminum contract period is one month.
- Customers get discounts on add-on products's recurring charges activated via contracts. In-contract discount period is also defined in calendar months. In-contract discount period is not equal to the contract period, e.g., the contract duration is 12 month, while the discount is provided only for the first 6 months. When in-contract discount period is over, the customer gets a standard discount for simultaneous usage of 2 add-on products.
Products offered under a contract always include an in-contract discount. Currently, there is no envisaged business use case for a product with a 0% in-contract discount. - Combo contract defines 2 add-on products, corresponding subscriptions to charge for those products, given discount percentage per product, and discount duration.
12 months
combo contractAdd-on product Subscription name Full price per billing cycle In-contract discount, % Discount duration, calendar months Mobile P1 Mobile bundle 12 EUR 15 % 6 Gym P2 Gym bundle 15 EUR 10% 6
- Subscribe to one of the available products (no discount):
Customer John Smith is created on 2026-09-10 at 10:15 (UTC) with 28-day billing cycle without any billable services, only empty main product is assigned to his account.
28-day billing cycles start for the customer:
Cycle 1: 2026-09-10 00:00:00 – 2026-10-07 23:59:59
Cycle 2: 2026-10-08 00:00:00 – 2026-11-04 23:59:59
- ...
- Cycle 14: 2027-09-09 00:00:00 – 2027-10-06 23:59:59
Roles: PortaBilling system, customer
Use scenario #1.1 – First invoice with a partial first cycle (Cycle 1)
On 2026-09-15 10:30:00, John Smith signs a 12 months combo contract with 6 months contract discount period. The system records the contract dates with the day-level precision:
- Contract start: 2026-09-15 00:00:00
Contract end: 2027-09-15 00:00:00
- In-contract discount start: 2026-09-15 00:00:00
- In-contract discount end: 2027-03-15 00:00:00
The contract includes two add-on products and subscriptions for those products:
P1 (Mobile) price 12 EUR / 28-day cycle (tax exclusive) taxed exclusively at 21%
P2 (Gym) price 15 EUR / 28-day cycle (tax exclusive) taxed exclusively at 9%
Both P1 and P2 are activated immediately at 2026-09-15 10:30:00.
Discount rule is applied to the account of John Smith:
In-contract discount:
P1 = 15% for 6 months
P2 = 10% for 6 months
- Standard discount (applies to products once the in-contract discount period ends):
P1 = 7%
P2 = 5%
On 2026-10-08, the system closes Cycle 1 (2026-09-10 – 2026-10-07).
For John Smith, the system:
Recognizes that P1 and P2 are active only from 2026-09-15 10:30:00.
Calculates the fraction and charges of Cycle 1 in which the products are active (from 2026-09-15 00:00:00 to 2026-10-07 23:59:59):
Active time in Cycle 1 ≈ 23 days
Fraction of cycle ≈ 23 / 28 ≈ 0.8214
P1 charge ≈ 12.00 × 0.8214 = 9.86 EUR
P2 charge ≈ 15.00 × 0.8214 = 12.32 EUR
In-contract discount for P1 (9.86*15%) ≈ –1.48 EUR
- In-contract discount for P2 (12.32*10%) ≈ –1.23 EUR
The invoice for Cycle 1 shows charges and discounts for charges as separate lines:
Description Period Amount P1 Mobile bundle 15-Sep-2026 00:00:00 – 07-Oct-2026 23:59:59 9.86 EUR P2 Gym bundle 15-Sep-2026 00:00:00 – 07-Oct-2026 23:59:59 12.32 EUR In-contract discount P1 (15%) 15-Sep-2026 00:00:00 – 07-Oct-2026 23:59:59 –1.48 EUR In-contract discount P2 (10%) 15-Sep-2026 00:00:00 – 07-Oct-2026 23:59:59 –1.23 EUR VAT 21% on P1 15-Sep-2026 00:00:00 – 07-Oct-2026 23:59:59 1.76 EUR VAT 9% on P2 15-Sep-2026 00:00:00 – 07-Oct-2026 23:59:59 1.00 EUR Total — 22.23 EUR
Use scenario #1.2 – Full in-contract cycle (Cycle 2)
- Continues after US#1.1
Cycle 2: 2026-10-08 00:00:00 – 2026-11-04 23:59:59.
P1 and P2 are active for the entire Cycle 2.
On 2026-11-05, the system closes Cycle 2 and:
Charges P1 = 12.00 EUR
Charges P2 = 15.00 EUR
In-contract discount for P1 = 15% → –1.80 EUR
- In-contract discount for P2 = 10% → –1.50 EUR
Invoice for Cycle 2 shows charges and discounts for charges as separate lines:
Description Period Amount P1 Mobile bundle 08-Oct-2026 00:00:00 – 04-Nov-2026 23:59:59 12.00 EUR P2 Gym bundle 08-Oct-2026 00:00:00 – 04-Nov-2026 23:59:59 15.00 EUR In-contract discount P1 (15%) 08-Oct-2026 00:00:00 – 04-Nov-2026 23:59:59 –1.80 EUR In-contract discount P2 (10%) 08-Oct-2026 00:00:00 – 04-Nov-2026 23:59:59 –1.50 EUR VAT 21% on P1 08-Oct-2026 00:00:00 – 04-Nov-2026 23:59:59 2.14 EUR VAT 9% on P2 08-Oct-2026 00:00:00 – 04-Nov-2026 23:59:59 1.22 EUR Total — 27.06 EUR
Use scenario #1.3 – In-contract discount ends in the middle of a cycle
- Continues after US#1.2
- The in-contract discount end (2027-03-15 00:00:00) falls inside Cycle 7.
After in-contract discount end:
P1 discount becomes 7%
P2 discount becomes 5%
On 2027-03-25 00:00:00, the system closes Cycle 7 (2027-02-25 00:00:00 – 2027-03-24 23:59:59).
It recognizes that the in-contract discount expires at 2027-03-15 00:00:00, which is inside this cycle, and splits Cycle 7 into two sub-periods:
- Sub-period A (in-contract discount): 2027-02-25 00:00:00 – 2027-03-14 23:59:59, duration = 18 days
- Sub-period B (standard discount): 2027-03-15 00:00:00 – 2027-03-24 23:59:59, duration = 10 days
Fractions of the 28-day cycle:
Sub-period A fraction = 18 / 28 ≈ 0.6429
Sub-period B fraction = 10 / 28 ≈ 0.3571
Charges for Sub-period A (in-contract discount: P1=15%, P2=10%):
P1: 12.00 × 0.6429 = 7.71 EUR
P2: 15.00 × 0.6429 = 9.64 EUR
Discount for P1 (15%): –1.16 EUR → net 6.55 EUR
Discount for P2 (10%): –0.96 EUR → net 8.68 EUR
VAT for P1 (6.55 × 0.21): 1.38 EUR
VAT for P2 (8.68 × 0.09): 0.78 EUR
Charges for Sub-period B (standard discount: P1=7%, P2=5%):
P1: 12.00 × 0.3571 = 4.29 EUR
P2: 15.00 × 0.3571 = 5.36 EUR
Discount for P1 (7%): –0.30 EUR → net 3.99 EUR
Discount for P2 (5%): –0.27 EUR → net 5.09 EUR
VAT for P1 (3.99 × 0.21): 0.84 EUR
VAT for P2 (5.09 × 0.09): 0.46 EUR
The invoice for Cycle 7 shows charges and discounts for charges as separate lines:
Description Period Amount P1 Mobile bundle
25-Feb-2027 00:00:00 – 24-Mar-2027 23:59:59
12 EUR
P2 Gym bundle
25-Feb-2027 00:00:00 – 24-Mar-2027 23:59:59
15 EUR
In-contract discount P1 (15%)
25-Feb-2027 00:00:00 – 14-Mar-2027 23:59:59
–1.16 EUR
In-contract discount P2 (10%)
25-Feb-2027 00:00:00 – 14-Mar-2027 23:59:59
–0.96 EUR
VAT 21% on P1
25-Feb-2027 00:00:00 – 14-Mar-2027 23:59:59
1.38 EUR
VAT 9% on P2
25-Feb-2027 00:00:00 – 14-Mar-2027 23:59:59
0.78 EUR
Standard discount P1 (7%)
15-Mar-2027 00:00:00 – 24-Mar-2027 23:59:59
–0.30 EUR
Standard discount P2 (5%)
15-Mar-2027 00:00:00 – 24-Mar-2027 23:59:59
–0.27 EUR
VAT 21% on P1
15-Mar-2027 00:00:00 – 24-Mar-2027 23:59:59
0.84 EUR
VAT 9% on P2
15-Mar-2027 00:00:00 – 24-Mar-2027 23:59:59
0.46 EUR
Total
—
27.77 EUR
Use scenario #1.4 – Early contract termination and penalty (alternative to #1.3)
- Continues after US#1.1
On 2027-03-02 16:00:00, a John Smith records early termination for combo contract.
- The combo contract is marked as terminated (P1 and P2 are removed from John's account) and the services are blocked. The system does not bill any recurring charges for P1/P2 in later cycles.
- The system records the contract end date with the day-level precision as 2027-03-02 23:59:59 (last billed day).
On 2027-03-25, the system closes Cycle 7 (2027-02-25 00:00:00 – 2027-03-24 23:59:59) for John Smith and computes in-contract charges for the period when P1 and P2 were still active:
Active time for P1 and P2 in Cycle 7:
From 2027-02-25 00:00:00 to 2027-03-02 23:59:59, duration = 6 days
Fraction of 28-day cycle ≈ 6 / 28 ≈ 0.2143
Prorated product charges (in-contract prices):
P1 charge ≈ 12.00 × 0.2143 = 2.57 EUR
P2 charge ≈ 15.00 × 0.2143 = 3.21 EUR
In-contract discounts:
In-contract discount for P1 (15%) = –0.39 EUR
In-contract discount for P2 (10%) = –0.32 EUR
VAT for P1 (2.18 × 0.21) = 0.46 EUR
VAT for P2 (2.89 × 0.09) = 0.26 EUR
Total for in-contract usage in Cycle 7: 5.79 EUR
- Early termination penalty is calculated as the sum of the net charges the customer would have paid for each remaining day of the contract, had the contract not been terminated early. The remaining contract period starts from 2027-03-03 00:00:00 (the first day after the last billed day) to the contract end (2027-09-15 00:00:00) contains two distinct segments because the in-contract discount expires at 2027-03-15 00:00:00, which is after the termination date. Each segment is valued at the net rate applicable during that segment.
- Early termination penalty Segment 1 — remaining in-contract discount period:
From 2027-03-03 00:00:00 to 2027-03-14 23:59:59
Duration = 12 days 12 / 28 ≈ 0.4286 cycles
P1 net rate with in-contract discount: 12.00 − 15% = 10.20 EUR/cycle
P2 net rate with in-contract discount: 15.00 − 10% = 13.50 EUR/cycle
Early termination penalty P1 Segment 1: 0.4286 × 10.20 = 4.37 EUR
Early termination penalty P2 Segment 1: 0.4286 × 13.50 = 5.79 EUR
Early termination penalty Segment 2 — remaining post-discount period:
From 2027-03-15 00:00:00 to 2027-09-14 23:59:59
Duration = 184 days 184 / 28 ≈ 6.5714 cycles
P1 net rate with standard discount: 12.00 − 7% = 11.16 EUR/cycle
P2 net rate with standard discount: 15.00 − 5% = 14.25 EUR/cycle
Early termination penalty P1 Segment 2: 6.5714 × 11.16 = 73.34 EUR
Early termination penalty P2 Segment 2: 6.5714 × 14.25 = 93.64 EUR
Total early termination penalty P1 (4.37 + 73.34) = 77.71 EUR
Total early termination penalty P2 (5.79 + 93.64) = 99.43 EUR
VAT for P1 early termination penalty (77.71 × 0.21) = 16.32 EUR
VAT for P2 early termination penalty (99.43 × 0.09) = 8.95 EUR
- The invoice for Cycle 7 shows charges and discounts for charges as separate lines:
Description Period Amount P1 Mobile bundle
25-Feb-2027 00:00:00 – 02-Mar-2027 23:59:59
2.57 EUR
P2 Gym bundle
25-Feb-2027 00:00:00 – 02-Mar-2027 23:59:59
3.21 EUR
In-contract discount P1 (15%)
25-Feb-2027 00:00:00 – 02-Mar-2027 23:59:59
–0.39 EUR
In-contract discount P2 (10%)
25-Feb-2027 00:00:00 – 02-Mar-2027 23:59:59
–0.32 EUR
VAT 21% on P1
25-Feb-2027 00:00:00 – 02-Mar-2027 23:59:59
0.46 EUR
VAT 9% on P2
25-Feb-2027 00:00:00 – 02-Mar-2027 23:59:59
0.26 EUR
In-contract usage subtotal
—
5.79 EUR
Early termination penalty P1
03-Mar-2027 00:00:00 – 14-Sep-2027 23:59:59
77.71 EUR
Early termination penalty P2
03-Mar-2027 00:00:00 – 14-Sep-2027 23:59:59
99.43 EUR
VAT 21% on P1 early termination penalty
—
16.32 EUR
VAT 9% on P2 early termination penalty
—
8.95 EUR
Total early termination penalty (incl. VAT)
—
202.41 EUR
Invoice total
—
208.20 EUR
If the outstanding invoices are not paid by due dates, a regular invoice payment collection process is triggered.
Use scenario #1.5 – Early termination of one product from the contract (alternative to #1.4) (nice-to-have)
- Continues after US#1.1
- On 2027-03-02 16:00:00, a John Smith records early termination for P2 (Gym) only.
- P2 is immediately terminated and removed from the John's account. P1 (Mobile) remains active under the original contract terms.
- The system records early cancellation of the P2 from the contract with day-level precision as 2027-03-02 23:59:59 (last billed day).
- On 2027-03-25, the system closes Cycle 7 (2027-02-25 00:00:00 – 2027-03-24 23:59:59) for John Smith and computes the charges:
P1 (Mobile) – active for the full Cycle 7 (28 days), but split into two sub-periods because P2 is removed on 2027-03-02 23:59:59, after which P1 is the only active product and no standard discount applies:
Sub-period A (2027-02-25 – 2027-03-02, 6 days, both products active): 12.00 × 6/28 = 2.57 EUR gross, –15% discount → net 2.18 EUR, VAT 0.46 EUR
Sub-period B (2027-03-03 – 2027-03-24, 22 days, P1 only — no discount): 12.00 × 22/28 = 9.43 EUR net, VAT 1.98 EUR
- P2 (Gym) – (2027-02-25 – 2027-03-02, 6 days): 15.00 × 6/28 = 3.21 EUR gross, –10% discount → net 2.89 EUR, VAT 0.26 EUR
Early termination penalty calculation: Only P2 was terminated early; the early termination penalty is calculated for P2 only. The remaining contract period from 2027-03-03 00:00:00 to 2027-09-14 23:59:59 contains two segments, because the in-contract discount for P2 expires at 2027-03-15 00:00:00.
Early termination penalty Segment 1 — remaining in-contract discount period (P2 only)
From 2027-03-03 00:00:00 to 2027-03-14 23:59:59
Duration = 12 days 12 / 28 ≈ 0.4286 cycles
P2 net rate with in-contract discount: 15.00 − 10% = 13.50 EUR/cycle
Early termination penalty P2 Segment 1: 0.4286 × 13.50 = 5.79 EUR
Early termination penalty Segment 2 — remaining post-discount period (P2 only)
From 2027-03-15 00:00:00 to 2027-09-14 23:59:59
Duration = 184 days 184 / 28 ≈ 6.5714 cycles
P2 net rate with standard discount: 15.00 − 5% = 14.25 EUR/cycle
Early termination penalty P2 Segment 2: 6.5714 × 14.25 = 93.64 EUR
Total P2 early termination penalty (5.79 + 93.64) = 99.43 EUR
VAT for P2 early termination penalty (99.43 × 0.09) = 8.95 EUR
The invoice for Cycle 7 shows charges and discounts for charges as separate lines:
Description
Period
Amount
P1 Mobile bundle, incl. 15% in-contract discount (net)
25-Feb-2027 00:00:00 – 02-Mar-2027 23:59:59
2.18 EUR
VAT 21% on P1
25-Feb-2027 00:00:00 – 02-Mar-2027 23:59:59
0.46 EUR
P1 Mobile bundle, no discount (net)
03-Mar-2027 00:00:00 – 24-Mar-2027 23:59:59
9.43 EUR
VAT 21% on P1
03-Mar-2027 00:00:00 – 24-Mar-2027 23:59:59
1.98 EUR
P2 Gym bundle, incl. 10% in-contract discount (net)
25-Feb-2027 00:00:00 – 02-Mar-2027 23:59:59
2.89 EUR
VAT 9% on P2
25-Feb-2027 00:00:00 – 02-Mar-2027 23:59:59
0.26 EUR
P2 early termination penalty
03-Mar-2027 00:00:00 – 14-Sep-2027 23:59:59
99.43 EUR
VAT 9% on P2 early termination penalty
—
8.95 EUR
Invoice total
—
125.58 EUR
Use scenario #1.6 - Waive early termination penalty (alternative to #1.4)
- Continues after US#1.1
On 2027-03-02 16:00:00, John Smith terminates his 12-month combo contract, because he wants to switch to a 24-month combo contract with higher discounts.
P1 and P2 are immediately terminated and removed from John’s account. The system records the contract end with day-level precision as 2027-03-02 23:59:59 (last billed day).
Normally, early termination would trigger an early termination penalty as described in Use scenario #1.4. However, the admin decides to waive the penalty, since the termination is made in order to activate a new combo contract.
The admin applies a penalty waiver to the terminated contract. The early termination penalty is set to zero.
The admin immediately activates the new 24-month combo contract for John Smith, effective 2027-03-03 00:00:00.
On 2027-03-25, the system closes Cycle 7 (2027-02-25 00:00:00 – 2027-03-24 23:59:59) for John Smith. The invoice shows only the prorated usage charges for the active period of the old contract (same as in Use scenario #3.1), with no early termination penalty lines:
P1 and P2 usage charges for 2027-02-25 – 2027-03-02: 5.79 EUR (same as Use scenario #3.1 in-contract usage subtotal)
Early termination penalty: waived - 0.00 EUR
Invoice total: 5.79 EUR
The new 24-month contract is active from 2027-03-03 00:00:00.
Use scenario #1.7 – Natural contract end inside the billing cycle
- Continues after US#1.1
On 2027-09-15 00:00:00, the combo contract reaches its planned end date and is closed by the system.
Because the contract has reached its natural end, the system performs a natural transition to out-of-contract usage: P1 and P2 remain assigned to John Smith’s account with standard discount (P1 = 7%, P2 = 5%), which has been in effect since 2027-03-15 00:00:00 and is unaffected by the contract closure.
On 2027-10-07, the system closes Cycle 14 (2027-09-09 00:00:00 – 2027-10-06 23:59:59), where the standard discount applies to the full 28-day cycle:
Charges for Cycle 14:
P1: 12.00 × 1.0 = 12.00 EUR
P2: 15.00 × 1.0 = 15.00 EUR
Standard discount for P1 (7%): –0.84 EUR → net 11.16 EUR
Standard discount for P2 (5%): –0.75 EUR → net 14.25 EUR
VAT for P1 (11.16 × 0.21): 2.34 EUR
VAT for P2 (14.25 × 0.09): 1.28 EUR
The invoice for Cycle 14 shows charges and discounts for charges as separate lines:
Description
Period
Amount
P1 Mobile bundle
09-Sep-2027 00:00:00 – 06-Oct-2027 23:59:59
12.00 EUR
P2 Gym bundle
09-Sep-2027 00:00:00 – 06-Oct-2027 23:59:59
15.00 EUR
Standard discount P1 (7%)
09-Sep-2027 00:00:00 – 06-Oct-2027 23:59:59
–0.84 EUR
Standard discount P2 (5%)
09-Sep-2027 00:00:00 – 06-Oct-2027 23:59:59
–0.75 EUR
VAT 21% on P1
09-Sep-2027 00:00:00 – 06-Oct-2027 23:59:59
2.34 EUR
VAT 9% on P2
09-Sep-2027 00:00:00 – 06-Oct-2027 23:59:59
1.28 EUR
Total
—
29.03 EUR
Non-functional Requirements
Auditability: Allow Support Engineers and Billing Admins audit how discounts, charges and penalties were applied, i.e. understand that fees were discounted due to an active contract, penalties applied due to an early cancellation.
Peculiarities
28-day billing cycles advance independently of calendar weeks or months:
They may cross week ends, month ends, quarter ends, and even year boundaries.
They must behave correctly across leap years.
- The BRS describes that combo contract is a long-term agreement for service usage between a CSP and a customer. Contract includes add-on products (no main products) and defines discount for recurring charges for those add-on products (no discounts on per tariff usage). The closest entity that we have in PortaBilling is commitment. However, it is to decide during the design stage if the required behavior should be implemented as an extension of the existing commitment entity, another existing entity, or if a new entity should be introduced.
- Billing cycle, contract duration, in-contract discount duration should be calculated with day-level precision, as confirmed by CSP.
- According to CSP, contract duration and in-contract discount duration should be defined in calendar months independently from customer billing cycle, as the minimum contract period would be one month.
For CSP it is nice-to-have one contract that contain 2 products (e.g. Mobile + Gym for 1 year), however, it is okay if these are configured as two separate contracts and are assigned with the same start and end date.
Partial cancellation of a combo contract (Use scenario #3.3) is marked as nice-to-have, because according to CSP, they are flexible with how this is modelled. Ideally, it is possible to cancel one product from the contract, but this could also be implemented as ending an existing contract and setting up a new one.
CSP doesn't use bundles functionality, only subscriptions are included into add-on products. The counters for bundles are maintained by the MVNE platform outside PortaBilling.
- There are no strict requirements for configuration of products that are provided via contracts, but CSP does not provide any free-of charge services via contracts.
- If a customer signs a contract that includes a product that is currently assigned to the customer, the system should terminate the currently assigned product and activate the contract.
- It should be possible to waive early termination penalty. Early termination penalty waiver (Use scenario #3.4) is an admin-level action and is not restricted to contract-to-contract transitions. Other cases where a waiver may be appropriate include goodwill gestures for long-standing customers, cancellations caused by service quality issues on the CSP’s side, or regulatory requirements.
- Early contract cancellation should terminate the products from the contract, while with natural contract end the products from the contract should remain assigned to the customer as a natural transition to out-of-contract service usage.
Important backgroud from Discovery phase:
Besides combo contracts, CSP provides single product contracts. Example of contract conditions:
- Contract duration: 12 months
- Product: "Mobile Basic" (5GB+400min+400SMS)
- Regular price for the product: 10 EUR
- Contract discount duration: 6 months
- Contract discount amount: 5 EUR
- Contract cancellation fee amount: remaining in-contract charges. E.g., If contract is cancelled after 5 months, the cancellation fee is calculated as: 5 EUR (discounted fee for the 6ths month) + 60 EUR ( fees for 7-12th months) = 65 EUR
- To configure such contracts in PortaBilling, CSP decided to use Subscriptions functionality. Example of configuration:
- A subscription with a minimum subscription period of 12 months is created.
- Penalty for subscription cancellation: “Remaining subscription charges”.
- Subscription full monthly fee: 10 euros
- Subscription discount: 5 EUR for the first 6 months (set by using the “Promotional periods” option)
- The configured subscription is assigned to the add-on product "Mobile Basic" (5GB+400min+400SMS)
- CSP decided not to use Commitments because the current commitment cancellation fee calculation logic (sum of the discounts applied) is not suitable.
- Once the 28-day billing period is introduced in PortaBilling, the custom invoice template, prepared by PortaOne for CSP within BA-47361, should be adjusted to consider the new billing period (we are showing the from/to of the invoice now while CSP requires week number - outlined in question #4 here).
- CSP doesn't have real-time traffic charging - their business model fully relies on off-line charging via xDR Mediator.
- CSP's primary sales channel is direct-to-consumer via their own website, no resellers (at least for now).
- CSP uses Custom Taxation plugin for applying different taxes for services.
According to the CSP, the invoice should show which tax percentage is applied to which line item, even if the same tax percentage is applied to multiple identical products/subscriptions.
Also, there should be a tax total for the period. The same applies if there are multiple products with different taxes.
Performance / Clustering, Geo Redundancy/ Dual-Version, Porter / Call Control API / ESPF / Monitoring
- Performance: Support 28-day billing cycles for large customer bases without more than 10% degradation in invoice run times compared to monthly billing.