Guide

Customers Charged Twice? Why Duplicate Charges Happen and How to Stop Them

Double charges, duplicate orders and pending holds that look like two payments: what causes them, how to refund safely and how to fix your checkout so it never happens again.

Short answer: Most “double charges” are either a pending authorization that will drop off in a few days, or a checkout that let the customer pay twice. Check whether both charges actually went through, refund the true duplicate, then fix the checkout so a second submit can’t create a second charge.

Common causes

  • Authorization holds: the card was authorized and then charged, and the hold looks like a second charge until the bank releases it.
  • Double clicks or slow pages: the customer pressed Pay twice.
  • Retries: a website or app retried a payment after a timeout with no duplicate check.
  • Duplicate order events: an order system created two orders from one payment.
  • Two cards: a declined card was retried with another one, and both went through.

What to do now

  1. In your payment dashboard, check whether both payments succeeded or one is only authorized.
  2. Refund the true duplicate right away and tell the customer when to expect the money back.
  3. Note the time between the charges. Seconds apart usually means a double submit.

Fix the cause

  • Disable the pay button after the first click and show progress.
  • Use idempotency keys so a retried request can’t create a second charge.
  • Make order handlers ignore payment events they have already processed.
  • Set an alert for duplicate charges.

We fix checkouts and payment integrations remotely. See Stripe integration and payment gateway integration.

Frequently asked questions

How long does a pending charge take to drop off?

Usually a few business days, depending on the customer’s bank. The business can often release an authorization early by canceling it.

Will refunding a duplicate charge cost me fees?

Many processors don’t return the original processing fee on a refund, which is one more reason to stop duplicates at the source.

Tell us what you need

Get a free, no-pressure quote from a Wisconsin development team. Tell us a little about your business and we'll reply within one business day with next steps, rough pricing and honest advice.

  • Big projects and small ones are all welcome
  • Fixed-price quotes, no surprise invoices
  • You own your code, data and accounts
  • A client portal to track progress, invoices and payments
  • Rooted in Wisconsin, serving businesses nationwide

No pressure and no spam. We reply within one business day.

Ask us anything

Quick question? A real person replies within one business day.