If you are building an app or e-commerce site in Algeria, you must integrate CIB and Edahabia payments via the SATIM gateway. It is the worst-documented integration in the entire Algerian tech ecosystem. This guide is what we wish we had when we did our first SATIM integration in 2020.
CIB vs Edahabia — what is the difference?
CIB is the standard bank card (~8 million cards). Edahabia is Algeria Post's prepaid card (~20 million cards — the most common card in Algeria). If you do not support Edahabia, you exclude 70% of potential customers.
Both go through SATIM. You integrate the SATIM gateway once, it handles both.
«If you do not support Edahabia, you exclude 70% of potential customers in Algeria.»
Integration architecture — the complete flow
Standard SATIM is a redirect flow in 5 steps: 1. POST to SATIM API → 2. Client redirected to SATIM payment page → 3. Client enters card info → 4. SATIM redirects back with result code → 5. Backend verifies and confirms.
Critical: NEVER trust the redirect alone. Always use the server-to-server (S2S) callback to confirm payment backend-side. Clients close their browser before redirect — without S2S callback, you think payment failed when it succeeded.
The 5 traps the documentation does not mention
Trap 1: SATIM sandbox is often down. Test on weekends — sandbox is more stable.
Trap 2: Not all error codes are documented. Log everything. Send unknowns to SATIM support — they reply in 2-5 business days.
Trap 3: S2S callback sometimes arrives BEFORE client redirect. Use a "pending confirmation" state in your database, not just paid/unpaid.
Trap 4: CIB and Edahabia have different transaction limits. CIB: 200,000 DZD. Edahabia: 100,000 DZD. Exceeding = silent rejection.
Trap 5: Your SSL certificate must be perfect. SATIM verifies your return URL certificate. Self-signed or expired = callback never arrives.
«NEVER trust the redirect alone. The server-to-server callback is mandatory.»
Recommended tech stack
Backend: Node.js (NestJS) or Python (Django/FastAPI). Avoid PHP for new integrations.
Database: PostgreSQL with dedicated `payment_transactions` table. Index on status.
Queue: Redis/Bull for deferred verification jobs if S2S callback does not arrive in 5 minutes.
Monitoring: Log every SATIM request and callback with timestamps.
Real timeline and cost
If you already have a backend: 3-6 weeks, 300K–800K DZD.
From scratch (new e-commerce): 8-12 weeks, 1.5–3M DZD. SATIM integration is ~30% of the work.
SATIM fees: 1.5-2.5% commission per transaction. No monthly fixed fees. Merchant account + SATIM contract: 2-4 weeks for paperwork.
