Nyota SMS
Branded Sender IDs & Regulatory Compliance
Registering alphanumeric Sender IDs and understanding carrier fees.
A branded Sender ID replaces standard telephone numbers with your organization's name (e.g. SAFARICOM, NYOTA, MYCOMPANY) when recipients receive SMS messages.
Sender IDs in Kenya are governed by the Communication Authority of Kenya (CAK) and require carrier registration.
CAK Specifications & Guidelines
- Length: Maximum 11 characters (alphanumeric only).
- Characters: Letters (
A-Z,a-z) and numbers (0-9). No spaces, underscores, or special characters (!@#$%^&*). - Documentation: You must provide a Letter of Authorization (LoA) on official company letterhead signed by a company director, accompanied by a Certificate of Incorporation.
Carrier Fee Schedule
Sender ID registration fees are one-time carrier processing charges:
| Carrier / Network | One-Time Fee | Notes |
|---|---|---|
| Safaricom | KSh 6,500 | Largest network coverage in Kenya |
| Airtel Kenya | KSh 6,500 | High-speed mobile network |
| Telkom Kenya | KSh 4,500 | Specialized carrier routing |
| All-Network Bundle | KSh 16,750 | Discounted bundle (Save KSh 750) |
1. Requesting a Sender ID via SDK
const application = await sms.senderIds.request({
senderId: "MYCOMPANY",
networks: "bundle", // 'bundle' | ['safaricom', 'airtel', 'telkom']
registrationDocUrl: "https://assets.mycompany.com/loa.pdf",
});
console.log(`Application Fee: KES ${application.feeKes}`);
console.log(`Payment Status: ${application.paymentStatus}`); // 'pending_payment'2. Settling Sender ID Fees
Sender IDs can be paid using two standard flows:
Option A: 1-Click Payment via Nyota Wallet
// Deduct immediately from your Nyota Wallet balance
await fetch("https://backend.nyotaimara.com/v1/billing/wallet/pay", {
method: "POST",
headers: {
Authorization: `Bearer ${userJwt}`,
"x-workspace-id": workspaceId,
"Content-Type": "application/json",
},
body: JSON.stringify({
amountCents: 1675000,
metadata: {
productName: "sender_id_bundle",
quantity: 1,
senderIdRecordId: application.senderId.id,
},
}),
});Option B: Direct Paystack Checkout (Card / M-PESA STK Push)
// Initiate an M-PESA prompt or Paystack inline popup
await fetch("https://backend.nyotaimara.com/v1/nyota-pay/checkout", {
method: "POST",
headers: {
Authorization: `Bearer ${userJwt}`,
"x-workspace-id": workspaceId,
"Content-Type": "application/json",
},
body: JSON.stringify({
productName: "sender_id_bundle",
quantity: 1,
method: "mobile_money",
phone: "0787654321",
metadata: {
senderIdRecordId: application.senderId.id,
},
}),
});