A customer’s takeaway order shouldn’t fall apart at the last tap. But connecting Stripe is only half the job: WooCommerce also needs to receive payment updates, preserve delivery instructions, and show Apple Pay or Google Pay when the customer’s device supports them.
This setup guide covers those less glamorous details as well as the installation. The goal is a checkout that takes the payment, updates the right order, and gives your team a reliable signal to start preparing the food.
Before You Start: What You Need to Accept Stripe Payments
Stripe processes payments; WooCommerce manages the cart, checkout, and order. The Stripe extension connects them, sending payment requests to Stripe and receiving results that help WooCommerce update orders. Webhooks handle server-to-server notifications, including updates that arrive after a customer has left your website.
Card details are collected through Stripe’s payment components rather than being stored as raw card numbers in your WordPress database. That reduces your exposure to sensitive payment data, but it doesn’t remove your responsibilities for site security or applicable PCI compliance.
Before installing anything, have these essentials ready:
- A supported business country: Stripe must support accounts for the country where your business is established.
- An eligible business: Your products and activities must comply with Stripe’s restricted-business rules.
- HTTPS: Your storefront and checkout need a valid TLS certificate without mixed-content errors.
- A suitable bank account: You’ll need payout details that meet the requirements for your account’s country and settlement currency.
- A working WooCommerce store: Configure products, currency, taxes, delivery or shipping options, and checkout before testing payments.
Have your legal business information and ownership details available, too. Stripe may request identity documents or additional information during verification.
The WooCommerce Stripe Payment Gateway extension and WooPayments are separate payment integrations. WooPayments uses Stripe infrastructure but has its own onboarding and account-management experience. This guide uses the Stripe gateway extension; don’t configure both accidentally and leave customers facing duplicate card options.
There isn’t one universal Stripe fee or payout timetable. Processing fees, wallet availability, settlement timing, and payout schedules depend on your country, account, payment method, and other factors. Check your account’s current terms rather than budgeting from an old tutorial.
Install the Stripe Extension and Connect Your Account
Install the correct extension
Back up the site first. For an established store, use staging to check compatibility before changing the live checkout, and confirm that your WordPress, WooCommerce, PHP, and extension versions meet the current requirements.
In WordPress, open Plugins → Add New and search for “WooCommerce Stripe Payment Gateway.” Check the extension name and publisher information carefully; the official listing identifies WooCommerce as its author. Install and activate it.
Then open WooCommerce → Settings → Payments and find Stripe. Choose its setup or management option. Button names and screen layouts change between releases, so follow the installed extension’s connection prompts rather than expecting every screenshot from an older guide to match.
Connect and complete verification
Use the extension’s account-connection flow to sign in to Stripe or create an account. If you manage several businesses, pause at the account-selection screen. Connecting the restaurant to another company’s Stripe account creates an accounting problem you really don’t want.
Complete the requested business profile, representative and ownership information, bank details, and verification requirements. A connected account isn’t necessarily ready to accept live payments or receive payouts. Check Stripe for outstanding requirements and confirm the relevant capabilities are enabled.
Next, establish your testing environment. Stripe separates test payments from live payments, and the extension must have the appropriate connection or credentials for the selected mode. Depending on its version, the interface may refer to test mode or a sandbox connection. Confirm what environment you’re actually using.
Check webhook delivery, not just connection status
Current connection flows may configure webhooks automatically. Check the extension’s webhook status and inspect the corresponding destination in Stripe’s webhook or event-destination area. It should point to the endpoint provided by your extension for this store—not an old staging address.
After a test payment, inspect its webhook delivery attempts. Successful delivery normally receives a 2xx HTTP response; repeated failures need investigation. Test and live webhook configuration are separate, and a green account-connection indicator doesn’t prove either is working.
Never publish secret keys, webhook signing secrets, authorization headers, or unredacted logs in support posts. Crop screenshots carefully. If a secret is exposed, rotate it and update the integration; deleting the screenshot alone doesn’t make that credential safe again.
[IMAGE: WooCommerce Stripe setup checklist beside a redacted webhook delivery screen showing separate test and live environments and a successful 2xx response]
Configure Card Payments for Your WooCommerce Checkout
Inside Stripe’s WooCommerce settings, enable the gateway and activate card payments where the installed version offers payment-method controls. Save the changes, then inspect checkout as a customer. A setting saved in the dashboard isn’t proof that the payment option renders correctly.
Make the payment recognizable
If your version exposes an editable checkout title, use something plain such as “Credit or debit card.” Customers need to recognize how they can pay; they don’t need to understand your payment infrastructure.
Your statement descriptor serves a different purpose. It helps customers recognize the charge in their banking app. Configure it in the appropriate Stripe account settings, using a trading name customers associate with your restaurant and following Stripe’s current character and formatting rules. Card-statement presentation can vary by issuer.
For example, a restaurant called Harbour Pizza shouldn’t surprise diners with an unrelated parent-company name where a recognizable descriptor is permitted. Clear receipts and contact details help, too.
Choose saved cards deliberately
Saved payment methods can make repeat orders easier. Where enabled and supported, Stripe stores the payment method, while WooCommerce retains references or tokens—not the customer’s full card number.
Test this with a customer account: save a method with the customer’s consent, place another order, and check the account’s payment-method management screen. Don’t assume a guest checkout will offer the same saved-card experience. Explain saved-payment behavior clearly and keep account access secure.
Decide when to capture funds
For a typical takeaway order, immediate capture is usually the simpler operational choice. A customer pays for two pizzas, WooCommerce records the successful payment, and the order enters preparation.
Authorization followed by manual capture, where supported, places a temporary hold rather than immediately capturing the funds. An authorization is not a captured payment. Holds expire, with timing depending on the transaction and network rules. Staff need a documented capture process and a plan for rejected orders.
For restaurant workflows, FoodMaster’s WooCommerce restaurant ordering system handles delivery, pickup, and dine-in ordering alongside features such as kitchen displays and automatic printing. Test that your configured workflow routes orders at the intended payment stage, especially if you use authorization-only payments.
Finally, test your actual checkout type. Both Checkout Blocks and classic shortcode checkout need compatible gateway and add-on versions. Check required fields, validation errors, saved cards, and mobile layout—not just whether the card box appears.
Enable Apple Pay and Google Pay—and Check Where They Appear
Apple Pay and Google Pay are supported wallet experiences within the Stripe integration. Their express buttons can reduce typing, especially on phones, but they aren’t guaranteed to appear for every visitor.
Find the extension’s express checkout or wallet settings and enable the supported options you want. Older releases may use different terminology. Choose among the display locations your installed version actually provides, which may include product, cart, and checkout pages.
I’d start with checkout placement for a restaurant. Product-page express payment can be convenient for a simple retail item; it deserves more scrutiny when an order needs a delivery zone, pickup slot, or table number.
Verify the domain and customer environment
Check payment-method domain registration in Stripe and any domain-verification status shown by the extension. Apple Pay on the web requires domain verification, and Stripe’s wallet integrations have payment-method domain requirements. Automatic registration can simplify this, but still verify the result.
Register the actual hostname serving checkout, including relevant subdomains, in the appropriate environment. A staging domain and your live domain are not interchangeable. If verification requires a file under the site’s well-known path, security rules, redirects, or password protection must not block access.
Wallet visibility depends on supported devices and browsers, customer wallet setup, eligible cards, account settings, and transaction conditions. An absent Apple Pay button on one desktop browser doesn’t establish that your configuration is broken. Test with a genuinely eligible device and configured wallet.
Protect the restaurant order details
Run separate express-checkout tests for delivery, pickup, and dine-in. Confirm that the order retains its required address, fulfillment choice, time slot, modifiers, and table reference. A wallet can supply contact information; it doesn’t automatically understand your kitchen workflow.
If you use a WooCommerce checkout tipping option, such as Tipping – Add Order Tip for WooCommerce, verify that the selected tip reaches the final wallet total. Test the combination rather than assuming compatibility. Disable any express placement that lets customers bypass essential information.
Test Successful Payments, Declines, Refunds, and Order Updates
One successful payment is a useful start, not a launch test. You need to know what happens when a card fails, authentication interrupts checkout, or a customer calls to cancel dinner.
Use Stripe’s documented test details only in test mode or the intended sandbox. Never enter test card numbers in live mode, and don’t use real card details for sandbox testing. Use dummy customer information and prevent test orders from reaching the production kitchen.
Run a practical payment checklist
- Successful card payment: Stripe’s standard Visa test number is 4242 4242 4242 4242. Use a future expiry date, any valid three-digit CVC, and other requested test billing details. Place an order and confirm its total, tax, delivery charge, and any tip.
- Declined card: Use 4000 0000 0000 0002 for a generic decline. Check that checkout shows a useful error, preserves the cart, and doesn’t send the order into paid-order preparation.
- Authentication challenge: Use Stripe’s documented 3D Secure test card 4000 0025 0000 3155 for an authentication-required scenario. Complete the challenge, then repeat while cancelling or failing it. Results can depend on whether the payment method was previously set up for future use.
- Customer interruption: Test a retry after a failed attempt and leaving checkout before completion. Inspect the resulting orders and payments for unexpected duplicates or abandoned pending orders.
- Wallet checkout: Follow Stripe’s current wallet-specific testing requirements. Card-field test numbers don’t reproduce every wallet scenario; use an eligible device and supported test arrangement.
These card numbers come from Stripe’s testing documentation. Consult its current testing guidance if you need additional scenarios, such as insufficient funds or country-specific behavior.
Match the order to the payment
For each attempt, locate the payment in Stripe’s test environment and compare the amount, currency, payment status, and transaction reference with the WooCommerce order. Read the order notes and inspect webhook delivery.
A captured payment for a normal food order commonly moves the order to Processing. Orders containing only products that are both virtual and downloadable may complete automatically. Authorization-only payments may remain On hold; extensions and custom status workflows can change the details. What matters is that the status accurately represents the payment and fulfillment state.
Refund from WooCommerce
Open the paid test order, choose Refund, enter the appropriate items or amount, and select the gateway refund action. A manual refund records an adjustment in WooCommerce but doesn’t itself return money through Stripe.
Test partial and full refunds. Confirm the refund appears in Stripe, the WooCommerce notes and totals update, and staff understand that a partial refund doesn’t necessarily mark the entire order Refunded.
Finally, switch to live mode, verify the live connection and webhooks, and run a small genuine purchase with a real payment method. Check the receipt, order routing, and refund process. Applicable processing fees may apply, and original fees may not be returned under your account’s refund terms.
[IMAGE: Restaurant payment test worksheet matching successful, declined, authenticated, and refunded Stripe payments to WooCommerce order notes and kitchen-routing outcomes]
Fix Common Stripe Setup Problems and Launch Confidently
Stripe is missing from checkout
Check that the gateway and card method are enabled, the selected environment is connected, and the account is eligible to process that currency and transaction. Review checkout compatibility, particularly if you recently switched from classic checkout to Checkout Blocks.
Then investigate JavaScript errors and optimization settings. Exclude cart and checkout from full-page caching, and test script-delay or combination settings on staging. A payment form that appears only after disabling an optimization needs fixing before launch.
Apple Pay or Google Pay doesn’t appear
Start with the customer environment: supported device, browser, wallet setup, and eligible card. Next check enabled display locations, domain registration, HTTPS, and account availability. Use a second known-compatible device before treating one missing button as a site-wide outage.
The account won’t connect
Confirm you’re authorizing the intended Stripe account with sufficient permissions. Look for incomplete verification, blocked redirects, or server-side outbound connection failures. Check gateway logs under WooCommerce → Status → Logs, where available, and redact sensitive information before sharing them with authorized support.
Stripe shows success, but the order stays pending
Inspect the matching payment and its webhook deliveries. Common causes include an outdated endpoint, a test/live mismatch, security software blocking requests, or a server error while WooCommerce processes the event.
Check the response and relevant logs before changing anything. After repairing the cause, retry the relevant webhook where supported. Don’t blindly charge the customer again or mark orders paid without reconciling them against Stripe.
Before opening ordering to customers, make one final pass:
- Live mode, account capabilities, and live webhook delivery are confirmed.
- HTTPS works across checkout, with mobile cards and eligible wallets tested.
- Delivery, pickup, table details, modifiers, and totals survive express checkout.
- Paid orders reach staff correctly; declined attempts don’t trigger preparation.
- Staff can issue and verify refunds, and understand authorization versus capture.
- Payment settings have restricted access, administrator accounts use strong authentication, and backups and updates are maintained.
The best payment setup is pleasantly boring: customers pay, orders update, and the kitchen knows what to make. Test the exceptions now, while you have time—not when Friday’s dinner queue is watching.
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.