SMS gateway in Ghana for businesses and developers.

Send bulk SMS, OTPs, and alerts on MTN, Telecel, and AT. Open the delivery report by id.

Message accepted

Delivered · 1 segment · +233 24 ••• 3456

Send with

MTNTelecelAT

Live ledger

—

Accounts live

—

LIVE messages accepted

—

LIVE messages delivered

—

GHS credited to wallets

Platform totals from the prepaid ledger and LIVE message store. Refreshes every five minutes.

Send, inspect, and integrate. One prepaid wallet for Ghana.

Bulk SMS

Upload a list, snapshot it, and send from one prepaid wallet. MTN, Telecel, and AT on the same campaign.

Start a campaign

List snapshotted

1,240 recipients

Campaign sent

From your sender name

Delivery reports

Accepted is not delivered. Open the message id and read the state: delivered, failed, expired, or rejected.

See a report

Delivered

+233 24 ••• 3456

Message id

msg_18429

SMS API

POST /v1/messages with a TEST key. The dashboard uses that same path. OTP stays on its own queue.

Read the API

POST /v1/messages

Bearer sms_test_

OTP queued

Separate from bulk

Show your name. Verify the person. Sender ID and OTP on the same route.

Sender ID

The name on the handset is 3 to 11 characters. LIVE waits until that name is approved. TEST uses the sandbox sender.

Register a name

ACMEGH

3–11 characters

LIVE approval

One name, all networks

OTP

Login codes go out on their own queue. The code is hashed. A check returns verified, expired, invalid, or max attempts.

See OTP

Code sent

POST /v1/verify/send

Verified

Hashed at rest

Receipts, campaigns, and hooks. The rest of the send path.

Transactional SMS

Receipts, order updates, and account notices. Pass type transactional. Each message has an id you can open.

Transactional SMS

Receipt sent

type: transactional

Accepted

Not the same as delivered

SMS marketing

Promos go to people who opted in. The list is snapshotted when the campaign starts. Later edits do not rewrite it.

SMS marketing

Opt-in list

Snapshotted at send

Named sender

Approved for LIVE

Webhooks

Delivery and wallet events arrive signed. Check t= and v1= before you update an order.

Webhook docs

message.delivered

Signed payload

Replay

Same event id

Templates

Encoding and segments are counted from the body before a pesewa moves. GSM-7 and Unicode use different limits.

Count a message

GSM-7

160 characters

Unicode

70 characters

Quick start

Send your first message

  1. 01Create an account and copy a TEST key. It is shown once.
  2. 02POST /v1/messages with a Bearer key and an Idempotency-Key.
  3. 03Open the message id. Accepted is not the same as delivered.
export API_URL=https://api.taysend.com
export KEY=sms_test_your_key

curl -X POST "$API_URL/v1/messages" \
  -H "Authorization: Bearer $KEY" \
  -H "Idempotency-Key: 11111111-1111-1111-1111-111111111111" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+233200000001",
    "sender_id": "TAYSEND",
    "message": "Hello from Taysend",
    "type": "transactional"
  }'

Try it in the sandbox

Sends a simulated TEST message. No API key and no real SMS.

Sandbox

TEST

This number ends as delivered.

Response

{
  "id": "msg_…",
  "status": "QUEUED",
  "environment": "TEST"
}

How it works

Four steps from signup to a delivery report

The same path in the console and the API. Nothing here is live until a sender is approved and the wallet has GHS.

01

Create an account

Register and open your console. You get a prepaid GHS wallet and TEST keys.

02

Request your sender name

Customers see this on the phone. Live send waits until the network approves it.

03

Top up the wallet

Buy a prepaid bundle, then compose a message or call the API.

04

Send and inspect

Accepted is not delivered. Open the message id and read the delivery report.

Pricing

Prepaid bundles

Top up, then send.

Bundles credit the wallet. Unicode or long messages use more than one unit. Ask us if you need a written contract.

Full pricing →

Explore

Bulk SMS, API, OTP, sender IDs, and tools

One Ghana route for Accra, Tema, and the rest of the country. Each page below answers a different search intent — they do not repeat the same copy.

Sending in Greater Accra? See the Accra and Tema SMS hub.

FAQ

Straight answers

Sender IDs, TEST vs LIVE, who pays for a client, and what delivered actually means.

All FAQs →
01How do sender IDs work?

The name on the phone is a sender ID you request. Ghana networks allow 3–11 characters. LIVE needs network approval. Only senders you request show in your console. Unapproved LIVE senders are rejected.

02What is the difference between TEST and LIVE?

TEST keys use simulated Ghana numbers so you can prove compose → reserve → inspect. They cannot send to a real handset. LIVE spends wallet balance and needs an approved sender.

03Who pays when I onboard a client?

They do. Each client has their own prepaid wallet and tops up themselves. Creating a service does not move GHS from your balance.

04What does “delivered” mean?

A later delivery report, not HTTP 200. Accepted or submitted means Taysend took the send. Open the message id for DELIVERED, FAILED, EXPIRED, or REJECTED.

Next

Prove the pipeline before you go live.

Create a TEST key, send to a simulated number, and inspect the same states your LIVE traffic will use.