Mobile wallet · Bangladesh
Nagad Customer API
Nagad personal wallet (Bangladesh) — PIN + SMS OTP login with an optional *167# device-change step, balance, paged transaction history & detail, recipient validation, fee preview, P2P send-money, and credential provisioning/refresh maintenance.
Sandbox · Request
curl -X POST 'https://www.openbankinggateway.com/api/sandbox/nagad-customer/login/request-otp' \
-H 'Content-Type: application/json' \
--data '{
"account": "01900000002",
"pinCode": "1234"
}'Illustrative sandbox example. No provider is contacted, no SMS is sent, no funds move, and no credits are charged.
API reference
Know what you can call.
Methods, paths, and parameter rules come from the same catalog that powers the console. Open an endpoint to see its request fields.
Wallet authentication
POST/login/request-otpSend the SMS OTP or signal the *167# device-change step
Sandbox only
/login/request-otpSend the SMS OTP or signal the *167# device-change step
/api/sandbox/nagad-customer/login/request-otp
| Parameter | Type | Rules & handling |
|---|---|---|
accountRequired | string | JSON body Use a wallet you are authorized to access. Live identities must be linked to your site account through wallet login.
|
pinCodeRequired | string | JSON body Sensitive · never put in URLs
|
POST/login/verify-ussd-otpSubmit the *167# device-change USSD code
Sandbox only
/login/verify-ussd-otpSubmit the *167# device-change USSD code
/api/sandbox/nagad-customer/login/verify-ussd-otp
| Parameter | Type | Rules & handling |
|---|---|---|
accountRequired | string | JSON body Use a wallet you are authorized to access. Live identities must be linked to your site account through wallet login.
|
ussdOtpRequired | string | JSON body Sensitive · never put in URLs
|
POST/login/verify-otpVerify the OTP and issue a session token
Sandbox only
/login/verify-otpVerify the OTP and issue a session token
/api/sandbox/nagad-customer/login/verify-otp
| Parameter | Type | Rules & handling |
|---|---|---|
accountRequired | string | JSON body Use a wallet you are authorized to access. Live identities must be linked to your site account through wallet login.
|
otpRequired | string | JSON body Sensitive · never put in URLs
|
uidOptional | string | JSON body
|
Account & activity
GET/balanceWallet balance
Sandbox only
/balanceWallet balance
/api/sandbox/nagad-customer/balance
| Parameter | Type | Rules & handling |
|---|---|---|
tokenRequired | string | Send in X-OBG-Token Session token from the login step. Prefer the X-OBG-Token header so it stays out of URLs. Sensitive · never put in URLs
|
GET/transaction-historyPaged transaction history
Sandbox only
/transaction-historyPaged transaction history
/api/sandbox/nagad-customer/transaction-history
| Parameter | Type | Rules & handling |
|---|---|---|
tokenRequired | string | Send in X-OBG-Token Session token from the login step. Prefer the X-OBG-Token header so it stays out of URLs. Sensitive · never put in URLs
|
pageOptional | integer | Query parameter
|
GET/transaction-detailSingle transaction detail
Sandbox only
/transaction-detailSingle transaction detail
/api/sandbox/nagad-customer/transaction-detail
| Parameter | Type | Rules & handling |
|---|---|---|
tokenRequired | string | Send in X-OBG-Token Session token from the login step. Prefer the X-OBG-Token header so it stays out of URLs. Sensitive · never put in URLs
|
txnIdRequired | string | Query parameter
|
approvalDateRequired | string | Query parameter
|
Transfers
GET/validate-accountCheck that a recipient is a registered wallet
Sandbox only
/validate-accountCheck that a recipient is a registered wallet
/api/sandbox/nagad-customer/validate-account
| Parameter | Type | Rules & handling |
|---|---|---|
tokenRequired | string | Send in X-OBG-Token Session token from the login step. Prefer the X-OBG-Token header so it stays out of URLs. Sensitive · never put in URLs
|
destMobileRequired | string | Query parameter
|
GET/fee-commissionPreview fee, commission and net amount for a transfer
Sandbox only
/fee-commissionPreview fee, commission and net amount for a transfer
/api/sandbox/nagad-customer/fee-commission
| Parameter | Type | Rules & handling |
|---|---|---|
tokenRequired | string | Send in X-OBG-Token Session token from the login step. Prefer the X-OBG-Token header so it stays out of URLs. Sensitive · never put in URLs
|
destMobileRequired | string | Query parameter
|
amountRequired | decimal | Query parameter
|
txTypeOptional | string | Query parameter
|
POST/p2pP2P send-money to another Nagad wallet
Sandbox only
/p2pP2P send-money to another Nagad wallet
/api/sandbox/nagad-customer/p2p
Sandbox simulation only. No real money moves; live transfers are not enabled for this integration.
| Parameter | Type | Rules & handling |
|---|---|---|
tokenRequired | string | Send in X-OBG-Token Session token from the login step. Prefer the X-OBG-Token header so it stays out of URLs. Sensitive · never put in URLs
|
destAccountNoRequired | string | JSON body
|
amountRequired | decimal | JSON body
|
userRefMessageOptional | string | JSON body
|
Session maintenance
POST/refresh-card-dataProvision or refresh P2P payment credentials
Sandbox only
/refresh-card-dataProvision or refresh P2P payment credentials
/api/sandbox/nagad-customer/refresh-card-data
| Parameter | Type | Rules & handling |
|---|---|---|
tokenRequired | string | Send in X-OBG-Token Session token from the login step. Prefer the X-OBG-Token header so it stays out of URLs. Sensitive · never put in URLs
|
POST/replenish-cardRefresh the transaction credential quota
Sandbox only
/replenish-cardRefresh the transaction credential quota
/api/sandbox/nagad-customer/replenish-card
| Parameter | Type | Rules & handling |
|---|---|---|
tokenRequired | string | Send in X-OBG-Token Session token from the login step. Prefer the X-OBG-Token header so it stays out of URLs. Sensitive · never put in URLs
|
POST/reinitialize-walletRe-provision an existing session for P2P
Sandbox only
/reinitialize-walletRe-provision an existing session for P2P
/api/sandbox/nagad-customer/reinitialize-wallet
| Parameter | Type | Rules & handling |
|---|---|---|
tokenRequired | string | Send in X-OBG-Token Session token from the login step. Prefer the X-OBG-Token header so it stays out of URLs. Sensitive · never put in URLs
|
Endpoint identifiers and provider-specific descriptions are kept in English to match the API contract.
Try in sandbox
A request you can inspect.
The console starts in sandbox mode. Use only the public test values there. Switching to Live changes the destination and may use real accounts and funds.
Sandbox
Keep exploration, account access, and billing separate.
From first request to live connection.
Explore without signing in
Choose an API and use its sandbox with the documented test values. Fixtures do not move money or contact a bank.
Create your gateway account
Sign in with Google for 1,000 welcome credits and create an API key. This signs you into the website, not a wallet.
Connect when you are ready
For a supported live API, complete the wallet login separately. Successful live requests cost one credit; failed requests cost none.
Small start. Clear cost.
$10 buys 10,000 credits. A successful live request uses one credit; failures and sandbox calls use none. Buying credits does not unlock sandbox-only integrations.
Integration guide
Bring it into your code.
Sandbox examples use public fixture values. Live examples use placeholders: keep credentials on your server and never commit them.
Sandbox
curl -X POST 'https://www.openbankinggateway.com/api/sandbox/nagad-customer/login/request-otp' \
-H 'Content-Type: application/json' \
--data '{
"account": "01900000002",
"pinCode": "1234"
}'Sandbox only
Live access not enabled
Contact us to enable access
Live calls for Nagad Customer are enabled per customer. Sandbox mode stays free and needs no sign-in.
Clear boundaries, before your first request.
A few things worth knowing.
Does the sandbox use real accounts?
No. Sandbox responses are fixtures and use public test credentials. They do not contact a financial provider, send an OTP, or move funds.
Can every API make live requests?
No. Only integrations marked as live have a real upstream. All others are sandbox-only and return LIVE_ACCESS_NOT_ENABLED in live mode. Contact us to discuss access.
When is a credit charged?
One credit is charged for a successful live call. Failed calls and sandbox calls are free. Check X-Credits-Charged rather than HTTP status alone. If X-OBG-Settlement: unknown is present, billing is unresolved: X-Credits-Charged: 0 does not prove that no debit occurred. Check usage and reconcile before retrying.
Does Google sign-in connect my wallet?
No. Google sign-in manages your site account, credits, and API keys. Wallet login is a separate, explicit flow for a supported integration and an account you are authorized to use.
Keep exploring.
- Sandbox only
EasyPaisa (Phoenix)
PakistanMobile wallet
Telenor EasyPaisa Pakistan — OTP login, profile, balance, transactions, and transfer.
6 endpoints · Free sandbox
Explore API - Sandbox only
ACB ONE
VietnamRetail bank
Asia Commercial Bank (Vietnam) — Username/password login, profile, balance, and transactions.
5 endpoints · Free sandbox
Explore API - Sandbox only
slice Business
IndiaMerchant banking
slice Business merchant banking (India) — OTP login, profile & balance, collection/passbook ledgers, beneficiaries, and two-step bank transfer.
9 endpoints · Free sandbox
Explore API