How to Set Up Stripe in WooCommerce: Cards, Apple Pay, and Google Pay (2026)

A customer taps Apple Pay, sees a payment confirmation, and expects dinner to be on its way. Your kitchen, meanwhile, needs a paid order, the correct delivery address, and every modifier attached to the right item. Connecting Stripe is only one part of making that happen. The good news: WooCommerce can support cards, Apple Pay,...

September 16, 2026 WPSlash

A customer taps Apple Pay, sees a payment confirmation, and expects dinner to be on its way. Your kitchen, meanwhile, needs a paid order, the correct delivery address, and every modifier attached to the right item. Connecting Stripe is only one part of making that happen.

The good news: WooCommerce can support cards, Apple Pay, and Google Pay through one Stripe integration. This guide walks through the setup for 2026, including account verification, checkout configuration, payment testing, and the less glamorous checks that prevent paid orders from getting stuck.

What You Need Before Connecting Stripe

Stripe processes the payment while WooCommerce manages the order. The gateway extension connects them: it sends payment requests to Stripe and receives updates that help WooCommerce determine whether an order is paid, awaiting action, or unsuccessful.

With the official integration, sensitive card details are collected through Stripe’s payment components rather than ordinary WordPress form fields. That reduces your exposure to card data, but it doesn’t remove your responsibility to secure the website or complete applicable payment-compliance requirements.

Your preparation checklist

  • A working HTTPS website: Secure the entire storefront, not just the checkout page, and fix mixed-content warnings.
  • A supported business location: Stripe account availability depends on where your business is established, not simply where your customers live.
  • An eligible Stripe account: Your business type must be supported, and you’ll need to complete Stripe’s requested verification.
  • Payout bank details: Provide a supported bank account and any business, representative, or ownership information Stripe requests.
  • A functioning WooCommerce checkout: Configure currency, taxes, shipping or local pickup, and your basic products before adding payments.

Update WordPress, WooCommerce, and your theme to compatible releases, and take a backup first. A staging site is useful for checking checkout changes without disturbing customers, although Stripe’s notifications need a publicly reachable endpoint to arrive.

Stripe Payment Gateway versus WooPayments

The official WooCommerce Stripe Payment Gateway extension connects WooCommerce to a Stripe account, with payment settings in WooCommerce and account management available through Stripe. WooPayments is a separate payment extension with its own onboarding and WordPress-based management experience, although it uses Stripe infrastructure.

This tutorial covers the official Stripe extension. Don’t treat the two as interchangeable or assume connecting one configures the other.

Fees vary by account country, payment method, currency conversion, and other transaction details. Apple Pay and Google Pay generally use the underlying card-payment pricing, but check your account’s current terms rather than building your margins around a headline rate. Payment-method availability also varies by business eligibility, currency, location, and integration support.

Install the Stripe Extension and Connect Your Account

Install the correct extension

In WordPress, open Plugins → Add New and search for “WooCommerce Stripe Payment Gateway.” Confirm that you’re installing the official extension from WooCommerce, then install and activate it. Several plugins have similar names, so this small check matters.

Next, open WooCommerce → Settings → Payments and locate Stripe. Choose its setup or management option. Labels and tab arrangements can change between releases, but the Stripe settings should contain account connection, payment methods, and testing controls.

Use the supported connection flow

Start the extension’s account-connection process and follow the Stripe onboarding screens. Sign in to the intended account, confirm the business being connected, and provide any outstanding verification details. If you manage multiple businesses, double-check the selected account before authorizing the connection.

A connected account isn’t necessarily ready to accept payments and receive payouts. Inspect Stripe’s account requirements for outstanding identity checks, business information, bank verification, or restrictions. Resolve those before scheduling your launch.

Prefer the extension’s supported connection flow over manually copying credentials from an older tutorial. If your installed version offers a manual connection option, follow that version’s documentation precisely; live credentials, test credentials, and webhook signing secrets serve different purposes.

Keep test and live environments separate

Enable test mode while configuring checkout and complete any test-account connection the extension requests. Test transactions don’t move money. They also don’t prove that your live account is verified or that its payment methods are enabled.

Look for the connection and webhook status indicators available in your version’s account settings. A webhook is a server-to-server notification from Stripe—for example, confirmation that a payment succeeded. The customer’s browser returning to your thank-you page is not a substitute for that notification.

If the webhook connection is unhealthy, use the extension’s supported repair or reconnection process. Check whether maintenance mode, password protection, a firewall, or a security plugin is blocking incoming requests. Avoid creating duplicate webhook endpoints as a first response; that can make diagnosis harder.

Finally, review the other gateways enabled at checkout. Two indistinguishable “Credit card” options create unnecessary confusion. Keep intentional alternatives, but disable overlapping card gateways you aren’t using after confirming that existing subscriptions or other recurring-payment arrangements don’t depend on them.

[IMAGE: WooCommerce payment setup diagram showing the official Stripe extension connected to a Stripe account, separate test and live environments, and webhook notifications returning to WooCommerce]

Configure Card Payments, Apple Pay, and Google Pay

Enable cards and eligible express checkout methods

Within Stripe’s WooCommerce settings, enable card payments and review the customer-facing title where that option is available. “Credit / debit card” is clearer than an internal gateway name. Save your settings, then check the actual checkout—not just the administration screen.

Find the express checkout controls and enable Apple Pay and Google Pay where supported. Some versions group them under an express checkout section; older interfaces may use payment-request terminology. Don’t assume every payment method shown in the Stripe Dashboard is automatically available through the WooCommerce extension.

Review domain-registration requirements as well. Apple Pay on the web requires the relevant domain to be registered, and Stripe’s wallet integration can impose additional payment-method domain requirements. The extension may handle registration automatically, but verify that it has succeeded rather than assuming the button switch completes everything.

If verification fails, check HTTPS, the exact hostname customers use, and any verification-file path specified by the integration. A staging subdomain and the live storefront are different hosts. Redirects, access restrictions, and security rules can interfere with verification.

Choose button placements carefully

Depending on your extension version and checkout configuration, express buttons may be available on product pages, the cart, and checkout. Start with checkout placement. Add earlier placements only after confirming that customers can still supply every detail your business needs.

For restaurant orders, a product-page wallet button can be premature. A customer may still need to select delivery or pickup, choose a time slot, add required modifiers, or provide an apartment number. A wallet’s shipping address doesn’t automatically replace your restaurant-specific fields.

If you use FoodMaster, our WooCommerce restaurant ordering plugin, test Stripe within the complete ordering journey. FoodMaster supports delivery, pickup, dine-in ordering, POS, kitchen display, QR table ordering, and automatic printing; the payment setup still needs to preserve the information those workflows depend on.

Check your checkout type and customer eligibility

The current official Stripe extension supports WooCommerce’s Checkout Block and classic shortcode checkout, but extensions and customizations around them may differ in compatibility. Identify which checkout your store uses, then verify required fields, delivery controls, and express-button placements in that exact setup.

Wallet visibility is conditional. Device, browser, wallet configuration, eligible cards, region, and integration requirements all affect whether a button appears. Missing Apple Pay on one desktop browser doesn’t prove that Apple Pay is broken.

Use eligible devices with configured wallets for meaningful checks. Test delivery, pickup, and dine-in separately if offered. For QR table ordering, confirm that the table identifier survives checkout; a paid order without a table number still leaves staff guessing.

If you offer gratuities through Tipping – Add Order Tip for WooCommerce, verify that customers can make their selection before authorizing payment and that the tip appears correctly in the final order total. Express checkout shouldn’t quietly bypass an option you intended customers to see.

Choose Automatic Capture or Authorize Now and Capture Later

Authorization, capture, and payout describe different stages. An authorization reserves funds on the customer’s payment method. Capture completes the charge against that authorization. A payout transfers available money from your Stripe balance to your bank according to your payout schedule and account conditions.

So, “paid” in WooCommerce doesn’t mean “already in the bank.” That distinction helps when reconciling a busy evening’s orders with later bank deposits.

Where to configure capture

Open the Stripe extension’s payment or advanced settings and look for the capture control. Depending on the version, it may be phrased as capturing payments immediately or issuing an authorization and capturing later. Follow the installed extension’s instructions, since the control’s wording and location can change.

Automatic capture is the simpler choice when your store can fulfill every accepted order. Once payment succeeds, the order can enter your paid-order workflow without someone separately collecting the authorized funds.

Manual capture can suit a restaurant that needs to confirm availability first. Imagine a customer ordering the last three portions of a special: the payment is authorized, staff check stock, and the authorized amount is captured only after acceptance. If the restaurant declines, canceling the uncaptured authorization releases the hold, although the customer’s bank controls when that release becomes visible.

Don’t confuse delayed capture with order acceptance

Manual capture does not create a restaurant acceptance workflow. You still need a defined way for staff to accept or decline orders, perform the corresponding payment action, and notify customers.

Use the capture operation documented by the extension, and verify the result in Stripe. Don’t assume an arbitrary WooCommerce status change captures funds unless the extension explicitly supports that behavior.

Authorizations expire. Their validity depends on the card network, transaction type, and other conditions, so don’t build your process around a universal number of days. Check the payment’s capture deadline where available and set a much shorter internal response target for food orders.

Not every payment method supports separate authorization and capture. Test the card and wallet paths you plan to offer, and decide whether uncaptured orders should appear in the kitchen as awaiting acceptance rather than ready to prepare.

[IMAGE: Restaurant payment workflow comparing automatic capture with authorization followed by staff acceptance, capture, kitchen preparation, and a separate later bank payout]

Test Successful Payments, Declines, and Order Status Updates

A checkout that loads without errors hasn’t passed testing. You need to know what happens when payment succeeds, requires authentication, fails, or finishes while the customer closes the browser.

Run these checks with the gateway in test mode. For standard Stripe card testing, use a future expiry date and an appropriate test CVC. Never enter real card details into a test-mode card form.

  1. Successful payment: Use Stripe’s standard test card, 4242 4242 4242 4242. Confirm that the order total, currency, delivery charge, taxes, and selected options are correct.
  2. Authentication challenge: Use 4000 0025 0000 3155 to exercise Stripe’s authentication-required test flow. Complete the challenge, then repeat and cancel it to inspect the recovery experience.
  3. Declined payment: Use 4000 0000 0000 0002 for a generic decline. The customer should see a useful error and be able to retry without losing their basket.
  4. Manual capture: If enabled, confirm that authorization doesn’t appear as a captured payment. Then test capture and cancellation separately.
  5. Order handoff: Check confirmation emails and any staff dashboard, printer, or kitchen display that should receive the order.

Read the order and payment records together

A successful, captured order containing products that require fulfillment normally moves to Processing. Orders containing only products that are both virtual and downloadable can complete automatically. Authorized-but-uncaptured card orders typically remain On hold with the official extension.

Declines and abandoned authentication can produce different outcomes depending on when the order was created and how checkout handled the failure. You may see Failed or Pending payment orders. The essential check is that an unsuccessful attempt never enters fulfillment as paid.

Open the WooCommerce order notes and locate its transaction reference where present. Compare it with Stripe’s test payment record, then inspect webhook deliveries for relevant events. Successful delivery is useful evidence; confirm the WooCommerce order actually updated too.

Test phones and wallets separately

Repeat your checkout tests on a real phone. Check address editing, required options, validation messages, and whether opening the wallet payment sheet changes the expected total.

Wallet testing isn’t simply entering 4242 into Apple Wallet or Google Wallet. Follow the current Stripe and extension documentation for the supported wallet test procedure; eligible devices, existing wallet cards, or platform-specific sandbox arrangements may be required. Don’t assume one browser’s card-form test validates both wallets.

For restaurants, verify that a successful test order reaches the intended kitchen workflow once, with modifiers and fulfillment details intact. A declined payment should not produce an ordinary paid kitchen ticket.

Go Live and Troubleshoot Common Stripe Checkout Problems

Launch during a quiet period, with someone available to watch both WooCommerce and the fulfillment system. Five minutes before the dinner rush is a terrible time to discover that live webhooks aren’t connected.

  • Disable test mode and confirm the intended live Stripe account is connected.
  • Resolve outstanding account requirements and check payment and payout eligibility.
  • Verify live webhook health, domain registration, and enabled payment methods.
  • Exclude cart, checkout, and relevant customer-session content from inappropriate page caching.
  • Where permitted by your processor’s rules, make a genuine low-value live purchase using an authorized payment method.
  • Confirm the payment, order status, customer notification, and fulfillment handoff; test refunds separately if needed, allowing for fees that may not be returned.

Diagnose the symptom before changing settings

Symptom What to check Next action
Apple Pay or Google Pay is missing Customer eligibility, HTTPS, domain registration, enabled methods, and supported placement. Test on a known eligible device with a configured wallet before investigating theme conflicts.
Stripe shows a connection error Selected account, test/live environment, account restrictions, and server connectivity. Use the supported reconnection flow and inspect the specific error rather than repeatedly replacing credentials.
Stripe payment succeeded, but the order is unpaid Matching transaction reference, webhook delivery, endpoint errors, and order notes. Restore webhook processing and use supported event redelivery where appropriate. Verify capture before changing order status.
Order remains On hold Whether the payment is authorized but uncaptured. Follow the configured capture workflow; don’t mistake an intentional authorization hold for failed payment.
Express checkout omits delivery or order options Button placement and compatibility with required checkout fields. Disable earlier express placements until the complete ordering path collects and validates those details.

Inspect logs without exposing customer data

If needed, enable the Stripe extension’s logging option temporarily, reproduce the issue, and review the relevant entries under WooCommerce → Status → Logs. Find the gateway’s log source and match timestamps with order notes and Stripe payment events.

Never publish complete logs or screenshots without reviewing them. Redact credentials, webhook signing secrets, authorization headers, customer details, and sensitive payment identifiers. Share diagnostic information only through an appropriate private support channel, then turn off unnecessary debug logging.

Before retrying a disputed checkout attempt, check whether Stripe already collected the payment. Charging again because WooCommerce looks unpaid can turn a notification problem into a duplicate-payment problem.

The setup is ready when customers can pay, WooCommerce records the right outcome, and staff receive an actionable order. Keep that full chain working, and cards, Apple Pay, and Google Pay become useful conveniences—not three new things to troubleshoot during service.

Commission-free ordering

Run restaurant orders on your own WordPress site

FoodMaster adds delivery, pickup, dine-in, POS, and kitchen tools — with zero per-order fees.

Get FoodMaster

Leave a Comment

Your email address will not be published. Required fields are marked *

×

🔥 ONE DAY ONLY OFFER 🔥

Upgrade FoodMaster Today

Normally your license is limited to 1 Website.

Today only, get a LIFETIME Unlimited Websites License for just:
$499

✔ Unlimited Client Websites
✔ Unlimited Personal Projects
✔ Future Updates Included
✔ Save Hundreds on Additional Licenses

Offer Ends In: