Skip to main content
We deliver POST requests with a JSON body to your callback URL.

Top-level structure

Fields
  • status (string): High-level outcome - e.g., CREATED, PENDING, SUCCESS, FAILED, ESCALATED, EXPIRED, REFUNDED, REVERSED.
  • code (string): Machine code corresponding to status (e.g., 102 for SUCCESS).
  • description (string): Human-friendly explanation.
  • results (object): Detailed result set:
    • result_code, result_description: Processor/rail outcome.
    • Monetary fields: amount, total_charges, total_amount.
    • Ids: transaction_reference (your client reference), payment_uuid (Waftpay reference), external_reference (network/MNO reference if present).
    • msisdn (if applicable), time_processed (ISO-8601 UTC), metadata (optional).
    • validation_hash: Integrity string (see Verify Signature).
Note: client_reference in other pages refers to this same transaction_reference field.

Status codes

These codes map to the payment lifecycle and are consistent across webhook events.