Meet a fictional but typical company: a 40-person design-collaboration SaaS in Berlin. Its Kenyan users love the product. Its Kenyan revenue is close to zero.
The founders did what European SaaS companies usually do. They priced in euros, plugged in a card processor, added a VAT line and moved on. Every African user who wanted to pay hit the same wall: a euro price, a card form, and an online card that often was not the account they actually used.
This is the story of how that company fixes it, step by step. Swap Berlin for Amsterdam, Paris or Stockholm; the steps are the same.
Step 1: find out who wants to pay
The team pulls six months of sign-ups by country. Kenya leads its African traffic, followed by Senegal and Ivory Coast, with a cluster in Cameroon from a single university that adopted the tool.
All four are live markets on Ultraner. That shapes the plan: shillings for Kenya, and the CFA franc for the other three, XOF in Senegal and Ivory Coast, XAF in Cameroon.
Had the cluster been in Lagos or Accra, the answer today would be "cards only", because Nigeria and Ghana are not live yet. Knowing that early saves a quarter of wasted work.
Step 2: decide how people will pay
In Kenya, the team leads with M-Pesa (Safaricom) and Airtel Money. In Senegal, Wave and Orange Money. In Ivory Coast, Orange Money, MTN MoMo and Wave. In Cameroon, MTN MoMo and Orange Money. Cards stay available everywhere, processed through Stripe, and PayPal sits alongside.
That ordering reflects how people actually hold money. The World Bank's Findex work shows mobile money doing the job of an account for a large share of adults in Sub-Saharan Africa 3. A euro card form treats them as unreachable. A phone prompt in their own currency treats them as customers.
Step 3: set prices people recognise
This is where the Berlin team spends most of its debate.
The euro plan is EUR 12 a month. A straight conversion to shillings gives an awkward, moving number. Instead they set:
- Kenya: a round KES price, reviewed each quarter against the euro.
- Senegal and Ivory Coast: a round XOF price.
- Cameroon: a round XAF price.
The CFA franc decision is unusually easy for a European company. Both the XOF and the XAF are pegged to the euro at a fixed rate, maintained by the regional central banks 1. A price set in XOF today is, in euro terms, the same price next year. For a euro-reporting company, that is as close to selling in euros as it gets without asking anyone to pay in euros.
The shilling floats, so the Kenyan price will drift against the euro. The team accepts a small band of drift and reprices only when it exceeds that band. Live rates are public on /fx.
For a euro-reporting company, the CFA franc is the easiest foreign currency in the world to price in.
Step 4: wire it in
The company already has a card integration for Europe. It does not touch it. For the four African markets, checkout sends customers to an Ultraner hosted checkout session that shows the right local methods, card and PayPal, in the local currency.
On the backend, one webhook confirms payment regardless of method. For mobile money there is no redirect: the customer approves on their phone, the webhook fires, the account is upgraded.
Monthly plans on mobile money run as subscriptions where each period's charge is a new prompt the customer approves, because no African mobile money network supports a stored, silently chargeable credential. Card plans renew automatically through Stripe. The team writes renewal emails for both cases.
For card buyers, Ultraner charges most currencies directly through Stripe 2, so a Kenyan paying by card sees shillings on the statement, not a euro charge with a conversion fee.
Step 5: bring the money home
Collected funds sit in the company's Ultraner balance in KES, XOF and XAF. Once a month, finance settles that balance to the company's German bank account by wire, converted to euros at Ultraner's published rate.
The economics:
- Collecting: no Ultraner fee. The mobile network's own charge applies and varies by market; the API can quote it for a specific payment before it happens.
- Settling to a European bank: 3%, plus 1% for an international transfer outside the United States, so 4%.
Settlement to a bank works in every country. Every converted transaction has its own page showing the rate, fee and net, which keeps the auditor happy. The schedule is on pricing.
Step 6: the European details
A few things the Berlin team had to handle that are specific to being an EU seller:
- VAT and local digital taxes. EU VAT rules govern how the company accounts for its own sales, and several African countries apply their own tax to digital services from foreign suppliers. The team checks each market before finalising whether its local price includes tax.
- Language. Senegal, Ivory Coast and Cameroon get French checkout copy and French cancellation terms.
- Data. Mobile money flows involve the customer's phone number, which is personal data under GDPR. The privacy notice says so and explains why it is collected.
What changed, and what didn't
The product did not change. The European checkout did not change. The finance stack gained one more balance and one monthly settlement.
What changed is that a Nairobi product manager can now pay for the tool she already uses, in shillings, from her phone, in about thirty seconds. And a Dakar design studio can put five seats on Wave instead of hunting for a company card.
Your version of this
- Rank your African sign-ups by country and match them to the live markets.
- For CFA franc markets, set a round price once. For floating currencies, set a repricing band.
- Add a hosted checkout for those markets; leave Europe alone.
- Choose a monthly settlement day and stick to it.
The docs cover the API if you would rather build the checkout yourself.




