Skip to main content
Kulmi Pay gives you multiple ways to collect money from your customers. Whether you need to trigger a mobile money prompt, charge a card, send a shareable payment link, or embed a hosted checkout in your app, you can do it all through the same API. Every collection method returns an invoice ID you can use to track status in real time or via webhooks.

Collection methods

M-Pesa STK Push

Trigger a payment prompt directly on your customer’s phone. They confirm with their M-Pesa PIN — no redirect needed.

Card and digital wallets

Accept Visa, Mastercard, Apple Pay, and Google Pay from customers anywhere in the world.

Payment links

Generate a shareable URL your customer opens to pay. No integration required on the customer side.

Hosted checkout

Embed a pre-built, branded checkout session in your web or mobile app using your public key.

Who pays the transaction fee

Every collection request accepts a mobile_tarrif or card_tarrif field that controls who bears the processing fee.
OptionBehaviour
BUSINESS-PAYSFees are deducted from your settlement amount. Your customer sees and pays the face value.
CUSTOMER-PAYSFees are added on top of the amount you specify. Your customer pays the total including charges.
The default for all methods is BUSINESS-PAYS. You can override this per request or set a default in your dashboard under Payment Settings.

Supported currencies

Kulmi Pay supports collections in KES, USD, EUR, and GBP. When a customer pays in a currency that doesn’t match the payment method’s settlement currency (for example, paying USD via M-Pesa), Kulmi Pay automatically converts the amount using live exchange rates.
M-Pesa and PesaLink always settle in KES. If you create a request in another currency, the amount is converted to KES before the transaction is sent to the customer.