Search Payments by Merchant Reference
Search for payments using a merchant reference. Returns matching transactions across the specified merchant IDs. See the Payment Status & Recovery guide for using this endpoint to recover payment state after a timeout.
Semantics:
- Matching on
merchantReferenceis exact and case-sensitive — no partial or prefix matching. - Transactions in any state (pending, in-flight, terminal) are returned, and a transaction is searchable immediately after initiation — there is no consistency delay.
- Only transactions are searched. A checkout session against which no payment was ever initiated does not appear; only collections are returned (never payouts).
merchantReferenceis unique per merchant for new sessions (duplicates are rejected with409 DUPLICATE_REFERENCEat session creation), but sessions created before uniqueness was enforced may share a reference — so the result is an array.- At most 100 matching transactions are returned.
- The parent session is available on each result under
identifiers.sessionId.
Query parameters
Comma-separated list of merchant IDs (UUIDs) to search within.
Response
Matching transactions returned successfully. The array is empty when no transaction carries the reference — including when a session was created but no payment was ever initiated against it.
Transaction amount as a decimal in major units (e.g. 10 = 10.00 KES) —
unlike session creation, which takes minor units.
Payment-specific attributes and metadata
Additional transaction identifiers. For collections this includes sessionId —
the checkout session the transaction belongs to — and payerId, the persistent
payer identifier.
Transaction identifiers of all refunds processed against this transaction. Each entry can be passed to GET /payment/{transactionId} to retrieve full refund state. UUID v7.