No-code
Get paid with a link, by M-Pesa or USDT
No website, no plugin, no developer. Create a link for what you are owed, send it over WhatsApp, Instagram or email, and the buyer pays on a page E-Sarif hosts. The amount is fixed, your reference travels with it, and you see the payment confirmed instead of squinting at a screenshot.
- In development
- Social sellers, freelancers and businesses invoicing over WhatsApp
- Nothing to install
Honest status: payment links are in development. The underlying hosted checkout and the REST API that links are built on are further along, so ask the team what is enabled on your account before you plan around this page.
Why it matters
The till-number-and-screenshot problem
A large share of Kenyan commerce happens in a WhatsApp thread. Somebody asks for a price, you send a till number, they send back a screenshot, and you scroll up to work out which of the three people who paid 3,500 shillings this morning was this one. It works, in the sense that money arrives. It also loses money quietly: wrong amounts, payments you never chase, orders shipped against a screenshot that turned out to be from last week.
A payment link moves the work off you and onto the system. The amount is set when you create the link, so the customer cannot underpay by a digit. Your own reference is attached, so the confirmed payment identifies itself. And a payment that has actually settled is visibly different from an image of one, which matters most at the moment you decide whether to hand over the goods.
The second thing links solve is being paid from outside Kenya. A client in another country can settle in USDT or USDC in minutes, at a network fee that does not scale with the invoice, and without the reversal risk that comes with cards.
Use cases
Six things merchants actually do with links
| Situation | How a link helps |
|---|---|
| Selling on WhatsApp or Instagram | Send a link per order instead of a till number. The buyer cannot mistype an amount and you never have to read a screenshot. |
| Freelancers and consultants | Attach a link to the invoice PDF you already send. Clients abroad can settle in USDT without a wire transfer or a card fee. |
| Deposits and booking fees | Hold a slot behind a real payment rather than a promise, without building anything. |
| Recovering an unpaid invoice | Put the link in the reminder itself so paying is one tap. This is the practical answer to renewals on rails that cannot auto-charge. |
| Field sales and delivery | A driver or agent can send a link from a phone and confirm the payment before handing anything over. |
| Testing E-Sarif before you integrate | A link is the fastest way to see the whole buyer experience end to end without touching your website. |
How to use it
Six steps, none of them technical
- 01
Create a merchant account
Sign up on the merchant portal. This is the only setup step, and it is the same account that powers every other E-Sarif integration.
- 02
Create a link for the amount you are owed
Enter the amount, the currency and a description the buyer will recognise, such as the invoice number or the item. Add your own reference so the payment reconciles against your records later.
- 03
Choose which payment methods to offer
Offer M-Pesa, stablecoins or both. A local customer usually wants M-Pesa; a client paying you from abroad usually wants USDT.
- 04
Share the link
Paste it into WhatsApp, a DM, an email or an SMS. There is nothing to install on the buyer side; the link opens a normal web page.
- 05
The buyer pays on a page E-Sarif hosts
The page shows your business name, the amount and the methods you enabled, on pay.e-sarif.com. If they choose M-Pesa they enter a phone number and approve the prompt. If they choose stablecoin they get an exact amount and a deposit address.
- 06
You see the payment in your portal
Confirmed payments appear against your reference, so you can tell which invoice was settled without asking the customer for a screenshot.
- Amount and currency
- Description shown to the buyer
- Your internal reference
- Payment methods: M-Pesa, stablecoins
- Generated link, ready to copy
Supported features
What a payment link can and cannot do
The expiry row is the one that surprises people. Generate the link when you are ready to send it.
| Feature | Status |
|---|---|
| M-Pesa STK push | Supported. The buyer approves the prompt on their handset. |
| USDT and USDC | Supported on Tron, Solana, Base, BNB Chain, Ethereum, Polygon, Arbitrum, Optimism and Avalanche. |
| Fixed amount | Supported. Set the amount when you create the link. |
| Your own reference | Supported, and worth using on every link. It is what makes reconciliation possible later. |
| Description shown to the buyer | Supported. Use the invoice number or item name so the buyer knows what they are paying for. |
| Hosted payment page | Yes, on pay.e-sarif.com. Nothing is hosted on your side. |
| Settlement currency | USDT or KES paid out over M-Pesa, set on your account. |
| Refunds | Supported from the merchant portal, in full or in part, returned the way the money came in. |
| Expiry | Payment sessions have a limited lifetime, thirty minutes by default and up to twenty-four hours. Plan on generating a link close to when you send it rather than reusing an old one. |
| Recurring or subscription billing | Not supported. Send a fresh link each cycle. |
| Availability | In development. Ask the team what is available on your account today. |
When to graduate
Links are a great start and a poor forever
Sending a link per order is fine at ten orders a week and painful at a hundred. When you get there, the same merchant account moves to something automatic without you changing payment provider.
Compare every integration option- Running a shop on WordPress? Move to the WooCommerce plugin so orders mark themselves paid.
- On Shopify? The Shopify integration does the same for your storefront.
- Billing hosting or services? The WHMCS module collects invoices and provisions automatically.
- Have a developer? The REST API generates the same checkout from your own system in one call.
FAQ
Payment links, answered
What is a payment link?
A web address that opens a page where someone can pay you a specific amount. You create it, you share it, and the person who opens it pays by M-Pesa or in stablecoin. There is nothing for them to install and nothing for you to build.
Do I need a website to use payment links?
No. That is the point of them. If you sell over WhatsApp or Instagram, or you invoice clients by email, a link is all you need. The payment page is hosted by E-Sarif.
How is this better than sending my paybill or till number?
A till number puts the work on you. The customer types the amount themselves, sometimes wrongly, sends you a screenshot, and you match it to an order by hand. A link fixes the amount, records your own reference against the payment, and confirms it in your portal, so you know exactly what was paid for.
Can a customer outside Kenya pay a link?
Yes, in USDT or USDC on Tron, Solana, Base, BNB Chain, Ethereum, Polygon, Arbitrum, Optimism and Avalanche. That is often the fastest way to be paid from abroad, and unlike a card payment it cannot be reversed after you have delivered.
How long does a link stay valid?
Payment sessions expire. The default window is thirty minutes and the maximum is twenty-four hours. In practice, generate the link when you are about to send it rather than keeping one around, and generate a fresh one if a customer comes back the next day.
Can I reuse one link for many customers?
Treat a link as belonging to one payment. Because each one carries a fixed amount and your own reference, reusing a link across customers destroys the reconciliation that makes links useful in the first place. If you want a permanent button on a page, use the WordPress plugin instead.
How do I know who paid me?
Confirmed payments appear in your merchant portal against the reference and description you set, along with the amount, the method and the time. Where the buyer supplies contact details on the payment page, those are recorded too.
Can I refund a payment made through a link?
Yes, in full or in part, from the merchant portal. The refund is returned the way the money arrived, over M-Pesa B2C or on-chain. Refunds above your account threshold are held for approval first.
Can I use payment links for monthly subscriptions?
Not as an automatic charge, no. Both payment methods need the payer to approve each payment, so there is nothing to charge unattended. Sending a link with each cycle reminder is the workable pattern.
Other integrations
Ready for something automatic?
WooCommerce
A WordPress payment gateway plugin that adds M-Pesa and USDT to Woo checkout.
Read the WooCommerce guideIn developmentShopify
Take M-Pesa and stablecoin payments on a Shopify store without leaving your theme.
Read the Shopify guideEarly accessWHMCS
Collect hosting and domain invoices in M-Pesa or USDT, with automatic invoice marking.
Read the WHMCS guideIn developmentWordPress
Payment buttons and blocks for any WordPress site, with or without a shopping cart.
Read the WordPress guideEarly accessREST API and SDKs
One HTTP call returns a checkout URL. PHP, Node and browser SDKs on top of it.
Read the REST API and SDKs guideSend a link.
Get paid.
Create a merchant account and generate your first payment link in a couple of minutes. No website required.