Authentication
All API requests require authentication via a Bearer token in the Authorization header. You can generate and manage API keys from your dashboard after signing up.
API Key Format
Authorization: Bearer jd_live_abc123def456xyz789API keys are prefixed with jd_ and are shown only once at creation. Store them securely — treat them like passwords.
Errors
The API uses standard HTTP status codes. All errors return a JSON object with an error field describing what went wrong.
Error Response Format
{
"error": "A human-readable error message describing what went wrong"
}HTTP Status Codes
Rate Limits
API requests are limited to 100 requests per minute per API key. Rate limit headers are included in all responses so you can track your usage.
Rate Limit Headers
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1625097600X-RateLimit-LimitMax requests per window
X-RateLimit-RemainingRequests remaining in window
X-RateLimit-ResetUnix timestamp when window resets
Bundles
Retrieve available data bundles with pricing information. Optionally filter by network.
/bundlesList all active data bundles
Parameters
networkoptionalFilter by network — mtn, telecel, or airteltigo
Response
{
"bundles": [
{
"id": "cm3abc123def456",
"network": "mtn",
"sizeGb": 5,
"validityDays": 7,
"priceGHS": 15.50
},
{
"id": "cm3xyz789ghi012",
"network": "mtn",
"sizeGb": 10,
"validityDays": 14,
"priceGHS": 28.00
}
]
}Orders
Create new data bundle orders and check their delivery status.
/ordersCreate a new data bundle order
Parameters
networkrequiredNetwork: mtn, telecel, or airteltigo
sizeGboptionalCustom size in GB (1–100)
bundleIdoptionalPreset bundle ID (alternative to network + sizeGb)
recipientPhonerequiredRecipient phone number (e.g. 0241234567)
callbackUrloptionalWebhook URL for status updates
Response
{
"orderId": "cm3order123abc",
"authorizationUrl": "https://checkout.moolre.com/pay/ref_abc123xyz789",
"reference": "ref_abc123xyz789",
"expiresAt": "2026-07-07T09:00:00Z"
}/orders/{orderId}Retrieve order status and details
Parameters
orderIdrequiredOrder ID returned from order creation
Response
{
"id": "cm3order123abc",
"status": "DELIVERED",
"network": "mtn",
"sizeGb": 5,
"validityDays": 7,
"recipientPhone": "0241234567",
"amountGHS": 15.50,
"externalRef": "ref_abc123xyz789",
"supplierRef": "sup_456def",
"createdAt": "2026-07-07T08:30:00Z",
"deliveredAt": "2026-07-07T08:31:15Z"
}Networks
List all supported mobile networks in Ghana available for data bundle purchases.
/networksList all supported networks
Response
{
"networks": [
{
"id": "mtn",
"name": "MTN",
"color": "#FFD700",
"textColor": "#000000",
"description": "MTN Ghana data bundles"
},
{
"id": "telecel",
"name": "Telecel",
"color": "#E4002B",
"textColor": "#FFFFFF",
"description": "Telecel Ghana data bundles"
},
{
"id": "airteltigo",
"name": "AirtelTigo",
"color": "#3654FF",
"textColor": "#FFFFFF",
"description": "AirtelTigo Ghana data bundles"
}
]
}Webhooks
Receive real-time notifications when your order status changes. Configure your webhook endpoint URL when creating orders via the callbackUrl parameter.
Webhook Events
order.createdOrder was created and is pending paymentorder.paidPayment confirmed — order is being fulfilledorder.deliveredData bundle has been delivered to recipientorder.failedOrder failed during fulfillmentorder.refundedOrder was refundedWebhook Payload
{
"event": "order.delivered",
"orderId": "cm3order123abc",
"status": "DELIVERED",
"timestamp": "2026-07-07T08:31:15Z"
}Your endpoint must respond with 200 OK within 5 seconds. We'll retry up to 3 times with exponential backoff if your endpoint doesn't respond.
Need help? Contact support or get started with your integration.