M-Pesa & Daraja error codes
A dedicated, linkable page for every Safaricom M-Pesa result code and Daraja API error — what causes it, how to fix it, and how paylod handles it for you. Prefer to search? Use the searchable reference.
STK Push result codes
0Success1Insufficient M-Pesa balance17M-Pesa system internal error26M-Pesa system busy1001A transaction is already in process for this number1019Transaction expired1025Error sending the STK prompt9999Error sending the STK prompt1032Payment cancelled by the customer1037Timeout — the customer could not be reached2001Wrong M-Pesa PIN2028Payment amount exceeds the M-Pesa limit2029Buy Goods till sent as a Paybill request (or vice versa)Daraja API errors
400.002.02Bad Request — invalid amount or shortcode400.002.05Invalid request payload400.008.02Invalid phone number401.002.01Unauthorized — invalid or expired access token404.001.03Invalid access token404.001.04Invalid authentication headerBad Request - Invalid Initiator InformationInvalid initiator information500.001.1001Server error — merchant does not exist or insufficient funds500.002.1001Service temporarily unavailable / under maintenance