Skip to main content
Use this endpoint to check the status of a payment after initiating a collection. Pass the invoice_id returned by collect payment or STK push. For checkout-based payments, you can also pass checkout_id to validate that the invoice belongs to the correct session. Method: POST
URL: https://app.kulmipay.com/api/v1/payment/status/

Authentication

Authenticate with your Bearer token or, for client-side polling, pass the signature returned by the collect endpoint.

Request

invoice_id
string
required
The invoice alias ID returned in the invoice.invoice_id field of the STK push response, or the invoice ID returned by collect/checkout flows.
checkout_id
string
The checkout session UUID. When provided, Kulmi Pay validates that the invoice belongs to this checkout session before returning status. Use this when polling from a hosted checkout flow.

Response

invoice
object
Current snapshot of the invoice.
meta
object
Session metadata for the payment.

Code examples

Example responses

Pending — the M-Pesa STK prompt is still active or the PesaLink payment is awaiting confirmation:
Complete — the customer paid successfully:
For time-sensitive flows, use webhooks instead of polling. Kulmi Pay sends an event to your endpoint the moment the payment state changes, which is faster and more reliable than a polling loop.