Appearance
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:
| Field | Meaning |
|---|---|
| Channel | SMS or WhatsApp |
| Category | The message type, where the provider prices them differently. Blank = any |
| Country | Destination country. Blank = anywhere |
| Rate | What the school pays you |
| Cost | What you pay the provider |
| Effective from | When 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.
| Setting | What it does |
|---|---|
| Balance | Current credit |
| Low balance threshold | The point at which the school is warned |
| Auto block | Whether 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 | |
|---|---|
| 1 | Find your provider's real per-message cost for each country you serve |
| 2 | Enter it as Cost |
| 3 | Set Rate above it — enough to cover failures, support and card fees |
| 4 | Add 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 see | Cause |
|---|---|
| A school cannot send anything | Balance is zero and auto block is on — that is it working correctly |
| Messages send but nothing is deducted | No rate card matches that channel and country — add a broad fallback row |
| Revenue looks fine, profit does not | Cost is not filled in, so margin was never tracked |
| A school says they were charged for undelivered messages | Delivery reports are not configured for that provider |
| A price change did not apply | Check Effective from — it may be dated in the future |