Payment platform · West Africa
The payment API
of Guinea.
Orange Money, MTN Money, Visa and Mastercard cards — behind a single API. For merchants who want to collect without integrating ten operators.
Open sandbox
No commitment,
no hidden fees.
Immediate signup, ready-to-use sandbox keys, merchant contract activated within days after KYC.
p99 latency
< 300ms
average response time
12,4M
available today
Live activity
Live-
OM+500k
INV-0142
Conakry
-
MT+250k
INV-0141
Kindia
-
+1,5M
INV-0140
Visa
4
countries · 3 currencies
# HMAC-SHA256 authentication, idempotent, sandbox
curl -X POST https://sandbox-api.saalapay.com/api/v1/payments/initiate \
-H "X-SP-CLIENT-ID: pk_sandbox_..." \
-H "X-SP-SIGNATURE: $SIGNATURE" \
-H "Idempotency-Key: $UUID" \
-d '{ "amount": 500000, "currency": "GNF", "method": "MOBILE_MONEY", "provider": "orange_money" }'
For whom?
One API,
three very concrete use cases.
T2 2026 fees
847 / 1,200 parentsCollected
211,7M GNF
Remaining
88,3M GNF
Recent payments
- Diallo Aïssata · Orange +250k
- Camara Mohamed · MTN +250k
- Barry Mariama · Visa +250k
École Lumière — Conakry
Collect tuition fees
without chasing parents.
Each term, École Lumière bills 1,200 families. Before SaalaPay, the office collected cash, lost receipts, spent two weeks tracking late payments. Today, every parent pays from their phone, the school wallet credits automatically.
- Per-parent payment link — Sent by SMS or WhatsApp with amount and due date pre-filled.
- Automatic reconciliation — Each payment received matched to its invoice, zero manual entry.
- Sub-wallets per classroom — Cafeteria, transport, supplies — native splits, no external table.
Indigo blue wax fabric
2 yards · 100% cotton
185 000 GNF
Payment method
→ Webhook received payment.succeeded
POST /shop/orders/482/confirm · 142ms · 200 OK
Niani Boutique — Madina Market
Sell online without giving up
Mobile Money.
Niani sells wax fabric on her WooCommerce site. Her customers are in Conakry, Dakar, Paris — each with their preferred method. One SaalaPay integration: Orange Money for locals, Visa for the diaspora, MTN for neighbors.
- WooCommerce plugin or REST — 50-line integration, or official plugin maintained by the team.
- Idempotent webhooks — No double-confirmation, even if the webhook arrives twice.
- GNF · XOF · EUR convertible — At today's rate, traced on each transaction.
Ramadan 2026 campaign
School cafeteria for 380 children
Goal
50M
Collected
38,4M
Donors
412
Immutable audit log
- 14:32 · don.received · 50 000 GNF · Diaspora-FR
- 14:31 · don.received · 25 000 GNF · Conakry
- 14:28 · don.received · 100 000 GNF · Anonymous
- 14:24 · don.received · 10 000 GNF · Conakry
Action Santé Guinée — Conakry
Collect donations,
trace every cent.
An NGO can't afford to lose a donor for lack of a payment method. Action Santé Guinée collects via Mobile Money for the local base, by card for the diaspora. Each transaction writes a line in an immutable journal — auditable to the cent.
- Hosted donation pages — One-shot or recurring campaign, shareable by link.
- Immutable audit log — Before/after snapshots per movement, one-click CSV export.
- Charity preferential rate — Reduced commission on eligible donations.
Production-grade
Built to handle load
and survive operator outages.
HMAC-SHA256 auth
Signature on every request, 60s anti-replay window, hot key rotation.
Native idempotency
Idempotency-Key header honored, same call = same response, always.
Signed webhooks
HMAC + dedup by event-id on SaalaPay side, replay button available.
Immutable ledger
Before/after snapshots per movement, integrity verified on every write.
Native rate limiting
Limits per key, per IP, per endpoint. Atomic Lua on Redis.
Encrypted secrets
libsodium XSalsa20-Poly1305 on keys and secrets in DB.
For developers
A REST API
with no surprises.
No SDK required. You call an endpoint, you get a deterministic JSON response, you listen to a signed webhook. That's it.
-
HMAC-SHA256 authentication
Signature on every request, 60-second anti-replay window, hot key rotation.
-
Native idempotency
Idempotency-Key header supported — the same call returns the same response.
-
Signed and replayable webhooks
HMAC signature, server-side dedup, "replay" button in the dashboard.
-
Unlimited sandbox
Isolated subdomain (sandbox-api.saalapay.com), keys distinct from live.
# HMAC-SHA256 authentication, idempotent, sandbox
curl -X POST https://sandbox-api.saalapay.com/api/v1/payments/initiate \
-H "X-SP-CLIENT-ID: pk_sandbox_..." \
-H "X-SP-SIGNATURE: $SIGNATURE" \
-H "X-SP-TIMESTAMP: $TIMESTAMP" \
-H "Idempotency-Key: $UUID" \
-H "Content-Type: application/json" \
-d '{
"amount": 500000,
"currency": "GNF",
"method": "MOBILE_MONEY",
"provider": "orange_money",
"customer_phone": "+224611223344"
}'
// No SDK required — standard fetch is enough
const res = await fetch('https://sandbox-api.saalapay.com/api/v1/payments/initiate', {
method: 'POST',
headers: {
'X-SP-CLIENT-ID': process.env.SP_CLIENT_ID,
'X-SP-SIGNATURE': signature,
'X-SP-TIMESTAMP': timestamp,
'Idempotency-Key': crypto.randomUUID(),
'Content-Type': 'application/json',
},
body: JSON.stringify({
amount: 500000,
currency: 'GNF',
method: 'MOBILE_MONEY',
provider: 'orange_money',
}),
});
const { id, status, redirect_url } = await res.json();
// With any HTTP client (cURL, Guzzle, fetch...)
$ch = curl_init('https://sandbox-api.saalapay.com/api/v1/payments/initiate');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-SP-CLIENT-ID: ' . $clientId,
'X-SP-SIGNATURE: ' . $signature,
'X-SP-TIMESTAMP: ' . $timestamp,
'Idempotency-Key: ' . bin2hex(random_bytes(16)),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'amount' => 500000,
'currency' => 'GNF',
'method' => 'MOBILE_MONEY',
'provider' => 'orange_money',
]),
]);
$payment = json_decode(curl_exec($ch), true);
Estimate
How much does it cost
on your volume?
Public rates, no commitment. Beyond 50M XOF/month, a negotiated contract may apply.
≈ 10 M GNF · 117 € · 76 700 XOF
Estimated total cost
287 500 GNF
i.e. 2.88% of volume
FAQ
The recurring questions
How long does integration take?
What happens if a Mobile Money operator goes down?
How do settlements work?
Is SaalaPay licensed by BCRG or BCEAO?
Which countries beyond Guinea?
Is there a test environment?
Question not listed? Contact the team
Collect this quarter,
not in six months.
Immediate sandbox on signup, merchant contract activated within days after KYC verification. No setup fee.