Skip to content

Collect · Khalti payment gateway

Accept Khalti payments, no integration needed.

Connect your Khalti merchant account once and take Khalti wallet, e-banking, mobile banking and connectIPS. TolaPay runs the KPG-2 flow and the lookup; you get a paid invoice.

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

Open Khalti on

…and every other bank Khalti routes to.

Paying with Khalti · Mobile banking at Nabil

Interactive illustration. No payment is created.

In short

How do I accept Khalti payments on my website?

Register as a Khalti merchant and paste the secret key from your Khalti merchant dashboard into TolaPay's Integrations. Your app makes one call, POST /api/v1/checkouts with allowed_providers ["khalti"], and redirects to the returned URL. TolaPay initiates the KPG-2 payment, handles the return, confirms it with Khalti's lookup, marks the invoice paid and sends one signed invoice.paid webhook. The money settles to your own Khalti merchant account.

How it works

Khalti payment gateway in 4 steps.

  1. 01

    Get a Khalti merchant account

    Register as a Khalti merchant and copy the secret key from your merchant dashboard.

  2. 02

    Connect it to TolaPay

    Paste the key in Integrations. Sandbox and live keys are kept separate.

  3. 03

    Send customers to checkout

    Wallet, e-banking, mobile banking or connectIPS, on a hosted page, a link or the tola.js overlay.

  4. 04

    Get one webhook

    TolaPay runs the lookup, marks the invoice paid and sends invoice.paid.

In practice

Khalti wallet and every bank, in one checkout

Customers pay with the Khalti wallet, e-banking, mobile banking or connectIPS and return to your success page. Subscriptions, one-off sales and wallet top-ups all work.

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

Open Khalti on

…and every other bank Khalti routes to.

Paying with Khalti · Mobile banking at Nabil

Interactive illustration. No payment is created.

In practice

Skip the KPG-2 initiate-and-lookup code

TolaPay initiates the payment, handles the return, runs the lookup and signs one invoice.paid webhook for you.

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 settle to your own Khalti merchant account.

  • 02

    One key to connect

    Paste your Khalti secret key in Integrations; test and live keys both work.

  • 03

    Every bank

    Khalti e-banking and mobile banking with a live bank list, plus connectIPS.

  • 04

    Verified with Khalti

    Each payment is confirmed with Khalti's lookup before the invoice is marked paid.

  • 05

    Open on a bank

    Send a customer straight to mobile banking at their bank, or show the full picker.

  • 06

    Test first

    Khalti's sandbox works in test mode with tola_test_ keys.

Who uses it

Where it fits.

  • Bank customers

    Open checkout straight on mobile banking at the customer's own bank.

    Use case 01
  • Consumer apps

    Khalti wallet users pay in a tap, without a card.

    Use case 02
  • B2B sales

    Finance teams pay through e-banking or connectIPS from a company account.

    Use case 03

Integration

Restrict a checkout to Khalti

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

Create a Khalti 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": ["khalti"],
    "success_url": "https://app.chautari.example/welcome?checkout={CHECKOUT_ID}"
  }'

Questions

Questions about khalti payment gateway.

Do I need my own Khalti merchant account?

Yes. Register as a Khalti merchant, then connect the secret key from your Khalti merchant dashboard.

What does it cost?

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

Which banks are supported?

Every bank Khalti routes to for e-banking and mobile banking, including Nabil, NIC Asia, Global IME, Everest, Siddhartha and others.

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.

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.