SMS and delivery reports
MyChurch sends every church SMS (receipts, check-in confirmations, reminders, announcements, OTPs) through Mobile Sasa, under the church's own sender ID and on the church's own Mobile Sasa account.
Step 1: a Mobile Sasa account and sender ID
- Open an account at mobilesasa.com and buy SMS units.
- Apply for an alphanumeric sender ID in the church's name (for example
GRACECHAPEL). The networks review it, which takes a few days. - In the Mobile Sasa portal, create an API token.
Step 2: add the sender in MyChurch
In the portal open Messaging, Sender IDs and add the sender ID with the API token. Choose what it is used for:
- Transactional: payment receipts, check-in and checkout messages, OTPs, pledge confirmations.
- General: announcements, reminders, birthday messages and anything sent from the composer.
One sender can do both, or a church can keep two Mobile Sasa accounts apart. The token is encrypted when saved. The balance check shows the units left on that account.
Parameters
| Field | Type | Required | Description |
|---|---|---|---|
| sender_id | string | Yes | The approved sender ID, exactly as Mobile Sasa shows it. |
| api_key | string | Yes | The Mobile Sasa API token for that account. |
| send_transactional_sms | boolean | No | Use this sender for transactional messages. |
| send_general_sms | boolean | No | Use this sender for general messages. |
# Paste your token once (it starts with mc_):
export MYCHURCH_TOKEN="mc_your_token_here"
curl -X POST https://uat-api.mychurch.co.ke/v1/messaging/senders \
-H "Authorization: Bearer $MYCHURCH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"sender_id": "GRACECHAPEL",
"api_key": "your-mobile-sasa-token",
"send_transactional_sms": true,
"send_general_sms": true
}'Sending
The composer sends to an audience: all members, users, visitors, inactive members, a department or ministry, a cell group (all or its leaders), an age group and gender, or a list of phone numbers, now or at a scheduled time.
# Paste your token once (it starts with mc_):
export MYCHURCH_TOKEN="mc_your_token_here"
curl -X POST https://uat-api.mychurch.co.ke/v1/messaging/send \
-H "Authorization: Bearer $MYCHURCH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"audience": "members",
"message": "Dear [name], join us this Sunday at 9am for the thanksgiving service.",
"append_signature": true,
"send_at": ""
}'[name], [member_number] and [church_name] are replaced per recipient. Users with only church:sms:cellgroup_send may send to cell groups only.
Opt-outs
A member can stop transactional messages from the app (block-messages on the member app API) or USSD, and the church can block a number in the portal. Blocked numbers are skipped on every send.
Delivery reports
Every message is logged in Outgoing messages with the Mobile Sasa message id. Mobile Sasa posts delivery reports to:
Parameters
| Field | Type | Required | Description |
|---|---|---|---|
| reference | string | Yes | The Mobile Sasa message id returned when the message was sent. |
| deliveryStatus | string | Yes | DeliveredToTerminal or Delivered marks it delivered; values containing fail, reject or expired mark it failed. |
| deliveryTime | string | No | When the handset received it. |
| msisdn | string | No | The recipient. |
{
"reference": "8f2c41d7-5b0e-4b7e-9d0e-3a1f6c2b9e10",
"deliveryStatus": "DeliveredToTerminal",
"deliveryTime": "2026-10-05 10:13:02",
"msisdn": "254712345678"
}The answer is an empty HTTP 200. Reports for unknown references are logged and ignored.
Platform API
| Route | Permission | Purpose |
|---|---|---|
| GET/v1/messaging/senders | church:sms:manage_senders | List sender IDs (tokens shown as hints). |
| POST/v1/messaging/senders | church:sms:manage_senders | Add a sender ID and its Mobile Sasa token. |
| PUT/v1/messaging/senders/{uuid} | church:sms:manage_senders | Update a sender or replace its token. |
| DELETE/v1/messaging/senders/{uuid} | church:sms:manage_senders | Remove a sender. |
| GET/v1/messaging/senders/{uuid}/balance | church:sms:manage_senders | Mobile Sasa balance for that sender's account. |
| POST/v1/messaging/send | church:sms:send | Send or schedule a message to an audience. |
| GET/v1/messaging/scheduled | church:sms:send | Scheduled messages. |
| GET/v1/messaging/outgoing | church:messages:view | The outgoing message log with delivery status. |
| POST/v1/messaging/outgoing/resend-failed | church:sms:send | Resend failed messages. |
| GET/v1/messaging/blocked | church:messages:view | Numbers that receive no transactional messages. |
| POST/v1/messaging/blocked | church:sms:send | Block a number. |