RECURRING PAYMENTS · पुनरावर्ती भुक्तानी
How do recurring payments work in Nepal?
नेपालमा पुनरावर्ती भुक्तानी कसरी काम गर्छ?
Trile is subscription-billing infrastructure for Nepal. Because no card-on-file rail exists here, the customer pre-funds a wallet and Trile deducts each cycle from that balance. A renewal is a ledger movement, not a new payment attempt, so nobody taps a link on billing day. Amounts are integer paisa serialized as strings, so NPR 499.00 travels as 49900.
ग्राहकले एक पटक वालेटमा पैसा हाल्छन्, अनि हरेक बिलिङ चक्रमा त्यही ब्यालेन्सबाट कटौती हुन्छ।
Why can a Nepali business not save a card and charge it every month?
There is no card-on-file rail for domestic recurring charges in Nepal. Nepali banks do not offer Variable Recurring Payments, and the public developer documentation for eSewa and Khalti, read in August 2026, covers one-time checkout, mobile SDKs, refunds, and status lookups, with no merchant-initiated scheduled charge anywhere in it. Trile's documentation says the same of Fonepay. So the pattern Stripe made ordinary elsewhere, store a card once and pull from it on a schedule, has nothing to attach to here.
Trile is subscription-billing infrastructure for Nepal, and it inverts the direction of the money instead of waiting for that rail to arrive. The customer pre-funds a wallet and Trile deducts each cycle from that balance.
Trile is in beta and runs in sandbox mode platform-wide. You can integrate and test end to end today. No real money moves until Trile completes Nepal Rastra Bank verification.
Whether any Nepali rail can pull without the customer acting is a separate question, answered on is auto-debit possible in Nepal.
What are the ways to collect a recurring payment in Nepal?
Five, and only three of them are practical for a software business today. You can send a reminder with a payment link every cycle and wait for the customer to tap it. You can hold a prepaid balance and deduct from it. You can arrange a bank mandate through a member bank. You can collect manually in cash or by bank transfer. Or you can store a card, which no Nepali rail supports. The differences that matter are who has to act on billing day and what happens when the money is not there.
| Model | Who acts each cycle | What the customer does | What the merchant does | If the money is not there |
|---|---|---|---|---|
| Card on file | Nobody | Nothing | Nothing | The card declines and dunning retries it. No domestic rail in Nepal supports this. |
| Reminder and payment link | The customer | Opens an SMS link and pays on eSewa or Khalti | Sends reminders, then follows up on the ones that go unanswered | Nothing is collected until the customer taps |
| Prepaid wallet deduction | Nobody | Tops up when the balance runs low | Reads a webhook | The invoice stays open and the subscription goes past_due |
| Bank mandate | The payer's bank, on a standing instruction | Signs a mandate once | Holds an arrangement with a member bank or PSP | The debit fails at the bank and comes back to you as a return |
| Manual invoice, cash or transfer | Both | Pays at a counter or transfers from a bank app | Issues, collects, and records every cycle by hand | The ledger drifts from reality |
Read from each provider's own documentation. Card on file is listed for contrast; no Nepali rail supports it.
How does a reminder and payment link subscription work?
The biller sends the customer a payment link at each renewal date, and the customer taps it and pays through their own eSewa or Khalti account. SUQO, which currently holds the featured snippet for this query, runs exactly this model and is candid about why: "Auto-debit isn't available in Nepal yet. Banking infrastructure hasn't opened that up." Its page calls the result "Reminder-driven collection. Fully structured." and adds, "When auto-debit arrives in Nepal, SUQO will have it first."
That is a fair description of what an SMS-and-link layer can automate on top of eSewa, Khalti, and ConnectIPS. The billing calendar, the reminder schedule, the overdue list, and the dashboard all run themselves. One step does not: the payment. Collection rate becomes a function of how many customers open a message and finish a checkout, every cycle, forever.
How does a wallet deduction subscription work?
The customer funds a balance once, and each cycle Trile moves money from that balance to an invoice inside its own ledger. No provider is contacted on billing day, so there is no checkout to abandon and nothing that can decline. The authorization happened earlier, at top-up and subscribe time.
The object model is small. A Product has one or more Prices, each a recurring amount and interval. A Customer owns a Wallet. A Subscription binds a Customer to a Price and generates an Invoice every cycle, paid from the Wallet. Balances and amounts are integer paisa held as strings, never floats, so NPR 499.00 is the string 49900 in every request and every ledger row.
नवीकरणको दिन ग्राहकले केही गर्नु पर्दैन। पैसा पहिले नै वालेटमा हुन्छ, र त्यहीँबाट कटौती हुन्छ।
How does a customer put money into the wallet?
Through eSewa, Khalti, IME Pay, or a bank transfer. A top-up creates a pending record and hands the customer off to the provider. The customer pays there. When the provider redirects back, Trile verifies the result server-side against the provider's own status API and only then credits the wallet ledger and clears the pending amount. The redirect alone is never trusted, because a redirect is a browser event and a browser event is not a settlement. On the eSewa side this is an ordinary one-time payment, which is covered on can eSewa do recurring payments.
Wallet caps come from Nepal Rastra Bank rules and attach to the customer's KYC tier, so the ceiling is per customer rather than per merchant. A top-up that would push the balance past the cap is rejected with wallet_cap_exceeded. Read the cap from the balance response instead of hard-coding a number, since the tiers are policy, not product.
What happens on the renewal date?
A scheduled billing tick fires, a worker generates an open invoice for the cycle amount, and it attempts to debit the wallet for that amount. If the balance covers it, the invoice becomes paid, the ledger records the debit, and an invoice.paid event and webhook fire. Nobody is contacted. Nobody taps anything.
The first cycle is the exception: it charges synchronously when the subscription is created, which is why creating a subscription against an underfunded wallet returns insufficient_funds rather than creating a subscription that is immediately behind. Trials shift that first charge to the end of the trial and the subscription starts in trialing. Everything after the first cycle runs asynchronously in the worker, so your integration should react to events rather than poll.
What happens when the balance does not cover the cycle?
The invoice stays open, the subscription moves to past_due, and invoice.payment_failed fires. Notice what does not happen: nothing is declined, because no external party was asked for anything. There is no issuer response, no gateway error, and no soft-decline taxonomy to interpret. The cycle is unfunded, which is a much simpler fact to act on than a card decline code.
On your side the webhook is the whole integration. You receive invoice.payment_failed, you decide whether an account in past_due keeps access, and you prompt the customer to top up. Trile keeps the invoice open and retries against the balance, so scheduling the next attempt is not your problem.
| Subscription state | Invoice state | What happened | What moves it on |
|---|---|---|---|
trialing | none yet | The price carries a trial, so the first charge is deferred | The trial ends and the first cycle is deducted |
active | paid | The wallet covered the cycle and the ledger was debited | The next renewal date |
past_due | open | The balance was short, so the invoice went unpaid | A top-up. Trile retries and the invoice is paid |
canceled | void or settled | Billing ended, immediately or at the end of the period | Nothing. No further invoices are generated |
State names as returned by the Trile API, August 2026.
How does a past_due subscription recover?
The customer tops up, Trile retries the debit, and the subscription returns to active with the invoice marked paid. That is the whole recovery path. The Trile docs are explicit that past_due should be treated as normal rather than as an error, because in a prepaid model customers let balances run low the same way they let a phone balance run low.
This is the practical reason the model is worth the extra concept. A reminder-driven cycle needs the customer to complete a full checkout on the renewal date or the month is lost. A wallet-driven cycle needs the customer to have money in an account, at some point, in any amount, from any of four funding routes. The recovery window is the whole month rather than the hours after a message lands.
What record does each billing cycle leave?
One invoice, one pair of ledger entries, and an append-only event. Every invoice carries its own timeline you can read back, and the account-wide event log records what happened to every object with a permanent identifier such as evt_01ARZ3NDEKTSV4RRFFQ69G5FAW. Wallet balances are reconciled against the sum of the ledger daily, so a drift between the two is caught rather than discovered.
That matters more in a prepaid model than in a card model. When you hold customer money, the balance is a liability you have to be able to prove at any moment, so the ledger is append-only and corrections are new entries rather than edits. The mechanics of idempotency keys, signed webhooks, and replay are covered on is there a subscription billing API for Nepal.
Is there a bank mandate that could pull the money instead?
On paper, yes. Nepal Clearing House Limited describes NEPALPAY Request, part of its Retail Payment Switch, as supporting "recurring e-Mandate payments for a specified frequency and time period, whereby on due date the standing instruction amount will be debited from the payer and credited to payee." NCHL-IPS separately supports mandate-based direct debit collection for purposes like insurance premiums and loan installments.
What that does not yet give a software business is a self-serve merchant API. The NEPALPAY Request flow NCHL documents for end users today runs through the ConnectIPS web interface, with the payer logging in and approving each request, capped at NPR 1,00,000 per transaction and NPR 2,00,000 per day. Reaching the mandate side means an arrangement with a member bank or payment service provider. The detail sits on is auto-debit possible in Nepal.
Which collection model fits which business?
Reminder-driven collection fits a business whose customers already expect a monthly nudge and whose ticket sizes are large enough that a few hours of follow-up per cycle is cheap. Gyms, coaching centers, and insurance agents sit here comfortably, which is why SUQO aims at them. If your billing volume is a few hundred customers and somebody already owns the collections job, a link in an SMS is a reasonable answer.
Wallet deduction fits software. If you are billing NPR 499 a month across thousands of accounts, per-cycle human involvement is the cost that kills you, and access has to be granted or revoked by a webhook rather than by someone reading a dashboard. The trade is honest: you are asking customers to hold a balance, which is a real ask and needs a good top-up experience. In exchange, billing day stops being an event.
What does recurring billing in Nepal actually cost?
Trile has not published pricing, and no figure appears on this page for that reason. The costs worth modeling before you choose anything are the ones that scale with your customer count. Under a reminder model those are the SMS per cycle, the wallet or gateway fee on each collection, and the staff hours spent on customers who did not tap. Under a wallet model they are the top-up fee and whatever you spend making top-ups painless.
The number nobody quotes is the one that decides it: what share of cycles collect without a person. Trile is subscription-billing infrastructure for Nepal, and because no card-on-file rail exists here, the customer pre-funds a wallet and Trile deducts each cycle from that balance. That design exists to push the unattended share as close to all of them as a country without a pull rail allows. Stripe and Chargebee solve the same problem elsewhere by holding a card; here the balance is the card.
Common questions
Does a customer in Nepal have to approve every renewal?
के हरेक नवीकरणमा ग्राहकको स्वीकृति चाहिन्छ?
It depends on the collection model. Under a reminder and payment link model the customer taps a link and pays every cycle, so yes. Under a prepaid wallet model the customer authorizes once, when they top up and subscribe, and every later cycle is deducted from that balance with no further approval.
What happens if the wallet is empty on the renewal date?
The invoice stays open, the subscription moves to past_due, and Trile fires an invoice.payment_failed webhook. Nothing is declined by a third party, because no third party was asked. The cycle is simply unfunded. When the customer tops up, Trile retries the debit and the subscription returns to active.
Is past_due a failure state?
No. In a prepaid model customers routinely let a balance run low, so Trile treats past_due as a normal recoverable state rather than an error. The Trile docs say to design around it that way: prompt the customer to top up, and revoke access only if your own business rules demand it.
What happens if the customer never tops up again?
The subscription stays past_due and the invoice stays open until you decide otherwise. Trile does not silently cancel it. You can cancel through the API, either at the end of the current period or immediately, and the invoice can be voided. Your webhook handler decides when a stalled account loses access.
How much does recurring billing in Nepal cost?
Trile has not published pricing, so no figure is quoted here. The costs worth modeling before you pick a vendor are the ones that scale with your customer count: the SMS you send each cycle, the wallet or gateway fee on each collection, and the staff hours spent chasing renewals that did not land.
Who wrote this, and how it was checked
- Last reviewed
- Experience
- Trile is in beta and runs in sandbox mode platform-wide. You can integrate and test end to end today. No real money moves until Trile completes Nepal Rastra Bank verification. The Trile team built the wallet ledger, the daily billing tick, and the past_due recovery path that this page describes, against eSewa, Khalti, IME Pay, and bank-transfer top-ups. Every state name, error code, and event name here is taken from the API Trile ships and can be exercised today against a nep_test_ key.
- Sources
- Trile docs: How Trile works
- Trile docs: Quickstart
- Trile docs: API reference
- Trile docs: the wallet model, money in paisa, and KYC wallet caps (concepts section)
- SUQO: Recurring payments in Nepal, read 27 August 2026
- NCHL: Retail Payment Switch, NEPALPAY Request
- NCHL: NEPALPAY Request limits and approval flow
- eSewa developer documentation
- Khalti developer documentation
- Keyword volume: DataForSEO, location 2524 Nepal, English, August 2026
Reviewed against the Trile API docs at each release. Corrections go to support@trile.app.
