E-Sarif Checkout

Accept M-Pesa and USDT payments in Kenya

One integration gives your store two rails Kenyan buyers actually use: an M-Pesa prompt on their phone, and stablecoin transfers in USDT or USDC. Price in shillings, settle in USDT or straight back to M-Pesa.

  • M-Pesa STK push
  • USDT + USDC
  • Signed webhooks
  • Full + partial refunds
  • Test mode

Payment methods

Two rails, one checkout session

Most Kenyan online stores lose sales because the only options offered are a card the buyer does not have or a manual paybill transfer nobody reconciles. E-Sarif Checkout gives the buyer the prompt they expect, and gives you a payment your store can verify programmatically.

M-Pesa

The buyer types their phone number on the checkout page and approves an STK push on the handset. No till numbers to read out, no screenshots to check by hand.

  • STK push initiated from the checkout page
  • Status polled live, no manual reconciliation
  • Refunds returned over M-Pesa B2C
  • KES settlement paid back out to M-Pesa

USDT Tether stablecoin iconStablecoins

The buyer gets a deposit address and an exact amount for the network they choose. E-Sarif watches the chain and marks the session paid on confirmation.

  • USDT and USDC
  • Tron, Solana, Base, BNB Chain, Ethereum, Polygon, Arbitrum, Optimism and Avalanche
  • Buyer can be anywhere in the world
  • Refunds returned on-chain

Assets and networks

The stablecoins and chains E-Sarif watches

Pick the network your customers already hold funds on. Each one shows the buyer a deposit address, the exact amount and any memo required before they send.

The checkout page offers Solana, BNB Chain and Base by default, because those three are cheap and confirm quickly. Name any other supported network on the checkout session and the buyer gets that one instead, which is how merchants serve customers holding USDT on Tron.

USDT Tether stablecoin iconUSDT
USDC stablecoin iconUSDC
Tron
Solana
Base
BNB Chain
Ethereum
Polygon
Arbitrum
Optimism
Avalanche
M-PESA payouts

The flow

What happens when a customer checks out

Every integration, from the WooCommerce plugin to a payment link, runs on the same primitive: a checkout session. Your server creates one, the buyer pays, and a webhook tells your store the order is settled.

Checkout session lifecycle: your server creates a session, the buyer is sent to the E-Sarif checkout page, they pay by M-Pesa or stablecoin, E-Sarif confirms the payment, and a signed webhook marks the order paid in your store.01Your server creates a checkout session02Buyer opens the E-Sarif checkout page03Buyer pays by M-Pesa or stablecoin04E-Sarif confirms and settles05Signed webhook marks the order paid
Checkout session lifecycle: your server creates a session, the buyer is sent to the E-Sarif checkout page, they pay by M-Pesa or stablecoin, E-Sarif confirms the payment, and a signed webhook marks the order paid in your store.
Core E-Sarif Checkout capabilities
CapabilityWhat it does
M-Pesa STK pushBuyer enters a phone number and approves the prompt on their handset.
USDT and USDCOn Tron, Solana, Base, BNB Chain, Ethereum, Polygon, Arbitrum, Optimism and Avalanche. The checkout page offers Solana, BNB Chain and Base unless the session names another network.
Settlement currencyUSDT, or KES paid out over M-Pesa.
Hosted checkout pageBuyer is redirected to pay.e-sarif.com and returned on completion.
Embedded checkoutThe same session can be opened in an iframe instead of a redirect.
RefundsFull or partial, returned over M-Pesa B2C or on-chain.
WebhooksHMAC-signed, deduplicated by event id, retried for around 24 hours.
Test modeTest keys simulate a payment that confirms after a few seconds.

Supported platforms

Start from where your store already lives

Each guide below covers the setup for that platform, the settings that matter, and the questions that come up most often. Availability is labelled honestly: early access means the integration is being piloted with merchants today.

Integration options

Four ways to take the payment

Platform plugins

Install, paste two API keys, done. The plugin creates sessions server-side, verifies webhooks and handles refunds for you.

Hosted checkout

Create a session, redirect the buyer to pay.e-sarif.com, and get them back on your success URL. E-Sarif renders the payment UI, handles the STK push and watches the chain.

Embedded checkout

The same session, opened in an iframe inside your own page instead of a redirect. Set mode to embedded when you create it.

Payment links

No website needed. Generate a link, send it over WhatsApp or Instagram, and the buyer pays on a page E-Sarif hosts.

Settlement

Price in shillings, settle how you like

The currency you sell in and the currency you keep do not have to match. A session carries both, so a KES price list can settle to a USDT balance without you doing any conversion by hand.

How pricing and settlement currencies work
ScenarioHow it works
Priced in KES, paid by M-PesaThe buyer approves an STK push on their phone. You choose whether the balance lands as USDT or as KES over M-Pesa.
Priced in KES, paid in stablecoinE-Sarif quotes the exact USDT or USDC amount for the KES price and watches the chain for that deposit.
Priced in USD or USDTUseful for hosting, SaaS and export invoices where the list price is already in dollars.
Settlement currencySet per checkout session with settlement_currency. It defaults to USDT.
Refund routeRefunds go back the way the money came: M-Pesa B2C for mobile money, on-chain for stablecoin.

Security

Built for money, not for demos

Payments break in specific, predictable ways: a double-submitted form, a replayed webhook, a leaked key in front-end JavaScript. E-Sarif Checkout has an answer for each of them, and every official plugin is held to the same rules.

Read the developer reference
Security controls in E-Sarif Checkout
ControlWhat it protects against
Split API keysPublishable keys (epk_) live in the browser and can only open a session. Secret keys (esk_) stay on your server.
Domain allowlistingPublishable keys honour an allowed-domains list and are rate limited per IP.
Signed webhooksEvery delivery carries a timestamped HMAC-SHA256 signature, a unique event id for deduplication, and is rejected by your plugin if older than five minutes.
Idempotency keysMoney-moving requests take an Idempotency-Key. A retry with the same body replays the original response instead of charging twice.
Refund controlsRefunds above your threshold, or that would overdraw your balance, wait for approval before they move.
Test modeTest keys hit the same endpoints with simulated payments, so you can build without real money or a real STK push.

Cost context

How online payment costs compare in Kenya

Rates change and every merchant is quoted on volume, so treat this as a map of where the costs sit rather than a price list. Ask for a written quote before you commit to any provider, including this one.

Card processing

A percentage of each sale plus a fixed fee, with extra cost on cross-border cards, currency conversion, and chargebacks you have to defend after the fact.

Mobile money

Familiar to every Kenyan buyer and quick to confirm. Costs are usually a percentage of the transaction, and the operational cost of matching payments to orders by hand is often larger than the fee itself.

Stablecoin transfers

The buyer pays the network fee, which on the chains E-Sarif watches is typically a fraction of a dollar regardless of the amount sent. Settled transfers cannot be charged back, which removes a category of loss rather than a fee.

E-Sarif does not publish a public rate card. Your commercial terms, limits and settlement schedule are agreed on your merchant account, so sign up or contact the team for a quote rather than working from a number you read on a marketing page.

FAQ

E-Sarif Checkout, answered straight

What is E-Sarif Checkout?

E-Sarif Checkout is a payment layer for businesses selling to customers in Kenya. Your store creates a checkout session, the buyer pays with M-Pesa or with USDT/USDC on a supported network, and you receive the value in USDT or as KES over M-Pesa.

Which payment methods can my customers use?

M-Pesa, via an STK push prompt the customer approves on their handset, and stablecoin transfers in USDT or USDC on Tron, Solana, Base, BNB Chain, Ethereum, Polygon, Arbitrum, Optimism and Avalanche. By default the checkout page offers Solana, BNB Chain and Base, chosen for low fees and fast finality; naming another network on the checkout session offers that one instead. You can also restrict which methods appear per session.

What currency do I get paid in?

You choose. Each checkout session carries a settlement currency, which defaults to USDT. Kenyan businesses that want shillings can settle to M-Pesa instead.

Do I need to understand crypto to use it?

No. You price in KES if that is what you sell in. E-Sarif works out the stablecoin amount, watches for the deposit and tells your store the order is paid. If you settle in KES over M-Pesa, you never touch a wallet.

How does my store know a payment succeeded?

Through a signed webhook. The buyer being redirected back to your success page is a convenience only; every E-Sarif integration treats the webhook as the source of truth before marking an order paid.

Can I refund a customer?

Yes, in full or in part. Refunds are created against the original checkout session and are returned over M-Pesa B2C or on-chain, depending on how the customer paid. The total refunded can never exceed what was captured.

Which platforms are supported?

WooCommerce, WHMCS, Shopify and WordPress integrations sit on top of a public REST API, a hosted checkout page, an embeddable checkout, payment links, and PHP, Node and browser SDKs. Anything not on that list can use the API directly.

Is E-Sarif Checkout available outside Kenya?

The stablecoin side of checkout is borderless, so a buyer anywhere can pay a Kenyan merchant in USDT or USDC. The M-Pesa leg and KES settlement are Kenya-specific. Talk to the team about other East African markets before you build.

Keep reading

Related guides

Take your first
M-Pesa payment today.

Create a merchant account, generate test keys, and run a simulated checkout before you touch a live shilling.