eSMS AfricaeSMS Africa
API ReferenceSMS API

Sender IDs

Per-country Sender ID fees, and listing and requesting sender IDs for your account.

Overview

A sender ID is the name (up to 11 characters) or number shown as the sender of your SMS. Registration rules and fees differ by country. For the product overview and how approval works, see the Sender IDs guide.

MethodPathDescription
GET/api/sender-ids/feesSender ID fees for all 54 countries (public, no auth)
GET/api/sender-idsList your sender IDs
POST/api/sender-idsRequest a sender ID

Get Sender ID fees

GET https://sms.esmsafrica.io/api/sender-ids/fees

Public - no authentication. Cached for up to 5 minutes. Returns the Sender ID fee for every one of the 54 African countries, in USD.

Fees are charged from your wallet only when a request is approved - one fee per country in the request that has a fee. Nothing is charged on rejection.

Response

{
  "currency": "USD",
  "countries": [
    {
      "country_code": "GH",
      "country_name": "Ghana",
      "fee_usd": 150,
      "fee_type": "one_time",
      "covers": "all_networks",
      "fee_table": null,
      "note": null
    },
    {
      "country_code": "KE",
      "country_name": "Kenya",
      "fee_usd": null,
      "fee_type": "per_network",
      "covers": null,
      "fee_table": [
        ["Bundled Safaricom & Airtel", "KES 14,100", "None"],
        ["Safaricom only", "KES 8,700", "None"],
        ["Airtel only", "KES 8,700", "None"],
        ["Telkom", "KES 4,500", "None"],
        ["Equitel", "KES 9,000", "None"]
      ],
      "note": "One-off setup per network - no monthly maintenance."
    },
    {
      "country_code": "NG",
      "country_name": "Nigeria",
      "fee_usd": null,
      "fee_type": "on_request",
      "covers": null,
      "fee_table": null,
      "note": "Confirmed during onboarding"
    }
  ]
}
FieldTypeDescription
country_codestringISO 3166-1 alpha-2 code.
country_namestringDisplay name.
fee_usdnumber | nullFlat fee in USD. 150 for flat-fee countries; null when the country uses a per-network fee table or the fee is confirmed at onboarding.
fee_typestringone_time - a single flat fee for the country. on_request - fees are confirmed during onboarding. Countries with a fee_table may use another value, so check fee_table first.
coversstring | nullall_networks when one fee registers the sender ID on every network in the country.
fee_tablearray | nullPer-network fees as rows of [network, setup, recurring], in local currency. null when not applicable.
notestring | nullExtra detail, for example Confirmed during onboarding.

Fees by country

CountriesFee
Cameroon, Djibouti, Egypt, Ghana, Somalia, TanzaniaUSD 150 one-time per country - covers registration on all networks
KenyaPer-network table (one-off setup, no monthly maintenance) - see below
UgandaPer-network table - see below
All other countriesConfirmed during onboarding

Kenya

NetworkSetupRecurring
Bundled Safaricom & AirtelKES 14,100None
Safaricom onlyKES 8,700None
Airtel onlyKES 8,700None
TelkomKES 4,500None
EquitelKES 9,000None

Uganda

NetworkSetupRecurring
MTNNoneUGX 250,000 / month
AirtelUGX 250,000None

The endpoint is the source of truth - read it for current fees.

Example

curl https://sms.esmsafrica.io/api/sender-ids/fees

List your sender IDs

GET https://sms.esmsafrica.io/api/sender-ids

Needs a signed-in session or an API key (Authorization: Bearer esms_live_your_api_key). Returns your sender IDs, newest first.

[
  {
    "id": 17,
    "name": "AcmeFoods",
    "countries": ["GH", "KE"],
    "use_case": "Order updates",
    "status": "approved",
    "rejection_reason": null,
    "fee_usd": 150,
    "fee_charged_at": "2026-10-08T09:30:00+00:00",
    "created_at": "2026-10-07T14:12:00+00:00"
  }
]
FieldDescription
statuspending, approved or rejected.
fee_usdThe Sender ID fee charged for this request (0 when no fee applied).
fee_charged_atWhen the fee was charged (on approval), or null.

Request a sender ID

POST https://sms.esmsafrica.io/api/sender-ids
{
  "name": "AcmeFoods",
  "countries": ["GH", "KE"],
  "use_case": "Order updates"
}
FieldTypeRequiredDescription
namestringYes1-11 characters.
countriesstring[]YesISO country codes to register in.
use_casestringNoWhat you will send. Helps the networks approve faster.

Response

{
  "id": 17,
  "name": "AcmeFoods",
  "status": "pending",
  "estimated_fee_usd": 150,
  "fee_countries": ["GH"]
}

estimated_fee_usd is the flat Sender ID fee that will be charged when the request is approved (one fee per country in fee_countries). Nothing is charged now, and nothing is charged if the request is rejected. Per-network fees (for example Kenya and Uganda) are confirmed by the team during onboarding.

On this page