How online payments work in Nepal

Most Nepali checkout flows route through mobile wallets (eSewa, Khalti, IME Pay) or bank/ConnectIPS rails, often via aggregators like Fonepay or bank payment gateways. International cards are growing but remain a minority of transactions.

Comparison overview

Provider Best for Integration Notes
eSewa Mass consumer reach Merchant API, QR Largest wallet user base
Khalti E-commerce, utilities Developer-friendly API Strong urban adoption
Fonepay Bank-linked checkout Gateway for merchants Reduces fractured checkout
ConnectIPS Bank transfers NCHL rail Higher-value B2B payments
IME Pay Remittance-linked users Wallet checkout Growing merchant network

Fees and settlement timelines change — confirm with each provider before launch.

Merchant fee and settlement reference (2026 — verify with vendors)

Provider Typical MSF / merchant fee Settlement Onboarding time
eSewa ~2.5–3.5% (category-dependent) T+1 to T+3 common 1–2 weeks
Khalti ~2.5–3.5% T+1 to T+3 1–2 weeks
Fonepay (via bank) Bank tariff + network fee Varies by bank 2–4 weeks
ConnectIPS Lower for bank transfer Same-day to T+1 Bank KYC

Rates are negotiable above NPR 500k–1M monthly GMV. Always request written tariff sheets.

Per-gateway deep dive

eSewa

Strengths: Largest consumer wallet reach, strong brand trust outside Valley, QR at retail.
Weaknesses: Developer docs historically lagged Khalti; test sandbox carefully.
Best for: Mass-market B2C, utilities, broad demographic reach.

eSewa Khalti and Fonepay payment gateways for Nepali businesses

Image: Arjan KC media library — eSewa vs Khalti payment gateway.

Khalti

Strengths: Developer experience, urban e-commerce, API stability, good WooCommerce plugins.
Weaknesses: Smaller rural penetration vs eSewa alone.
Best for: Tech-forward stores, startups, subscription billing experiments.

Fonepay

Strengths: Unified bank + wallet checkout when integrated via acquiring bank.
Weaknesses: Implementation varies by bank partner.
Best for: Merchants already banking with Fonepay-enabled institutions.

ConnectIPS

Strengths: Direct bank rails, suitable for higher-ticket B2B.
Weaknesses: Not a consumer wallet UX — users need banking app flow.
Best for: Invoices, B2B, large transfers.

WooCommerce integration checklist

  1. Business PAN + registration + bank account
  2. Merchant application with chosen gateway
  3. Staging site with SSL (Let’s Encrypt minimum)
  4. Install official/partner plugin or custom REST integration
  5. Log webhooks to file/DB for failed callbacks
  6. Run NPR 10–100 test transactions before ads go live
  7. Enable both eSewa and Khalti at checkout — older comparison merged here

Shopify / international stack

Shopify Payments is not natively available for Nepal merchants. Common pattern: Shopify storefront + external Nepal gateway via custom checkout or headless — budget developer time.

COD strategy by region

Region COD recommendation
Kathmandu Valley Offer but push wallets with small discount
Secondary cities COD + partial prepay on high-value items
Remote districts COD with phone verification

Track COD refusal rate by courier; above 12% indicates targeting or product-market issues.

Security and compliance

  • Never log full card data (PCI scope)
  • Use HTTPS everywhere
  • Rotate API keys after staff changes
  • Display refund policy before payment button

Integration steps (summary)

Typical merchant setup:

  1. Register as merchant with wallet or bank gateway
  2. Submit business documents (PAN, registration)
  3. Install official or partner plugin / custom API
  4. Test sandbox and live micro-transactions
  5. Enable on production with webhook logging

Budget 1–3 weeks for approval plus dev time — not same-day plug-and-play.

COD vs digital

Outside Kathmandu Valley, cash on delivery still converts better for new brands. Offer both; measure wallet share by city in GA4.

FAQ

Can I use only international Stripe/PayPal?
Most Nepali consumers cannot pay easily; local wallets are essential for conversion.

Which wallet has lowest fees?
Negotiate by volume; published merchant rates differ by category.

Step-by-step integration (WooCommerce)

This is the path we deploy most often for Nepali D2C stores. Adjust for custom Laravel/Node stacks — the KYC and webhook logic is the same.

Phase 1: Business readiness (week 1)

  1. Register PAN and business entity if not already done
  2. Open a dedicated business bank account (settlement account)
  3. Prepare scanned PDFs: PAN, registration, citizenship/passport of signatory, bank letter
  4. Decide primary + secondary wallet (recommend eSewa + Khalti minimum)

Phase 2: Merchant application (week 1–2)

Step eSewa Khalti Fonepay (via bank)
Apply Merchant portal / partner Khalti merchant signup Through acquiring bank
KYC Business docs + site URL Similar + technical contact Bank relationship required
Review 3–10 business days 3–10 business days 1–3 weeks
Keys Merchant code + secret API keys + webhook secret Bank-specific credentials

Staging URL requirement: gateways review a HTTPS site with visible products, refund policy, and contact page. “Coming soon” pages get rejected.

Phase 3: Development (week 2–3)

  1. Clone production to staging subdomain (staging.yourstore.com.np)
  2. Install SSL (Let’s Encrypt minimum)
  3. Install official or vetted community plugin — avoid nulled plugins
  4. Configure success, failure, and webhook/callback URLs exactly as documented
  5. Set order status mapping: payment confirmed → processing; failed → pending or failed
  6. Log all callbacks to file or DB table for 30 days minimum

Phase 4: Test transactions (before ads)

Test case Expected result
NPR 10 success Order marked paid, email sent
User cancels at wallet Order stays unpaid, cart recoverable
Duplicate callback Idempotent — single paid order
Mobile Safari checkout Redirect returns to thank-you page
Expired session mid-payment Graceful error, support path shown

Run NPR 10–100 live tests with real wallets — sandbox alone misses redirect URI mismatches on mobile.

Phase 5: Production launch

  1. Swap live keys; disable test mode
  2. Enable both wallets on checkout — do not A/B test one wallet at launch
  3. Monitor first 50 orders manually
  4. Connect GA4 purchase event (tracking recipes)

Budget build time in website cost guide — NPR 15,000–40,000 per gateway is realistic for custom setups.

Fee tables: merchant, customer, and blended economics

Merchant service fee (MSF) by provider — 2026 estimates

Provider Published MSF range Negotiation threshold Settlement Chargeback handling
eSewa 2.5 – 3.5% ~NPR 500k+ GMV/mo T+1 to T+3 Wallet dispute process
Khalti 2.5 – 3.5% ~NPR 500k+ GMV/mo T+1 to T+3 Similar
IME Pay 2.5 – 4.0% Varies T+1 to T+3 Growing merchant base
Fonepay Bank tariff + fee Corporate banking Bank-defined Bank-mediated
ConnectIPS Lower % on transfer B2B volume Same-day–T+1 Bank dispute

Always request written tariff sheets — verbal sales quotes differ from contract MSF.

Who pays the fee?

Model Customer sees Merchant nets
Merchant absorbs Clean checkout price Price − MSF
Surcharge (disclosed) Item + wallet fee line Full item price
Blended in ASP Single price Margin planned with MSF

For NPR 1,500 average order at 3% MSF, you lose NPR 45 per order — at 1,000 orders/month that is NPR 45,000, comparable to a part-time support hire. Model this in e-commerce margin planning.

International cards (if enabled)

Card acceptance through bank gateways is a minority of Nepali checkout volume but useful for diaspora and corporate buyers. Fees are often 3.5–4.5%+ — enable only if data supports it.

Troubleshooting guide

Payment succeeded but order still “pending”

Likely causes:

  • Webhook URL not reachable from gateway (shared host firewall)
  • Plugin did not verify signature
  • Permalink/rewrite rules broken after migration
  • Staging keys left in production .env

Fix path: Check gateway merchant dashboard for transaction ID → match WooCommerce order notes → replay webhook from logs → manually mark paid only after confirming settlement.

Customer redirected to blank page

  • Mixed content (HTTP asset on HTTPS checkout)
  • PHP timeout on low-tier hosting during callback
  • Plugin conflict with caching plugin (disable cache on /checkout/* and /wc-api/*)

Mobile-only failures

  • Test on NTC and Ncell data, not office WiFi only
  • Wallet apps use in-app browsers — return URL must be absolute HTTPS
  • Khalti/eSewa app version drift — retest after major app updates

Double charge / duplicate order

  • Implement idempotency: store gateway transaction ID unique index
  • Disable double-click on “Place order” button via front-end debounce

Settlement delayed beyond T+3

  • Incomplete KYC refresh
  • Holiday bank processing
  • Mismatch between settlement account and registered account — call merchant support with PAN ready

Debug checklist (print for your developer)

Symptom Check
404 on return URL Permalinks flush, .htaccess
500 on callback PHP error log, memory limit
SSL error Certificate chain, Cloudflare SSL mode
Works on desktop not mobile Return URL length, in-app browser
Intermittent Host uptime, cron disabled, rate limits

Multi-gateway checkout UX

Best practice for Nepali stores:

  1. Show wallet logos above fold on product page
  2. Default sort: eSewa, Khalti, COD (if offered)
  3. Do not force account creation before payment
  4. Thank-you page fires GA4 purchase and shows order ID + WhatsApp support link

Headless and custom checkout (advanced)

Brands outgrow plugins when they need:

  • Subscription billing with wallet retry logic
  • Multi-vendor marketplace on owned domain
  • ERP sync (Inventory+, local accounting packages)

Budget NPR 400,000+ for headless front + Nepal gateway middleware — only justified at NPR 2M+ monthly GMV or complex B2B rules. Until then WooCommerce + vetted plugins wins on TCO.

Reconciliation workflow (finance + ops)

Monthly close checklist for store owners:

  1. Export WooCommerce orders (paid status)
  2. Download eSewa/Khalti merchant settlement CSV
  3. Match transaction IDs — flag orphans
  4. Compare COD collected vs courier remittance
  5. Investigate >1% unmatched rows before closing books

Automate step 1–2 with n8n if volume exceeds 500 orders/month (automation stack).

Plugin and vendor red flags

  • Nulled premium plugins (security nightmare)
  • “Official” plugin not listed on gateway website
  • Callback URL hardcoded to vendor domain
  • No webhook signature verification
  • GPL plugin with no update in 12+ months

When in doubt, pay for professional integration once.

IME Pay and emerging wallets

IME Pay and smaller wallets matter for remittance-linked users and specific demographics:

  • Evaluate merchant coverage in your target cities before integration
  • Same KYC pattern as eSewa/Khalti
  • Often third priority after dual-wallet setup

Monitor NRB and wallet provider announcements — rail consolidation may simplify checkout over 2026–2027.

Refund and partial capture flows

Scenario Operational handling
Full refund Initiate in merchant portal + Woo refund note
Partial refund Confirm gateway supports partial capture
Wallet timeout Customer charged but order pending — reconcile
Duplicate callback Refund duplicate after verification

Document refund SLA on Returns page — E-Commerce Act consumer expectation.

Load testing before festival launch

Before Dashain traffic spike:

  1. Run 50 concurrent checkout simulations on staging
  2. Verify host PHP workers and DB connections
  3. Confirm gateway rate limits with account manager
  4. Pre-scale VPS if self-hosted Woo

Payment failures at peak traffic are revenue and reputation losses — not “technical excuses.”

ConnectIPS implementation notes (B2B)

For invoice payments above NPR 50,000:

  1. Enable via acquiring bank — not wallet plugin path
  2. Customer flow: banking app → approve transfer
  3. Lower MSF than wallets on large tickets
  4. Poor fit for impulse D2C under NPR 2,000

Pair with written invoice PDF and manual order confirmation workflow.

Sandbox vs production parity checklist

Setting Sandbox Production
Merchant ID Test credentials Live credentials
Callback URL staging.domain www.domain
SSL Required both Required
Order emails Disable or tag TEST Live customer emails

Promote to production only after 5 consecutive successful live micro-transactions.

Mobile wallet UX checklist (conversion)

  • Wallet logos visible above fold on mobile product page
  • Checkout loads under 3s on 4G throttled test
  • Return URL tested in eSewa in-app browser
  • Khalti app return tested on Android + iOS
  • Error messages human-readable in Nepali/English
  • Support phone on checkout footer

Missing items correlate with 15–25% checkout drop-off in student audits (IT204).