Retrieve a transaction

Read the current state of one transaction. This is the endpoint to poll (or call from your webhook handler) before you fulfil an order.
Non-terminal transactions are live-reconfirmed with M-Pesa while you poll — at most once every 10 seconds per transaction — so a success shows up here within seconds of the payment settling, with no callback or background job required. list responses come straight from our database and may lag; poll this endpoint for freshness.

Response

200 OK — same transaction object shape as Create STK Push:
404 NOT_FOUND is returned when the UUID does not exist or belongs to another merchant — the API never leaks cross-tenant data.

Status lifecycle

Pending transactions are confirmed from three directions: your polls (live, deduped to once per 10s), the signed STK callback from M-Pesa, and a background poll chain — and if no result ever arrives the chain gives up after 30 checks and marks the transaction expired. So every transaction reaches a terminal state, and your webhook always fires exactly once per terminal transition.
Treat any non-terminal status as “keep waiting”: continue polling or wait for the webhook.

List transactions

Your most recent transactions, newest first.
string
Optional filter — one of initiating, pending, processing, success, failed, cancelled, expired, reversed.
integer
default:50
How many transactions to return (newest first).

Response

200 OK