MyChurchDocs

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

  1. Open an account at mobilesasa.com and buy SMS units.
  2. Apply for an alphanumeric sender ID in the church's name (for example GRACECHAPEL). The networks review it, which takes a few days.
  3. 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

FieldTypeRequiredDescription
sender_idstringYesThe approved sender ID, exactly as Mobile Sasa shows it.
api_keystringYesThe Mobile Sasa API token for that account.
send_transactional_smsbooleanNoUse this sender for transactional messages.
send_general_smsbooleanNoUse 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
  }'
If a church has no sender for a kind of message, only member OTPs fall back to the MyChurch platform sender; other messages of that kind are not sent. Add a sender before turning on receipts or reminders.

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.

POSThttps://uat-api.mychurch.co.ke/v1/messaging/sendchurch:sms:send
# 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:

POSThttps://uat-api.mychurch.co.ke/api/v1/message-delivery-statusMobile Sasa

Parameters

FieldTypeRequiredDescription
referencestringYesThe Mobile Sasa message id returned when the message was sent.
deliveryStatusstringYesDeliveredToTerminal or Delivered marks it delivered; values containing fail, reject or expired mark it failed.
deliveryTimestringNoWhen the handset received it.
msisdnstringNoThe recipient.
Example report
{
  "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

RoutePermissionPurpose
GET/v1/messaging/senderschurch:sms:manage_sendersList sender IDs (tokens shown as hints).
POST/v1/messaging/senderschurch:sms:manage_sendersAdd a sender ID and its Mobile Sasa token.
PUT/v1/messaging/senders/{uuid}church:sms:manage_sendersUpdate a sender or replace its token.
DELETE/v1/messaging/senders/{uuid}church:sms:manage_sendersRemove a sender.
GET/v1/messaging/senders/{uuid}/balancechurch:sms:manage_sendersMobile Sasa balance for that sender's account.
POST/v1/messaging/sendchurch:sms:sendSend or schedule a message to an audience.
GET/v1/messaging/scheduledchurch:sms:sendScheduled messages.
GET/v1/messaging/outgoingchurch:messages:viewThe outgoing message log with delivery status.
POST/v1/messaging/outgoing/resend-failedchurch:sms:sendResend failed messages.
GET/v1/messaging/blockedchurch:messages:viewNumbers that receive no transactional messages.
POST/v1/messaging/blockedchurch:sms:sendBlock a number.