The balance is usually not the issue: payments get declined by bank limits, anti-fraud checks, a typo in the card details, an expired checkout session or restrictions on the transaction type. Only the issuing bank knows the exact reason — the merchant sees just a broad category.
Common causes
- Limits. The card has a daily or per-transaction limit on online payments, sometimes set by the customer themselves.
- Anti-fraud. An unusual amount, a new country, an odd hour — the bank plays safe.
- Wrong details. An incorrect expiry date or CVC, a typo in the number.
- Expired session. The customer opened the form, got distracted and confirmed 20 minutes later.
- Transaction restrictions. Some cards are closed to online payments or to particular categories.
- A problem at the bank. A technical failure or an unavailable authentication service.
What the merchant sees
Banks do not disclose decline details: that is protection against card testing. The merchant only receives a category — insufficient funds, issuer decline, invalid data. Build your support flow around those categories rather than around guesses.
What to fix on your side
- Show a human-readable decline message and offer another method — SBP or a payment link.
- Do not clear the cart: the customer should return to checkout in one click.
- Watch session length: the longer the checkout, the more expired transactions.
- Never show raw error codes instead of plain text.
What to tell the customer
The only party that knows the exact reason is the bank that issued the card. The customer should check their online payment limits in the banking app and contact their bank's support. The merchant cannot resolve it — but can immediately offer an alternative way to pay.
Payment and decline statuses at MulenPay are described on accepting payments; on authentication see the 3-D Secure answer.