Mobile Sasa
PlatformAgentsPricingClientsAPI Docs
LoginGet Started
Products/Phone Lookup

The number behind the hash.

Safaricom hands out scrambled phone numbers in some reports. Phone lookup turns them back into the numbers your records use — and turns your numbers into hashes so you can match the two at scale.

Get started free Talk to our team
Directions
Both
Directions
Networks detected
4
Networks detected
Or in the portal
API
Or in the portal

Delivery report says

9532b0ef1e65c7dadf2d133e05cfe9b00fb8e9ad5806182bcb5255c2e7e9648bf

Phone lookup

Your customer

0712 345 678

Safaricom · delivered 09:41

What's included

Reports you can actually act on

A delivery report you cannot tie to a customer is a delivery report you cannot use. This closes that gap in both directions.

Both directions

Number to hash, or hash back to number. You send whichever you have; we work out which way round it is.

Network detection

Every lookup names the carrier — Safaricom, Airtel, Telkom or Equitel — so you can route, price or segment before you send.

Match at scale

Hashing is deterministic: compute it once when a contact is imported, store it beside the number, and match hashed reports without a single API call.

In the portal too

A tool in the sidebar for support and one-off checks, so nobody needs a developer to answer “who is this hash”.

Honest about misses

A hash we have never seen returns a plain answer saying so, not an error — a miss means we have never messaged that subscriber.

Any format in

07…, 2547…, +2547… all work. Output is always clean E.164, so what you store stays consistent.

The problem it solves

Your report says a hash. Your CRM says 0712 345 678.

On some Safaricom traffic the subscriber number arrives scrambled — in delivery reports, in shortcode events, in the message file you download. Without a way between the two forms, “did this customer get their message” has no answer.

  • Decode hashed delivery reports back to real numbers
  • Reconcile shortcode and USSD events to customer records
  • Answer support questions without guessing
  • Works for one number or a whole export

Your report, after lookup

CustomerNumberStatus
Jane Wanjiku0712 345 678Delivered
Peter Otieno0733 987 654Delivered
Grace Muthoni0722 111 222Phone off

Before you send

Know the network before the message leaves

Every lookup names the carrier the number belongs to. Useful for routing decisions, for pricing by network, and for catching a mistyped number before it becomes a failed send you paid for.

  • Safaricom, Airtel, Telkom and Equitel
  • Catches malformed numbers at import, not at send
  • Feeds per-network reporting and cost analysis
  • Same answer the sending platform uses

Network detection

0712 345 678Safaricom
0733 987 654Airtel
0770 111 222Telkom
0763 444 555Equitel

How it works

Live in four steps

1

Paste what you have

A phone number in any Kenyan format, or a 64-character hash from a report. The tool works out which it is.

2

Get the other form

The number, its network, and its hash — so you can match the two by eye or store both.

3

Do it in bulk

Call the API from your import job, store the hash beside each contact, and match every future report locally.

Use cases

What teams build with it

Shortcode and USSD operatorsTeams reconciling delivery exportsSupport desks answering “did it arrive”CRMs matching campaign resultsCompliance and audit reviewsAnyone handed a hashed MSISDN

FAQ

Common questions

Why are some phone numbers hashed at all?+

Safaricom scrambles the subscriber number in certain report and event feeds. It is their privacy measure, and it applies to the data we pass on to you unchanged. The hash is stable, so the same number always produces the same hash.

Can every hash be turned back into a number?+

No, and no service can promise otherwise — hashing is one-way arithmetic. What we can do is match a hash against numbers the platform has already handled. If we have never messaged that subscriber, the lookup says so plainly rather than guessing.

Do I need to call the API for every delivery report?+

No, and you should not. Number-to-hash is deterministic: compute the hash once when a contact enters your database and store it alongside the number. Then matching hashed reports is a local join with no API calls at all.

Is it available without writing code?+

Yes. It is a tool in the portal sidebar — paste a number or a hash and get the answer. The API is there for the volume case.

What does it cost?+

Nothing extra. It is part of your account, scoped to the same permission that reads your message history.

Pairs well with

Bulk SMS

The campaigns and delivery reports this decodes for you.

Explore

Shortcodes

Inbound events where hashed numbers show up most often.

Explore

Mobile Surveys

Match survey responses back to the people who sent them.

Explore

Stop guessing who a hash belongs to

Open the lookup tool in your portal, or wire the API into your reconciliation job. KES 0.10 per resolved number, charged from your wallet — a hash we cannot match costs nothing.

Create free account Request a callback
Mobile Sasa

A product of Bitwise Digital Solutions Ltd.
Communication on steroids, since 2015.

Products

  • Bulk SMS
  • USSD
  • Mobile Surveys
  • Shortcodes
  • WhatsApp
  • Phone Lookup
  • Premium Services
  • Reminders
  • Agent Programme
  • Sender IDs

Company

  • Pricing
  • Our Clients
  • FAQ
  • API Docs
  • Login
  • Register
  • Become an Agent
  • Salamu (CSP)

Get in touch

  • 0796 002 630
  • [email protected]
  • IPS Building, 6th Floor
    Kimathi Street, Nairobi
© 2026 Mobile Sasa · Bitwise Digital Solutions Ltd.
Privacy PolicyTerms of ServiceAccount Deletion