Own product · iOS + Android · 2026

Snoko

Group savings for stokvels and friends, with proof for every rand in and out. Snoko keeps the record honest and never holds the money.

Snoko home showing R26 650 saved across a stokvel and two goal pots
Durban Trip goal pot at R7 500 of R25 000, with one payment awaiting review
Family Stokvel in cycle 3 of 5, with Lerato Nkosi up next to receive R8 000
Status
Live on the App Store and Google Play
Platforms
iOS · Android
Built with
Flutter · Dart
First commit to App Store
7 months

The problem

A notes app and a WhatsApp group.

It started with a trip. A group of friends agreed to save for it, and one of us ended up holding the money. Every transfer meant a line in a notes app, who paid, how much and when, then another update posted to the WhatsApp group so everyone could see where things stood.

Around the same time, a stokvel in our neighbourhood failed. Different groups, same gap: the money had no record that every member could see and check for themselves.

  • Who has paid?
  • When did they pay?
  • Where is the money now?

What it had to be

Proof, not promises

Every contribution comes with proof of payment, and another member approves it before it counts toward the balance.

Nobody is added or overruled

Joining a pot takes an accepted invite, and anything that can't be undone needs every member to agree.

The record, never the money

Payments move between members' own bank accounts. Snoko tracks every rand but never holds, moves or invests one.

Decisions

The calls that shaped it.

Nobody approves their own payment.

A contribution only counts once someone else has seen the proof. Members upload a photo or PDF of the payment, and the pot's reviewer approves it or rejects it with a reason. When the person who created the pot pays in, the review goes to a random other member, so whoever runs the pot can't sign off their own money.

Before anyone reviews it, the phone reads the proof. Text recognition runs on the device, ML Kit on Android and Apple Vision on iOS, and pulls every rand amount off the slip in integer cents, whether the bank wrote R1 234,56, R1,234.56 or R1.234,56. If none match what the member typed, the reviewer sees a warning. It's advice, not a verdict: a person still decides.

Reviewer
Never yourself
Proof
Photo or PDF
Durban Trip goal pot, 30% funded, with a banner showing one payment awaiting review
A goal pot at 30%, with one payment waiting on a reviewer.

One decline is enough.

Nobody joins a pot without saying yes. Our first version let a creator add members directly; we replaced it with invitations that have to be accepted, and removed the old path from the server entirely.

The same rule covers anything that can't be undone. Ending a rotating stokvel, or deleting a pot that has activity, needs every member's approval, and one decline cancels it. A payout isn't closed until the member receiving it confirms the money arrived. When someone misses three rounds, the group votes on whether they stay.

Snoko notifications with an invitation to Soccer Boys Fund to approve or decline, above two payment approvals
An invite waits for a yes. Nobody is added without one.

Snoko never touches the money.

The simplest way to prove a balance would be to hold it. We chose not to. Moving members' money through the app would make Snoko a regulated payment provider, and put one more party between a group and its cash.

So payments go from members' own bank accounts, the way they always have, and Snoko keeps the record: live balances, a full activity feed and a PDF statement of any pot, or any one member's share, whenever someone asks for it.

Money held by Snoko
R0
Statements
Any pot, any time
Goal reached screen: Cape Town Trip fully funded with R20 000 saved together, and a button to share the pot's statement
Fully funded. The statement is one tap away.

You don't pay into your own payout.

In a rotating stokvel everyone pays in each cycle and one member takes the pot. The member whose turn it is doesn't pay themselves, so the payout is the contribution times one fewer than the number of members: five members at R2 000 each makes R8 000, not R10 000.

The order is set up front and visible to everyone: who has been paid, who receives this cycle and who's next. The receiver reviews that cycle's contributions and confirms the payout, and the pot moves on.

Family Stokvel in cycle 3 of 5: R4 000 of R8 000 collected, Lerato Nkosi up next, and the payout order below
Cycle 3 of 5. Five members at R2 000 each, R8 000 to the receiver.

Design language

Warmth in the chrome, precision in the numbers.

Snoko takes its colour from a South African golden hour and the gatherings where stokvels meet: a coral-to-amber gradient, cream backgrounds, plum text and shadows tinted warm rather than grey.

The numbers get none of that softness. Balances are set large in Outfit and treated as tabular, so rands don't jitter as they change, and colour is kept for status: forest green for approved, amber for pending. The app ships a light theme and two darks, Charcoal and Espresso.

Headings · OutfitSave together.
Balances · OutfitR26 650
  • Sunset#FF6B4A
  • Amber#FFA23A
  • Cream#FBF7F2
  • Plum#2D1B2E
  • Forest#1F7A55

How it shipped

The money rules live on the server.

The app is Flutter, with Riverpod for state and GoRouter for navigation. Every action that changes a balance, from approving a contribution to closing a cycle or confirming a payout, runs on the server as a single transaction with its rows locked, so a double tap can't credit the same payment twice.

Row-level security keeps each member to their own pots, and proof files are only shown through links that expire. Around 400 app tests and a suite of database checks cover the rules, and the store screenshots are rendered by golden tests from the real screens.

  • Flutter
  • Riverpod
  • GoRouter
  • ML Kit
  • Apple Vision
  • ~400 tests
  • Golden screenshots
  1. 23 FebFirst build
  2. 9 JunSunset Stokvel redesign
  3. 13 JunInvitations that need a yes
  4. 15 JunDark themes
  5. 23 JunRandom peer review
  6. 5 JulPDF statements
  7. 6 JulPush notifications
  8. 11 AugProof amount check
  9. 21 AugApp Store submission
  10. 22 SepLive on the App Store

What's next

In-app payments are coming, so members can pay into a pot without leaving Snoko.

We're also adding reminders, so members know when a contribution is due and the member receiving a cycle knows when to expect it. More is on the way.