Payments
How to accept EasyPaisa payments on your website
The difference between taking EasyPaisa by screenshot and taking it properly — what an integrated checkout does, what you need to apply, and the one mistake that will cost you real money.
Almost every Pakistani seller starts by taking EasyPaisa the manual way: the customer transfers to your number, sends a screenshot, and you check your app before dispatching. It works, right up until it doesn't.
This guide covers what integrated EasyPaisa checkout actually is, what you need before you apply for it, and the one settlement mistake that catches nearly everybody who builds this themselves.
The manual method, and why it stops working
Sending customers your EasyPaisa number and asking for a screenshot has four problems that grow with your order volume:
- Screenshots are trivially faked. A cropped or edited screenshot is enough to get a parcel
dispatched if nobody checks the actual account.
- You are the reconciliation system. Every order needs a human to open the app, find the
transfer, and match it to a customer. That is fine at five orders a day and impossible at fifty.
- You lose the customers who won't wait. A buyer who has to leave your site, open another app,
transfer, screenshot, and come back has four opportunities to abandon the purchase.
- A personal account isn't built for this. Consumer accounts carry transaction and balance
limits that a growing store will run into.
The fix isn't to work harder at reconciliation. It's to make the payment part of the checkout.
What an integrated checkout actually does
With a proper EasyPaisa merchant integration, the flow looks like this:
- The customer picks EasyPaisa at your checkout and taps Pay.
- They're taken to EasyPaisa's own hosted payment page — you never handle their PIN, OTP or
account credentials.
- They authorise the payment there.
- They're returned to your store, and your system confirms the payment with EasyPaisa directly
before the order is marked paid.
- The money settles into your own EasyPaisa merchant account.
The important part is step 4, and it's where most home-built integrations go wrong. More on that below.
What you need before you apply
EasyPaisa's merchant onboarding is a business process, not a signup form. Broadly you'll be asked to establish that you are a real business with a real bank relationship — business documentation, identity documents for the owner, and settlement account details.
We're deliberately not listing exact documents, fees or approval timelines here. Those change, they vary by the type of account you're applying for, and a stale list on a blog is worse than no list. Get them from EasyPaisa directly, or ask your bank's merchant services desk.
What we can tell you is the shape of it: expect it to take longer than a day, expect the business details you give to be checked, and expect a registered business address and a working contact number to be non-negotiable. Have that in order before you start.
The mistake that will cost you money
Here is the part almost nobody writes down.
When the customer finishes paying, they get redirected back to your site — and that redirect usually carries a status parameter that looks like a success code. Do not mark the order paid on the basis of that redirect.
Two things go wrong if you do:
- The redirect can be forged. It travels through the customer's browser. Anyone can construct a
URL with a success-looking code and hit your return page.
- A success-looking code is not the same as settled money. Gateway response codes are about
whether the *request* was accepted, not whether funds actually cleared. It is entirely possible to get an encouraging-looking code on a transaction that never completed.
The correct pattern, whatever platform you're on:
| Step | Do this | Never do this |
|---|---|---|
| Customer returns | Treat it as "check now", nothing more | Mark the order paid |
| Confirming payment | Call the gateway's order-status API from your server | Trust a value from the browser |
| Deciding to ship | Ship only on an explicit paid status from that API | Ship on a redirect parameter |
| Repeat callbacks | Make settlement idempotent — the same payment may be reported twice | Create a second order |
If you're building this yourself, that table is the whole game. Get it wrong and you will dispatch parcels against payments that never arrived, and you will not find out for weeks.
How this works on Storecrafto
You connect your own EasyPaisa merchant account. Money moves from your customer to your account — it never passes through us, and we take 0% commission on your sales. Our only revenue is the flat monthly subscription.
The settlement logic above is already handled: the return from the gateway triggers a server-side verification, orders are only marked paid on a confirmed status, and repeated callbacks can't create duplicate orders. You switch EasyPaisa on in your payment settings and it appears at checkout alongside whichever other methods you've enabled — cards via PayFast, bank transfer, and Cash on Delivery.
Once an order is paid, your customer can get the confirmation on WhatsApp rather than an email they may never open.
The short version
- Screenshot-and-confirm works until it doesn't. Plan to move off it before you have to.
- An integrated checkout keeps the customer on your store and removes manual reconciliation.
- Get document and fee requirements from EasyPaisa directly — don't trust a list on a blog.
- Never mark an order paid from a browser redirect. Verify server-side, ship on that.
*Last verified: July 2026. EasyPaisa's merchant requirements, fees and APIs change — confirm current details with EasyPaisa before you build or apply.*
Ready to open your store?
Connect your own EasyPaisa, card and COD accounts, and keep 100% of every sale.
Start free trial