Transfer Money / Payout Payment (MTC)
Send payments or transfer money to customers via mobile money or bank accounts
Payout Payment (MTC)
Send money to customers via mobile money, bank transfer, or card (payment_option). Use trans_type MTC. Ideal for refunds, seller payouts, and disbursements.
Endpoint
POST https://api.bridgeagw.com/make_paymentRequest Headers
Authorization: Basic <base64_encoded_credentials>
Content-Type: application/jsonRequest Body
{
"service_id": 1,
"reference": "Refund for Order #123",
"customer_number": "0244000001",
"transaction_id": "PAYOUT_001",
"trans_type": "MTC",
"amount": 25.50,
"nw": "MTN",
"nickname": "John Doe",
"payment_option": "MOM",
"currency_code": "GHS",
"currency_val": "1",
"callback_url": "https://your-site.com/webhook/payout-status",
"request_time": "2025-01-15 14:30:00"
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
service_id | integer | Yes | Your service identifier |
reference | string | Yes | Payout reference/description |
customer_number | string | Yes | Phone (mobile money), bank account, or card number |
transaction_id | string | Yes | Unique transaction identifier |
trans_type | string | Yes | Must be MTC |
amount | number | Yes | Payout amount |
nw | string | Yes | Network or bank code (see tables below) |
nickname | string | Yes | Customer display name |
payment_option | string | Yes | MOM (mobile money), BNK (bank), or CRD (card) |
currency_code | string | No | Currency code (e.g. GHS) |
currency_val | string | No | Currency value |
callback_url | string | Yes | Webhook URL for notifications |
request_time | string | Yes | Request timestamp |
Supported Networks
Match payment_option to the route: MOM with mobile codes, BNK with bank codes, CRD with card codes.
Mobile Money
| Network | Code |
|---|---|
| MTN Mobile Money | MTN |
| Telecel Cash | VOD |
| AirtelTigo Money | AIR |
Cards
| Network | Code |
|---|---|
| Mastercard | MAS |
| Visa | VIS |
Banks
| Bank | Code |
|---|---|
| Access Bank | ACB |
| ABSA Bank | ABS |
| ADB | ADB |
| Apex Bank | ARB |
| Bank of Ghana | BOG |
| BOA | BOA |
| CAL Bank | CAL |
| CBG | CBG |
| Ecobank Ghana | ECO |
| FAB | FAB |
| FBN Bank | FBN |
| Fidelity Bank | FIB |
| FNB | FNB |
| GCB Bank | GCB |
| GHL Bank | GHL |
| GT Bank | GTB |
| NIB | NIB |
| Omni Bank | OMN |
| PBL | PRB |
| Republic Bank | RPB |
| SG | SGB |
| Services Integrity Savings & Loans | SIS |
| Standard Chartered | SCB |
| Stanbic Bank | STB |
| UBA | UBA |
| UMB | UMB |
| Zeepay Ghana | ZEE |
| Zenith Bank | ZEB |
Response
Success (202)
{
"response_message": "Request successfully received for processing",
"response_code": "202"
}Error Example
{
"response_message": "You are not allowed to use this service",
"response_code": "100"
}Example Usage
curl -X POST "https://api.bridgeagw.com/make_payment" \
-H "Authorization: Basic <your_credentials>" \
-H "Content-Type: application/json" \
-d '{
"service_id": 1,
"reference": "Refund for Order #123",
"customer_number": "0244000001",
"transaction_id": "PAYOUT_001",
"trans_type": "MTC",
"amount": 25.50,
"nw": "MTN",
"nickname": "John Doe",
"payment_option": "MOM",
"currency_code": "GHS",
"currency_val": "1",
"callback_url": "https://your-site.com/webhook/payout-status",
"request_time": "2025-01-15 14:30:00"
}'const response = await fetch('https://api.bridgeagw.com/make_payment', {
method: 'POST',
headers: {
'Authorization': 'Basic <your_credentials>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
service_id: 1,
reference: "Refund for Order #123",
customer_number: "0244000001",
transaction_id: "PAYOUT_001",
trans_type: "MTC",
amount: 25.50,
nw: "MTN",
nickname: "John Doe",
payment_option: "MOM",
currency_code: "GHS",
currency_val: "1",
callback_url: "https://your-site.com/webhook/payout-status",
request_time: "2025-01-15 14:30:00"
})
});
const result = await response.json();
console.log(result);import requests
url = "https://api.bridgeagw.com/make_payment"
headers = {
"Authorization": "Basic <your_credentials>",
"Content-Type": "application/json"
}
data = {
"service_id": 1,
"reference": "Refund for Order #123",
"customer_number": "0244000001",
"transaction_id": "PAYOUT_001",
"trans_type": "MTC",
"amount": 25.50,
"nw": "MTN",
"nickname": "John Doe",
"payment_option": "MOM",
"currency_code": "GHS",
"currency_val": "1",
"callback_url": "https://your-site.com/webhook/payout-status",
"request_time": "2025-01-15 14:30:00"
}
response = requests.post(url, headers=headers, json=data)
result = response.json()
print(result)Use "payment_option": "BNK" for bank payouts (set customer_number and nw to the bank code). Use "payment_option": "CRD" for card payouts.
Flow
- POST payout with valid
customer_number,nw, andpayment_option. - Platform verifies your payout balance.
- Transfer is processed; the customer gets a network notification where applicable.
- Your
callback_urlreceives final status (Callbacks).
Balance
Ensure sufficient payout balance before sending. Check Get Account Balance; fund via Deposit to Wallet if needed.
Sandbox testing
In sandbox mode, mobile money payouts (payment_option: "MOM") use the same MSISDN allowlist as collections. The last-digit outcome rule applies. See the API Reference sandbox overview for the full allowlist.
Bank (BNK) and card (CRD) payouts are not available in sandbox — use MOM for testing.
| Scenario | customer_number | nw | Expected response_code | Sync body |
|---|---|---|---|---|
| Success | 0244000001 | MTN | 202 | Includes "status": "success" |
| Success (Vodafone) | 0200000002 | VOD | 202 | Includes "status": "success" |
| Failure | 0244000009 | MTN | 015 | No callback |
| Invalid | 0240000000 | MTN | 019 | No callback |
A successful payout 202 response in sandbox includes a "status": "success" field on the sync response body (in addition to the normal 202 on collections).
Example sandbox request:
{
"service_id": 12345,
"reference": "Payout ref",
"customer_number": "0200000002",
"transaction_id": "PAYOUT-SANDBOX-001",
"trans_type": "MTC",
"amount": 10,
"nw": "VOD",
"payment_option": "MOM",
"callback_url": "https://your-site.com/webhook/payout-status",
"request_time": "2026-01-15T14:30:00Z"
}