Every Nepali SaaS and marketplace we ship hits the same payments question in week 4: which gateway first, which next, and which never. Get it wrong and you either lose 30% of local users or you spend a month building a flow nobody uses. This is the playbook we run with our clients in 2026.
What is the 2026 Nepal payments landscape?
Five gateways matter, plus one global wildcard:
- eSewa — largest wallet user base in Nepal, especially outside Kathmandu. Mature merchant API.
- Khalti — best developer experience and the only domestic gateway with a Stripe partnership for international card-to-wallet flows.
- Fonepay — bank-interoperable QR network, dominant for point-of-sale, growing online.
- ConnectIPS — bank-to-bank transfers. Underrated for high-ticket B2B SaaS.
- IME Pay — strong remittance integration, mid-tier consumer reach.
- Stripe — not directly available to Nepali merchants for local cards, but accessible through Khalti's partnership for receiving international payments.
Which gateway should you integrate first?
It depends entirely on who pays you.
| Customer profile | First integration | Second | Third (optional) |
|---|---|---|---|
| B2C consumer (Nepal) | eSewa | Khalti | Fonepay QR |
| B2B SaaS (Nepali businesses) | ConnectIPS | Khalti | Fonepay |
| Marketplace (Nepali buyers, Nepali sellers) | eSewa + Khalti both day one | Fonepay | COD wrapper |
| SaaS selling globally from Nepal | Khalti-Stripe | PayPal (via 3rd party) | Local wallets for Nepali customers |
| Education / NGO / subscription | Khalti | eSewa | ConnectIPS standing order |
How does Stripe actually work for a Nepali merchant?
Direct Stripe accounts are not available to Nepali merchants for processing local cards. The path that does work in 2026 is the Khalti-Stripe partnership: international customers pay via Visa, Mastercard, Apple Pay or Google Pay through a Stripe-powered checkout, and the funds land in your Khalti merchant wallet in NPR. This is the cleanest way for a Nepali SaaS to take international card payments without registering a foreign entity.
If you are serious about a global customer base, the alternative is registering a holding entity in Singapore, Delaware or the UK and running a direct Stripe account there. We have helped clients with both paths; the Khalti-Stripe route is faster (days, not months) but the foreign entity route gives more flexibility long-term.
What does each gateway cost the merchant in 2026?
| Gateway | Setup | Per-transaction fee | Settlement |
|---|---|---|---|
| eSewa | Documentation + agreement | 1.5% - 2.5% | T+1 to T+3 |
| Khalti (local) | Documentation + agreement | 1.5% - 2.0% | T+1 to T+2 |
| Khalti-Stripe (international) | Khalti agreement + Stripe link | ~3.5% + FX | T+2 to T+7 |
| Fonepay | Bank-mediated | 0.5% - 1.5% (bank-dependent) | T+1 |
| ConnectIPS | Documentation | Flat NPR fee per txn | T+0 to T+1 |
| IME Pay | Documentation | 1.5% - 2.5% | T+1 to T+3 |
Negotiate. Published rates are starting points. Above NPR 10M monthly volume, we typically see fees drop 30-50 basis points.
How does the integration code actually look?
For a Django backend (our default) here is the conceptual flow we use for each gateway:
- eSewa — server-side initiation, redirect to eSewa, return URL with success/failure params, server-side verification via the verification API. Always verify on the server; never trust the redirect.
- Khalti — KPG-2 (the v2 API) is straightforward: create a payment on your backend, get a payment URL, redirect the user, listen for the callback, verify with the lookup API. Webhooks are reliable; we still poll for high-value transactions.
- Khalti-Stripe — checkout is hosted by Stripe but the merchant on the Stripe side is Khalti. You implement Stripe webhooks but settle to your Khalti wallet, not your own Stripe balance.
- Fonepay — QR generation server-side, polling the status API or a webhook depending on partner bank. The QR network's webhook reliability varies by bank; we always reconcile via API on a 60-second cron.
- ConnectIPS — bank account-based, slower UX (user authenticates with their bank), best for high-ticket B2B not impulse purchases.
What are the most common integration mistakes?
| Mistake | How it bites | Fix |
|---|---|---|
| Trusting the redirect URL | Fake successes via URL manipulation | Always verify with server-side API call |
| No idempotency keys | Double charges on retry | Idempotency key per intent, stored before redirect |
| Webhook-only reconciliation | Missed webhooks = missed orders | Reconcile by API every 1-5 minutes |
| Storing amount in float | Rounding bugs at scale | Store paisa (integer), never NPR (float) |
| One gateway only | 30% of users bounce at checkout | Offer at least 2 of eSewa, Khalti, COD on day one |
| No test environment plan | Production-only testing = real money lost | Maintain test merchant accounts with low limits |
How do you handle subscription billing?
This is the gap in Nepal's payments stack in 2026. None of the local gateways offer a clean recurring-billing API like Stripe Billing does. The pattern we use:
- Send a renewal reminder 3 days before the billing date.
- Send a pay-now link via SMS and email on the billing date.
- Use ConnectIPS standing-order for high-value B2B subscriptions where supported.
- For consumer subscriptions, accept that churn will be 5-10% higher than card-on-file markets and design the unit economics around it.
What do we ship by default?
For a typical Nepali B2C SaaS or marketplace MVP, we ship eSewa + Khalti + COD wrapper on day one. For an international B2B SaaS run from Nepal, we ship Khalti-Stripe + manual invoice. We add Fonepay QR in week 4-6 once the founder confirms which checkout users actually pick.
How do refunds and disputes work across these gateways?
This is the section every founder discovers the hard way after a launch. Refund handling differs sharply by gateway:
- eSewa — Refunds are merchant-initiated via the dashboard or refund API. Funds return to the customer's wallet in 1-3 business days. Dispute windows are short (typically 30 days), so reconciliation matters.
- Khalti — Refund API is straightforward and supports partial refunds. Funds return to the customer wallet in 1-2 business days.
- Khalti-Stripe — Stripe handles the cardholder-side dispute (chargebacks, fraud claims) with the usual 7-14 day response windows; you only see the net settlement in Khalti. Plan to maintain evidence (delivery proof, IP logs, screenshots) for at least 90 days per transaction.
- Fonepay — Refunds are bank-mediated and can take 5-10 business days. Build customer-facing copy that sets that expectation upfront.
- ConnectIPS — Reversal flows are manual and partner-bank dependent. We build a refund queue with manual approval rather than a direct API call.
Across all five, the operational rule is the same: store every transaction with a deterministic external ID and reconcile daily. We have seen founders lose 1-3% of revenue to silent reconciliation errors that compound across months.
What about GST, VAT and tax compliance?
Nepal's VAT regime requires registered businesses to collect 13% VAT on most digital services. The complication for cross-border SaaS is that you may also be liable to collect VAT or GST in your customer's country once you cross local thresholds — UK, EU and Australia all have digital-services VAT rules that catch foreign sellers. We typically wire in a tax-calculation layer (Stripe Tax for international, a simple in-app VAT field for domestic) early, because retrofitting compliant invoicing after launch is a 2-3 engineer-week task we have repeated for clients more than once.
Free payments-flow tester
We publish a public sandbox on our tools page that lets you walk through an eSewa, Khalti and Khalti-Stripe checkout end-to-end with test credentials, so you can sanity-check the UX before you commit.
Ready to ship payments?
If you want us to wire payments end-to-end on your stack — including webhook reconciliation, refunds, dispute handling and Stripe-Khalti for global customers — send us your brief on our quote page.