# Ethiopian Payment Verifier
> Fast, reliable TypeScript library to parse and verify digital payment receipts from major Ethiopian banks and mobile money providers.
`ethiopian-payment-verifier` is a framework-agnostic Node.js library and CLI tool that verifies digital payment receipts by querying the public endpoints of Ethiopian financial institutions. It takes a transaction reference (or URL), detects the bank, and returns structured JSON detailing the transaction amount, date, and recipient.
## 🚀 Features
- **No API Keys Required:** Validates receipts directly against the banks' public receipt verification endpoints.
- **Auto-Detect Bank:** Give it a URL or reference, and it automatically detects the corresponding bank.
- **Universal CLI:** Verify receipts instantly from your terminal (`epv verify`).
- **Framework Agnostic:** Pure Node.js. Works seamlessly in Express, Next.js, Nuxt, or any other Node environment.
- **Type-Safe:** Written in TypeScript with strict schemas.
---
## 🏦 Supported Providers
### Banks
`cbe` (Commercial Bank of Ethiopia) · `dashen` (Dashen Bank) · `awash` (Awash Bank) · `boa` (Bank of Abyssinia) · `zemen` (Zemen Bank)
### Mobile Money
`telebirr` · `mpesa` · `cbebirr` · `ebirr`
---
## 📦 Installation
```bash
npm install ethiopian-payment-verifier
```
---
## 💻 Usage (Node.js)
The core engine revolves around the `Verifier` class.
### 1. Simple Verification
If you know the bank and the transaction reference:
```typescript
import { Verifier } from "ethiopian-payment-verifier";
async function verify() {
const verifier = new Verifier();
// Verify a CBE receipt
const result = await verifier.verify({
bank: "cbe",
reference: "FT240101QW8X"
});
if (result.ok) {
console.log("Success! Paid amount:", result.data.amount);
console.log("Date:", result.data.date);
console.log("Payer:", result.data.payerName);
} else {
console.error("Verification failed:", result.error.message);
}
}
```
### 2. Auto-Detecting from URL
Many banks gener …