Côte d'Ivoire Guide
Collect and send money in Côte d'Ivoire using MTN and Orange on the same MarzPay APIs.
Use country: "CI", XOF amounts, and +225 phones.
Before you start
- Create API keys in the dashboard. Authenticate with HTTP Basic:
Authorization: Basic base64(api_key:api_secret). See Getting Started. - Ask a superadmin to enable the Côte d'Ivoire wallet for your business.
- Subscribe to Côte d'Ivoire MTN and Orange collection and/or disbursement services in the marketplace.
- Set a webhook URL (or pass
callback_urlon each request). Final status iscompletedorfailedonly.
Côte d'Ivoire essentials
- Always send
country: "CI"so the Côte d'Ivoire wallet is used - Use amounts in XOF. Optional
currency: "XOF"is accepted - Phones must be E.164: MTN +22505… or Orange +22507… — 8 or 10 national digits (include the leading 0 when present)
- Same endpoints:
POST /collect-moneyandPOST /send-money referencemust be a UUID you generate- Provider is auto-detected from the phone (MTN and Orange). Webhooks use that network name (e.g.
mtn), not a gateway name - Typical minimums start around XOF 100 (confirm your business limits)
XOF is also used by Benin and Senegal — always send country: "CI" so the Côte d'Ivoire wallet is used.
Pricing
Fees come from the public pricing page. Custom business rates may differ.
| Network | Collections | Disbursements |
|---|---|---|
| MTN | 2.8% Successful collections only | 2.3% Successful payouts only |
| Orange | 3.5% Successful collections only | 3% Successful payouts only |
Collect money (Côte d'Ivoire)
Request payment from a customer’s MTN and Orange wallet. The customer approves on their phone; you receive a webhook when the collection completes or fails.
- POST
/collect-moneywith amount,+225phone,country: "CI", UUIDreference - Transaction starts as
pending/processing - Customer authorises the PIN prompt
- Webhook/callback settles to
completedorfailed - Optional: poll
GET /collect-money/{uuid}if you need a status safety net
Optional metadata — send up to 10 objects. Echoed on create (data.collection.metadata) and on webhooks (top-level metadata).
"metadata": [
{ "orderId": "ORD-123456789" },
{ "customerId": "customer@email.com", "isPII": true }
]
Example request
curl --location 'https://wallet.wearemarz.com/api/v1/collect-money' \
--header 'Authorization: Basic YOUR_API_CREDENTIALS' \
--form 'phone_number="+2250501234567"' \
--form 'amount="1000"' \
--form 'country="CI"' \
--form 'currency="XOF"' \
--form 'reference="123e4567-e89b-12d3-a456-426614174000"' \
--form 'description="Payment for services"' \
--form 'callback_url="https://your-app.com/webhook"' \
--form 'metadata=[{"orderId":"ORD-123456789"},{"customerId":"customer@email.com","isPII":true}]'
Example response
{
"status": "success",
"message": "Collection initiated successfully.",
"data": {
"transaction": {
"uuid": "4e7fb3fa-c13a-4b05-8acd-cf60ff68cb94",
"reference": "123e4567-e89b-12d3-a456-426614174000",
"status": "processing",
"provider_reference": null
},
"collection": {
"amount": {
"formatted": "1000.00",
"raw": 1000,
"currency": "XOF"
},
"provider": "mtn",
"phone_number": "+2250501234567",
"mode": "live"
}
}
}
Send money (Côte d'Ivoire)
Disburse to a MTN and Orange wallet. You receive a webhook when the payout completes or fails.
- POST
/send-moneywith amount,+225phone,country: "CI", UUIDreference - The network pays the recipient
- Webhook settles to
completedorfailed - Optional: poll
GET /send-money/{uuid}
Example request
curl --location 'https://wallet.wearemarz.com/api/v1/send-money' \
--header 'Authorization: Basic YOUR_API_CREDENTIALS' \
--form 'phone_number="+2250501234567"' \
--form 'amount="1000"' \
--form 'country="CI"' \
--form 'currency="XOF"' \
--form 'description="Payout to customer"' \
--form 'callback_url="https://your-app.com/webhook"' \
--form 'reference="123e4567-e89b-12d3-a456-426614174001"' \
--form 'metadata=[{"orderId":"ORD-123456789"},{"customerId":"customer@email.com","isPII":true}]'
Example response
{
"status": "success",
"message": "Send money initiated successfully.",
"data": {
"transaction": {
"uuid": "4e7fb3fa-c13a-4b05-8acd-cf60ff68cb94",
"reference": "123e4567-e89b-12d3-a456-426614174001",
"status": "processing"
},
"disbursement": {
"amount": {
"formatted": "1000.00",
"raw": 1000,
"currency": "XOF"
},
"provider": "mtn",
"phone_number": "+2250501234567",
"mode": "live"
}
}
}
Payment links (Côte d'Ivoire)
Create a shareable /pay/{uuid} page. Customers enter a local Côte d'Ivoire number and approve the PIN prompt. Same webhook shape as collect-money.
curl --location 'https://wallet.wearemarz.com/api/v1/payment-links' \
--header 'Authorization: Basic YOUR_API_CREDENTIALS' \
--header 'Content-Type: application/json' \
--data '{
"title": "Côte d'Ivoire payment",
"amount": 1000,
"country": "CI",
"currency": "XOF",
"is_fixed": true,
"callback_url": "https://your-app.com/webhook"
}'
Share data.payment_url. Full fields:
Payment Links API.
Webhooks
Côte d'Ivoire uses the same webhook envelope as Uganda and Kenya. Currency is XOF. Provider is the network (mtn), not a gateway name. Match your order with transaction.reference (the UUID you sent).
Collection completed
{
"event_type": "collection.completed",
"transaction": {
"uuid": "transaction-uuid",
"reference": "123e4567-e89b-12d3-a456-426614174000",
"status": "completed",
"amount": { "formatted": "1000.00", "raw": 1000, "currency": "XOF" },
"provider": "mtn",
"phone_number": "+2250501234567"
},
"collection": {
"provider": "mtn",
"phone_number": "+2250501234567",
"amount": { "formatted": "1000.00", "raw": 1000, "currency": "XOF" },
"mode": "live",
"provider_transaction_id": "ABC123"
},
"metadata": [
{ "orderId": "ORD-123456789" }
]
}
Send money completed
{
"event_type": "disbursement.completed",
"transaction": {
"uuid": "transaction-uuid",
"reference": "123e4567-e89b-12d3-a456-426614174001",
"status": "completed",
"amount": { "formatted": "1000.00", "raw": 1000, "currency": "XOF" },
"provider": "mtn",
"phone_number": "+2250501234567"
},
"disbursement": {
"provider": "mtn",
"phone_number": "+2250501234567",
"amount": { "formatted": "1000.00", "raw": 1000, "currency": "XOF" },
"mode": "live",
"provider_transaction_id": "ABC123"
}
}
Failed outcomes use collection.failed / disbursement.failed with the same envelope. Signing and more examples:
Webhooks guide.
Check status
Callbacks are primary. To poll MarzPay (not the network directly):
GET https://wallet.wearemarz.com/api/v1/collect-money/{uuid}GET https://wallet.wearemarz.com/api/v1/send-money/{uuid}
Those endpoints return the local MarzPay transaction. Status updates when the webhook arrives.
Not available for Côte d'Ivoire yet
These products remain Uganda-focused:
- Bill payments
- Bank transfer
- Airtime & data
- Card payments
- WhatsApp / USSD send-money (Uganda)