Tanga: A Bitcoin SMS Wallet for Senegal Our Idea

The concept for Tanga came from observing payment failures in Dakar. We saw a market vendor unable to receive a digital payment because the customer had a basic feature phone. The transfer failed, and high fees made the transaction impractical.

This problem is common. In Senegal, "networked" usually means SMS and USSD, not reliable mobile data. The existing financial system is limiting. People face high inflation that devalues their savings. International remittances also have very high fees, often over 10 percent.

We saw Bitcoin as a possible solution because it is a decentralized global network. The challenge was making this complex technology usable for people without smartphones. The answer was the simple text message. We decided to connect the Bitcoin network to the SMS network. This led us to build Tanga, an SMS Bitcoin wallet to give people more financial control.

What We Learned

We learned that our initial assumptions were wrong. We approached this as a technology problem, but it was really about the users.

Trust is the most important factor. We were asking people to trust a new digital currency using simple text messages. Every command and confirmation had to be perfectly clear, fast, and reliable.

Simplicity is essential. Our user interface is a set of text commands, not an app. Commands like BALANCE, SEND, and RECEIVE needed to be simple in local languages like Wolof. The system also needed to handle small typing mistakes.

Local integration is key. Connecting with local telecom operators was much harder than using a global SMS API. We had to manage local rules, different pricing, and unreliable service.

Financial education is necessary. We could not just give people Bitcoin. We had to explain why it is different. Our most important feature became the educational material we provided. This included simple tutorials about self custody and volatility, which we sent by SMS and shared through community leaders.

How We Built Tanga

Tanga's architecture combines old and new technology to be very reliable.

The SMS Gateway. For the front end, we partnered with a local Senegalese telecom aggregator. This gives us a local shortcode for users to text. This was important for keeping SMS costs low.

The Command Parser. A backend service, built in Python with Django, gets the raw SMS data. It cleans and reads the text. It identifies the user by their phone number and figures out the command, for example, SEND 5000 771234567.

The Wallet Core. This is the center of Tanga. We run our own full Bitcoin node using btcd so we are independent of the network. We create a secure non custodial wallet for every user. The user's phone number is just an identifier. It does not hold the keys.

The Security Layer. This was our main focus. We use a mix of PINs sent by SMS and a time based one time password system over text. A user must confirm every SEND command with their PIN. We are also testing multi signature wallets. Tanga would hold one key and the user would hold another key that they can write down. This offers a true non custodial option.

Transaction Broadcasting. When a user texts SEND, the parser checks their PIN. The wallet core builds a Bitcoin transaction, signs it, and sends it to the network through our node. The user then receives an SMS confirmation with the transaction ID.

We use Satoshis or sats for all values in our SMS messages. This avoids confusing decimal points, for example, 10,000 sats instead of 0.0001 BTC.

The Challenges We Faced

Building Tanga was extremely difficult.

Security Versus Usability. Our biggest challenge is balancing security and usability. SMS is not a secure platform, so adding strong security like key management is hard. SIM swaps are a real danger. We manage this risk with limits, for example, a maximum of 50 USD per day, and by delaying large transfers. It is a constant problem.

Regulatory Uncertainty. The rules are not clear. Senegal does not ban cryptocurrency, but the regional central bank BCEAO is cautious. We are actively talking to regulators. We want to show them how we follow AML and KYC rules by linking user identities to their registered SIM cards.

Transaction Fees. Bitcoin's on chain fees can be unpredictable. An SMS system does not work well with the Lightning Network yet. When the network is busy, a 3 dollar fee can make a 10 dollar transaction pointless. We are handling this by batching payments together and paying for most of the fees ourselves right now. Our long term goal is to move to a layer 2 solution like Lightning.

Latency. A text message is fast, but a Bitcoin confirmation is slow. People are used to mobile money, which settles instantly. We had to teach users that "pending" or 0 conf is different from "confirmed" or 1 conf. We built a notification system that sends another text when the transaction is fully confirmed in a block.

Tanga is still new. But every user who receives their first sats without the internet proves our idea works. We are building a new way to access finance, one text message at a time.

Share this project:

Updates