Skip to content

Collect · eSewa payment gateway

Accept eSewa payments, no integration needed.

Connect your eSewa merchant account once. TolaPay handles the ePay redirect, signature and verification, and money settles straight to your eSewa merchant account.

Chautari CloudPay on phone
Growth · 3 seats · monthlyरू 4,500
VAT 13%रू 585
Total todayरू 5,085
Choose how to pay

Paying with eSewa wallet

Interactive illustration. No payment is created.

In short

How do I accept eSewa payments on my website?

Apply with eSewa for a merchant account, then paste the merchant code and secret key into TolaPay's Integrations. Your app makes one call, POST /api/v1/checkouts with allowed_providers ["esewa"], and sends the customer to the returned URL. TolaPay runs the ePay v2 form, checks eSewa's signed response and status, marks the invoice paid and sends one signed invoice.paid webhook. The money settles to your own eSewa merchant account.

How it works

eSewa payment gateway in 4 steps.

  1. 01

    Get an eSewa merchant account

    Apply with eSewa; they ask for documents such as your business registration and PAN/VAT certificate.

  2. 02

    Connect it to TolaPay

    Paste the merchant code and secret key in Integrations. Test and live are kept separate.

  3. 03

    Send customers to checkout

    A hosted page, a link, a QR or the tola.js overlay, with eSewa alone or next to other rails.

  4. 04

    Get one webhook

    TolaPay verifies with eSewa, marks the invoice paid and sends invoice.paid.

In practice

eSewa next to Khalti, cards and bank transfer

Offer eSewa alone or in the full picker. The customer pays in eSewa and comes back to your success page; you get one invoice.paid webhook whatever they used.

Chautari CloudPay on phone
Growth · 3 seats · monthlyरू 4,500
VAT 13%रू 585
Total todayरू 5,085
Choose how to pay

Paying with eSewa wallet

Interactive illustration. No payment is created.

In practice

One API call instead of an eSewa integration

No HMAC signing, status polling or transrec checks in your code. TolaPay checks eSewa's signed response before anything is marked paid.

Webhook delivery · invoice.paid200 · 182 ms

POST https://api.chautari.example/tola

Tola-Event
invoice.paid
Tola-Signature
t=1792311420,v1=5f0c9e…b81a
User-Agent
Tola-Webhooks/1.0
{
  "id": "we_…",
  "type": "invoice.paid",
  "created_at": "2026-10-18T08:17:00Z",
  "data": {
    "number": "INV-2083-0142",
    "customer_id": "cus_7k2mq9vd4r8xw3ba6tyn",
    "total_cents": 703764,
    "currency": "NPR",
    "status": "paid"
  }
}

HMAC-SHA256 over the timestamp and raw body. Retried on failure.

Illustrative example with sample data. No payment is created.

Capabilities

What's included.

  • 01

    Your merchant account

    Payments go to your own eSewa merchant account; TolaPay never holds the money.

  • 02

    Two fields to connect

    Paste your merchant code and secret key in Integrations. ePay v2, with v1 for older accounts.

  • 03

    Verified server-side

    Every payment is checked with eSewa before the invoice is marked paid.

  • 04

    Website, link or QR

    Hosted checkout, the tola.js overlay, a shareable link or a QR on a phone.

  • 05

    Subscriptions too

    Renewals reach eSewa customers as an invoice link and a reminder.

  • 06

    Test first

    eSewa's sandbox (EPAYTEST) works in test mode before you go live.

Who uses it

Where it fits.

  • Consumer apps

    Most Nepali customers already have eSewa; let them pay without a card.

    Use case 01
  • Subscriptions

    Renewals go out as an invoice link with a reminder, paid in eSewa.

    Use case 02
  • Small teams

    Skip building and maintaining the ePay v2 flow and its verification.

    Use case 03

Integration

Restrict a checkout to eSewa

allowed_providers limits what the hosted page offers. Leave it out to show every connected rail.

Create an eSewa checkout
curl https://api.tola.com.np/api/v1/checkouts \
  -H "Authorization: Bearer $TOLA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "customer_id": "cus_7k2mq9vd4r8xw3ba6tyn",
    "plan_id": "plan_g4wv8t2kq6m1xr9zb3dn",
    "allowed_providers": ["esewa"],
    "success_url": "https://app.chautari.example/welcome?checkout={CHECKOUT_ID}"
  }'

Questions

Questions about esewa payment gateway.

Do I need my own eSewa merchant account?

Yes. Apply with eSewa as a merchant (they ask for documents such as your business registration and PAN/VAT certificate), then connect the merchant code and secret key they give you.

What does it cost?

eSewa charges its standard merchant fee on each payment. TolaPay adds nothing on top while it is in beta.

Can I take Khalti and cards as well?

Yes. Connect Khalti and Stripe the same way and the customer chooses at checkout.

Does this show up on the invoice correctly?

Yes. Every invoice is in NPR with the 13% VAT split, your PAN and bank details, as a PDF and in the customer portal.

Can I try it before going live?

Yes. Every workspace has a test mode with separate tola_test_ keys and sandbox Khalti, eSewa and Stripe.

Your product deserves better billing infrastructure.

Create a free workspace, try the whole flow in test mode with sandbox Khalti, eSewa and Stripe, and go live when you're ready.

Free while TolaPay is in public beta. You pay only your payment providers' own fees.