Websites9 min read

Free Money Senegal: API integration + technical considerations 2026

Mohamed Bah·Fondateur, Kolonell
May 10, 2026
Share:
Free Money Senegal: API integration + technical considerations 2026

Free Money Senegal: API integration + technical considerations 2026

Websites

Free Money is the wallet from Free Senegal (formerly Tigo). Younger than Wave and OM, but with a loyal user base (~3M Free SN subscribers). Adding it as a 4th e-commerce option captures the 8-12% of carts you'd otherwise lose.

TL;DR

- Free Money API: available via PayDunya/CinetPay (recommended) OR direct integration via Free partner.

- Fees: 2.5% (via PayDunya) or 1.8-2.2% (direct negotiated).

- 2026 Free Money volume: ~3M active subscribers in Senegal, ~12% mobile money market share.

Why integrate Free Money

Field case: youth-adult fashion store in Dakar, 18-30 audience:

  • 51% pay Wave
  • 28% pay Orange Money
  • 11% pay Free Money
  • 10% pay card or cash

Without Free Money, those 11%:

  • 6% manage with another wallet (friction)
  • 5% abandon cart

At 100M XOF/month volume, that's 5M XOF/month lost.

PayDunya supports Free Money since 2023. The standard checkout mode includes Free Money with no extra config.

`ts

// See full PayDunya tutorial for basic invoice

const invoice = await createPayDunyaInvoice({

orderId: 'ord_123',

totalXof: 8500,

items: [...],

});

// PayDunya hosted page will offer Wave + OM + Free Money + card

`

Pros:

  • No separate integration
  • Unified IPN webhook
  • Single settlement to your IBAN
  • Fees ~2.5%

Cons:

  • 0.5-1% aggregator margin vs direct
  • No custom UI possibility (hosted page)

Option 2 — Direct via Free partner

Free Senegal opened a business partner program in 2024. Conditions:

  • Full company KYC (RCCM, NINEA, IBAN)
  • Expected monthly volume >5M XOF
  • Free Senegal technical audit
  • Onboarding: 4-8 weeks

Exposed API:

  • /auth/token — OAuth2
  • /payment/initiate — start payment
  • /payment/status/{id} — verify status
  • HMAC-SHA256 signed webhook

`ts

const FM_BASE = 'https://api.free.sn/v1';

async function getToken() {

const auth = Buffer.from(${process.env.FM_CLIENT_ID}:${process.env.FM_CLIENT_SECRET}).toString('base64');

const res = await fetch(${FM_BASE}/auth/token, {

method: 'POST',

headers: { 'Authorization': Basic ${auth}, 'Content-Type': 'application/x-www-form-urlencoded' },

body: 'grant_type=client_credentials&scope=payment',

});

return (await res.json()).access_token;

}

export async function initFreeMoneyPayment(orderId: string, amountXof: number, payerMsisdn: string) {

const token = await getToken();

const res = await fetch(${FM_BASE}/payment/initiate, {

method: 'POST',

headers: { 'Authorization': Bearer ${token}, 'Content-Type': 'application/json' },

body: JSON.stringify({

external_id: orderId,

amount: amountXof,

currency: 'XOF',

payer_msisdn: payerMsisdn,

callback_url: 'https://kolonell.com/api/webhooks/free-money',

description: Order ${orderId},

}),

Need a professional website?

Kolonell builds websites that attract clients, optimized for the Sénégalese market. Free quote in 2 minutes.

});

return res.json();

}

`

Free Money user flow

`

[Checkout] → [Enter Free Money number] → init API → OTP SMS sent

[Customer types OTP]

[Free validation → IPN notif]

[Order moves to "paid"]

`

Total: 30-90 seconds.

Free Money webhook

`ts

import crypto from 'crypto';

export async function POST(req: NextRequest) {

const body = await req.text();

const sig = req.headers.get('x-free-signature') || '';

const expected = crypto.createHmac('sha256', process.env.FM_WEBHOOK_SECRET!)

.update(body).digest('hex');

if (!crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected))) {

return NextResponse.json({ error: 'invalid_signature' }, { status: 401 });

}

const event = JSON.parse(body);

const existing = await prisma.paymentEvent.findUnique({ where: { externalId: event.transaction_id } });

if (existing) return NextResponse.json({ ok: true, deduped: true });

if (event.status === 'COMPLETED') {

await prisma.$transaction([

prisma.paymentEvent.create({ data: { ... } }),

prisma.order.update({ where: { id: event.external_id }, data: { status: 'paid' } }),

]);

}

return NextResponse.json({ ok: true });

}

`

Common pitfalls

  • Number must be Free — verify prefix (771-779-..., not all, see official Free SN list).
  • OTP timeout — user has 90s to enter OTP. Past that, transaction expires.
  • User-side Free fees — payer may be charged 1% by Free, clarify in UX.
  • UEMOA bank settlement — like OM, T+1 business day.

Free Money vs competitors (Senegal)

MetricWaveOMFree Money
2026 share~52%~38%~10%
Merchant fees1.0-2.0%1.8-2.3%1.8-2.5%
Public APIPartners only
Sandbox✓ via partner
SettlementT+1T+1T+1
OTP timeoutn/a (in-app)n/a90s

FAQ

Q: Does Free Money work outside Senegal?

A: No, it's a Senegal-local wallet. Ivory Coast equivalent = Moov Money. Mali = Moov / Sotelma Mobile Money.

Q: Need a Free Senegal merchant account?

A: Yes for direct mode. Free Pro account + validated IBAN. Not needed via PayDunya.

Q: OAuth token renewal?

A: Yes, ~1h expiration. Cache Redis 50 min, regenerate beyond.

Conclusion

Free Money is the 4th Senegalese wallet to absolutely offer when targeting youth audience. Via PayDunya, integration is free and instant. Direct with Free Senegal, ~0.5-1% fee savings but 4-8 weeks onboarding. Both valid, choice depends on volume.

Tags:#Free Money#Mobile Money#API#Senegal#Payments#Integration
Share:

Mohamed Bah

Fondateur, Kolonell

Passionate about digital and entrepreneurship in Africa, Mohamed has been helping Sénégalese businesses with their digital transformation since 2020. Founder of Kolonell, he believes every SME deserves a professional and accessible online présence.