Customer Payment Overview

How your customer completes a payment on BDpay — from the checkout page to a confirmed transaction.

The Flow at a Glance

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.

1. Open payment page 2. Copy agent number 3. Cash Out in bKash/Nagad app 4. Get TrxID by SMS 5. Submit TrxID 6. Payment confirmed

Watch the Full Flow (Nagad)

A real end-to-end recording: opening the payment page, copying the agent number, cashing out from the Nagad app, and submitting the TrxID.

1

Customer lands on the transaction input page

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.

  • Agent number with one-tap copy button
  • Amount with copy button — must be sent exactly
  • A session timer shows how long the page stays valid

BDpay Payment

Secure Transaction Portal

Nagad Agent Payment

Nagad Agent

01737XXXXXX

Amount to Cash Out

৳100

Warning! This page will expire after 15:59

TRANSACTION ID

Enter Trx ID…
Paste
Verify Transaction
Cancel Transaction

TAP TO COPY

Nagad Agent

01737XXXXXX

Copied!

Amount to Cash Out

৳100

Cash out to this Nagad Agent number
2

Copy the agent number & amount

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 agent number can change between payments. The customer must always use the number shown on the current payment page — never a previously saved number.
3

Cash Out from the bKash / Nagad app

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.

  1. aOpen the app → tap Cash Out
  2. bPaste the agent number
  3. cEnter the exact amount (e.g. ৳100)
  4. dConfirm with the PIN

Cash Out

TO (Agent Number)

01737XXXXXX

AMOUNT

৳ 100

PIN

••••
Tap and hold to Cash Out

bKash / Nagad / Rocket / Upay

Messages

NAGAD • now

Cash Out Tk 100.00 to 01737XXXXXX successful. Fee Tk 0.00. Balance Tk 1,900.00.
TrxID: 75NAHUVWXY
10/07/2026 09:22
This TrxID is what the customer submits
4

Receive the Transaction ID (TrxID)

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.

5

Submit the TrxID on the payment page

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

75NAHUVWXY
Paste

Enter the Trx ID you received after cash out

Verify Transaction
Checking transaction status…

Payment Successful!

৳100 received • TrxID 75NAHUVWXY

Return to Merchant

Redirecting automatically…

6

Payment confirmed — customer returns to you

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.

If the TrxID doesn't match immediately (e.g. SMS delay), the payment stays pending and is re-checked — you can always confirm the final state via the Track Payment Status endpoint or wait for the webhook.

Common Customer Mistakes to Warn About

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.