Skip to content
For SACCOs, microfinance and insurance

You already message your members. Can you prove they agreed?

Statements go out by bulk SMS at a flat rate whether anyone reads them. Reminders come from a staff handset. And when a member disputes being contacted, or the Data Protection Commissioner asks, there is nothing to show. Sema sends on WhatsApp, and keeps the record that makes it defensible.

A hand passing a Kenyan hundred-shilling note to another

Kenya · African Creator, Pexels

The four things you send

All of them are templates Meta has approved in advance, so they reach a member whether or not a conversation is already open.

Statements and balances

Utility

Send a member their balance or a statement summary as an approved utility template. They reply in the same thread, and that reply opens a 24-hour window your team can answer in with anything.

Repayments and contributions, collected

Utility

A reminder that arrives where people actually read. When the member replies, your team sends the M-Pesa prompt from the same conversation, into your own paybill, with the loan or member number as the reference. Your team sees it paid, with the receipt, once M-Pesa confirms it.

Renewals and lapse notices

Utility

Reach a policy or loan cohort before it lapses. Contacts are segmented by tag, so a renewal run goes to the people it concerns and nobody else.

Login and confirmation codes

Authentication

One-time passwords over WhatsApp rather than SMS, on the authentication rate. Delivery is recorded per message, so a disputed login has an answer.

What an auditor asks

Four questions, and where the answer lives

Sending is the easy part. These are the questions that come afterwards, and the reason a spreadsheet of numbers and a staff phone stop being good enough once you are regulated.

Did this member agree to hear from us?
Every contact carries when and how they opted in, and each consent change is kept as an event rather than overwritten. STOP is honoured automatically and recorded, so an opt-out is provable too.
Who sent this, and from where?
Actions are written to an audit log with the member of staff, what they acted on, and the address they acted from. A message is never just "sent by the system".
What did it actually cost?
Each message is priced before it sends and reconciled afterwards against what Meta charged. Meta’s charge for a message it does not bill is not taken from you, and a failed one is refunded automatically.
Did they actually pay?
A payment is marked paid only once Sema has asked M-Pesa itself, with your own credentials, never on the word of the message M-Pesa posts back. The receipt is kept against the conversation, and your core system can be told by webhook the moment it is confirmed.
Can we remove a member’s data on request?
A contact’s data can be exported for a subject access request and erased on request, while billing records are retained for the seven years Kenyan tax law requires.
Who can see what

Segregation of duties, enforced by the database

Roles are not a setting the interface honours and a script ignores. The boundary is a row-level policy in the database, so a member of your finance team can reconcile the bill without being able to read a single member conversation, however they connect.

An organisation always keeps an owner, and only an owner can appoint another. That rule is a database trigger, which means it holds for the interface, for support scripts, and for anything else.

Owner
Everything, including closing the workspace
Admin
Everything operational, including billing and connecting numbers
Manager
Runs conversations and campaigns. No billing
Agent
Answers members. No billing, no settings
Billing
Credit and invoices only. Cannot read a single conversation
Viewer
Read-only

What it looks like

Pictures of Sema itself, from a sample workspace, as it is today.

The inbox: a customer chooses a water tank from reply buttons and pays by M-Pesa in the chat, the payment confirmed beside the conversation.The inbox: a customer chooses a water tank from reply buttons and pays by M-Pesa in the chat, the payment confirmed beside the conversation.

A member pays by M-Pesa in the chat, into your own paybill, and it shows once M-Pesa confirms it.

Campaigns: each with how many were sent, delivered and read, and what it cost.Campaigns: each with how many were sent, delivered and read, and what it cost.

Statement and reminder runs: who each reached, who read it, and what it cost.

The parts behind it

  • Payments →

    Repayments and contributions by M-Pesa, confirmed by M-Pesa, with the member number as the reference.

  • Campaigns →

    Statements, repayment reminders and AGM notices to the members who agreed.

  • Automations →

    A loan pre-check form, and follow-ups to members who went quiet.

  • The API →

    Your core system sends balances and one-time codes, and hears about every payment.

Ready for your trade

Your customers’ data, protected

A member’s money is the most private thing they share with you. These hold whoever signs in, and however they connect, because the database enforces them, not the screen.

Roles the database enforces

Owner, admin, manager, agent, billing and viewer. The billing role reads the money and never a conversation, however it connects.

Two-factor sign-in, for everyone

An owner can require a code from an authenticator app of everybody in the workspace.

An activity log

Sign-ins, failed sign-ins, team changes and keys: who, when and from where.

Consent on the record

When and how each customer agreed, as Kenya’s Data Protection Act asks, and STOP honoured in English and Kiswahili.

Kept as long as you choose

Messages kept until deleted, or from 30 days to five years, and a customer’s data exported or erased on request.

Is it working?

Sema checks itself every minute, and says what it found on its status page.

Start with one product line.

Connect your number, import the members for a single scheme, and send one statement run. You will see the cost before it goes and the record after.

Start free

Nothing to pay to start. Talk to us first on 0784 155 752, or on WhatsApp.