Overview

Kratos Pay API is Kratos Financials Inc.'s payment gateway. It lets any application — online store, SaaS platform, mobile app — collect (Cash-In) and disburse (Cash-Out) Mobile Money and card payments across Central Africa.

Authentication

Send your Live public key in the X-MoK-Public-Key header. Do not send a secret key or applicationId. Keep the public key on your server-side integration.

X-MoK-Public-Key: <VOTRE_CLE_PUBLIQUE_LIVE>
Content-Type: application/json

Payin — collection

Method POSThttps://dev-aggregator-api.kratospay.com/api/v1/live/payin

JSON payload

{
  "amount": 5000,
  "currency": "XAF",
  "phoneNumber": "237690000000",
  "operator": "orange_money_cm",
  "reference": "INV-123456",
  "description": "Paiement facture internet"
}

Successful response

{
  "status": "SUCCESS",
  "reference": "INV-123456",
  "amount": 5000,
  "currency": "XAF",
  "timestamp": "2026-09-10T15:30:00Z",
  "gatewayMessage": "Transaction successful"
}

Payout — disbursement

Method POSThttps://dev-aggregator-api.kratospay.com/api/v1/live/payout

JSON payload

{
  "amount": 5000,
  "currency": "XAF",
  "phoneNumber": "237690000000",
  "operator": "mtn_momo_cm",
  "reference": "OUT-123456",
  "description": "Paiement fournisseur"
}

Successful response

{
  "status": "SUCCESS",
  "reference": "OUT-123456",
  "amount": 5000,
  "currency": "XAF",
  "timestamp": "2026-09-10T15:30:00Z",
  "gatewayMessage": "Transaction successful"
}

Example error response

Example validation structure. The HTTP status and exact details depend on the error returned by the API.

{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "The provided data is invalid.",
    "details": {
      "phoneNumber": [
        "The phone number field is required."
      ]
    }
  },
  "meta": {
    "request_id": "example-request-id",
    "timestamp": "2026-09-10T15:30:00Z"
  }
}

Integration checks

  • Use a unique reference for each transaction and inspect the business status returned by the API.
  • A SUCCESS status confirms success; an HTTP success alone is not sufficient.
  • Handle errors using error.code and error.details without assuming every failure has the same HTTP status.
  • These Live endpoints may move real funds. Verify the phone number, operator, amount and environment before submitting.

What the API lets you do

  • Collect a Mobile Money or card payment from your application (Cash-In).
  • Disburse funds to a Mobile Money wallet or bank account (Cash-Out).
  • Get notified in real time of every status change via signed webhooks.
  • Test the entire flow without real money using the Sandbox environment.

Key vocabulary

  • Wallet: an end user's Mobile Money wallet (a phone number tied to an operator).
  • Transaction: a money movement identified by a unique transaction_id, in one of the PENDING, SUCCESS or FAILED statuses.
  • Webhook: an HTTP POST notification sent by Kratos Pay to your server on every transaction status change.
  • Idempotency key: a unique identifier you generate for each request, to prevent the same transaction being created twice after a network retry.