@swippee/sdk
v0.2.0
Published
Official TypeScript client for the Swippee API — Nepali bank-statement parsing, merchant enrichment, and signals.
Downloads
42
Maintainers
Readme
@swippee/sdk
Official TypeScript client for the Swippee API — Nepali bank-statement parsing, merchant enrichment, and financial signals.
Zero runtime dependencies. Works in Node 18+ and modern browsers.
Install
npm install @swippee/sdkQuickstart
import { Swippee } from "@swippee/sdk";
const swippee = new Swippee({ apiKey: process.env.SWIPPEE_SECRET_KEY! });
// Parse a bank statement PDF
const report = await swippee.parse({ file: pdfBlob, bank: "NABIL" });
console.log(report.statement.bank, report.transactions.length);
// Get income signals
const income = await swippee.reports.income(report.report_id);
// Underwrite a loan application
const decision = await swippee.reports.underwriting(report.report_id, {
applicantName: "Ram Bahadur",
foirCeiling: 0.5,
loan: { principal: 500_000, tenorMonths: 36, annualRatePct: 14 },
});
console.log(decision.decision); // "approve" | "review" | "decline"API
Parse & enrich
| Method | Description |
|---|---|
| parse({ file, bank?, filename? }) | Parse a statement PDF/XLS into a StatementReport |
| enrich(transactions) | Categorize + enrich transactions you already have |
| ingestSms(messages, opts?) | Parse bank SMS alerts into a report |
Reports
| Method | Description |
|---|---|
| reports.get(id) | Fetch a past report |
| reports.transactions(id, filter?) | Filtered transaction list |
| reports.income(id) | Income view |
| reports.balance(id) | Balance view |
| reports.liabilities(id) | Liabilities view |
| reports.identity(id) | Identity view |
| reports.score(id) | Swippee Score |
| reports.assetReport(id) | Asset report |
| reports.verify(id) | Statement verification |
| reports.underwriting(id, params?) | Full lender underwriting decision |
Connect (consumer consent)
| Method | Description |
|---|---|
| connect.request(params) | Start a consent request, returns connect_url |
| connect.exchange(publicToken) | Swap public token for access token |
| connect.grantData(grantId, accessToken) | Read scoped consumer data |
Verify (statement attestation)
| Method | Description |
|---|---|
| verify.issue(reportId) | Register a report for public QR verification |
| verify.check(token) | Resolve a verification token |
| verify.revoke(token) | Revoke a published statement |
Misc
| Method | Description |
|---|---|
| banks() | List supported banks |
| usage() | Current-period usage + quota |
Error handling
Non-2xx responses throw SwippeeError with .code and .status:
import { SwippeeError } from "@swippee/sdk";
try {
const report = await swippee.reports.get("rpt_unknown");
} catch (err) {
if (err instanceof SwippeeError) {
console.error(err.code, err.status); // e.g. "not_found" 404
}
}Configuration
const swippee = new Swippee({
apiKey: "swippee_sk_live_…",
baseUrl: "https://api.swippee.com", // optional, this is the default
fetch: customFetch, // optional, for tests or edge runtimes
});Supported banks
NABIL · NIC_ASIA · NIMB · NMB · KUMARI · SIDDHARTHA · GLOBAL_IME · ESEWA · KHALTI
