What information does the Stripe extension add to my orders?

Security update (November 2026): Stripe for WooCommerce 11.2.0 and 11.1.2 address security issues. Advisory: https://developer.woocommerce.com/2026/11/11/stripe-gateway-security-update/

What should I do? Update to 11.2.0, or to 11.1.2 if your store needs to stay on 11.1.x. Both versions require WordPress 6.9 and WooCommerce 11.0. Check the installed version under Plugins → Installed Plugins, even if automatic updates are enabled.

Staying on 11.1.x: WordPress only offers 11.2.0. To install 11.1.2, download it from Previous Versions on the plugin’s Advanced View page at WordPress.org. Then upload it under Plugins → Add New Plugin → Upload Plugin.

Customer passwords (10.9.0): The advisory also covers a bug in version 10.9.0. It could save a customer’s new account password in plain text in the store’s order data. Starting with 11.1.0, the plugin removes these passwords after you update. It emails the site administrator only if it removed any. If your store met the conditions in the advisory, follow its steps even if you receive no email.

When a customer uses the Stripe extension to pay for their order, several unique Stripe object identifiers may be used to help keep track of the payment and other aspects of the order. You can use these identifiers in the Stripe dashboard to help you find orders, refunds, disputes, and so on.

Stripe object identifiers

↑ Back to top

Stripe assigns unique identifiers depending on what kind of information is being processed. The identifier will be a combination of three separate components:

  • Two to three letters indicating the object being identified. For example:
    • A charge will start with ch.
    • A dispute will start with du.
    • A refund will start with re.
    • An event will start with evt.
    • A Stripe account will start with acct.
  • An underscore (_) separator.
  • A unique, case-sensitive identifier.

When combined, it will look something like this:

re_1ORe6HHKb07LG7yY68hujmkB

Where are identifiers used?

↑ Back to top

These identifiers will appear in two different places:

Identifiers in the order details

↑ Back to top

When a payment is processed via the Stripe extension, an identifier will appear in the order details at the top of the page, alongside information about the payment method.

The identifier in this section is a link. Clicking it will take you to your Stripe dashboard so that you can find more information about the transaction.

Identifiers in the order notes

↑ Back to top

When a payment is processed via the Stripe extension, an identifier will appear in the order notes as the order goes through its life cycle. Since payments go through several stages, it’s common for there to be different identifiers in the order notes.

Note that identifiers appearing in the order notes depends on having webhooks set up.

Notes about unexpected charges

↑ Back to top

Some payment methods only get confirmation of payment after the customer leaves the checkout (e.g. Stripe Link, cards that require 3DS, and a few others).

If a customer abandons their checkout with one of those methods and then pays for the order with a different method, Stripe may still complete the first charge. However, since order was already paid for via the second method, the original charge is a duplicate.

When this happens, the Stripe extension adds an order note like so:

Stripe captured a charge of $25.00 (PaymentIntent pi_XXXXXXXXXX, charge ch_XXXXXXXXXX) after this order was already paid by another gateway. This unexpected charge needs to be refunded manually from the Stripe dashboard.

Merchants should refund such charges using the Stripe dashboard rather than with WooCommerce. This is because the order records the other payment method as the one that paid for it, so the WooCommerce refund tools act on that payment instead of the duplicated Stripe charge.

The extension never refunds an unexpected charge for you. Stripe does not return processing fees when you issue a refund, so that decision is left to you. However, we do fire an action: wc_stripe_unexpected_charge_detected, which you can use in some custom code to trigger an email, an auto-refund, etc.

Notes about duplicate checkouts

↑ Back to top

Sometimes a shopper accidentally submits the same cart twice. For example, this can happen if the checkout page stops responding after payment goes through, and the shopper clicks Place order again.

The Stripe extension makes sure the shopper is charged only once in these cases. This covers orders placed from the cart through your checkout page, including orders you authorize now and capture later.

What the shopper sees depends on timing:

  • The first payment is still in progress. The shopper sees “Your payment is already being processed. Please wait.” The second order stays in “Pending payment” and is not charged.
  • The first order is already paid. If the shopper submits the same cart again within two minutes, they go to the order confirmation page for the first order. That page says: “We already received your payment for this cart, so you were not charged again. Here are your order details.”

In the second case, our plugin cancels the extra order and adds a note like this:

Cancelled to avoid a duplicate charge: this cart was already paid by order #1234.

You don’t need to refund anything. Stripe charged the shopper once, for the first order. You also won’t get a “Cancelled order” email for the extra order, since the shopper didn’t actually cancel a purchase.

A guest shopper who repeats the checkout from a different browser sees a shorter message instead: “We already received a payment for this cart. Please check your email for the order confirmation.” The extension does not show them the first order.

Notes about errors after a payment

↑ Back to top

After Stripe takes a payment, the Stripe extension and other plugins on your store still have work to do on the order. For example, they save the shopper’s payment method for later, or run custom code tied to new orders.

Sometimes, one of those steps can fail after a payment needed 3DS authentication. If that happens, the shopper still goes to the order confirmation page, because their payment went through. The extension doesn’t charge them again. Instead, it records the error in the WooCommerce logs and adds this order note:

Stripe took the payment, but a step after the charge failed. The payment was not charged again. Please review this order, and see the Stripe logs (WooCommerce > Status > Logs) for details.

The extension logs this error even when the Log error messages setting is turned off. When you see this note, review the order:

  • Go to WooCommerce > Status > Logs and open the Stripe log to see which step failed.
  • Check the order status. If it still says “Pending payment,” your webhooks will update it once Stripe confirms the payment.
  • If the order includes a subscription, check that the subscription has a saved payment method. Without one, the first renewal payment can fail.

You don’t need to charge the shopper again.

Notes about payments that don’t match the order

↑ Back to top

Before the Stripe extension marks an order as paid, it checks that the Stripe payment matches the order. If the payment doesn’t match, the extension doesn’t mark the order as paid. Instead, it sets the order to “On Hold” and adds an order note like so:

Stripe PaymentIntent pi_XXXXXXXXXX (USD 45.00) does not match this order (USD 60.00). The order is on hold for manual review.

Stripe payment was not marked complete: the settled amount (USD 45.00) does not match the order total (USD 60.00). The order was placed on hold for manual review. PaymentIntent: pi_XXXXXXXXXX.

If you see one of these, check the payment before you fulfill the order:

  1. Find the payment in your Stripe dashboard.
  2. Compare the amount and currency with the order total.
  3. If the payment is right for the order, change the order status to “Processing” and fulfill the order as usual.
  4. If it isn’t, don’t fulfill the order yet. Contact the shopper to settle the difference, or refund the payment from your Stripe dashboard.

WooCommerce handles the order like any other on-hold order. It sends you the “New order” email and sends the shopper the “Order on-hold” email. WooCommerce doesn’t cancel on-hold orders automatically, so the order stays on hold until you update it.

Related Products

Calculate and collect tax globally in your WooCommerce store, and file returns automatically anywhere you do business.

Offer flexible ways to pay: in full, later, or over time. Merchants get paid upfront; Klarna handles credit and fraud risk.

Use of your personal data
We and our partners process your personal data (such as browsing data, IP Addresses, cookie information, and other unique identifiers) based on your consent and/or our legitimate interest to optimize our website, marketing activities, and your user experience.