Accepting digital payments is only half the job. Knowing exactly what came in, when it settled, and making sure it matches your books, that's where most Nepali merchants struggle. This guide covers practical payment tracking and reconciliation.
Why Reconciliation Matters
Poor payment tracking leads to:
- Under-reporting income (tax exposure)
- Over-fulfilling orders (someone pays twice or payment not received)
- Disputes with customers ("I paid but you said I didn't")
- Cash flow surprises ("Expected NPR 50,000 this month but only received 35,000")
With multiple payment providers (Khalti, eSewa, Fonepay), each has its own dashboard, its own settlement cycles, and its own transaction ID format. Reconciling across three providers manually is painful. Getting it into a single place makes everything easier.
The PayBridgeNP Dashboard
All transactions across every provider flow into a single view in your PayBridgeNP dashboard. The track payments feature gives you:
Transaction list: Every payment, regardless of whether it came via Khalti, eSewa, Fonepay, payment link, or direct API. All in one table.
Filters:
- Date range
- Status (success, pending, processing, failed, cancelled, refunded)
Search: Look up any payment by its PayBridgeNP payment ID or the provider's transaction reference.
Exporting Transaction Data
CSV Export
For monthly accounting, export a CSV:
- In dashboard, set your date range
- Click Export > CSV
- Import to Excel, Google Sheets, or your accounting software
The CSV includes: payment ID, amount (NPR), currency, provider, provider reference, status, provider fee (NPR), and date.
API Export
For programmatic access:
// The list endpoint paginates with limit and offset
const page = await paybridge.payments.list({ limit: 100, offset: 0 });
// page.data is an array of Payment objects
// page.meta = { total, limit, offset }, so keep increasing
// offset until you have fetched all page.meta.total payments
// Then narrow to the month you are reconciling on your side
const april = page.data.filter(
(p) => p.status === "success" && p.created_at.startsWith("2026-04"),
);
Understanding Settlement
A payment with status "success" means the provider confirmed the transaction. It is worth being clear about where the money goes: PayBridgeNP never holds or takes custody of your funds. It routes the payment and tracks it for you.
Each provider settles directly to your own merchant account with that provider:
- eSewa payments settle to your own eSewa merchant account
- Khalti payments settle to your own Khalti merchant account
- Fonepay payments settle to your own Fonepay merchant account
Every provider runs its own settlement cycle, so the timing of when funds reach you is set by each provider, not by PayBridgeNP. To check exactly when a settlement lands, use each provider's own merchant dashboard.
What PayBridgeNP gives you is a single place to see payment status, history, and exports across all three providers, so you never have to log into three separate dashboards to know what came in.
Daily Reconciliation Habit
For growing businesses, a 5-minute daily reconciliation catches problems early:
- Open PayBridgeNP dashboard
- Filter to today's successful transactions
- Cross-reference against orders fulfilled in your system
- Flag any mismatches
A mismatch usually means:
- A webhook failed and an order wasn't marked as paid
- A payment was received but the order ID is wrong (customer error)
- A duplicate payment (the customer paid twice, often after retrying from their wallet app: issue a refund immediately)
Connecting to Accounting Software
Manual (Excel/Google Sheets)
Export monthly CSVs. Keep a master sheet with columns: Date, PayBridgeNP ID, Amount, Provider, Customer, Order ID, Fees, Net. This gives you everything an accountant needs.
Hamrokhata / Tally
Commonly used accounting software can import CSV transaction records. Map the fields from your PayBridgeNP export to your chart of accounts.
Format for Tally import:
Date, Ledger, Debit, Credit, Narration
2026-04-15, Khalti Receipts, 0, 1500, Payment from Ram Sharma - ORD-001
Custom Integration
Use the PayBridgeNP Webhooks API to push every transaction in real time to your accounting system:
case "payment.succeeded": {
await accountingSystem.createEntry({
date: new Date(event.created * 1000), // envelope timestamp (unix seconds)
debit: "Digital Receivables",
credit: "Sales Revenue",
amount: event.data.amount / 100, // Convert paisa to NPR
reference: event.data.id,
description: `${event.data.provider} payment - ${event.data.metadata.orderId}`,
});
break;
}
case "payment.refunded": {
// Careful: event.data.amount is the ORIGINAL payment amount.
// The refund itself is event.data.refunded_amount. Booking
// data.amount here double-counts every partial refund.
await accountingSystem.createEntry({
date: new Date(event.created * 1000),
debit: "Sales Returns",
credit: "Digital Receivables",
amount: event.data.refunded_amount / 100,
reference: event.data.refund_id,
});
break;
}
Understanding Your Costs
PayBridgeNP charges 0% per transaction, so your costs are simple to record:
- Your plan: a flat monthly fee (Free, Growth, or Pro) that stays the same regardless of how much you process
- Provider fees: eSewa and Khalti charge their own per-transaction rate, deducted before the money settles to your merchant account (the exact rate depends on your agreement with the provider). Fonepay does not charge merchants a percentage on QR payments.
Your dashboard and CSV exports show an estimated provider fee on each transaction, so you can total them for the year; reconcile the exact figures against each provider's own statement. Both your monthly plan and the provider fees are deductible business expenses - keep the records for your tax filing.
Customer Disputes: When "I Already Paid" Happens
Every merchant in Nepal has heard "I already paid but you haven't processed my order."
With PayBridgeNP:
- Ask the customer for the payment reference from their confirmation SMS or receipt (or the date and rough time they paid)
- In your dashboard, search by that payment ID or provider reference, or filter to that date
- Find the disputed payment
- Check status: Did it succeed? Did the webhook fire? Is the order marked paid?
Usually the issue is one of:
- Webhook failed: Payment completed but your system didn't receive the notification. Fix: manually trigger fulfillment, then check your webhook logs to diagnose the failure.
- Customer paid wrong link: They paid an old or wrong payment link. The money is there, just attached to the wrong order.
- Payment is still pending: The customer initiated but didn't complete. Not a real payment yet.
Having all transactions in one dashboard makes resolving these disputes fast. You can give the customer a definitive answer in under a minute.
Year-End Tax Preparation
For your annual tax filing in Nepal, you'll need to report digital payment income. How far back you can export depends on your plan's data retention (30 days on Free, 90 days on Growth, unlimited on Pro and Enterprise), so on Free or Growth make the CSV export a monthly habit rather than a year-end scramble. Provide your CA:
- Total revenue by month
- Total Khalti/eSewa/Fonepay receipts
- Total refunds issued
- Total gateway fees paid (deductible expense)
Log in to your dashboard to access your transaction history and exports.