Bulk SMS, transactional emails, and contact groups in a single dashboard. Built for Ugandan teams shipping campaigns at scale.
Trusted by 60+ senders
SMS sent
12,840
Emails delivered
3,217
Contacts
1,902
How it works
Wesendall keeps the workflow short. Three steps, no SDK to install, no engineering required.
Upload a CSV, paste a list, or sync Google Contacts. Numbers are normalized to the local format automatically.
Pick a contact group, write your SMS or email, see the per-message cost in real time, hit send.
Live delivery status, per-recipient cost, and dashboard analytics by day and provider.
What you get
Every feature you need to run customer messaging — no third-party patchwork.
Send to a single number, a list, or a saved group. Real-time delivery status and per-recipient cost.
React Email templates wired to Resend. Beautiful messages out of the box, no extra setup.
Import CSVs, paste lists, sync Google Contacts. Duplicate detection built in.
Add credit straight from MTN or Airtel. Funds land in your wallet within seconds.
Role-based access, ownership-checked actions, transactional wallet writes. Nothing leaks.
Edge-cached Prisma, Suspense streaming, parallel server actions. Pages load instantly.
Paste a list, upload a CSV, or pick a saved group. Wesendall charges your wallet only once delivery is confirmed.
Send to group
4 recipientsGetting started
One REST endpoint sends single, bulk and group SMS through MTN and Airtel. Mint an API key, paste the snippet, ship in under five minutes.
// JavaScript (browser or Node 18+)
const credentials = btoa("API_KEY:API_SECRET");
const res = await fetch(
"https://www.wesendall.com/api/v1/sms/send",
{
method: "POST",
headers: {,
"Authorization": `Basic ${credentials}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"walletId": "{WALLET_ID}",
"message": "Hello from Wesendall",
"recipient": [
"+256700000000",
"+256701234567"
]
})
}
);
const data = await res.json();
console.log(data);Built for AI coding agents
We've published a plain-text LLM reference that gives Claude Code, Cursor, Bolt, Lovable and Windsurf everything they need to wire Wesendall into your app. Or use our 3-step prompt generator to get a tailored briefing for your exact stack.
Prompt preview
Generated by the wizard
You are integrating Wesendall (Ugandan bulk SMS + Mobile Money platform) into Next.js (App Router).
# Context
This is a web app — call Wesendall from a server route or server action (NEVER from the browser; API secrets must stay server-side).
Wesendall's REST API is at https://www.wesendall.com/api/v1 and uses HTTP Basic Auth:
- Username: API key (looks like `sk_live_…`)
- Password: API secret (shown once at creation)
- Authorization header: `Authorization: Basic base64(API_KEY:API_SECRET)`
EVERY request must include `walletId` (the user's stable wallet
identifier). For POST endpoints it goes in the JSON body; for GET
endpoints it's a query parameter…Pricing
Top up your wallet with mobile money. Send when you need to. No monthly minimums.
For solo senders and small teams testing the waters. Pay only for what you send.
Lower per-message cost once you're sending bulk every week.
Negotiated per-SMS pricing for high-volume senders and agencies.
Prices in UGX. Email sending is bundled at no per-message cost while you have a positive wallet balance.
No setup call, no credit card. Top up your wallet when you're ready to send.