Skip to main content
GET
/
v3
/
mobile
/
plans
List Mobile Plans
curl --request GET \
  --url https://api.oneclickdz.com/v3/mobile/plans \
  --header 'X-Access-Token: <api-key>'
{
  "success": true,
  "data": {
    "dynamicPlans": [
      {
        "code": "<string>",
        "name": "<string>",
        "operator": "<string>",
        "cost": 123,
        "isEnabled": true,
        "min_amount": 123,
        "max_amount": 123
      }
    ],
    "fixedPlans": [
      {
        "code": "<string>",
        "name": "<string>",
        "operator": "<string>",
        "cost": 123,
        "isEnabled": true,
        "amount": 123
      }
    ]
  },
  "meta": {
    "timestamp": "<string>"
  }
}

Overview

Returns comprehensive list of all available mobile top-up plans for Mobilis, Djezzy, Ooredoo, operators.
Plans are stable and rarely change. Safe to cache in your database with your own pricing.

Plan Types

  • Dynamic Plans
  • Fixed Plans
  • GetMenu Plans
Variable amount plans where you specify the amount within a range. Examples: Prepaid, Postpaid (Facture), International Required fields: - plan_code - MSSIDN (phone number) - amount (between min_amount and max_amount)

Response

success
boolean
required
Indicates if the request was successful
data
object
required
meta
object
required

Examples

curl https://api.oneclickdz.com/v3/mobile/plans \
  -H "X-Access-Token: YOUR_API_KEY"

Response Example

{
  "success": true,
  "data": {
    "dynamicPlans": [
      {
        "code": "GROS_MOBILIS",
        "name": "📱 GROS MOBILIS | جملة",
        "operator": "GMobilis",
        "isEnabled": true,
        "min_amount": 5000,
        "max_amount": 300000
      },
      {
        "code": "PREPAID_DJEZZY",
        "name": "📱 PREPAID | عادي",
        "operator": "Djezzy",
        "cost": 0.9925,
        "isEnabled": true,
        "min_amount": 100,
        "max_amount": 10000
      },
      {
        "code": "PREPAID_MOBILIS",
        "name": "📱 PREPAID | عادي",
        "operator": "Mobilis",
        "cost": 0.96,
        "isEnabled": true,
        "min_amount": 40,
        "max_amount": 3999
      },
      {
        "code": "FACTURE_DJEZZY",
        "name": "📋 FACTURE | فاتورة",
        "operator": "Djezzy",
        "cost": 0.9925,
        "isEnabled": true,
        "min_amount": 100,
        "max_amount": 10000
      }
    ],
    "fixedPlans": [
      {
        "code": "MIX50_DJEZZY",
        "name": "📱🌐 Auto | MIX 50",
        "operator": "Djezzy",
        "isEnabled": true,
        "cost": 0.9925,
        "amount": 50
      },
      {
        "code": "MIX1000_OOREDOO",
        "name": "📱🌐 AUTO | MIX 1000",
        "operator": "Ooredoo",
        "isEnabled": true,
        "cost": 0.99,
        "amount": 1000
      },
      {
        "code": "MIX500_MOBILIS",
        "name": "📱🌐 AUTO | MIX 500",
        "operator": "Mobilis",
        "isEnabled": true,
        "cost": 0.96,
        "amount": 500
      },
      {
        "code": "GETMENU_Mobilis",
        "name": "إظهار كافة العروض ",
        "operator": "Mobilis",
        "isEnabled": true,
        "cost": 0.96,
        "amount": 0
      }
    ]
  },
  "meta": {
    "timestamp": "2025-10-29T00:35:59.220Z"
  }
}

Plan Properties Explained

The cost field is your wholesale price multiplier:
  • 0.98 = You pay 98% of face value
  • For 1000 DZD top-up: your cost = 1000 × 0.98 = 980 DZD
  • Your profit margin: 1000 - 980 = 20 DZD (2%)
Important: Remove cost from responses to end users. Apply your own markup.
Dynamic plans have min_amount and max_amount: - Users can choose any amount within this range - Common range: 50 - 5000 DZD - Some operators allow up to 10,000 DZD Fixed plans have a single amount: - No amount selection needed - Directly activate the service - Common for special offers and data packs
The isEnabled field indicates:
  • true: Plan available for use
  • false: Temporarily disabled (maintenance, operator issues)
Always check this field before allowing users to select a plan.

Integration Strategy

1

Initial Load

Call this endpoint once when your application starts or during setup
2

Store Plans

Save plans to your database with your own pricing
CREATE TABLE mobile_plans (
  code VARCHAR PRIMARY KEY,
  name VARCHAR,
  operator VARCHAR,
  our_cost DECIMAL,
  sell_price DECIMAL,
  min_amount INT,
  max_amount INT,
  amount INT,
  is_enabled BOOLEAN,
  updated_at TIMESTAMP
);
3

Apply Markup

Calculate your selling price:
const ourCost = faceValue * plan.cost;
const markup = 0.05; // 5% profit
const sellPrice = ourCost * (1 + markup);
4

Serve to Users

Display plans with your pricing to end users
{
  code: plan.code,
  name: plan.name,
  operator: plan.operator,
  price: sellPrice, // Your price, not wholesale cost
  minAmount: plan.min_amount,
  maxAmount: plan.max_amount
}
5

Periodic Sync

Sync plans daily or when notified of changes
// Daily sync at midnight
cron.schedule('0 0 * * *', syncPlans);

Filtering Plans

const mobilisPlans = [
  ...data.dynamicPlans.filter((p) => p.operator === "Mobilis"),
  ...data.fixedPlans.filter((p) => p.operator === "Mobilis")
];
const djezzyPlans = [
  ...data.dynamicPlans.filter((p) => p.operator === "Djezzy"),
  ...data.fixedPlans.filter((p) => p.operator === "Djezzy")
];

Best Practices

Cache Plans

Store plans in your database to reduce API calls and improve performance

Remove Cost

Never expose wholesale cost to end users. Show only your retail prices

Check Enabled

Always verify isEnabled before displaying plans to users

Sync Regularly

Implement daily sync or webhook listener for plan updates