Skip to content

Comms wallet & rate cards

Selling SMS and WhatsApp to your schools, and getting paid for it. This is recurring revenue, not a settings screen.

Sidebar → Comms Wallet

How the money works

You buy messages wholesale from a provider. Schools buy them from you at your price. The difference is your margin, and the system tracks both sides.

Each school has a prepaid wallet. Sending a message deducts from it. At zero, they top up.

Schools can also bring their own provider

A school that already has an SMS or WhatsApp account can use it instead, and then their messages never touch your wallet or your rates. Both models work side by side — see SMS.

Rate cards

Sidebar → Comms Wallet → Rate Cards

A rate card sets a price for a combination of:

FieldMeaning
ChannelSMS or WhatsApp
CategoryThe message type, where the provider prices them differently. Blank = any
CountryDestination country. Blank = anywhere
RateWhat the school pays you
CostWhat you pay the provider
Effective fromWhen this price starts

The most specific rate wins

Set a general price for SMS anywhere, then override it for one country, and the country row is used for that destination while everything else falls back to the general one.

So you need one broad rate to catch everything, plus specific rows only where the price genuinely differs.

Fill in Cost, not just Rate

Cost is what makes margin visible. Leave it out and you can see revenue but not whether you are actually making anything — which matters most in the countries where wholesale prices are highest.

Effective from lets you schedule a price change rather than editing during the working day. Set the date and it takes over on its own.

Wallets

Sidebar → Comms Wallet → Wallet Oversight

Every school's balance and usage in one list.

SettingWhat it does
BalanceCurrent credit
Low balance thresholdThe point at which the school is warned
Auto blockWhether sending stops when the balance runs out

Leave Auto block on

With it off, a school keeps sending after their balance is gone — and you are still paying the provider for every message.

Auto block is what makes this prepaid rather than a credit line you did not agree to.

The balance shown is a running total of a full transaction ledger, so every charge, top-up and refund is recorded and can be checked. If a school disputes a bill, the history answers it.

Failed messages are refunded automatically

When delivery reports are set up, a message the network confirms as failed is refunded to the school's wallet automatically.

That is worth telling schools about — they are charged for delivery, not for attempts. It also removes a whole category of billing argument.

Without delivery reports, failures are charged like successes, because nothing ever reports back.

Setting your prices

Step
1Find your provider's real per-message cost for each country you serve
2Enter it as Cost
3Set Rate above it — enough to cover failures, support and card fees
4Add country-specific rows only where wholesale prices differ sharply

Do not price at cost

Some messages fail without a delivery report, some parents' numbers are wrong, and some schools will need help. A rate identical to your cost turns into a loss quietly.

Common problems

What you seeCause
A school cannot send anythingBalance is zero and auto block is on — that is it working correctly
Messages send but nothing is deductedNo rate card matches that channel and country — add a broad fallback row
Revenue looks fine, profit does notCost is not filled in, so margin was never tracked
A school says they were charged for undelivered messagesDelivery reports are not configured for that provider
A price change did not applyCheck Effective from — it may be dated in the future