Skip to main content

At a glance

Amounts

All monetary amounts are integers in the smallest currency unit (cents for KES).
To convert a human-readable amount to the API format, multiply by 100. For example, KES 1,500.00 becomes 150000.
For M-Pesa C2B charges, amounts must be divisible by 100 (whole KES). Fractional amounts are rejected.

Phone numbers

Phone numbers must be valid Kenyan MSISDNs. The API accepts multiple formats and normalizes internally:

Metadata

The metadata field is an optional object of string key-value pairs you can attach to any transaction.
  • Max keys: 20
  • Key format: 1-64 characters (letters, numbers, ., _, -)
  • Value max length: 500 characters
Metadata is returned unchanged in webhook payloads and transaction queries. Use it for reconciliation, tagging, or passing context through the payment lifecycle.

Sub-merchant details in metadata

For enterprise aggregator flows, you can include structured sub-merchant details using the reserved metadata key subMerchantDetails.
Supported riskLevel values are:
  • low
  • medium
  • high
If subMerchantId does not already exist for your organization, we auto-create it in active state and apply metadata.subMerchantDetails when provided.