Back to sh0
sh0

Building for Africa: Mobile Money, Local Pricing, and Why It Matters

Why we built sh0 from Abidjan with Mobile Money payments, 5-language support including Swahili, and pricing designed for African developers.

Thales & Claude | March 25, 2026 11 min sh0
africamobile-moneypricinglocalizationpaymentsself-hosted

sh0 was not built in San Francisco, London, or Singapore. It was built at a desk in Abidjan, by a CEO who deploys software to servers that sometimes lose power during rainy season and an AI CTO that has never experienced a power outage but understands the infrastructure implications of one.

This matters. Not as a marketing story, but as an engineering constraint that shaped every decision in the product. When your first users are developers in Lagos, Nairobi, Accra, and Abidjan, you do not build the same product you would build for developers in Brooklyn. You build a better one.

This is the story of the payment system, the pricing model, the language support, and the self-hosted architecture -- and why solving for Africa produces a product that serves everyone.

The Payment Problem

Try to buy a Heroku subscription from Abidjan. You need a Visa or Mastercard credit card. In West Africa, credit card penetration is approximately 3%. Most developers -- even employed, well-paid ones -- do not have an international card. They have Mobile Money.

Mobile Money is not a niche payment method. In sub-Saharan Africa, there are over 800 million registered Mobile Money accounts. In many countries, Mobile Money transaction volume exceeds traditional banking. Orange Money and MTN Mobile Money -- the two dominant providers in the region -- process more daily transactions than all commercial banks combined in several West African countries.

If your PaaS does not accept Mobile Money, you have excluded 97% of the developer market in West Africa. Not because they cannot afford your product. Because you will not accept their money.

ZeroFee: The Mobile Money Gateway

ZeroSuite built its own payment gateway: ZeroFee. It connects to over 135 Mobile Money providers across 18+ African countries. The integration lives in sh0-website as a checkout flow parallel to Stripe:

// routes/api/checkout/zerofee/+server.ts
export const POST: RequestHandler = async ({ request, locals }) => {
    const { plan, period } = await request.json();

// Validate plan and period const PRICES: Record> = { pro: { monthly: 1900, yearly: 19000 }, business: { monthly: 9700, yearly: 97000 } };

const amount = PRICES[plan]?.[period]; if (!amount) { return json({ error: 'Invalid plan or period' }, { status: 400 }); }

// Create ZeroFee checkout session const session = await createZeroFeeSession({ amount, currency: 'USD', customer_email: locals.user.email, metadata: { user_id: locals.user.id, plan, period }, success_url: ${origin}/account/billing?success=true, cancel_url: ${origin}/account/billing?canceled=true });

return json({ checkout_url: session.url }); }; ```

The user experience is straightforward: select a plan, choose "Mobile Money" instead of "Card", enter their phone number, approve the payment on their phone, and the license is activated. No card. No bank account. No international transaction fees eating 3-5% of their payment.

The dual payment system means sh0 serves both markets seamlessly. A developer in Berlin pays with Stripe. A developer in Dakar pays with Orange Money. Both get the same product, the same dashboard, the same features. The payment method is a detail, not a barrier.

The Pricing Model: $0 / $19 / $97

Most PaaS platforms price in a narrow band: $5-10 for a hobby tier, $20-25 for a pro tier, $50+ for teams. This pricing assumes North American and European purchasing power. It does not work in Africa.

We chose a different structure:

PlanPriceWhat You Get
Free$0Everything a solo developer needs: unlimited apps, terminal, file editor, cron, webhooks, preview environments, API keys, Docker Compose, YAML config, custom panel domain
Pro$19/monthOperational features: backups, alerts, uptime monitoring, status pages, code health analysis, stack snapshots, 90-day audit log
Business$97/monthTeam and scale: RBAC, team members, auto-scaling, BYOS clusters, 1-year audit log

The Free tier is deliberately generous. It includes features that competitors gate behind paid plans -- terminal access, cron jobs, preview environments, API keys. The reasoning is both philosophical and practical:

Philosophical: a developer in Nairobi who is building their first SaaS should not have to pay $10/month for a terminal. The tools to deploy and manage an application are not premium features. They are baseline functionality.

Practical: generous free tiers create loyal users. A developer who deploys their side project on sh0 for free becomes a developer who deploys their company's product on sh0 Pro when it starts making money. The conversion funnel starts with generosity, not gates.

The gap between Pro ($19) and Business ($97) is intentional. There is no $49 middle tier. The jump signals a clear boundary: $19 is for individual developers and small teams who need operational visibility. $97 is for organisations that need access control, team management, and compliance-grade audit trails. The price communicates the audience.

Five Languages, Including Swahili

Every string in the sh0 dashboard is translated into five languages:

LanguageCodeCoverage
EnglishenGlobal default
FrenchfrWest Africa, Central Africa, Maghreb
SpanishesGrowing tech ecosystem in Equatorial Guinea, global
PortugueseptMozambique, Angola, Cape Verde, Brazil
SwahiliswEast Africa (Kenya, Tanzania, Uganda, DRC)

These are not afterthought translations. Every session log in the sh0 development history shows the same pattern: implement the feature, write the English strings, then immediately add all five translations in the same commit. The i18n was never a phase -- it was part of the definition of done.

// i18n/sw.ts -- Swahili translations (excerpt)
export const sw = {
    nav: {
        apps: 'Programu',
        ai_chat: 'Mazungumzo ya AI',
        monitoring: 'Ufuatiliaji',
        cron_jobs: 'Kazi za Cron',
        backups: 'Hifadhi',
        settings: 'Mipangilio'
    },
    ai: {
        title: 'Msaidizi wa AI wa sh0',
        model_haiku: 'Haiku -- Haraka na Nafuu',
        model_sonnet: 'Sonnet -- Usawa Bora',
        model_opus: 'Opus -- Uwezo Mkuu',
        wallet_balance: 'Salio la Mkoba',
        no_key_title: 'Sanidi Ufikiaji wa AI',
        welcome: 'Habari! Mimi ni msaidizi wako wa AI wa sh0.'
    }
};

Swahili matters because East Africa has the fastest-growing developer community on the continent. Kenya's tech ecosystem -- centred in Nairobi's "Silicon Savannah" -- is producing startups, open-source contributors, and infrastructure engineers at an accelerating rate. A deployment platform that speaks Swahili is not a novelty. It is a signal: we built this for you.

The French translations deserve special attention. sh0 is built from a Francophone country. Every French string uses correct diacritics and orthography -- "Sauvegardes" capitalised correctly, every accent in place. This is not pedantry -- it is professionalism. Francophone developers notice incorrect French the way Anglophone developers notice "teh" instead of "the." A deployment platform that misspells its own UI labels does not inspire confidence. Every French string in sh0 was written with correct accents from the first commit.

Why Self-Hosted Matters in Africa

sh0 is a self-hosted PaaS. You install it on your own server. This is not a philosophical preference -- it is an infrastructure necessity for three reasons:

1. Data Sovereignty

Nigeria's Data Protection Act (NDPA) requires personal data of Nigerian citizens to be processed in Nigeria or in countries with adequate protection. Kenya's Data Protection Act has similar requirements. Ghana, South Africa, and Rwanda have their own frameworks. A managed PaaS that runs your application in us-east-1 may be non-compliant for African businesses handling local user data.

With sh0, the server is yours. You choose the location. You control where the data lives. Compliance becomes a configuration choice, not a vendor negotiation.

2. Latency

The nearest AWS region to West Africa is eu-west-1 (Ireland). The round-trip latency from Abidjan to Dublin is approximately 120ms. For a real-time application serving users in Abidjan, that is 120ms added to every API call, every database query, every asset load.

African hosting providers -- Hetzner (with a South Africa data centre), OVH, local providers like MainOne and Raxio -- offer servers physically located on the continent. sh0 runs on any Linux server with Docker. Deploy on a server in Johannesburg, Lagos, or Nairobi, and your latency drops to single-digit milliseconds for local users.

3. Cost

A $5/month Hetzner VPS gives you 4 GB of RAM, 40 GB of storage, and 20 TB of bandwidth. The equivalent on a managed PaaS would cost $20-50/month after you add a database, SSL, and a custom domain. For a developer in Accra earning a local salary, the difference between $5 and $50 per month is the difference between shipping a project and abandoning it.

sh0's self-hosted model means the platform cost is $0 (Free tier) or $19/month (Pro). The server cost is whatever the developer can afford. A $5 VPS runs sh0 with room to spare for several small applications.

The Competitor Gap: No Kubernetes Required

The dominant self-hosted PaaS tools -- Coolify, CapRover, Dokku -- all work. But they share a common assumption: the user understands containers, reverse proxies, SSL certificates, and server administration. Some assume Kubernetes knowledge.

In African developer communities, the path from "I can write a Django app" to "I can deploy it on a server" is steep. University computer science programs in West and East Africa teach programming but rarely teach infrastructure. A developer who graduated from the University of Lagos knows Python, knows JavaScript, knows SQL. They do not necessarily know how to configure Nginx, provision SSL certificates, or write a Dockerfile.

sh0 closes that gap. The install is a single command. The dashboard is a web UI. Deployment is git push. SSL is automatic. Docker is auto-installed. Caddy is auto-installed. The developer never writes a Dockerfile unless they want to -- sh0's build engine detects 19 tech stacks and generates the appropriate configuration automatically.

The AI assistant takes this further. Instead of reading documentation about container networking or reverse proxy configuration, the developer asks Claude: "My app is returning 502 errors, what is wrong?" Claude checks the actual server, diagnoses the actual problem, and explains the fix in plain language. The knowledge gap becomes irrelevant.

"Built from Abidjan"

sh0's tagline on the website is "The Self-Hosted PaaS Built in Rust." But internally, we think of it differently: built from Abidjan.

This is not a branding exercise. Building from Abidjan means:

  • Testing on real African internet. When the install script downloads an 11 MB binary, we know how long it takes on a 5 Mbps connection because that is our connection. The install script shows progress, uses compression, and verifies checksums because we have experienced corrupted downloads from unstable connections.
  • Testing on real African servers. The demo server runs on Hetzner, which has a data centre in Johannesburg. We tested the full deploy flow over a transatlantic SSH connection because that is the reality for African developers managing servers.
  • Pricing for real African budgets. The Free tier is generous because we know the market. The Pro tier is $19 because we know what developers in Abidjan, Lagos, and Nairobi can afford. The Mobile Money integration exists because we know how people pay.
  • Supporting real African languages. Swahili is not in the product because it increases our addressable market by some percentage. It is in the product because our users speak it.

The global market benefits from all of these decisions. A generous free tier, clear pricing, low latency on self-hosted servers, and a simple install process are not "African features." They are good product features that happen to emerge when you design for the hardest market first.

The Broader Thesis

There is a prevailing assumption in the tech industry that products built in Africa are built for Africa -- that they are local solutions for local problems, unlikely to compete globally. sh0 challenges that assumption.

sh0 is a Rust-based PaaS with an AI assistant powered by Claude, an MCP server with 25 tools, a three-tier safety system, cross-platform binaries, and a CI/CD pipeline that produces release artifacts for four platform combinations. It competes with Coolify, CapRover, and Dokku on features. It competes with Railway and Render on simplicity. And it does something none of them do: it accepts Mobile Money, speaks Swahili, and prices for the global majority.

The fourteen days of development documented in this series -- from cargo init to a live server with AI-powered debugging -- were conducted from Abidjan by a team of two: one human, one AI. Zero human engineers. Zero venture capital. Zero relocation to Silicon Valley.

If that sounds improbable, it is only because the industry has not been paying attention to what is possible when you combine an ambitious CEO, an AI CTO, and a desk in Abidjan.

---

This is article 30 in the "How We Built sh0.dev" series. The full series documents how Juste Thales Gnimavo (CEO) and Claude (AI CTO) built a complete PaaS in 14 days from Abidjan with zero human engineers. Read the series from the beginning: Day Zero: 10 Rust Crates in 24 Hours.

Share this article:

Responses

Write a response
0/2000
Loading responses...

Related Articles