SMS PaySearch pages in the SMS Pay documentation.
Bangla QR is Bangladesh Bank's national interoperable QR standard (PSD Circular No. 01/2021), built on the EMVCo merchant-presented QR specification. A customer can pay a Bangla QR from almost any bank or MFS app: bKash, Nagad, Rocket, CellFin, internet banking apps, and others.
IBBL Bangla QR collects payments into the merchant's Islami Bank Bangladesh PLC (CellFin) account. SMS Pay shows the customer a QR code made for that checkout, with the amount already filled in. When the money arrives, Islami Bank sends a credit SMS to the merchant phone, and the SMS Pay Android app forwards it so the payment is confirmed automatically.
| Item | Value |
|---|---|
| Payment method code | IBBL_BANGLA_QR |
| Settles into | Merchant's Islami Bank CellFin account |
| Customer pays with | Any Bangla QR-enabled bank or MFS app |
| Confirmation evidence | Credit SMS from the Islami Bank sender |
| Android app | Version 1.1.0 or newer |
Other banks' Bangla QR will be added as separate payment methods once their SMS formats are confirmed.
Before enabling IBBL Bangla QR, confirm:
Open Dashboard -> Organization -> Payment methods and enable IBBL Bangla QR.
Open Dashboard -> Organization -> Receiver Accounts -> Add account:
SMS Pay rejects a QR that:
Install SMS Pay Android app 1.1.0 or newer from Downloads on the phone that receives the Islami Bank SMS. Open Payment methods in the app and make sure IBBL Bangla QR is enabled.
When the customer selects IBBL Bangla QR, hosted checkout shows:
The customer's app fills in the amount and the customer cannot change it. There is no reference or transaction ID to type.
A Bangla QR payment carries no customer reference, so SMS Pay identifies the payment by its amount. Each checkout gets a payable amount that no other open IBBL Bangla QR checkout on the same receiver account is using:
| Situation on the receiver account | Payable amount for a Tk 500.00 order |
|---|---|
| No other open checkout for Tk 500.00 | Tk 500.00 |
| Tk 500.00 already held by another checkout | Tk 500.01 |
| Tk 500.00 and Tk 500.01 already held | Tk 500.02 |
BANGLA_QR_AMOUNT_UNAVAILABLE. Add more IBBL Bangla QR receiver accounts to raise capacity; SMS Pay rotates between active receivers.amount. Any extra paisa the customer pays stays in the merchant's account.Islami Bank sends the merchant phone an SMS like this:
CellFin
BDT 500.02 Received
From: bKash
TrxId: 3226102300000000
@23/10/2026 06:04 PM
From is the customer's bank or MFS, not a phone number. SMS Pay marks the intent PAID when all of these hold:
| Check | Requirement |
|---|---|
| Sender | SMS came from the Islami Bank sender on the linked phone. |
| Payment method | The intent's method is IBBL_BANGLA_QR. |
| Amount | SMS amount equals the intent's payableAmount exactly. |
| Receiver | The SMS reached the intent's receiver phone. |
| Uniqueness | Exactly one pending checkout holds that payable amount. |
| Expiry | The intent is still active. |
| Reuse | The SMS and its TrxId have not confirmed another intent. |
If two pending checkouts somehow hold the same amount, SMS Pay does not guess. The SMS stays unmatched for review in Reconciliation.
You can let hosted checkout offer IBBL Bangla QR alongside other methods, or preselect it:
{
"amount": 500,
"idempotencyKey": "order-10045-attempt-1",
"merchantReference": "ORDER-10045",
"paymentMethod": "IBBL_BANGLA_QR"
}
The lowercase alias ibbl_bangla_qr is also accepted. Once IBBL Bangla QR is selected, the payment intent response includes payableAmount:
{
"id": "b5012f33-207e-4999-bf8d-5a1ebb10988e",
"amount": "500",
"payableAmount": "500.02",
"paymentMethod": "IBBL_BANGLA_QR",
"status": "PENDING",
"checkoutUrl": "https://smspaybd.com/checkout/b5012f33-207e-4999-bf8d-5a1ebb10988e"
}
payableAmount is null for other payment methods. Fulfil orders from the payment.paid webhook as usual; nothing else in your integration changes.
The sandbox SMS simulator does not generate IBBL Bangla QR SMS yet. After setup, verify the whole flow with a small live payment, for example Tk 1:
PAID within a few seconds.| Problem | What to check |
|---|---|
| IBBL Bangla QR is not offered at checkout | Method is enabled for the organization, and an active IBBL Bangla QR receiver account with a saved QR exists in that environment. |
| QR upload says "No QR code found" | Use a sharper, well-lit photo of the QR alone, or paste the decoded QR text instead. |
| "QR does not pay into the bank" | The QR belongs to another bank. Only Islami Bank QRs work with IBBL Bangla QR. |
| Customer's app rejects the QR | The customer's app may not support Bangla QR, or the bank/app transaction limit was reached. Try another app. |
Paid, but intent stays PENDING | Android app is 1.1.0+, IBBL Bangla QR is enabled in the app, the SMS arrived from Islami Bank on the linked phone, and the receiver number matches that phone. Check SMS Events. |
BANGLA_QR_AMOUNT_UNAVAILABLE | Too many open checkouts for the same amount on one receiver. Add receiver accounts or shorten intent TTL. |