MAA INVEST Pay Docs
API reference

Payment statuses

created, pending, paid, failed and expired explained.

StatusMeaning
createdCheckout exists, the customer has not requested a prompt yet.
pendingThe M-Pesa prompt was sent; waiting for the customer's PIN.
paidPayment confirmed. The webhook is sent. Final.
failedThe last attempt failed (cancelled, insufficient balance, wrong PIN, timeout). The customer can try again until the checkout expires.
expiredThe 1 hour window passed without payment. Start a new checkout.

Only successful payments trigger a webhook. A failed or abandoned payment sends nothing; use the Status API if you want to check, and treat an order as unpaid until you have a verified payment.succeeded.

Stuck on an integration? Open a ticket from the Support page in your account and include your invoice_id, the time, and the HTTP status you returned.