How to Add Express Checkout (Apple Pay, Google Pay) to WordPress
Why express checkout?
Express payment buttons (Apple Pay, Google Pay, Payment Request Buttons) reduce friction, speed checkout, and improve conversion — especially on mobile. This guide walks you through adding them to a WooCommerce WordPress site, plus plugin alternatives, troubleshooting, and code snippets if you need custom integration.
1 — Requirements (what you need before you start)
- WooCommerce installed and configured — WooCommerce
- An SSL certificate (HTTPS) for your domain — mandatory for Apple Pay & Google Pay.
- A Stripe account (recommended) or alternatives (PayPal, Square, Mollie, etc.) — Stripe
- Admin access to WordPress and your hosting file manager (for optional domain verification).
2 — Best & easiest option: WooCommerce Stripe Payment Gateway (recommended)
Steps
- Install the plugin
- Dashboard → Plugins → Add New → search WooCommerce Stripe Payment Gateway → Install → Activate.Plugin link: WooCommerce Stripe Gateway
- Connect Stripe
- WooCommerce → Settings → Payments → Stripe → Click Set up / Connect → follow Stripe login and authorize.
- WooCommerce will usually set live/test keys and webhooks automatically.
- Enable Payment Request Buttons
- WooCommerce → Settings → Payments → Stripe → Manage → scroll to Payment Request Buttons.
- Enable Payment Request Buttons + Apple Pay & Google Pay.
- Choose where to show them (Product, Cart, Checkout pages). Save.
- Verify Apple Pay domain (if required)
- Stripe may ask you to upload the
apple-developer-merchantid-domain-associationfile to/.well-known/on your site.Apple docs: Apple Pay Web Guide
- Stripe may ask you to upload the
- Test
- Put Stripe into Test Mode. Use devices/browsers that support Apple/Google Pay.
3 — Quick note for WooPayments users
If you use WooPayments, express payments are already integrated — enable Payment Request Buttons in settings. WooPayments uses Stripe internally.
4 — Other plugin alternatives (pros & cons)
Here are popular alternatives if Stripe + WooCommerce Gateway isn’t a fit:
1. WP Simple Pay (Stripe payments)
- Pros: Lightweight Stripe-only integration, great for simple checkout & payment request support.
- Cons: Not a full WooCommerce cart solution.
- WP Simple Pay
2. Square for WooCommerce
- Pros: Good if you use Square POS and want unified payments.
- Cons: Apple Pay/Google Pay support depends on region.
- Square for WooCommerce
3. PayPal Checkout
- Pros: Very common, supports PayPal One Touch.
- Cons: UI isn’t Apple/Google Pay native.
- PayPal for WooCommerce
4. Mollie Payments for WooCommerce
- Pros: Best for EU merchants; supports many local payment methods.
- Cons: Apple Pay availability varies.
- Mollie for WooCommerce
5. Stripe Payments (other plugins)
- Pros: Embed shortcodes, lightweight.
- Cons: You may need to build the cart/checkout.
- Stripe Payments Plugin
5 — Custom code: add Payment Request Button using Stripe.js
If you use a custom checkout page or want to build your own button, use Stripe’s Payment Request API. This is advanced — keep keys secret and use server endpoints for PaymentIntents.
1) Enqueue Stripe on the page (front-end)
// functions.php — enqueue Stripe.js
function my_enqueue_stripe_js() {
if (is_checkout() || is_cart() || is_product()) {
wp_enqueue_script('stripe', 'https://js.stripe.com/v3/', [], null, true);
}
}
add_action('wp_enqueue_scripts', 'my_enqueue_stripe_js');
2) Create the button container
3) Initialize Stripe.js and render the button
// front-end JS — load after Stripe.js
document.addEventListener("DOMContentLoaded", function () {
const stripe = Stripe("YOUR_PUBLISHABLE_KEY");
const paymentRequest = stripe.paymentRequest({
country: "US",
currency: "usd",
total: {
label: "Order total",
amount: 5000, // $50.00
},
requestPayerName: true,
requestPayerEmail: true,
});
const elements = stripe.elements();
const prButton = elements.create("paymentRequestButton", {
paymentRequest: paymentRequest,
style: {
paymentRequestButton: {
type: "default"
}
}
});
paymentRequest.canMakePayment().then(function (result) {
if (result) {
prButton.mount("#payment-request-button");
} else {
document.getElementById("payment-request-button").style.display = "none";
}
});
});
This integrates Apple Pay/Google Pay depending on the shopper’s device and browser. You still need a server endpoint to create a PaymentIntent.
6 — Troubleshooting (common issues & fixes)
❌ Apple Pay button not showing?
- Your site is not HTTPS — Apple Pay requires SSL.
- Domain not verified in Stripe.
- You’re testing on a browser without Apple Pay (must be Safari on macOS or supported iOS device).
❌ Google Pay missing?
- Use Chrome or Android device with Google Pay enabled.
- Check region — Google Pay is not supported globally.
❌ Button appears but fails to charge?
- Webhook not configured in Stripe.
- Test mode keys used in live checkout.
- Theme conflicts — test in Storefront theme.
7 — Performance & UX tips (boost conversions)
- Show buttons above the Add to Cart button — gets 2–4× more clicks.
- Enable on product pages — skipping the cart reduces checkout time.
- Use brand-native wallets — Apple Pay looks more trusted on Apple devices.
- Test on mobile first — most express payments are mobile-first.
8 — FAQs
Does Stripe charge extra for Apple Pay or Google Pay?
No — the same Stripe card transaction fee applies.
Do express buttons replace WooCommerce checkout?
No. They shortcut it. Traditional checkout still works for users without wallets.
Can I use PayPal and Stripe express options together?
Yes. Many stores use PayPal + Apple/Google Pay for maximum conversion.
Express checkout buttons dramatically improve the buyer journey by eliminating unnecessary steps. Whether you stick with the recommended WooCommerce Stripe Payment Gateway or explore alternatives like WooPayments, PayPal, Square, or Mollie, adding Apple Pay or Google Pay can increase conversions, especially on mobile.
If you’re comfortable with code, you can build even more custom checkout flows using Stripe.js and the Payment Request API.
Start enabling these buttons today — every second saved at checkout is revenue saved.
