Skip to content
weLabsweLabsStorefront Playbook
Live demoQuickstart

Store admin

Payments

Set up Stripe, PayPal, Express Checkout and offline payment methods for the storefront, test them safely and know where refunds and logs live.

Shoppers pay on the storefront’s own checkout page. They never visit a WordPress page to pay. You set up payments exactly as you would for any WooCommerce store, in the official payment plugins, and the storefront reads the public part of those settings at every checkout. Switching between test and live mode, or changing keys, needs no help from the storefront team.

  • The storefront is connected and its Storefront URL is set (Connect the storefront).
  • RSC_STOREFRONT_SHARED_SECRET is in wp-config.php and matches the storefront’s value.
  • Your WordPress site and the storefront both run on HTTPS.
  • The payment plugins are at the versions the storefront is verified against:
Plugin Verified version
WooCommerce 11.1.x
WooCommerce Stripe Gateway 11.0.x (from 11.0.0)
WooCommerce PayPal Payments 4.1.x (from 4.1.3)

A newer patch release within those lines (for example Stripe 11.0.4) is supported. A newer minor or major version still works, but hasn’t been checked yet: WordPress shows a notice, and you should run the test checklist before relying on it.

Method Provided by How it appears on the storefront
Credit and debit cards WooCommerce Stripe Gateway A single “Card information” field on the checkout page. Bank security checks (3-D Secure) open over the checkout page.
PayPal WooCommerce PayPal Payments PayPal’s own button replaces Place order. The shopper approves in PayPal’s window.
Apple Pay, Google Pay WooCommerce Stripe Gateway (Express Checkout) One-tap wallet buttons on product pages, the cart and checkout. See Express Checkout.
Direct bank transfer, Cheque, Cash on delivery WooCommerce (built in) Listed as options at checkout. Bank details for transfers show on the thank-you page.

Other online payment plugins are not offered on the storefront, even if they’re enabled in WooCommerce. Amazon Pay, and PayPal’s extra methods such as Pay Later, don’t appear either.

WooCommerceSettingsPaymentsStripe
  1. Install and activate WooCommerce Stripe Gateway from PluginsAdd New Plugin.

  2. Go to WooCommerce › Settings › Payments and open Stripe.

  3. Connect your Stripe account in test mode first. Follow the Stripe plugin’s own set-up screens.

  4. Make sure card payments are enabled, then save.

  5. Set up Stripe’s webhooks as the Stripe plugin’s documentation describes. Webhooks let Stripe update an order if a shopper closes the page during a bank check.

  6. Open the storefront’s checkout. A Credit / Debit card option with a card field should appear.

WooCommerceSettingsPaymentsPayPal
  1. Install and activate WooCommerce PayPal Payments.

  2. Go to WooCommerce › Settings › Payments and open PayPal.

  3. Connect (“onboard”) a sandbox PayPal business account first.

  4. Enable the PayPal gateway and keep the payment intent on Capture.

  5. Save, then open the storefront’s checkout. Choosing PayPal replaces the Place order button with PayPal’s button.

Express Checkout shows Apple Pay and Google Pay buttons. Shoppers pick their address and delivery option in the wallet, approve, and land on the thank-you page without filling in a form.

  1. Go to WooCommerce › Settings › Payments › Stripe and open the Payment methods settings.

  2. Enable Apple Pay / Google Pay and choose the pages it shows on: product, cart and checkout.

  3. Keep Link switched off for now (see the caution below).

  4. Save. The Companion plugin registers your storefront’s domain with Stripe automatically (wallets only appear on registered domains). There’s nothing to upload.

  5. Open the storefront on a device that holds a wallet: Safari with a card in Apple Wallet for Apple Pay, or Chrome signed in to Google with a saved card for Google Pay.

Good to know:

  • The buttons follow your storefront’s colours. The Stripe plugin’s button appearance settings (theme, type, height) don’t apply to the storefront.
  • Changes apply on the next page load. Switching a wallet on or off, or changing its pages, needs no redeploy.
  • Each shopper sees only the wallets their browser supports. A shopper without Apple Pay never sees the Apple Pay button.
  • HTTPS and a registered domain are required. Wallets never appear on localhost or on local test domains (addresses ending in .test, .local and similar are never sent to Stripe).
  • Phone numbers. The wallet asks for a phone number only when your store’s checkout requires one.
  • Guest checkout. If shoppers must have an account to buy, signed-out visitors don’t see wallet buttons.
  • Product pages buy only that product. A wallet button on a product page places an order for that product alone. The button waits until the shopper has chosen every option of a variable product.
  • No-delivery products. Products that need no delivery (virtual products) have no wallet button on their product page, but can be bought with a wallet from the cart and checkout. If WooCommerce calculates tax from the billing address, wallet buttons don’t show for them at all.
WooCommerceSettingsPayments

Enable Direct bank transfer, Check payments (cheque) or Cash on delivery as usual. The storefront lists the enabled ones at checkout.

  • Direct bank transfer: the order is placed On hold, and the account details you enter in the method’s settings are shown on the storefront’s thank-you page.
  • Cash on delivery: the order is placed as Processing.

When RSC_STOREFRONT_SHARED_SECRET is set in wp-config.php (and matches the storefront), the Companion plugin adds protection on top of WooCommerce’s checkout:

  • A per-shopper limit: each shopper can attempt checkout at most five times a minute. This stops fraudsters from testing stolen cards in bulk.
  • One checkout per cart at a time, so a double click can’t charge twice.
  • Amount checks: a PayPal or wallet payment is refused if the cart total changed after the shopper approved it. The shopper sees “The order total is no longer the amount you approved…” and approves the new total.
  • Private declines: the shopper sees a general “declined” message. The real reason from the bank is kept in the order notes for you.

The last three work even without the secret. The per-shopper limit needs it. Setting it up is covered in Connect the storefront.

These notices appear at the top of wp-admin for Administrators. None of them switches anything off.

Notice What it means What to do
“StoreFront: (plugin and version) is active, but storefront payments are verified against … Payments keep working; before relying on this version, run the payment sandbox checklist…” A payment plugin was updated past the verified version line. Payments keep working. Run the test checklist on a staging store, or ask weLabs whether the version is verified yet.
“StoreFront: this store takes payments on the storefront, but RSC_STOREFRONT_SHARED_SECRET is not defined in wp-config.php…” The per-shopper checkout limit is off. Add the secret to wp-config.php and give the same value to the storefront team.
“StoreFront: Stripe did not register the storefront domain … so Apple Pay, Google Pay and Link will not appear on the storefront. Stripe said: …” Stripe refused your storefront’s domain. Card payments aren’t affected. Read Stripe’s reason in the notice. Check the Storefront URL and your Stripe keys. The plugin tries again within the hour, and immediately when the Storefront URL or Stripe keys change.

When a call to Stripe, PayPal or WooCommerce’s checkout fails, the Companion plugin writes it to WooCommerce’s logs:

WooCommerceStatusLogs

Choose the source retail-store-companion-payment. The Stripe and PayPal plugins keep their own logs in the same place.

Always test in Stripe test mode and a PayPal sandbox, on a staging copy of your store. Never test with real orders on a live store your customers use.

  1. Card approved. Pay with the Stripe test card 4242 4242 4242 4242 (any future expiry, any CVC). Expect the thank-you page, and an order in Processing in WooCommerce.

  2. Card declined. Use 4000 0000 0000 0002. Expect a decline message, with the form and cart still filled in; paying again with 4242… works.

  3. Bank check (3-D Secure). Use 4000 0000 0000 3220 and click Complete in the window. The window opens over the checkout page. Repeat with Fail: you should see that the payment wasn’t completed, with the cart intact.

  4. PayPal. Pay with a sandbox Personal account (from developer.paypal.com, under sandbox accounts). Expect the thank-you page and an order in Processing. Also close the PayPal window once without paying: you should be back on the checkout with nothing lost.

  5. Wallets. On an HTTPS staging domain, buy from a product page, the cart and checkout with each wallet you enabled.

  6. Offline methods. Place one order with bank transfer (expect On hold and your bank details on the thank-you page) and one with cash on delivery (expect Processing).

  7. Refund. Refund one test order from WooCommerce (see below) and check it in Stripe or PayPal.

  8. Signed in. Repeat one card payment while signed in. The order should appear under the shopper’s My account › Orders on the storefront.

When everything passes, switch Stripe to live mode and PayPal to your live account. The next checkout uses the live settings.

These stay entirely with WooCommerce and the payment plugins, exactly as on any WooCommerce store:

  • Refunds: open the order in WooCommerceOrders, click Refund, enter the amount and use the Refund … via button for the gateway.
  • Webhooks: configure them in each payment plugin as its documentation says. They let the processor update orders by itself, for example when a shopper closes the page during a bank check.
  • Disputes and payouts: handled in your Stripe Dashboard or PayPal account.
Symptom Likely cause What to do
No card option at checkout Stripe isn’t enabled or connected, or no store currency is set Check WooCommerce › Settings › Payments › Stripe and the store currency.
No PayPal button PayPal gateway disabled or not onboarded Finish onboarding and enable the gateway.
Wallet buttons missing everywhere Domain not registered (look for the notice), not on HTTPS, or Express Checkout off Fix the cause in the notice; check the Stripe plugin’s Payment methods settings.
Wallet buttons missing for some shoppers Their browser holds no supported wallet, or they’re signed out and guest checkout is off Expected behaviour.
A shopper says checkout was refused after several tries The per-shopper limit of five attempts a minute Ask them to wait a minute and try again.
Storefront Playbook · Built by weLabsFeaturesFAQTalk to us