Nagad and Upay Payment Verification for Your Online Shop
A Nagad or Upay Send Money payment usually shows up as an SMS on the receiving phone with the amount, a transaction ID, your balance and the time. To verify it, find that message or the entry in the wallet app and match the amount and the code to the order. This can be automated by reading the SMS. Today the message readers for Nagad and Upay have been verified on real payments.
How Nagad and Upay payments usually appear
When a customer sends money to your wallet number, two things usually happen. Your wallet app lists the payment in its history, and your phone receives an SMS. The SMS commonly includes the amount, the sender's number, a TrxID or reference code, your updated balance and the time. Exact wording and layout differ between Nagad and Upay and can change when the provider updates its messages. Look at one real message from each wallet you use.
How to verify a Nagad or Upay payment by hand
- Search your SMS inbox, or the wallet app's history, for the TrxID the customer gave you.
- Check that the amount equals the order total exactly.
- Check the time against when the order was placed.
- Check that it was received on your wallet number, and that your balance rose by that amount.
- Check that the code has not been used for another order.
- Write the code next to the order, then mark it paid.
Do not accept a screenshot as the only evidence. It can be edited or reused.
A tip: use the Reference field if the app has one
The Send Money screen in a wallet app may have a Ref or Reference field. If yours does, ask customers to type a short, unique order reference there, such as the order number. It then often appears in the payment message, so you can match payment to order without relying on a TrxID the customer types. This depends on the app version and how the provider words its SMS, so test it with a small payment first.
A Upay caveat about two different TrxIDs
In one real Upay payment made through a Bangla QR, the TrxID the payer saw in their own app was not the same as the TrxID in the SMS the merchant received. It was one observation, so we do not know how often it occurs. If a customer's code does not match anything on your side, ask for the exact amount and time and search by those instead of assuming the payment is fake.
How automatic confirmation works for Nagad and Upay
QRPayBD does not log in to Nagad or Upay and does not hold money. It reads the payment SMS that arrives on the shop's Android phone, using the free Collector app. Your store creates an order through the REST API or the WooCommerce and Elementor plugin, and the customer is shown a payment page with your wallet number, the exact amount and an order reference.
- If the customer types the order reference (QP-XXXX) in the wallet app's Reference field and it appears in the SMS, the order is confirmed automatically.
- Otherwise the customer enters the TrxID on the payment page, and QRPayBD matches it to a message with the exact amount.
- An optional shop setting can match by exact amount alone, but it is off by default and only works when exactly one order is waiting.
- A TrxID confirms only one order. A payment with a different amount is not accepted automatically and goes to an inbox for a manual match.
Honest status for each wallet
| Wallet | Status | What it means |
|---|---|---|
| Upay | Verified | The reader has been verified on real Upay payments. |
| Nagad | Verified | The reader has been verified on real Nagad payments. A payment that does not match goes to the Unmatched inbox for a manual match. |
| bKash | Verified | The reader has been verified on real bKash payments. |
| Rocket and banks | Planned | Not built yet. |
Verified does not mean perfect. Messages can be reworded, so a new format may need an update before it is recognised.
When a Nagad or Upay payment does not match
Some payments will not match automatically, and that is by design. The goal is to avoid marking the wrong order paid.
- Wrong amount: the customer sent more or less than the order total. The payment is not accepted automatically. Decide with the customer whether to top up, refund from your own wallet, or cancel.
- No reference and no TrxID: the payment arrived, but nothing ties it to an order. It appears in the Unmatched screen of your dashboard, and you can match it by hand after checking your wallet.
- Delayed SMS: the message arrives late, so the order confirms late. Ask the customer to wait a few minutes and check your wallet app.
- Phone offline: while the shop phone is off or has no internet, confirmations wait until it is back.
- New message wording: if a provider changes its SMS text, a payment may not be recognised until the reader is updated. Match it by hand in the meantime.
Limits to keep in mind
This is not an official Nagad or Upay API. SMS can be delayed, missed, reworded or forged. The shop phone must be on and online. Check your balance in the wallet app for large payments before you ship. Providers may also restrict business use of personal accounts, so read their current terms. QRPayBD is not affiliated with Nagad or Upay, and official merchant API support is planned but not available.
To test it with your own Upay or Nagad number, an account is free during early access.