sendbaze
Menu

SMS

SMS on wholesale African routes, with the compliance engine built in.

Aggregator routes connected to local mobile networks, least-cost routing for marketing, the most reliable route for OTPs, and failover in under a minute. Consent, STOP handling, do-not-contact lists and send windows are enforced by the API.

otp.ts
import { Sendbaze } from "@sendbaze/sdk";

const sendbaze = new Sendbaze({ apiKey: process.env.SENDBAZE_API_KEY! });

const sms = await sendbaze.sms.send({
  to: "+27821234567",
  body: "Your OTP is 482 913. It expires in 5 minutes.",
  class: "transactional", // marketing requires consent
});
// sms.segments === 1, sms.credits === 1

Coverage

Every major network, two routes each

MTN

Two routes · least-cost for marketing · primary for OTP

Vodacom

Two routes · least-cost for marketing · primary for OTP

Airtel

Two routes · least-cost for marketing · primary for OTP

Orange

Two routes · least-cost for marketing · primary for OTP

Plus the national operators in each country we deliver to. Before launch we run a delivery test on every network we route to, on both routes, and publish the result: target 97% delivered with a p95 under 10 seconds.

What it does

Sending, routing and receipts

Segment count before you pay
The API detects GSM-7 versus UCS-2, applies concatenation rules and returns the segment count and credit cost in the response. No surprise on the invoice.
Two routes, automatic failover
A rolling failure rate or timeouts on one route disable it for ten minutes and move traffic to the other. Route health is visible in the dashboard.
Transactional and marketing classes
Every SMS carries a class. Transactional and OTP traffic always takes the primary route and ignores quiet hours; marketing takes the cheapest route and obeys the legal window.
Delivery receipts, unified
Aggregator delivery receipts map to queued, sent, delivered, failed, expired and rejected. Each message shows which route delivered it and how long it took.
Sender IDs
Shared numeric sender by default. Request a dedicated number or a branded alphanumeric sender from the dashboard; approval is manual and network caveats are documented.
Batch and schedule
Up to 1,000 messages a call with per-item results. Scheduled send and CSV upload-and-send in the dashboard arrive in the release after launch.

Compliance engine

The rules a raw aggregator account leaves to you

Each rule is enforced in the request path. You get a clear error code, not a regulator complaint three weeks later.

RuleWhat the API does
Message classRequired on every SMS. Marketing without a consent record returns 403 consent_missing.
ConsentContacts and consents with source, evidence and timestamp, or a logged attestation of an existing-customer relationship.
Opt-outInbound STOP, END, CANCEL, UNSUBSCRIBE or QUIT, in any case and with punctuation, flags the contact, fires sms.opted_out and blocks future marketing.
Opt-out footerA reply-STOP line is appended to marketing SMS unless already present, and the segment count is recalculated.
Do-not-contact listsWeekly sync of the destination's do-not-contact list, such as WASPA's. Marketing to a listed number returns 403 dnc_listed; transactional is unaffected.
Time windowsMarketing outside the destination's legal window (08:00 to 20:00 local time, no Sundays or public holidays in South Africa) is held and sent at the next legal window.
EvidenceExport every consent record for a number or an organisation as CSV in under a minute.

Sender IDs

Shared by default, branded on request

Every organisation starts on a shared numeric sender. Request a dedicated number or an alphanumeric sender such as YOURSHOP from the dashboard. Approval is manual, and we document which networks replace alphanumeric senders with a number.

Send your first OTP in ten minutes

Free plan includes 50 SMS credits after a quick card check. Test keys let you integrate without sending.