public_key), making it safe to call from a client-side environment such as a browser or mobile app. You can also pass the key as an HTTP header instead of in the request body.
Method: POSTURL:
https://app.kulmipay.com/api/v1/payment/collection/checkout/
Authentication
Pass your publishable key in the request body or in theX-KULMI-PUBLIC-API-KEY HTTP header:
Request
Your publishable API key. Required unless you pass it via the
X-KULMI-PUBLIC-API-KEY header. Sandbox keys contain test; live keys contain live. Using the wrong key for the environment returns a validation error.Amount to collect. For UGX and TZS currencies the minimum is 500 and the maximum is 5,000,000. For other currencies there is no minimum enforced at this endpoint — limits apply at the time of payment.
Currency for this checkout. One of:
KES, USD, EUR, GBP.Customer’s email address. When provided and the customer has previously paid, Kulmi Pay pre-fills their billing details on the checkout page to reduce friction.
Your reference for this checkout session. Used with
unique_api_ref to return an existing session instead of creating a new one.Who pays the card processing fee. Either
BUSINESS-PAYS (fee deducted from your settlement) or CUSTOMER-PAYS (fee added to the displayed price). If your account has a default tariff configured in Payment Settings, that value takes precedence.Who pays the mobile money processing fee. Either
BUSINESS-PAYS or CUSTOMER-PAYS.When
true, Kulmi Pay looks for an existing checkout session with the same api_ref before creating a new one. If a match is found, the existing session is returned. Use this to prevent duplicate sessions when the user refreshes your page or retries a failed request.Response
The checkout session UUID. Pass this as
checkout_id when calling the collect payment endpoint to associate the payment with this session.A JWT that authorizes operations on this checkout session from the client side. Pass it alongside
checkout_id in the collect and status requests when not using a secret key.The hosted checkout URL you can redirect your customer to directly. Opens a Kulmi Pay-branded payment page for this session.
Currency of the checkout session.
Fixed amount for this session, if set.
Whether this checkout session has been paid. Useful when polling to detect completion.
Card tariff applied to this session.
Mobile tariff applied to this session.
Code examples
Example response
Using the checkout ID with collect payment
Once you have acheckout_id and signature, pass them to the collect payment endpoint to process the actual payment. This links the payment to the checkout session and lets you verify the amount before charging.
Use
unique_api_ref: true in checkout-based e-commerce flows where users may navigate away and return. Kulmi Pay returns the same session rather than creating a new one, keeping your order reference consistent.