Docs
search Esc
{{APP_VERSION}}

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

ProductPriceCoverage
LearningK10 / learner / academic termGames, locale packs, basic registers and progress for assigned learners.
School Complete (SchoolComplete)K20 / learner / academic termLearning plus attendance, learner IDs and reports for covered learners. Shared calendar, staff management and announcements require whole-school Complete coverage.
Community Free (CommunityFree)K0Up to 30 learners across the school; creating more cohorts does not multiply the free allowance.
Government-contract CompleteK15 / learner / academic termA 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 contractFinite 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 unitPriceBounded deliverable
Activation / schoolK6002 hours total; exactly one school
Training / sessionK900Up to 10 staff, 90-minute session, 3 hours total work
Support / calendar monthK1,2004 hours; no rollover or pooling
Report / unitK1,500Up to 5 schools, 5 hours total, one revision
Additional work / whole hourK300Prior 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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
history
Legacy plansThe retired Community School (K100/yr), Growth (K200/yr), and Private School (K350/yr) tiers are no longer sold. Schools holding an active legacy licence are grandfathered — their plan, pricing, and licence keys remain valid.

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
chat
Current network pricingOrganisation Hub and human services require explicit quotes. The retired National Programme code is not a new-sale option.

Headmaster LMS Tiers

The Headmaster LMS enforces both teacher roles and learner coverage:

TierIncluded inBoundary
BasicLearning and Community FreeBasic registers and progress; payment for Learning does not unlock Complete administration.
Complete learner featuresSchool CompleteAttendance, 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 toolsEvery enrolled learner currently Complete-coveredCalendar, 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.

PlanAnnual3-Year (17% off)Saving
Founding SchoolK500K1,245K255
Direct LicensingK1,500K3,735K765
OrganisationK7,500K18,675K3,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
PriceK0K45/mo · K120/term · K420/yrK95/mo · K260/term · K900/yr
Child profiles148
Activity history7 daysUnlimitedUnlimited
Gogo AI study plans—✓✓
CSV / email reports + weekly digest—✓✓
School Sync (teacher-approved classroom progress)—✓✓
Screen-time controls—Daily goalsActive 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.