Send SMS to Ethiopian phones from your app or dashboard.
SMSHub is an SMS API and messaging dashboard for Ethiopian businesses. Deliver one-time passwords, order updates and reminders to Ethio Telecom numbers with a single HTTP request — priced in birr, paid with telebirr, CBE Birr or card.
Payments verified with Chapa · official PDF receipt by e-mail · support on Telegram
POST /api/sms
Authorization: Bearer sk_live_••••••••
Content-Type: application/json
{
"msisdn": "0911234567",
"text": "Your Kidus Pharmacy code is 482193"
}
HTTP/1.1 200 OK
X-RateLimit-Remaining: 59
{
"status": "success",
"data": {
"msisdn": "0911234567",
"message_status": "sent",
"credits_used": 1,
"credits_remaining": 4999
},
"request_id": "req_8f3a1c09d2e4b7a1"
}
-
Telebirr
-
CBE Birr
-
M-Pesa
- + more banks
Everything you need to send transactional SMS in Ethiopia.
No carrier contracts, SMPP setup or monthly fees. Create an account, verify your identity and start sending from code or from the dashboard.
A REST API you can learn in five minutes
One endpoint, Bearer-token authentication, JSON in and out, and meaningful HTTP status codes. Works from PHP, Node.js, Python, Go — anything that speaks HTTP.
Content safety built in
Amharic and English moderation stops phishing, fake prizes and abuse before they reach a phone.
Test mode
/api/test runs every validation without sending or charging.
Send from the dashboard
No code needed — with a live character counter and message preview.
Complete message history
Search, filter and export every message with its status and source.
Priced in birr
Prepaid packages, no subscription. Credits never expire and failed sends are refunded automatically. Every payment comes with an official receipt.
Built for the messages your customers expect.
Verification codes
Sign-up, login and payment confirmation.
Order & delivery
Confirmations, dispatch and delivery alerts.
Reminders
Appointments, renewals and due dates.
Account alerts
Security notices and account changes.
From sign-up to your first message.
Identity verification keeps the network clean for everyone. Most KYC reviews are completed within one business day.
- 1
Create an account
Register with your name, email and Ethio Telecom number.
- 2
Verify your phone
Enter the 6-digit code we send by SMS.
- 3
Complete KYC
Upload a government ID. An administrator reviews it.
- 4
Start sending
Get 15 free credits, your API key and full dashboard access.
Integrate in minutes, in the language you already use.
Every account gets an API key. Send a POST request with a phone number and a message — that's the whole integration.
- Numbers accepted as
09…,2519…or+2519… - Credit deducted per message and refunded automatically if the carrier rejects it
- Rate-limit headers and a request ID on every response
- Rotate your API key from the dashboard at any time
- Optional
utm_source=smshubon links, so SMS visits show up in your analytics
https://sms.hizcore.com/api/smsJSONcurl -X POST 'https://sms.hizcore.com/api/sms' \
-H "Authorization: Bearer sk_live_your_key" \
-H 'Content-Type: application/json' \
-d '{"msisdn":"0911234567","text":"Your verification code is 482193. It expires in 5 minutes."}'<?php
$ch = curl_init('https://sms.hizcore.com/api/sms');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('SMSHUB_API_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'msisdn' => '0911234567',
'text' => 'Your verification code is 482193. It expires in 5 minutes.',
]),
]);
$body = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 200) {
error_log('SMSHub ' . $status . ': ' . ($body['message'] ?? 'unknown'));
}const res = await fetch('https://sms.hizcore.com/api/sms', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SMSHUB_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
msisdn: '0911234567',
text: "Your verification code is 482193. It expires in 5 minutes.",
}),
});
const body = await res.json();
if (!res.ok) throw new Error(`${body.error_type}: ${body.message}`);
console.log(body.data.credits_remaining);import os, requests
res = requests.post(
'https://sms.hizcore.com/api/sms',
headers={'Authorization': f"Bearer {os.environ['SMSHUB_API_KEY']}"},
json={'msisdn': '0911234567', 'text': "Your verification code is 482193. It expires in 5 minutes."},
timeout=30,
)
body = res.json()
if res.status_code != 200:
raise RuntimeError(f"{body['error_type']}: {body['message']}")
print(body['data']['credits_remaining'])Prepaid credits. No subscriptions.
One credit sends one SMS to one recipient. Larger packages cost less per message, and credits never expire.
- API + dashboard sending
- Credits never expire
- PDF receipt by e-mail
- API + dashboard sending
- Credits never expire
- PDF receipt by e-mail
- API + dashboard sending
- Credits never expire
- PDF receipt by e-mail
- API + dashboard sending
- Credits never expire
- PDF receipt by e-mail
- API + dashboard sending
- Credits never expire
- PDF receipt by e-mail
- API + dashboard sending
- Credits never expire
- PDF receipt by e-mail
Every package includes API access, dashboard sending, message history and support. Need more than 50,000 SMS a month? Talk to us on Telegram.
A cleaner network for senders and recipients.
SMS only works when people trust the messages they receive. We verify every sender and actively stop abuse.
Verified senders
Every account verifies a phone number and passes a manual KYC review before it can send.
Phishing & scam detection
Messages are screened in Amharic and English for credential phishing, fake prizes and payment scams.
Zero tolerance for hate
Hate speech and child exploitation result in immediate suspension and API-key revocation.
API key control
Keys are shown only to you, can be rotated instantly and are revoked on suspension. 60 requests per minute protect your balance from runaway code.
Verified payments
Every payment is confirmed with Chapa on our server before credits are added — once, never twice — and you get an official receipt.
Protected data
HTTPS everywhere, hashed passwords and one-time codes, and KYC documents in access-restricted storage.
Frequently asked questions
Do I need to be a developer?
No. You can send messages from the dashboard without writing any code. The API is there when you want to automate.
Which numbers can I send to?
Ethio Telecom mobile numbers (09xxxxxxxx). Safaricom Ethiopia numbers (07xxxxxxxx) are not supported yet.
How do the free credits work?
15 credits are added once your KYC has been approved by an administrator. No payment is required.
Why do you need my ID?
Identity verification helps us keep scammers, impersonators, and abusive users off the platform. It helps protect your recipients, your account, and the reputation of legitimate businesses using SMSHub. KYC also allows us to establish who is responsible for an account if our messaging infrastructure is misused. Your ID is used for identity verification and platform security, not for sending SMS or accessing your personal information for unrelated purposes.
How long can a message be?
Up to 160 characters for English/Latin text or 70 characters for Amharic and other Unicode text — including your signature.
Why is my name added to every message?
Your SMS signature tells recipients who the message is from, which protects them from impersonation. It is always on and cannot be switched off.
Can I put links in my messages?
Yes. Phones make links clickable automatically. Tick “Track links” when sending (API: "track_links": true) and SMSHub adds utm_source=smshub to each link, so visits from your SMS show up in Google Analytics. Links are screened for phishing like the rest of the message.
What if a message fails?
If the carrier rejects a message, the credit is returned to your balance automatically and the failure is recorded in your message history.
I paid but didn't get credits. What now?
Payments are verified directly with Chapa and credited automatically, even if you close the tab. Open Billing → Check status, or contact support with your reference.
Can I use my own sender name?
Messages carry your ID-verified name as a signature. You can request a custom signature of up to 11 characters (for example your shop name) in Settings; once an administrator approves it, a one-time fee of 150 ETB activates it. Custom alphanumeric sender IDs require carrier registration — contact support to discuss.
Ready to send your first message?
Create an account in under a minute. 15 free SMS once you're verified.