Congo-Brazzaville Guide
Collect and send money in Congo-Brazzaville using MTN and Airtel on the same MarzPay APIs.
Use country: "CG", XAF amounts, and +242 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 Congo-Brazzaville wallet for your business.
- Subscribe to Congo-Brazzaville MTN and Airtel collection and/or disbursement services in the marketplace.
- Set a webhook URL (or pass
callback_urlon each request). Final status iscompletedorfailedonly.
Congo-Brazzaville essentials
- Always send
country: "CG"so the Congo-Brazzaville wallet is used - Use amounts in XAF. Optional
currency: "XAF"is accepted - Phones must be E.164: MTN +24206… or Airtel +24205… / +24204… (include the national leading 0)
- Same endpoints:
POST /collect-moneyandPOST /send-money referencemust be a UUID you generate- Provider is auto-detected from the phone (MTN and Airtel). Webhooks use that network name (e.g.
mtn), not a gateway name - Typical minimums start around XAF 100 (confirm your business limits)
This is Republic of the Congo, not DRC. Use country: "CG" and +242. DRC is country: "CD" and +243.
Pricing
Fees come from the public pricing page. Custom business rates may differ.
| Network | Collections | Disbursements |
|---|---|---|
| MTN | 5% Successful collections only | 2% Successful payouts only |
| Airtel | 5% Successful collections only | 2% Successful payouts only |
Collect money (Congo-Brazzaville)
Request payment from a customer’s MTN and Airtel wallet. The customer approves on their phone; you receive a webhook when the collection completes or fails.
- POST
/collect-moneywith amount,+242phone,country: "CG", 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="+242061234567"' \
--form 'amount="1000"' \
--form 'country="CG"' \
--form 'currency="XAF"' \
--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": "XAF"
},
"provider": "mtn",
"phone_number": "+242061234567",
"mode": "live"
}
}
}
Send money (Congo-Brazzaville)
Disburse to a MTN and Airtel wallet. You receive a webhook when the payout completes or fails.
- POST
/send-moneywith amount,+242phone,country: "CG", 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="+242061234567"' \
--form 'amount="1000"' \
--form 'country="CG"' \
--form 'currency="XAF"' \
--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": "XAF"
},
"provider": "mtn",
"phone_number": "+242061234567",
"mode": "live"
}
}
}
Payment links (Congo-Brazzaville)
Create a shareable /pay/{uuid} page. Customers enter a local Congo-Brazzaville 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": "Congo-Brazzaville payment",
"amount": 1000,
"country": "CG",
"currency": "XAF",
"is_fixed": true,
"callback_url": "https://your-app.com/webhook"
}'
Share data.payment_url. Full fields:
Payment Links API.
Webhooks
Congo-Brazzaville uses the same webhook envelope as Uganda and Kenya. Currency is XAF. 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": "XAF" },
"provider": "mtn",
"phone_number": "+242061234567"
},
"collection": {
"provider": "mtn",
"phone_number": "+242061234567",
"amount": { "formatted": "1000.00", "raw": 1000, "currency": "XAF" },
"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": "XAF" },
"provider": "mtn",
"phone_number": "+242061234567"
},
"disbursement": {
"provider": "mtn",
"phone_number": "+242061234567",
"amount": { "formatted": "1000.00", "raw": 1000, "currency": "XAF" },
"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 Congo-Brazzaville yet
These products remain Uganda-focused:
- Bill payments
- Bank transfer
- Airtime & data
- Card payments
- WhatsApp / USSD send-money (Uganda)