# Preventing Duplicate Payments

> When a customer reports being charged twice, check whether the two bank entries are a hold and a completed charge, or two actual separate payments. Do not refund a transaction solely from a screenshot of pending bank entries.

- Type: Merchant guide
- Level: Intermediate
- Reading time: About 4 minutes
- Audience: Written for store owners, builders, and designers refining high-performance ecommerce stores.
- Last updated: 2026-11-04
- Canonical page: https://academy.getzenbasket.com/merchant-questions/preventing-duplicate-payments/
- Part of: [Merchant Questions](https://academy.getzenbasket.com/merchant-questions/) on ZenBasket Academy

---

## What you need to know

### Why was a customer charged twice?

Two bank entries may be a hold and a completed charge, or they may be two actual payments. Check distinct provider transaction IDs, status, amount and time before diagnosing a duplicate. Do not refund a transaction solely from a screenshot of pending bank entries.

### How do duplicate ecommerce payments happen?

Duplicate payments can follow repeated clicks, browser reloads, a lost response or an unsafe switch to another gateway. Duplicate orders or notifications can also appear without a second charge. Match payment records to orders to distinguish the problem.

### How do I prevent duplicate payment submissions?

Use a clear processing state plus server-side protection that recognizes repeat submissions of the same intended purchase. Preserve the original payment reference through timeouts. A disabled button helps the customer, but cannot protect against every repeated network request.

### What should happen if a customer clicks Pay twice?

The customer should see progress and the eventual result for the same attempt. Repeated clicks must not create new payment attempts indiscriminately. If processing stalls, show a status-check or support route rather than inviting blind retries.

---

## Frequently asked questions

### How should duplicate gateway callbacks be handled?

Verify the callback, recognise the previously processed payment and avoid performing its action twice. Also account for events arriving out of order. If two distinct successful charges exist, investigate them as separate transactions rather than ignoring one as a duplicate message.

### How should accidental duplicate payments be refunded?

Confirm two actual collected payments for one intended purchase, then refund the extra transaction through the provider's supported process. Record the refund reference, notify the customer and monitor completion. Check for an existing refund or dispute first to avoid returning the same money twice.

## Related articles

- **Payment Declines and Safe Retries**
- **Payment Webhooks and Idempotency**
- **Ecommerce Refunds and Partial Refunds**
- [ZenBasket Build Guide](https://help.getzenbasket.com/zenbasket-builder/)
