Blog

SMS API in Ethiopia: your own +251 number, Amharic included

How to send texts from your code in Ethiopia with the SIM you already have, in Amharic, with no sender ID to register.

Sparetext

5 min read · Oct 31, 2026

Sparetext's SMS segment calculator with an Amharic order text of 85 characters: 2 segments, UCS-2, 67 characters per segment, 49 left in the second, and a row of the Ethiopic letters that aren't in GSM-7.

Say you run a small online shop in Addis Ababa, and you want each customer to get a text when their order leaves: in Amharic, from a number they can call back. The usual answer is a bulk SMS provider and a sender ID. There's a shorter one, and it's already in your pocket.

I build Sparetext here in Addis, so this one is close to home. Sparetext turns an Android phone with an Ethio telecom or Safaricom SIM into an SMS API: your code makes one HTTP call, and the phone sends the text from its own +251 number.

Why your own number is a good thing here

A sender ID puts your shop's name where the number usually goes. It looks smart, but it's a registration step before your first text, and nobody can reply to a name. Your own number works the other way round. There's nothing to register, and when Meron texts back "Can you deliver after 6?", her reply lands in your dashboard, your code or your AI agent.

There's no fee per text to us, either. The phone sends on your carrier plan, the same way it does when you text your mother.

How it works

  1. Put your Ethio telecom or Safaricom SIM in an Android phone. A spare one on a charger is perfect.
  2. Install the Sparetext app from the download page. It isn't on the Play Store yet, so Android asks you to allow it, and the page shows how.
  3. Sign up, open Phones in the dashboard, and scan the pairing code with the phone.
  4. Make an API key and send your first text:
bash
curl -X POST https://sparetext.dev/api/v1/messages \
  -H "x-api-key: $SPARETEXT_API_KEY" -H "content-type: application/json" \
  -d '{"to": "+2519XXXXXXXX", "text": "ሰላም! ትዕዛዝዎ ተልኳል።"}'

That says "Hello! Your order is on its way." The phone sends it, tells you when it's sent, and tells you again when the carrier confirms delivery. If the network drops for a minute, the phone holds the text and sends it as soon as service is back, for up to 30 minutes. Our Ethiopia page has these steps in short, if you want them open in a tab.

+251, and the 0 that has to go

The API wants numbers in international format. Take the 0 off the front, for 09 and 07 numbers alike, and put +251 there instead: 09XX XXX XXX becomes +2519XXXXXXXX. Or set your account's country to Ethiopia in Settings, and numbers typed without a country code are read as Ethiopian. If you signed up from here, it's probably set already.

Got a dual-SIM phone with both carriers? Choose the SIM for each text with sim: 1 or sim: 2, and Sparetext never quietly falls back to the other one. And when a customer texts your Safaricom number, your next text to them goes from that same SIM unless you pick another, so they keep hearing from the number they know.

Amharic, and why it counts differently

This is the part that surprises people. A text in Latin letters uses GSM-7, the standard SMS alphabet, and one SMS holds 160 characters. Amharic isn't in GSM-7, so the text goes as UCS-2, and one SMS holds 70. Past that, it's split into parts of 67, and your carrier counts each part as an SMS.

The good news: every fidel is one character. ሰ is one, ላ is one, ም is one, so ሰላም uses 3 of your 70. The picture at the top is an order text of 85 Amharic characters, so it goes as two parts.

The sneaky part is mixing. "Hi Meron, your order #2817 left our shop in Bole and should reach you this afternoon. Thank you!" is 96 characters of GSM-7: one part. Swap "Thank you!" for "አመሰግናለሁ!", which is two characters shorter, and the whole text turns UCS-2: two parts. An emoji does the same, and counts as two characters while it's at it.

So before a big send, paste your text into the segment calculator, or just watch the compose box. The dashboard, and the send_sms tool for AI agents, count the parts before anything goes out. Our smart encoding can swap a curly quote for a straight one to keep a text in GSM-7, but it leaves Amharic alone, as it should. And Sparetext's plans count a text once, however many parts it takes.

Built and tested here

Our own test phone is a Samsung Galaxy M13 with two Ethio telecom SIMs. In its real-SIM test, Amharic and an emoji arrived intact, and Ethio telecom confirmed delivery a twentieth of a second after the text was sent. (It was going to the same phone's other SIM, so it didn't have far to travel.) A three-part UCS-2 text arrived joined, and showed as delivered only once all three parts had reported.

One more local story. When we load-tested our staging server, Cloudflare helpfully ran our code in Addis Ababa, right next to me, while the database sat in Western Europe. Every query crossed a continent, and a page of messages took 3.8 seconds. We moved the code next to the database, and the same page came back in about half a second.

Sending hours, on whichever clock you use

Give each phone sending hours, and nobody gets a delivery update at 3 in the morning: texts queued outside the hours wait and go when they open. The hours use your account's time zone and the international clock, so 08:00 means eight in the morning, which is 2 o'clock in Ethiopian time. Worth a second look before you save.

Paying for Pro from Ethiopia

Free is 1 phone and 300 texts a month, with every feature, and it needs no card. When you outgrow it, Pro is 5 phones and 10,000 texts a month.

Paying for software from here can be its own adventure, so Pro takes two ways. By card, through Stripe, renewing monthly or yearly until you cancel. Or in USDT on TRON (TRC-20), from any wallet or exchange: you get an exact amount and an address, and Pro turns on by itself once the transfer is confirmed. With USDT you pay 1 or 12 months ahead, and nothing renews by itself. Pricing shows what Pro costs.

When a bulk provider is the better choice

Your own SIM is for people who know you: customers, staff, reminders, one-time codes, your own alerts. For a promotion to thousands of people, or your shop's name in place of the number, use a provider with a registered sender ID. Carriers watch for bulk texts from personal SIMs, and you don't want yours to be the one they notice.

Two things keep a mistake small. You can cap each phone's texts per hour and per day, and a new API key sends at most 100 texts a day on Free until you change it. So a bug in a loop runs out of texts long before it runs out of customers.

Your first ሰላም

Put the SIM in a phone tonight, sign up, and send your first ሰላም to your own number. If anything is unclear, press the Ask us button on the site: it comes straight to me.

ethiopiasms apiamharicandroid

Try it with the phone you have

Free for 1 phone and 300 texts a month. Pair it in about two minutes.

Start free

Responses

Sign in or create an account to respond.

More from the blog