Self Topup Settings: Recurring vs Non-recurring SKUs
Jira: BIF-8788 · Epic: BIF-7797
Part of the Self Top-up Improvement initiative. This is a Self Topup Settings story, separate from the topup-flow stories in self-topup.md (STP-S01–S09). Moved here from
adhoc-q3-2026on 2026-07-16 after confirming BIF-8788 is a child of the self-topup Epic BIF-7797, not the adhoc Epic BIF-8695.
Overview
Flag each Self Topup SKU as Recurring or Non-recurring so checkout pricing is computed correctly: recurring SKUs are prorated by subscription months remaining; non-recurring SKUs are a flat per-unit charge.
Scope Changes
- Backend — SKU recurring/non-recurring flag and pricing calculation.
- Frontend — settings toggle; checkout total display.
8. User Stories + Acceptance Criteria
| User Story | Importance | Mockup / Technical Notes | Acceptance Criteria |
|---|---|---|---|
| [RECUR-S01] — Recurring vs Non-recurring pricing As a billing admin configuring Self Topup SKUs, I want to flag each SKU as Recurring or Non-recurring, so that checkout pricing is calculated correctly. | Should Have | Recurring: P × M × Q (M = months left, rounded up). Non-recurring: P × Q. | — Happy Path — • AC-1: Given a SKU in Self Topup settings, when an admin edits it, then it can be set to "Recurring" or "Non-recurring". • AC-2: Given a Recurring SKU (e.g. User Quota) at price P with M months left, when a customer purchases quantity Q, then total = P × M × Q (example: P=200, M=2, Q=5 → 2,000). • AC-3: Given the subscription has a partial month remaining, when computing M for a recurring SKU, then round up to the next whole month (e.g. 1.5 months → M = 2). • AC-4: Given a Non-recurring SKU (e.g. Topup MUV) at price P, when a customer purchases quantity Q, then total = P × Q, independent of months remaining (example: P=200, Q=5 → 1,000). • AC-5: Given either SKU type, when the customer reaches checkout, then the computed total is shown (and, for recurring, reflects the months-remaining basis). |
Open questions
- How is "months left" measured — from purchase date to subscription
end_date? - Default type for existing SKUs on rollout (Recurring or Non-recurring)?