Accepting payments
How a payment flows through ShadhinPay, what each status means, and how to track payments in the dashboard.
There are two ways to take a payment with ShadhinPay:
- Send an invoice from the dashboard — best for one-off bills and remote sales. See Invoices.
- Integrate the API into your own website or app — best for online checkout. Your developers will use the Developer Docs.
Either way, the customer experience and the payment lifecycle are the same.
How a payment works
A payment is created
Either you send an invoice or your website starts a payment when the customer checks out. The amount must be between ৳10 and ৳200,000.
The customer is taken to checkout
They land on a ShadhinPay-hosted payment page, pick their provider (bKash or Nagad) if more than one is enabled, and approve the payment in their MFS app.
ShadhinPay confirms the result
We confirm the outcome with the provider and update the payment's status. The customer is returned to your site or sees a confirmation on the invoice page.
Your systems are notified
If you use webhooks, your endpoint receives a payment.completed (or
payment.failed) event so your order system can react automatically.
Payment statuses
Every payment has a status you can see in the dashboard:
| Status | Meaning |
|---|---|
| Pending | Started; waiting for the customer to approve in their MFS app |
| Completed | Paid successfully — the funds are yours (pending settlement) |
| Failed | The provider rejected the payment or the customer's payment failed |
| Cancelled | The customer cancelled before finishing |
| Expired | The customer didn't pay in time (the default window is 15 minutes) |
| Refunded | The full amount was refunded back to the customer |
A payment that fails, is cancelled, or expires is not the end of the road — for an invoice, the customer can simply try again with the same or a different provider.
Partial refunds keep status “Completed”
If you refund only part of a payment, its status stays Completed and the refunded amount is tracked separately. Only a full refund moves it to Refunded. See Refunds.
Tracking payments
In the dashboard's Transactions view you can:
- Filter by status, provider, date range, and amount
- Search by your own order reference
- See success counts, failure counts, and total volume at a glance
- Export the list to CSV or Excel (see Analytics & exports)
Each payment carries your own reference (the order ID you supplied), so you can match it back to your records.
What happens to the money
A completed payment doesn't land in your bank instantly — it's reconciled against the provider's settlement report, then paid out to your bank on a schedule. That whole flow is explained in Balance & payouts.