POST requests with a JSON body to your callback URL.
Top-level structure
status(string): High-level outcome - e.g.,CREATED,PENDING,SUCCESS,FAILED,ESCALATED,EXPIRED,REFUNDED,REVERSED.code(string): Machine code corresponding tostatus(e.g.,102forSUCCESS).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_referencein other pages refers to this sametransaction_referencefield.
Status codes
These codes map to the payment lifecycle and are consistent across webhook events.
