Payment pending: why online payments get stuck and how to resolve them
Why an online payment shows as pending, what is really happening between the customer, gateway and bank, and a safe way to resolve it without charging anyone twice.
- Published
- Reading time
- 6 min read
- By
- CentraPoint Team
On this page
A payment pending status means the payment was started but no final answer (paid, failed or cancelled) has been confirmed yet. It is one of the most common reasons customers contact a business: "I paid, but your system says pending", or "it took the money but I didn't get a confirmation". Most pending payments resolve on their own within minutes. The ones that don't need a calm, step-by-step check, because the worst response is to ask the customer to simply pay again.
This guide explains why payments get stuck, what to check and in what order, and how to set up your systems so that pending payments resolve themselves.
What "pending" actually means
An online payment passes through several parties: your checkout, the payment gateway, and the customer's bank or mobile money provider. Your system marks the payment pending as soon as the customer is sent to pay. It should only change to complete when the gateway confirms the result directly, server to server.
That confirmation is the key. When a customer is returned to your website after paying, the return page alone proves nothing, because anyone can open a return address. A well-built system waits for the gateway's verified notification, or asks the gateway directly, before treating the payment as paid.
Why payments get stuck on pending
The customer hasn't finished
- They are still on the gateway's page, or abandoned it without pressing cancel.
- They didn't complete 3-D Secure approval in their banking app.
- For mobile money, they haven't approved the prompt on their phone yet.
- They closed the browser or lost signal after paying, so they never came back to your site.
The bank or provider is still processing
- Some instant EFT and bank payments take a little longer to confirm, especially if the bank asks for extra verification.
- Debit orders are pending by design until the action date and the bank's response. See how debit orders work.
- Manual EFTs stay pending until the money is seen in your bank account. See how long an EFT takes.
The confirmation didn't arrive
- The gateway's notification couldn't reach your system (an outage, a firewall, or a notification URL that was mistyped or changed).
- The notification arrived but failed verification, for example because a passphrase or secret key doesn't match between the gateway portal and your settings.
- Sandbox and live settings were mixed up, so a live notification was checked against test credentials.
How to resolve a pending payment, step by step
1. Don't ask the customer to pay again yet
If the first payment did succeed, a second attempt means a double charge, a refund and an unhappy customer. Check first.
2. Check how long it has been pending
A payment that has been pending for a few minutes is usually still in progress. A payment pending for hours needs investigating.
3. Ask the gateway for the status
Most gateways let you look up a transaction by your reference in their merchant portal, and many support an on-demand status check by API. If the gateway says it was paid, the problem is in the confirmation path, not the payment.
4. Check your notification or webhook log
Look for a notification from the gateway for that reference. No notification at all points to a delivery problem (URL, outage, firewall). A notification that failed verification points to a configuration problem (keys, passphrase, sandbox mode).
5. Talk to the customer with facts
Tell them what you found: "Your bank shows the payment as approved; we're confirming it on our side" or "The payment was not completed; here is a new link to try again." If money left their account but the payment failed, the bank usually reverses the reservation; give them the reference to quote to their bank.
6. Fix the root cause
If notifications are failing, fix the URL or credentials and test with a small payment. One stuck payment is a support ticket; a broken notification path is a support queue.
Build it so pending payments resolve themselves
Developers can prevent most stuck payments with a few patterns:
- Confirm server-side only. Never mark an order paid because the customer's browser reached a "success" page.
- Use webhooks first, polling second. Process the gateway's notification as soon as it arrives, and run a background job that queries the gateway for payments still pending after a few minutes.
- Make status changes one-way. A payment should be able to move from pending to complete, but a late "failed" message must never undo a confirmed success.
- Process notifications idempotently. Gateways retry, so the same notification may arrive twice. Fulfil orders once. See payment webhooks best practices.
- Verify every notification with the gateway's signature or a status query, and check the amount and currency match.
- Show the customer something useful while waiting: the reference, the current status, and a way to try again or return to your site.
How CentraPoint helps
CentraPoint never treats the customer's return to your site as proof of payment. When a customer comes back while their payment is still pending, CentraPoint asks the gateway directly for the result (on gateways that support an on-demand status check) and the status page keeps refreshing for about two minutes while it waits. A background job also re-checks payments that are still pending after five minutes, every ten minutes for up to 24 hours. Gateways that don't offer a status check, such as PayFast, confirm through their own server-to-server notification.
Every inbound gateway notification is recorded in the webhook log with its verification result, so you can see at a glance whether a notification arrived and why one was rejected. Statuses only move forward, so a late failure can't undo a completed payment, and a verified success that arrives after a customer cancelled still completes the payment. Once a payment is final, CentraPoint updates the invoice and sends a signed webhook such as payment.complete to your systems. See how a payment flows through CentraPoint.
Frequently asked questions
How long can a payment stay pending?
Card and instant EFT payments usually resolve within minutes. Debit orders and manual EFTs take longer by design. If a card payment is still pending after an hour, check the gateway's portal and your notification log.
The customer's money left their account but the payment shows failed. What now?
Check the gateway first. If the payment really failed, the bank normally reverses the amount; give the customer the reference so their bank can trace it. If the gateway shows it as paid, your system missed the confirmation.
Should I mark a pending payment as paid manually?
Only after confirming it with the gateway or your bank statement, and with a note of how you confirmed it. Marking payments paid on the customer's word alone is a common route to fraud.
Why did the customer see a success page but the payment is pending?
Some gateways redirect the customer before their confirmation reaches your system. Treat the success page as "payment submitted" and wait for the verified notification.
- #payment status
- #troubleshooting
- #webhooks
- #checkout