Payer Gateway • API Docs • v3.0.0

Payer Gateway API Documentation

Integration guide for authentication, mobile collections, transfers, card transactions, bank transfers, balances, transaction status, and transaction search.

Getting Started

Use the base URL below for all API calls. Generate a bearer token first, then pass it in the Authorization header for subsequent requests.

https://api.payer-gateway.com
Version: 3.0.0
Updated: March 2026

Authentication

To perform API operations, you need to first generate a token using the username and password issued during setup. The token will be used in the Authorization header for subsequent operations.

GET https://api.payer-gateway.com/api/v1

Headers

Authorization: Basic Y29sbHM6Y29tZXRhcHBtYWlu

Example cURL Request

curl --location 'https://api.payer-gateway.com/api/v1' \
--header 'Authorization: Basic Y29sbHM6Y29tZXRhcHBtYWlu'
Authentication Flow

Mobile APIs

STK Push (C2B)

Initiate an STK push to request payment from a customer's mobile money account.

POST https://api.payer-gateway.com/api/v1/mobile/initiate

Headers

Authorization: Bearer <token>

Request Body

{
  "impalaMerchantId": "{{username}}",
  "displayName": "AVIATOR",
  "currency": "KES",
  "amount": 10,
  "payerPhone": "254768899729",
  "mobileMoneySP": "M-Pesa",
  "externalId": "ImpadlTdest2",
  "callbackUrl": "https://97e6-217-21-116-242.ngrok-free.app/"
}

Sample Response

{
  "message": "Payment initiation successful",
  "secureId": "qdml8553ZeInavKorBHzLA==",
  "transactionId": "ImpadlTdest2"
}

Callback Success Response

{
  "amount": 10,
  "currency": "KES",
  "externalId": "ImpadlTdest25",
  "netAmount": 10,
  "secureId": "i1FHTQgFpHP0g-MRacZXUQ==",
  "transactionReport": "COMPLETE",
  "transactionStatus": "COMPLETE"
}

Callback Failed Response

{
  "amount": 10,
  "currency": "KES",
  "externalId": "ImpadlTdest25",
  "netAmount": 10,
  "secureId": "6S4mi15UgO2xYkjjyqH4gA==",
  "transactionReport": "FAILED",
  "transactionStatus": "FAILED"
}
STK Push Flow

Money Transfer (B2C)

Transfer money from your merchant account to a customer's mobile money account.

POST https://api.payer-gateway.com/api/v1/mobile/transfer

Headers

Authorization: Bearer <token>

Request Body

{
  "impalaMerchantId": "{{username}}",
  "currency": "KES",
  "amount": 10,
  "recipientPhone": "254768899729",
  "mobileMoneySP": "M-Pesa",
  "externalId": "joeltest404",
  "callbackUrl": "https://97e6-217-21-116-242.ngrok-free.app/"
}

Sample Response

{
  "message": "Payment initiation successful",
  "secureId": "qdml8553ZeInavKorBHzLA==",
  "transactionId": "a392-45d1-93c1-58f9447915e717138558"
}

Callback Success Response

{
  "amount": 10,
  "currency": "KES",
  "externalId": "joeltest404",
  "netAmount": 10,
  "receiverPartyPublicName": "07688XXXX - Collins Williams",
  "secureId": "4p-LIGOa5iO-1xjDR_bZZg==",
  "transactionCompletedDateTime": "11.02.2025 01:44:17",
  "transactionReceipt": "TBB8KE0GQW",
  "transactionReport": "COMPLETE",
  "transactionStatus": "COMPLETE"
}

Callback Failed Response

{
  "amount": 10,
  "currency": "KES",
  "externalId": "ImpadlTdest2",
  "netAmount": 10,
  "secureId": "ldFuXRQn_JmCVoili4ItEw==",
  "transactionReport": "FAILED",
  "transactionStatus": "FAILED"
}

Card Transaction

Process card payments through a secure payment gateway.

POST https://api.payer-gateway.com/api/v1/card/initiate

Headers

Authorization: Bearer <token>

Request Body

{
  "impalaMerchantId": "{{username}}",
  "currency": "USD",
  "amount": 1,
  "mobileMoneySP": "card",
  "externalId": "ImpadlTdest2",
  "redirectUrl": "backtoyoursite.com",
  "callbackUrl": "https://8bd0-2c0f-fe38-2413-2c98-7114-6990-db59-11c.ngrok-free.app/mc/log.php"
}

Sample Response

{
  "cardLink": "https://api.payer-gateway.com/uba.php?data=YW1vdW50PTEuMDAmbWVyY2hhbnQ9YXBwJmNhbGxiYWNrPWh0dHBzOi8vOGJkMC0yYzBmLWZlMzgtMjQxMy0yYzk4LTcxMTQtNjk5MC1kYjU5LTExYy5uZ3Jvay1mcmVlLmFwcC9tYy9sb2cucGhwJnJlZGlyZWN0PU9XWEpKRFVNZ1B2aDlYUWhTQnk5eGc9PSZleHRlcm5hbGlkPUltcGFkbFRkZXN0Mg==",
  "message": "card Payment initiation successful",
  "secureId": "OWXJJDUMgPvh9XQhSBy9xg=="
}

Callback Success Response

{
  "transactionStatus": "COMPLETED",
  "transactionReport": "SUCCESS",
  "currency": "KES",
  "amount": "5.00",
  "netAmount": "5.00",
  "secureId": "8e6bfa77-4f2a-4ff6-af48-ef774f2178ca",
  "externalId": "BoomW",
  "redirectUrl": "bRbHRh6Tmi1mBNUzKKTtzA=="
}

Callback Failed Response

{
  "transactionStatus": "FAILED",
  "transactionReport": "N/A",
  "currency": "KES",
  "amount": "5.00",
  "netAmount": "5.00",
  "secureId": "8e6bfa77-4f2a-4ff6-af48-ef774f2178ca",
  "externalId": "BoomW",
  "redirectUrl": "bRbHRh6Tmi1mBNUzKKTtzA=="
}

Bank Transfer

Initiate a bank transfer payment request. This endpoint follows the same structure as the STK Push initiate endpoint, but uses bank-specific fields instead of mobile money fields.

Key Differences from Mobile Initiate
mobileMoneySP is replaced with bankName, and payerPhone is replaced with accountNumber.
POST https://api.payer-gateway.com/api/v1/bank/initiate

Headers

Authorization: Bearer <token>

Request Body

{
  "impalaMerchantId": "{{username}}",
  "displayName": "AVIATOR",
  "currency": "KES",
  "amount": 10,
  "accountNumber": "1234567890",
  "bankName": "Equity Bank",
  "externalId": "ImpadlTdest2",
  "callbackUrl": "https://97e6-217-21-116-242.ngrok-free.app/"
}

Field Descriptions

  • accountNumber: The bank account number
  • bankName: The name of the bank
  • All other fields remain the same as the mobile initiate endpoint

Sample Response

{
  "message": "Payment initiation successful",
  "secureId": "qdml8553ZeInavKorBHzLA==",
  "transactionId": "ImpadlTdest2"
}

Callback Success Response

{
  "amount": 10,
  "currency": "KES",
  "externalId": "ImpadlTdest25",
  "netAmount": 10,
  "secureId": "i1FHTQgFpHP0g-MRacZXUQ==",
  "transactionReport": "COMPLETE",
  "transactionStatus": "COMPLETE"
}

Callback Failed Response

{
  "amount": 10,
  "currency": "KES",
  "externalId": "ImpadlTdest25",
  "netAmount": 10,
  "secureId": "6S4mi15UgO2xYkjjyqH4gA==",
  "transactionReport": "FAILED",
  "transactionStatus": "FAILED"
}

Balance APIs

Payins Balance

Retrieve your current payins balance across all supported currencies.

GET https://api.payer-gateway.com/api/v1/read/payins/balance

Headers

Authorization: Bearer <token>

Example cURL Request

curl --location 'https://api.payer-gateway.com/api/v1/read/payins/balance' \
--header 'Authorization: Bearer <your_token_here>'

Sample Response

{
  "Balances": {
    "baseCurrency": "KES",
    "eurBalance": 0,
    "gbpBalance": 0,
    "impaBalance": 0,
    "kesBalance": 6020.95,
    "lumenBalance": 0,
    "merchantId": "app",
    "totalBalance": 27476.126842105266,
    "tzsBalance": 0,
    "ugxBalance": 0,
    "usdBalance": 0,
    "usdcBalance": 0,
    "usdtBalance": 0,
    "xafBalance": 99064
  },
  "baseCurrency": "KES",
  "merchantId": "app"
}

Payouts Balance

Retrieve your current payouts balance across all supported currencies.

GET https://api.payer-gateway.com/api/v1/read/payouts/balance

Headers

Authorization: Bearer <token>

Example cURL Request

curl --location 'https://api.payer-gateway.com/api/v1/read/payouts/balance' \
--header 'Authorization: Bearer <your_token_here>'

Sample Response

{
  "Balances": {
    "baseCurrency": "KES",
    "eurBalance": 1.24,
    "gbpBalance": 1.28,
    "impaBalance": 299999740,
    "kesBalance": 6180,
    "lumenBalance": 0,
    "merchantId": "app",
    "totalBalance": 740700119774.2283,
    "tzsBalance": 0,
    "ugxBalance": 200,
    "usdBalance": 6043.45,
    "usdcBalance": 68.993935,
    "usdtBalance": 2.43,
    "xafBalance": 400
  },
  "baseCurrency": "KES",
  "merchantId": "app"
}

Transaction Status

Check the status of a transaction using the secure ID returned during transaction initialization.

GET https://api.payer-gateway.com/api/v1/transaction?merchant=<your_merchant_id>&secureId=<secure_id>

Headers

Authorization: Bearer <token>

Notes

  • Replace <your_merchant_id> with your actual merchant ID
  • Replace <secure_id> with the secure ID returned during transaction initialization

Example Request

https://api.payer-gateway.com/api/v1/transaction?merchant=impala&secureId=d4XeBKNruNJnvhOMOd8RLg==

Sample Response

{
  "transaction": {
    "amount": 1,
    "callback_url": "https://f0d6-197-232-22-252.ngrok-free.app",
    "currency": "USD",
    "date_added": 1741675246,
    "external_id": "ImpadlTdest2",
    "impalaMerchantId": "impala",
    "secure_id": "d4XeBKNruNJnvhOMOd8RLg==",
    "source_of_funds": "card",
    "transaction_report": "collection",
    "transaction_status": "PENDING"
  }
}

Transaction Status Values

Status Description
PENDINGTransaction is being processed
COMPLETEDTransaction was successful
FAILEDTransaction failed

Error Codes

Code Description
400Bad Request - Invalid parameters
401Unauthorized - Invalid or missing token
403Forbidden - Insufficient permissions
404Not Found - Resource not found
500Internal Server Error

Rate Limits

  • Mobile APIs: Not specified
  • Card Transactions: Not specified
  • Balance APIs: Not specified
  • Transaction Status: Not specified

Support

Support
Payer Gateway Team
Documentation Version
3.0.0