Algerian cards cannot be charged automatically every month. Sell prepaid credit in dinars instead, and match each customer's usage to what each request costs you.
You built a product and you want to charge for it every month. Abroad, the customer enters a card once and the charge repeats by itself. Here, it stops at the first month.
This article shows the model that works with Edahabia and CIB: the customer deposits, then spends.
A monthly subscription relies on one thing: charging a saved card without the customer acting.
Recurring billing means charging a saved card on a schedule. Its job is to collect each month without asking the customer again.
Local card payments do not work that way. Each payment sends the customer to a payment page, where the cardholder confirms it, usually with a code received by SMS.
Can't I just save the customer's card and charge it every month?
No. Your app never holds the card, and the payment page asks the cardholder to confirm each payment. Without a fresh confirmation, there is no charge.
So a monthly plan turns into a monthly reminder. Some customers forget, their access stops, and your revenue becomes a guess.
The way out is the model your customers already know from phone credit. They deposit an amount once, and each use takes a little from it.
[Customer's Edahabia or CIB card] ──> [One deposit] ──> [Balance in DA] ──> [Each request takes its cost]The customer confirms one payment every few months instead of every month. You stop chasing renewals.
Write "deposit" on your pricing page, never "subscription". A customer who reads "subscription" expects the charge to repeat by itself.
Your own bill works the same way. OpenDunes takes each request's cost from your prepaid balance in dinars, so your costs and your customers' deposits move together.
Let's see right away what that gives with real numbers.
Your app answers with GPT-6 Luna, at about 0.11 DA a message on its model page, read on 5 October 2026. 100 messages cost you about 11 DA. If you charge your customer 25 DA for those 100 messages, each deposit covers your cost with room to spare.
Keep the two balances side by side. When a customer sends a request, your app calls the API, then takes the matching credit from that customer's balance.
Cut a customer off the moment their balance reaches zero.
Warn the customer when the balance runs low, with a link to deposit, so they deposit before anything stops.
The local cards were never built for automatic charges, as what the local cards were built to do explains. The wallet works with them, not against them.
Context: each of your customers sends about 300 messages a month, and your app runs on GPT-6 Luna.
Task: in a spreadsheet, work out what one customer costs you a month, then how long a 1,000 DA deposit lasts if you charge 0.25 DA a message.
Your cost: 300 × 0.11 DA, about 33 DA a month. Your customer pays 300 × 0.25 DA, 75 DA a month. A 1,000 DA deposit lasts about 13 months.
Local payment providers send a notification to your server when a payment completes. Credit the customer's balance only on that notification, never on the page the customer returns to.
Prepaid credit is how most people in Algeria already pay for their phone. Paying when they choose, with no surprise charge, is familiar ground.
Write your rule in your terms before the first deposit: say whether unused credit is refunded and whether it expires, and apply the same rule to everyone.
You now have a way to charge in dinars without a monthly card payment. To see how this fits with the other parts of building on the API from Algeria, go back to the guide Using the OpenAI API from Algeria.