Plan Comparison
Current school subscriptions cover explicitly assigned learners in a named class or group. Ordinary rates remain Learning K10 and School Complete K20 per learner per academic term; a scoped approved government contract may authorise Complete K15. Existing licences and family subscriptions are unchanged.
Current learner pricing
| Product | Price | Coverage |
|---|---|---|
| Learning | K10 / learner / academic term | Games, locale packs, basic registers and progress for assigned learners. |
School Complete (SchoolComplete) | K20 / learner / academic term | Learning plus attendance, learner IDs and reports for covered learners. Shared calendar, staff management and announcements require whole-school Complete coverage. |
Community Free (CommunityFree) | K0 | Up to 30 learners across the school; creating more cohorts does not multiply the free allowance. |
| Government-contract Complete | K15 / learner / academic term | A current approved government contract covering the agreed schools, learner groups, dates and capacity. Not an automatic government-type discount. Hub and services excluded. |
Organisation Hub (OrganisationHub) | K3,000 base + K1,500 / contracted school / annual contract | Finite contracted capacity, not the connected-school count. Learner licences and human services are separate. |
There are three academic terms per year. The formula is learner count × K10 or K20 × agreed terms (one to three); approved government-contract Complete uses K15. Forty learners for two terms cost K800 Learning, K1,600 ordinary Complete, or K1,200 only under the approved government contract. No automatic volume/prepay discount. Academic terms are not fixed 90-day intervals: the issuer signs exact dates separately.
Annual Hub and bounded managed services
Request an annual Organisation Hub quote for your agreed school capacity, start date and reference. Your quote shows the price and anniversary-year expiry. If you increase capacity on a paid contract, only the added capacity is charged for the remaining inclusive days, rounded once to the nearest ngwee (100 ngwee = K1). The original expiry stays the same and the base fee is not charged again. Grant-funded contracts do not qualify for paid proration; reductions require renewal or review and cannot remove capacity already committed to schools. Original orders and amendments remain available as historical records. See billing and capacity changes.
| Service unit | Price | Bounded deliverable |
|---|---|---|
| Activation / school | K600 | 2 hours total; exactly one school |
| Training / session | K900 | Up to 10 staff, 90-minute session, 3 hours total work |
| Support / calendar month | K1,200 | 4 hours; no rollover or pooling |
| Report / unit | K1,500 | Up to 5 schools, 5 hours total, one revision |
| Additional work / whole hour | K300 | Prior approval for the agreed hours and dates |
Agree the service units and scope before paying, then book within the agreed limits. Review each recorded delivery and confirm acceptance through your organisation or district account. Payment alone does not mean work has been delivered, and services do not include software licences. Field costs and hardware require separate approved quotes.
Contracts, sponsorship and scoped reporting
Incomplete evidence is not zero activity: preview publishable and evidenceSummary.complete must both be true before normal sharing. The UI displays relevant/attributed/ambiguous event counts and missing-timing/membership-history counts; incomplete partial totals cannot overwrite published data and push returns 409. Genuinely empty complete periods remain publishable. If current logs are corrupt or preview fails, the separately confirmed Recover pending report action calls POST /api/teacher/license/cohorts/:id/report/retry with {from,to,confirmAggregateSharing:true} to resend only the frozen pending original. No current-log rebuild is performed. currentEvidenceChecked:false with newerSnapshotPending:null means current evidence and newer pending status are unknown—not latest totals synced. Fresh publication still needs a complete preview and explicit consent.
Local report attribution needs both a bounded unverified client occurrence hint and server receipt inside continuous recorded membership and signed Complete coverage. Client clocks are not trusted; hints must be no later than receipt and at most 90 days earlier. Receipt-only old logs and invalid/missing timing provenance are excluded, not interpreted as zero activity or reconstructed through fabricated backfill. Reports are school-reported evidence, not verified learning outcomes. Preview disclosure shows history and snapshot. An acknowledgement recovered for an earlier frozen report does not publish newer activity: when recoveredOriginal and newerSnapshotPending are true, review a new preview and explicitly push again. snapshotId identifies the acknowledged report; currentSnapshotId identifies current server content.
Independent sponsors can select only their approved learner groups and fully eligible academic terms while both Hub access and the sponsorship grant remain active. Each group's eligible termIds determine the available dates; access does not extend to the whole school. If an agreed group is missing, ask your UbuntuPlay contact to check its registration and access.
Your organisation or district commercial workspace shows your own contracts, current grants and service work. Sponsorship preserves school ownership; it does not grant whole-school reports. Report views require both active Hub access and a current approved cohort grant covering the requested dates. They show the latest revision for each exact period; do not add overlapping reports together.
Runtime boundaries: scoped planFeatures enable attendance, IDs and reports for Complete learners intersected with the teacher's assigned classes. globalPlanFeatures and coverage.wholeSchoolComplete govern shared calendar, staff and announcements. One paid cohort does not unlock those school-wide tools. Security, backups and data recovery are baseline, not paid upgrades. AI depends on suitable hardware and installed models. Trial is internal evaluation, not a new-sale option.
Classroom Builder: open local /teacher/builder.html from the teacher navigation or Settings. The private Builder verifies an unscoped head teacher/deputy, cohort mode and current Builder entitlement for every enrolled learner (School Complete or applicable historical coverage). It uses the authenticated status/generation/deployment APIs, with no standalone HTML export. Generated modern games remain private, authenticated and dynamically entitlement-checked. Old export-capable HTML shells remain blocked for cohort installations; use the new Classroom Builder instead. Enrolment or expiry can revoke authoring immediately; an affected learner's next launch is denied.
Create a private classroom activity
The new private UI closes the generate → edit → deploy → authenticated learner-launch workflow; use it instead of the retired export-capable shells. Its current supported templates are quiz, true/false and flashcards, not every historical Builder template.
Open Teacher → Classroom Builder and check the whole-school Builder status. Partial coverage, ordinary teachers and incompatible server responses leave authoring disabled. The private UI requires cohort-mode storage; it does not fall back to the historical public-file deployment path.
Select a multiple-choice quiz, true/false activity or flashcards. Enter a topic or paste teaching text (not personal learner data), and choose subject/difficulty and the requested item count. All assets are local; optional inference runs through the classroom's configured AI pipeline.
Generate a draft, then edit each question, choice, correct answer and explanation. The server may return deterministic starter content when inference is unavailable and does not identify provenance: success is not a promise of AI generation or topic alignment. Remove/add items as needed and explicitly check the review confirmation.
Enter a name and stable game ID; confirm private deployment. The server rechecks authority and coverage. Reusing a Builder ID replaces that activity, but official games are protected. A lost response requires checking Teacher → Games before retrying; there is no automatic deploy retry.
On the learner's own device, open
/play, sign in and select the activity. No administrator token is shared. Current entitled learners can play; anonymous or newly uncovered learners are denied on launch. Practice feedback is local to the activity and is not a submitted assessment.
The draft remains in page memory only. There is no raw-HTML editor, file download, API-key entry or private signing-key entry. Generated/user text is validated as typed data and rendered as text, never executed as markup.
Activate a class or group locally
Agree the product, learner limit, school ID, stable cohort ID and exact start/end dates with the authorised issuer. Obtain the signed
UP3.key; never paste a private signing key into the classroom.Enrol the intended learners first. A head teacher, deputy or device service opens Teacher → Settings → Manage learner coverage (also linked from Teacher → Hub), at
/teacher/licensing.html.Import the plain-text key or paste it; enter its exact school/cohort IDs. Register the contractual group label and opaque coverage keys with the explicit group-attestation checkbox. This binding is immutable. UP3 signs the cohort identity and capacity, not class names or membership; the administrator attests the mapping. On first registration the school identity binds the local installation. Later keys must match it.
Filter by class or name and explicitly tick the learner members. “Select visible” copies today's named learners only, using stable
studentIds. Class moves, renames and future enrolments do not auto-grow the group.Review, check the explicit membership-attestation checkbox and confirm. The server verifies signature, subject IDs, dates, capacity, unique membership and revision; membership changes record the administrator's attestation. The table reloads with active/inactive status, dates, members, capacity and queued renewal periods.
Change members, renew or recover
Edit a cohort to change its explicit member list. Leave the key empty to retain the current signed licence, or import an authorised replacement for the same cohort. Replacements cannot roll back the signed coverage period. A learner assigned elsewhere must first be explicitly removed from that cohort; inactive assignments also block overlap. “Remove all assignments” works after expiry and retains the signed licence and revision history. For a partial removal, edit and untick only the intended learners while the key remains valid.
Every write carries the loaded expectedRevision (0 for a new cohort). On a conflict or uncertain network outcome, reload and reconcile before submitting again; never blindly retry. No new payment, refund or cancellation is implied by an assignment edit. Existing records and school licence metadata are not rewritten by this page.
Offline API contract
Before activation, POST /api/teacher/license/groups takes {key,schoolId,cohortId,label,coverageKeys,attestGroup:true}. The server verifies the signed identity and persists the immutable administrator-attested group binding. Cohort GET includes groups, and membership-changing POST/PUT requests additionally require attestMembership:true. Each cohort exposes groupBinding and queuedRenewals. Future valid keys may be queued without removing current coverage; renewals must meet the server's contiguous-date and capacity checks.
Head/deputy/service access: GET /api/teacher/license/cohorts returns {schoolId,cohorts,activation}. Each cohort includes cohortId,studentIds,revision,active,plan,learnerLimit,validFrom,validUntil,error. POST to the same path activates with {key,schoolId,cohortId,studentIds,expectedRevision:0}; PUT /api/teacher/license/cohorts/:cohortId updates with the current revision and optional replacement key. DELETE /api/teacher/license/cohorts/:cohortId/members takes {expectedRevision} and clears assignments only. No internet or external CDN is needed for local key import and assignment.
Migration and historical plans
Every former institutional offer is retired from new sale: Founding School, Direct Licensing, Organisation Direct, all NGO and corporate packages, School Group, District Bulk, National Programme, Custom and the older Free/Community School/Growth/Private School/NGO Multi-School codes. Historical signed licences retain their original validation and entitlement semantics. Do not relabel old transactions, recalculate invoices, silently convert licences, or offer retired codes as new checkout options. A new purchase uses current products and explicit signed cohort coverage.
The following institutional tables are retained only as historical reference for existing records. They are not quotations, renewal offers or current feature promises.
Historical School Direct — not for new sale
| Plan | Tier | Description | Price (ZMW) | Billing |
|---|---|---|---|---|
| Founding School | School Direct (Revised) | First 50 schools. Includes Game Builder and Developer Portal | 500 | Annual |
| Direct Licensing | School Direct (Revised) | New sign-ups after 50 founding schools. Includes Game Builder and Developer Portal | 1,500 | Annual |
| Organisation | School Direct | Up to 5 schools | 7,500 | Annual |
| Community Free | School Direct | Up to 30 students | 0 | Annual |
Historical NGO Deployment — not for new sale
| Plan | Scope | Price (ZMW) | Billing |
|---|---|---|---|
| NGO Provincial | 21–50 schools | 350,000 | Annual |
| NGO Programme | 6–20 schools | 180,000 | Annual |
| NGO Pilot | Up to 5 schools | 75,000 | Annual |
Historical Corporate CSR — not for new sale
| Plan | Impact | Price (ZMW) | Billing |
|---|---|---|---|
| Corporate Headline | 20+ schools | 750,000 | Annual |
| Corporate Impact | 10 schools | 350,000 | Annual |
| Corporate Community | 3 schools | 150,000 | Annual |
Historical Institutional / Government — not for new sale
| Plan | Details | Rate | Billing |
|---|---|---|---|
| District Bulk / Government | Per learner | ZMW 15 | Per term |
Developer Marketplace
| Type | Description | Share |
|---|---|---|
| Revenue Share | Third-party game sales | 30% Platform share |
Headmaster LMS Tiers
The Headmaster LMS enforces both teacher roles and learner coverage:
| Tier | Included in | Boundary |
|---|---|---|
| Basic | Learning and Community Free | Basic registers and progress; payment for Learning does not unlock Complete administration. |
| Complete learner features | School Complete | Attendance, ID cards and reports cover only entitled learners in the teacher's class scope. A subset may use these tabs without unlocking global tools. |
| Whole-school tools | Every enrolled learner currently Complete-covered | Calendar, staff management and announcements, still subject to role permissions. Builder API additionally requires an unscoped administrator and current Builder entitlement for every learner; old standalone-export HTML shells remain blocked. |
Historical 3-Year Prepay Examples — withdrawn for new sale
These old examples explain historical records only. Current learner pricing has no automatic 17% or other prepay discount.
| Plan | Annual | 3-Year (17% off) | Saving |
|---|---|---|---|
| Founding School | K500 | K1,245 | K255 |
| Direct Licensing | K1,500 | K3,735 | K765 |
| Organisation | K7,500 | K18,675 | K3,825 |
Family Plans (Parent Portal)
Family plans are consumer subscriptions for parents on the Parent Portal — separate from school licensing. Paid via Flutterwave (card, mobile money, bank) as one-off payments with no auto-renewal. Termly billing covers 3 months, matching Zambia's school terms.
| Feature | Family Free | Family Plus | Family Premium |
|---|---|---|---|
| Price | K0 | K45/mo · K120/term · K420/yr | K95/mo · K260/term · K900/yr |
| Child profiles | 1 | 4 | 8 |
| Activity history | 7 days | Unlimited | Unlimited |
| Gogo AI study plans | — | ✓ | ✓ |
| CSV / email reports + weekly digest | — | ✓ | ✓ |
| School Sync (teacher-approved classroom progress) | — | ✓ | ✓ |
| Screen-time controls | — | Daily goals | Active caps, schedules & pause |
| Gogo AI tutor chat | — | — | ✓ |
| Advanced analytics (trends, streaks, heatmap) | — | — | ✓ |
| Guardian invites (co-parents) | — | — | ✓ |
| Printable offline reports | — | — | ✓ |
| Marketplace game discount | — | 15% | 25% |
Upgrading Plans
To change a school's plan, ask your UbuntuPlay contact for a reviewed order or replacement licence under the current learner-group rules. Confirm the covered learners and dates before activation. Do not assume every mid-cycle learner upgrade is prorated: paid Organisation Hub capacity increases have their own separate proration rules. Keep your existing licence and payment records.