Subscription & Billing Terms

Version 1.0 — Draft for legal review · Effective: Not yet set · Last updated: 2026-08-28

# SomaSkul Subscription & Billing Terms

Version 1.0 — Draft for legal review Last updated: 2026-08-28


## 1. Plans and pricing

As implemented in SomaSkul's backend today:

PlanPrice (KES)Duration
Daily101 day
Weekly507 days
Monthly15030 days
Term35090 days
Lifetime2,500No expiry
Hint pack10(one-time, not a duration-based plan)

Prices are set entirely server-side. The app never sets or negotiates a price — it only asks you to choose a plan, and the server enforces what that plan actually costs.

## 2. How payment works

SomaSkul offers two ways to pay, both through M-Pesa:

  • Paybill (the default and primary method). SomaSkul shows you a paybill number and

asks you to send payment using your own phone number as the account/reference number, directly from your phone's M-Pesa menu. SomaSkul does not receive anything from you at this step — you're interacting with M-Pesa directly.

  • STK push (optional; off by default). If enabled by SomaSkul's operator, you can

request a payment prompt be pushed directly to your phone instead of using the M-Pesa menu manually. As of this document's drafting, [UNVERIFIED — confirm current deployment configuration] this option may not be turned on.

## 3. How activation works

Your subscription is activated only when Safaricom confirms your payment to SomaSkul — never by anything the app itself claims. Specifically:

  • Safaricom sends SomaSkul a payment confirmation once your M-Pesa transaction completes.
  • SomaSkul matches that confirmation to your account by the phone number that paid,

and to a plan by the exact amount paid — if the amount doesn't exactly match a listed plan price, no plan is activated.

  • Each M-Pesa transaction is recognized only once — if the same payment confirmation

is somehow received twice, it does not double-activate or double-charge your account.

  • If Safaricom reports the payment did not succeed, or if your phone number isn't

found as a SomaSkul account, nothing is activated — SomaSkul does not treat these as errors that need to be shown to Safaricom; the confirmation is simply not acted on.

This design means: no one — including SomaSkul's own support staff acting through the app's normal user interface — can grant themselves or anyone else a subscription without a real, matching M-Pesa payment being confirmed by Safaricom.

## 4. Expiration and renewal

  • Each plan (other than Lifetime) has a fixed duration from the moment it's

activated. When that period ends, your account reverts to the free tier automatically — access to paid features is removed, but your study history, results, and progress are not deleted because a plan expired (see DATA_RETENTION_POLICY.md).

  • SomaSkul does not currently auto-renew subscriptions. Each payment is a distinct

purchase; there is no recurring billing or saved payment method that SomaSkul charges automatically. You choose to pay again when you want to continue.

  • If you were on a free trial, converting to a paid plan is recorded, and the trial

does not stack with or extend the paid plan.

## 5. Grace periods

BUSINESS DECISION REQUIRED: SomaSkul's code does not implement a grace period between plan expiration and losing access — access is removed as soon as the plan's plan_expiry timestamp passes. If SomaSkul's operator wants to offer a grace period (e.g., 24 hours of continued access after expiry), that would need to be built; it does not exist today, and this document must not claim one exists.

## 6. Failed, pending, or duplicate payments

  • If your M-Pesa payment fails or is never completed, no subscription is activated

and — because SomaSkul never receives your money in that case — there is nothing to refund.

  • If you accidentally pay twice for the same plan (two separate valid M-Pesa

transactions), SomaSkul's system will record both payments as valid, distinct transactions, but BUSINESS DECISION REQUIRED: SomaSkul's code does not currently detect or automatically resolve "the same person paid twice by mistake" — for example, paying for two overlapping plans back-to-back does not stack durations automatically in a way this audit could confirm handles the "double payment" scenario gracefully. If you believe you were charged twice in error, contact support (see REFUND_CANCELLATION_POLICY.md) for manual review.

  • If a payment is stuck as "pending" and never resolves, contact support — there is

currently no automatic timeout/expiry for a pending STK-push request that this audit could confirm resolves it either way.

## 7. Cancellation

Because SomaSkul does not auto-renew, there is nothing to "cancel" in the traditional subscription sense — simply choose not to pay again when your current plan expires. See REFUND_CANCELLATION_POLICY.md for what happens if you want to stop using a plan you've already paid for.

## 8. Changes to pricing or plans

BUSINESS DECISION REQUIRED: define how SomaSkul will notify existing/prospective users of a price change. No such mechanism exists in the app today.


*This document is Version 1.0 and has not yet been reviewed by legal counsel or published.*