How your customer completes a payment on BDpay — from the checkout page to a confirmed transaction.
After you create a payment via the API, the customer is redirected to the transaction input page. Everything below happens on the customer's phone — no integration work is needed for these steps.
A real end-to-end recording: opening the payment page, copying the agent number, cashing out from the Nagad app, and submitting the TrxID.
The payment_url from your
Create Payment response opens the secure payment page. It shows the
agent number to pay, the exact amount to cash out, and a field for the transaction ID.
BDpay Payment
Secure Transaction Portal
Nagad Agent PaymentNagad Agent
01737XXXXXX
Amount to Cash Out
৳100
TRANSACTION ID
TAP TO COPY
Nagad Agent
01737XXXXXX
Copied!Amount to Cash Out
৳100
The customer taps the copy icon on the agent number card. The amount shown must be cashed out exactly — a different amount will not match and the payment cannot be confirmed automatically.
The customer switches to their MFS app (bKash, Nagad, Rocket or Upay — whichever the payment page shows), chooses Cash Out, pastes the copied agent number, enters the exact amount and confirms with their PIN.
Cash Out
TO (Agent Number)
AMOUNT
PIN
bKash / Nagad / Rocket / Upay
Messages
NAGAD • now
Right after the cash out, the MFS operator sends a confirmation SMS (and shows it in the app's
transaction history). It contains the TrxID — a short code like
75NAHUVWXY.
The customer copies this TrxID from the SMS or from the app's history screen.
Back on the payment page, the customer pastes the TrxID into the Transaction ID field (a handy Paste button fills it in one tap) and presses Verify Transaction.
The system matches the TrxID, sender number and amount against the agent ledger in real time.
TRANSACTION ID
Enter the Trx ID you received after cash out
Payment Successful!
৳100 received • TrxID 75NAHUVWXY
Redirecting automatically…
When the TrxID matches, the payment is confirmed automatically. The customer is redirected to your
callback_url,
and your server receives the final status on the
webhook_url.
Wrong amount
Sending ৳95 or ৳105 instead of the exact ৳100 shown — the transaction cannot be matched.
Old agent number
Paying a number saved from a previous purchase instead of the number on the current page.
Send Money instead of Cash Out
Using the wrong transaction type — the page states which type is required (e.g. Cash Out for agent payments).
Typo in the TrxID
Manually retyping the TrxID incorrectly — advise customers to use the Paste button.
Letting the page expire
Paying but submitting the TrxID after the session timer runs out — a new payment page must be opened.
Good news
If a valid TrxID was submitted late or on a rejected request, it can still be re-submitted for matching from the merchant panel.