2029STK Push resultM-Pesa error 2029: Buy Goods till sent as a Paybill request (or vice versa)
This is an STK Push (Lipa na M-Pesa Online) result code — it comes back on the Daraja callback after the customer responds to the payment prompt.
What causes it
The shortcode is a Buy Goods till but the STK request used CustomerPayBillOnline (or a Paybill was sent as CustomerBuyGoodsOnline). Daraja rejects the transaction-type / shortcode mismatch.
How to fix it
Match the transaction type to the shortcode: CustomerBuyGoodsOnline + till number for a till, CustomerPayBillOnline + paybill for a paybill. Fix it in Credentials and retry.
How paylod handles this
With paylod you never parse this code by hand: the hosted M-Pesa callback decodes the STK Push result for you and returns a normalized status, so you handle a clean success or failed webhook instead of raw Daraja result codes.
See the paylod M-Pesa API