PayBridgeNP

PayBridgeNP

Nepal payments

Back to Blog
billingnepalpayment-gateway

Recurring Billing and Subscriptions in Nepal: A Complete Guide

How to set up recurring payments, subscriptions, and automated billing for your Nepal business - what works, what doesn't, and the right approach.

March 15, 20264 min readPayBridgeNP Team
Recurring Billing and Subscriptions in Nepal: A Complete Guide

Subscription businesses are growing in Nepal - SaaS products, online courses, gym memberships, media subscriptions, and service retainers all want recurring billing. But recurring payments in Nepal work differently from the West. Here's what you need to know.

The Reality of Recurring Billing in Nepal

In mature markets like the US, recurring billing typically works like this:

  1. Customer saves a card on file
  2. Every billing cycle, the platform charges the card automatically
  3. No action required from the customer

This model doesn't work well in Nepal today for two reasons:

  1. No card-on-file for wallets - Khalti and eSewa don't support saved payment methods for merchant-initiated charges. Each transaction requires active customer authentication.

  2. Limited credit card use - Most Nepali consumers don't have credit cards for online use. Debit card infrastructure for recurring charges is still developing.

What Actually Works for Recurring Billing in Nepal

Model 1: Invoice-Based Billing (Most Common)

Generate an invoice each billing cycle and notify the customer to pay:

  1. Send an invoice via email/SMS with a payment link
  2. Customer clicks the link, pays via Khalti/eSewa/ConnectIPS
  3. Your system receives the webhook and activates/continues the service

Tools: PayBridgeNP payment links + email/SMS reminders

Best for: B2B services, consulting retainers, SaaS with smaller customer counts (under 1,000)

Model 2: Dunning-Driven Self-Service

Create a customer portal where subscribers can manage their own payments:

  1. Subscription expires or payment comes due
  2. System sends a reminder with a "Renew Now" link
  3. Customer pays within a grace period
  4. Service resumes automatically on payment

Tools: PayBridgeNP checkout sessions + webhooks + subscription state machine in your database

Best for: SaaS products, online memberships, digital subscriptions

Model 3: Annual Prepaid (Simplest)

Charge once per year. Much simpler than monthly:

  1. Customer pays annually upfront
  2. No recurring billing complexity
  3. Send a renewal reminder 30/14/7 days before expiry

Many Nepali SaaS companies prefer this because it eliminates the monthly collection headache.

Building a Subscription System with PayBridgeNP

Here's a minimal but production-ready subscription flow:

// 1. When subscription payment is due, create a checkout session
const session = await paybridge.checkout.create({
  amount: 99900, // NPR 999/month
  currency: "NPR",
  customer: {
    name: subscriber.name,
    email: subscriber.email,
    phone: subscriber.phone,
  },
  successUrl: `https://yourapp.com/billing/success?session={CHECKOUT_SESSION_ID}`,
  cancelUrl: `https://yourapp.com/billing`,
  metadata: {
    subscriptionId: subscription.id,
    period: "2025-05",
    type: "renewal",
  },
});

// 2. Email or SMS the payment URL to the customer
await sendEmail({
  to: subscriber.email,
  subject: "Your May invoice is ready",
  body: `Pay here: ${session.checkoutUrl}`,
});
// 3. Webhook handler
case "payment.succeeded": {
  const { subscriptionId, period } = event.data.metadata;
  await db.subscriptions.update({
    where: { id: subscriptionId },
    data: {
      status: "active",
      currentPeriodEnd: endOfMonth(period),
      lastPaymentAt: new Date(),
    },
  });
  await sendConfirmationEmail(subscriptionId);
  break;
}

case "payment.failed":
case "payment.cancelled": {
  const { subscriptionId } = event.data.metadata;
  await startGracePeriod(subscriptionId);
  await sendPaymentReminderEmail(subscriptionId);
  break;
}

Automated Reminders

Payment reminders dramatically reduce churn. Schedule reminders at:

  • 7 days before due date (soft reminder)
  • 3 days before (firmer reminder)
  • Due date (invoice with payment link)
  • 3 days after due (grace period warning)
  • 7 days after due (final notice before suspension)

PayBridgeNP's scheduler handles automated reminders for payment links. You can also build your own notification logic on top of the webhook events.

Handling Grace Periods

Don't cut off access immediately when payment fails. A typical grace period:

async function startGracePeriod(subscriptionId: string) {
  await db.subscriptions.update({
    where: { id: subscriptionId },
    data: {
      status: "past_due",
      gracePeriodEndsAt: addDays(new Date(), 7),
    },
  });
}

// Cron job: check for expired grace periods
async function checkExpiredGracePeriods() {
  const expired = await db.subscriptions.findMany({
    where: {
      status: "past_due",
      gracePeriodEndsAt: { lt: new Date() },
    },
  });
  for (const sub of expired) {
    await suspendSubscription(sub.id);
  }
}

ConnectIPS for B2B Subscriptions

For business customers paying monthly retainers or SaaS invoices, ConnectIPS is often the preferred method. Business accounts have higher limits and bank-to-bank transfer is familiar to finance teams.

What's Coming

Nepal Rastra Bank is actively working on interoperable payment infrastructure. Merchant-initiated direct debits (similar to NACH in India) are on the roadmap. When this arrives, true automated recurring charges will be possible. Until then, invoice-based billing with good reminders is the right approach.

Summary

ModelAutomationEffortBest For
Invoice + linkManual triggerLowB2B, small SaaS
Annual prepaidNone neededVery lowProducts with low churn
Portal self-serviceSemi-autoMediumConsumer subscriptions
Full dunning flowMostly automatedHighScale-up SaaS

Start with invoice-based billing. Add automation as you grow. See the API guide for full webhook and checkout session details. PayBridgeNP provides the payment infrastructure - you focus on your product.


Related Articles

Ready to accept payments in Nepal?

Connect Khalti, eSewa, and ConnectIPS with a single API. Free to start.