SMS Forwarder Android App
Install and operate the dedicated iPay merchant-message forwarder, grant notification access, understand matching, and troubleshoot delivery.
Install and operate the dedicated iPay merchant-message forwarder, grant notification access, understand matching, and troubleshoot delivery.
On this page
iPay is the dedicated ISPbills payment-message forwarder for a merchant-SIM Android phone. It receives SMS, reads supported wallet-app notifications, extracts payment fields, and sends them to the registered ISPbills Payment Forwarder device. It is separate from iAdmin and iCustomer.
Use the Payment Forwarder guide for Admin-side registration, event review, and manual approval.
Register and install
- As a Group Admin, open the direct sidebar item SMS Forwarder.
- Enter a device name and the exact merchant number, then select Register Device. ISPbills creates or reuses the corresponding iPay gateway.
- Download the Android app from Download Android App on that page. The link serves
/sms.apk. - Install it on the phone that receives the merchant messages. iPay requires Android 8.0 or later.
- Open Settings, enter the same merchant number, and select Verify Phone & Save. Enter the number with its country code in the verification screen and complete the SMS code. ISPbills then issues the app a random revocable device token. The current app’s server URL is fixed and displayed read-only as
https://app.ispbills.com. - Select Start Service. Keep the ongoing Payment forwarder running notification present.
The registered number, merchant SIM and verified Firebase number must match. Phone-number digits are not a password. The issued device token is stored privately by iPay and can be replaced by verifying again; do not copy or publish it.
Required Android access
| Access | Purpose |
|---|---|
| Receive/read SMS | Reads incoming message bodies so the parser can find a payment amount, payer, and reference. |
| Notification access | Reads notifications only from packages whose name contains bKash, Nagad, Rocket, or Upay. This is a separate Android special-access setting. |
| App notifications and foreground service | Shows the persistent service notification and app/update notices. |
| Battery unrestricted | Reduces Android background shutdowns. |
| Boot completed | Restarts the service after reboot when a merchant number is saved. |
| Install packages | Allows a downloaded app update to be handed to Android’s installer. |
Open Settings → Notification Access and enable iPay, then use Battery Optimization and choose Unrestricted, No restrictions, or the vendor equivalent. If a normal permission prompt no longer appears, use App Settings. Enable vendor auto-start when the phone offers it.
What is forwarded
An SMS is considered only when its body contains a supported currency marker next to a parseable amount. Wallet-app notification capture is limited to the supported package names above. The parser can label bKash, Nagad, Rocket/DBBL, Upay, mCash, or CellFin when those names occur in a message.
The forwarded event includes the merchant and payer numbers, amount, transaction reference when found, current device timestamp, SMS/notification source, detected provider, transaction direction, a random event UUID, and the raw message body. Refund, reversal, failed, debit, cash-out, withdrawal, outgoing transfer, and similar text is marked non_credit; it is stored for review but not auto-credited.
Because iPay can read full SMS bodies and selected wallet notifications, install it only on a dedicated, locked merchant phone. Raw messages can contain balances, phone numbers, and references and are sent to ISPbills for reconciliation. Restrict Admin access, screenshots, notification previews, device backups, and physical access accordingly.
Matching and use
The service sends a heartbeat at start and about every 15 minutes. The Dashboard reports connection state, device diagnostics, recent totals, and update availability. The drawer also provides Matched Payments, Customers, Online Customers, Monthly Report, Customer Payments, and Ledger. Customer call, SMS, and copy actions are local to the phone; opening an Admin customer profile still requires a normal web login.
ISPbills compares merchant gateway, amount, payer, and reference with pending payments. It auto-approves only a unique safe match or a supported unique customer/reference case. Partial or multiple matches remain for Admin review. A repeated event UUID or matching transaction is marked duplicate rather than credited twice.
When the phone is offline, network-failed payloads are kept in an app-private file and retried when connectivity returns or a heartbeat runs. HTTP/validation failures are not queued indefinitely. A successful forward clears the last error.
Troubleshooting
| Problem | Resolution |
|---|---|
| Device is Offline in ISPbills | Check internet, use Test Server Connection, set battery to unrestricted, restart the service, and confirm the saved merchant number matches an active registered device. Online means a heartbeat arrived within 20 minutes. |
| SMS arrives but no event appears | Grant both receive and read SMS access. Confirm the message contains a recognizable currency and amount. Messages with no parseable amount are ignored. |
| Wallet-app notification is ignored | Enable Android Notification access for iPay, not only normal notification permission. Current package filtering accepts bKash, Nagad, Rocket, and Upay package names. |
| Server returns 401 | The saved device credential is missing, expired or replaced. Open Settings and verify the registered merchant SIM again. |
Event is unmatched |
Verify merchant, amount, payer, and reference against the wallet and pending payment, then use Admin Recheck. Do not force an ambiguous credit. |
| Event says not an inbound collection | The message looks like a refund, reversal, debit, cash-out, failed, or outgoing transaction and is deliberately not auto-credited. |
| An offline payment did not retry | Only network errors enter the local queue. A 4xx validation/authentication result is discarded to prevent endless retry; correct the device setup and use the Admin event/wallet evidence. |
| Service stops after reboot | Save a merchant number, enable vendor auto-start, disable battery optimization, and reopen iPay once after changing Android restrictions. |
| Update is offered | Use the app’s download action or download /sms.apk again from the Admin Payment Forwarder page, then approve Android’s installer prompt. |