Nagad Wallet API
Nagad is the national-scale digital payment service operated by the **Bangladesh Post Office**, with over 74 million users and roughly US $12 million in daily transaction volume. Together with bKash and Rocket, it accounts for more than 80% of Bangladesh's mobile financial services (MFS) market. However, Nagad does not offer an open, zero-friction sandbox for independent developers. Anyone…
Nagad Wallet API endpoints
| Method | Endpoint | Description |
|---|---|---|
| Authentication | ||
| POST |
/api/nagad/login/request-otp /api/nagad/login/request-otp |
Begins the login flow. Behavior depends on the upstream `verificationStatus` for the given msisdn: - If the account does **not** require device-change verification, the upstream… |
| POST |
/api/nagad/login/verify-ussd-otp /api/nagad/login/verify-ussd-otp |
Used **only** when `request-otp` returned `status: "USSD_REQUIRED"`. The end user must first dial **`*167#`** on the physical SIM of `account` — this is the Nagad device-change… |
| POST |
/api/nagad/login/verify-otp /api/nagad/login/verify-otp |
Submits the already-parsed `otp` + `uid` pair received via SMS. Use this when the caller has parsed the SMS itself; use `/api/nagad/login/verify-otp-sms` to submit the raw SMS… |
| POST |
/api/nagad/login/verify-otp-sms /api/nagad/login/verify-otp-sms |
Submits the raw SMS text; the server extracts the `OTP/Code` and `UID` fields via regex and then runs the same login flow as `/api/nagad/login/verify-otp`. Use this when the… |
| Account | ||
| GET |
/api/nagad/balance /api/nagad/balance |
Returns the available and committed balances for the logged-in wallet. |
| GET |
/api/nagad/transaction-history /api/nagad/transaction-history |
Server returns at most 20 records per page. Use `page=0,1,2,...` to paginate. Page size is fixed server-side to keep responses predictable for billing and ledger reconciliation. |
| GET |
/api/nagad/transaction-detail /api/nagad/transaction-detail |
|
| Transfer | ||
| GET |
/api/nagad/validate-account /api/nagad/validate-account |
Check whether a given mobile number is a registered Nagad account before attempting a transfer. Useful for reducing cash-in failures and improving UX in agent apps and merchant… |
| GET |
/api/nagad/fee-commission /api/nagad/fee-commission |
Returns the exact fee, commission and net amount that would apply to a cash-in transaction. Call this before executing `cash-in` so you can show the user (or settle in your own… |
| POST |
/api/nagad/cash-in /api/nagad/cash-in |
Executes a directed transfer from the **caller's wallet** (the `account` query parameter — typically an agent or merchant wallet) into a **recipient user's wallet**… |
| Advanced | ||
| PUT |
/api/nagad/card-data /api/nagad/card-data |
Low-level endpoint. Persist card metadata captured from one real transaction on this account so that subsequent `cash-in` calls can auto-build the transaction payload… |
Nagad Wallet API pricing
| Plan | Price | Rate limit | Quotas |
|---|---|---|---|
| BASIC | Free | 10 / minute |
|
| PRO | $10 / month | — |
|
| ULTRA | $100 / month | — |
|