API Reference: Functions
Unified Functions
Section titled “Unified Functions”initiatePayment(input)
Section titled “initiatePayment(input)”Dispatches initiation based on input.method.
function initiatePayment( input: UnifiedInitiateInput): Promise<{ url: string; fields: Record<string, string> } | InitiateKhaltiResult>Parameters:
Section titled “Parameters:”input: A discriminated union onmethod:method: 'esewa': Requiresconfig: EsewaConfigandorder: { orderId, amountPaisa, taxPaisa?, servicePaisa?, deliveryPaisa? }.method: 'khalti': Requiresconfig: KhaltiConfigandorder: { purchaseOrderId (or orderId), purchaseOrderName, amountPaisa, customerInfo?, amountBreakdown?, extra? }.
Returns:
Section titled “Returns:”- For eSewa:
{ url: string, fields: Record<string, string> }(target form URL and hidden input dictionary). - For Khalti:
{ pidx: string, payment_url: string, expires_at: string, expires_in: number }.
verifyPayment(input)
Section titled “verifyPayment(input)”Dispatches verification based on input.method and returns a normalized PaymentResult.
function verifyPayment( input: UnifiedVerifyInput): Promise<PaymentResult>Parameters:
Section titled “Parameters:”input:method: 'esewa': Requiresconfig,data(base64 string),expectedOrderId,expectedAmountPaisa.method: 'khalti': Requiresconfig,pidx,expectedAmountPaisa,expectedOrderId?.
Returns:
Section titled “Returns:”A promise resolving to a normalized PaymentResult:
interface PaymentResult { status: "completed" | "pending" | "failed" | "expired" | "canceled"; amountPaisa: number; orderId: string; traceId: string | null; // eSewa ref_id or Khalti transaction_id raw: unknown; // Raw provider responses for audit logging}eSewa Dedicated Functions
Section titled “eSewa Dedicated Functions”buildEsewaFields(opts)
Section titled “buildEsewaFields(opts)”function buildEsewaFields(opts: EsewaFieldOpts): { url: string; fields: Record<string, string>;}Constructs the HMAC-SHA256 signature and returns the form action URL and required fields.
verifyEsewaPayment(opts)
Section titled “verifyEsewaPayment(opts)”function verifyEsewaPayment(opts: VerifyEsewaPaymentOpts): Promise<PaymentResult>Decodes data, checks HMAC with timingSafeEqual, queries status API, and normalizes output.
signEpayV2(params, secret)
Section titled “signEpayV2(params, secret)”function signEpayV2( p: { total_amount: string; transaction_uuid: string; product_code: string }, secret: string): stringCalculates ePay v2 Base64 digest of total_amount=...,transaction_uuid=...,product_code=....
checkEpayStatus(opts)
Section titled “checkEpayStatus(opts)”function checkEpayStatus(opts: EpayStatusOpts): Promise<EpayStatusResult>Queries eSewa transaction status endpoint directly via HTTP GET.
Khalti Dedicated Functions
Section titled “Khalti Dedicated Functions”initiateKhalti(opts)
Section titled “initiateKhalti(opts)”function initiateKhalti(opts: InitiateKhaltiOpts): Promise<InitiateKhaltiResult>Calls /epayment/initiate/ with Authorization: Key <secret> and returns pidx and payment_url.
lookupKhalti(opts)
Section titled “lookupKhalti(opts)”function lookupKhalti(opts: LookupKhaltiOpts): Promise<LookupKhaltiResult>Calls /epayment/lookup/ with pidx. Correctly parses HTTP 400 error bodies into status strings.
verifyKhaltiPayment(opts)
Section titled “verifyKhaltiPayment(opts)”function verifyKhaltiPayment(opts: VerifyKhaltiPaymentOpts): Promise<PaymentResult>Queries lookup and normalizes payment status to PaymentResult.
Money Utilities
Section titled “Money Utilities”nprToPaisa(npr: number): number
Section titled “nprToPaisa(npr: number): number”Converts rupees to integer paisa: Math.round(npr * 100).
paisaToRupeesString(paisa: number): string
Section titled “paisaToRupeesString(paisa: number): string”Converts integer paisa to string decimal representation (e.g. 12345 $\rightarrow$ "123.45").
parseAmountToPaisa(raw: string | number): number
Section titled “parseAmountToPaisa(raw: string | number): number”Parses formatted or comma-separated amount strings (e.g. "1,000.0") to integer paisa (100000).