Browse this setup guide

Whop Payment Gateway for WooCommerce — setup guide

Everything below is written against the shipping 3.12.23 release. You need an API key, a Company ID and a webhook signing secret. If you only read one section, read step 5 — that's the one people skip and then wonder why their orders stay unpaid.

1. Overview & requirements

This plugin puts Whop's card and crypto checkout inside your own WooCommerce checkout page. In the default Embed on Checkout mode the card fields render in your payment method box and WooCommerce's own Place Order button starts the payment flow. Test this normal path in your own theme.

You do not manually create or map Whop plans to WooCommerce products. The gateway creates a one-time Whop plan and checkout from the live order total, including quantities, coupons and shipping.

Requirements

WordPress6.0 or newer
WooCommerce7.0 or newer
PHP7.4 or newer
CheckoutClassic checkout or the WooCommerce Checkout Block — both supported
Order storageHPOS (High-Performance Order Storage) compatible
HTTPSRequired for live payments. Sandbox works without it.
Whop accountAn active Whop seller account
Running an older WooCommerce? The gateway leans on WooCommerce's own validation and stock re-check before charging a card. Those hooks behave differently below 7.0, which is why that's the floor rather than a suggestion.

2. Install the plugin

  1. Download the ZIP

    After purchase, download the plugin ZIP from your Freemius account. Don't unzip it.

  2. Upload it to WordPress

    Go to Plugins → Add New → Upload Plugin, choose the ZIP and click Install Now.

  3. Activate

    Click Activate Plugin. A Whop entry now appears under your WooCommerce payment methods.

  4. Enter your licence key

    You'll be prompted for the licence key from your Freemius receipt. This is what enables automatic updates — the gateway still works without it, but you won't get new versions.

3. Get your Whop credentials

The plugin needs an API key and Company ID first. You will add the webhook signing secret after creating the callback in step 5.

  1. Create an API key

    In your Whop dashboard, open your developer / API settings and create a new API key for this store. Copy it immediately — most dashboards show a secret key once.

  2. Copy your Company ID

    Your Company ID identifies which Whop company the payment belongs to. It's shown in your Whop company settings and typically looks like biz_xxxxxxxx.

  3. Decide sandbox or live

    If you want to test first — and you should — use your sandbox credentials here and switch them out later at step 9.

Treat the API key like a password. It can create checkouts against your Whop account. Never paste it into a support ticket, a forum post, a screenshot or a theme file. If you think it has leaked, revoke it in Whop and generate a new one — the plugin picks up the replacement as soon as you save.

4. Connect the gateway in WooCommerce

  1. Open the gateway settings

    Go to WooCommerce → Settings → Payments, find Whop in the list and click Manage.

  2. Paste your credentials

    Put the API key and Company ID from step 3 into their fields.

  3. Set the title your customers see

    This is the label in the payment method list. Something plain like Credit card or crypto converts better than the word "Whop", which most of your customers won't recognise.

  4. Enable the gateway and save

    Tick Enable, then Save changes. Leave sandbox mode on for now.

Gateway not showing at checkout? Check that the gateway is enabled, the credentials match the selected mode, and no other plugin is filtering available payment methods. Step 12 covers the usual checks.

5. Register the webhook

This is the step that matters most. The webhook is how payment confirmation gets back to WooCommerce. Without it, customers can pay successfully and your orders will sit there unpaid.

  1. Copy the webhook URL from the plugin

    The gateway settings screen displays your store's callback URL. It looks like this:

    https://yourstore.com/?wc-api=whop_webhook

    Copy the exact value from the gateway settings rather than typing it by hand. The callback must be publicly reachable over HTTPS when you test live payments.

  2. Add it as a webhook in Whop

    In your Whop dashboard, open webhook settings and create a new endpoint pointing at that URL.

  3. Subscribe to payment.succeeded

    This single event is what the plugin listens for. You don't need the membership events, and subscribing to everything just adds noise.

  4. Copy the signing secret into the gateway

    After Whop creates the endpoint, copy its webhook signing secret into the matching field in WooCommerce, then save the gateway settings.

  5. Send a test event if Whop offers one

    A test delivery should return a 200. A 404 usually means the callback URL is not the exact public URL from the gateway settings — see step 12.

What the plugin does with it

The signed webhook path validates the event before an order is marked paid:

  1. The webhook signature is verified cryptographically, including a replay window, so a spoofed request cannot mark an order paid.
  2. The gateway accepts only a paid payment.succeeded event that matches the expected Whop plan, company, amount and currency.

Only after those checks pass does WooCommerce complete the payment. Some return and recovery paths can also check Whop's API separately.

Testing on localhost? Whop cannot reach localhost, so no webhook will ever arrive. Use a tunnel such as ngrok or Cloudflare Tunnel and register the public URL instead.

6. Choose a checkout mode

One dropdown, three payment experiences. You can change it whenever you like without touching your credentials, your webhook or any existing orders.

WooCommerce Checkout

Recommended

Customers choose Whop, enter their payment details, and place the order from the familiar WooCommerce checkout.

  • Payment fields appear in the WooCommerce payment area
  • Uses the familiar WooCommerce Place order action
  • Recommended for a standard WooCommerce checkout

Popup Checkout

Stay on your site

Customers complete payment in a focused overlay while your WooCommerce checkout stays open behind it.

  • Keeps the WooCommerce checkout open behind the payment panel
  • Creates a focused on-site payment window
  • Works with Classic checkout and Checkout Block

Whop Checkout

Whop-hosted

Customers complete payment on a secure Whop-hosted page, then return to the WooCommerce order flow.

  • Opens Whop's secure checkout page
  • Keeps the payment page separate from the theme layout
  • Returns to the WooCommerce order flow

Which one should you pick?

Your situationUse
Standard theme, conventional checkoutEmbed on Checkout
Mostly mobile trafficEmbed on Checkout
Busy checkout with upsells and widgetsPopup
Checkout built by a page builderDirect redirect
Isolating a plugin conflictDirect redirect, then work back up

All three modes use the same cart-derived payment and webhook verification. Their presentation differs: Embed on Checkout renders fields in WooCommerce, Popup opens an on-page modal, and Direct Redirect uses a Whop-hosted page. Test the mode you choose in your own theme.

7. Appearance & language

Making the form look like your store

The payment form is Whop's iframe, but you control how it presents itself:

  • Theme — light or dark, with a high-contrast option where needed
  • Accent colour — match your buttons and links
  • Background colour — blend into your checkout panel
  • Corner radius — match your theme's inputs so the fields don't look pasted in

Set these to your existing checkout styles and most customers won't register that the fields belong to a different system, which is the whole point.

Language

The payment form is available in 28 languages. Set one explicitly, or leave it on automatic to use the primary language from your WordPress site locale when that locale is supported.

On a multilingual store, test each translated checkout on staging. Automatic mode follows the WordPress site locale mapping; it is not browser or location detection.

All 28 supported languages
English Spanish Espanol French Francais German Deutsch Italian Italiano Portuguese Portugues Dutch Nederlands Polish Polski Swedish Svenska Danish Dansk Norwegian Norsk Finnish Suomi Czech Cesky Greek Hungarian Magyar Romanian Romana Turkish Turkce Russian Ukrainian Arabic Hebrew Hindi Indonesian Bahasa Indonesia Thai Vietnamese Tieng Viet Japanese Korean Chinese
Right-to-left languages. Arabic and Hebrew are supported. Test those two specifically, on mobile as well as desktop — RTL plus a narrow viewport is where themes tend to show layout problems.

8. Currency handling

47 listed store currencies are passed to Whop natively. For a store currency outside that list, the gateway converts the order amount to USD using a live rate with safeguards. Test the currencies that matter to your store in sandbox.

All 47 natively charged currencies
USD EUR GBP CAD AUD JPY CHF SEK NOK DKK NZD SGD HKD MXN BRL INR PKR AED SAR QAR KWD BHD OMR JOD EGP TRY PLN CZK HUF RON BGN ILS ZAR NGN MYR THB PHP IDR COP CLP PEN ARS TWD VND KES GHS MAD

Testing this properly

  1. Set your store currency to each one that matters commercially and place a sandbox order in each.
  2. Confirm the amount and currency shown in the checkout match the path you expect. Test a zero-decimal currency such as JPY specifically.
  3. Test a coupon and a shipping cost together, because that's where rounding errors surface.
  4. Test one currency outside the native list and confirm the USD conversion behaves as you expect.

9. Test, then go live

Run a full sandbox order

Sandbox mode lets you exercise the checkout and order-confirmation path before real charges. Place a test order and check the parts that apply to your selected checkout mode:

  1. The checkout appears in the expected place: embedded fields, popup, or hosted redirect.
  2. The amount and currency match the cart path you tested, including coupons and shipping.
  3. The signed payment.succeeded webhook moves the matching order to a paid status.
  4. Your normal WooCommerce fulfilment behaviour occurs after payment.
  5. Submit once with a deliberately invalid billing field and confirm validation fires before any charge.
If step 3 fails, stop. An order that stays pending after a successful sandbox payment means your webhook isn't arriving. Fix that before going live, or you will be reconciling live orders by hand.

Switching to live

  1. Confirm HTTPS is active

    Live payments require it. Check the certificate covers the exact domain your checkout runs on, including or excluding www as appropriate.

  2. Swap in your live credentials

    Replace the sandbox API key and Company ID with the live pair.

  3. Register the matching live webhook and signing secret

    Make sure your live Whop endpoint and the signing secret saved in WooCommerce match the live environment before accepting real orders.

  4. Turn sandbox mode off and save

    Place a small real order only after you have confirmed the live credentials and webhook are configured correctly. If you later refund a payment in Whop, record that operationally against the WooCommerce order as appropriate for your workflow.

10. Orders after payment

Order status

You choose what a paid order becomes:

  • WooCommerce default — the normal behaviour, which is usually Processing for physical goods and Completed for downloads only
  • Force Processing — when you fulfil manually and want everything queued
  • Force Completed — when everything you sell is instant access

If you sell digital products and customers are waiting on a download, Force Completed is usually what you want.

When something goes wrong mid-payment

If a verified payment arrives before WooCommerce can match it to an order, the gateway records it for review in its status tools. Review and reconcile these entries promptly; payment checkout and third-party fulfilment are separate responsibilities.

Refunds

Refunds are issued from your Whop dashboard, since that's where the funds sit. Record the refund against the WooCommerce order afterwards so your reports stay accurate.

11. Settings reference

Every setting on the gateway screen, and what it actually affects.

SettingWhat it doesSuggested
Enable / disableShows or hides Whop at checkoutEnabled
TitleThe label customers see in the payment list"Credit card or crypto"
DescriptionShort text under the titleMention cards and crypto
API keyAuthenticates every request to Whop
Company IDWhich Whop company receives the payment
Sandbox modeRoutes everything to Whop's sandboxOn until launch
Checkout modeEmbed, popup or direct redirectEmbed on Checkout
Form themeLight, dark or high contrastMatch your store
Accent / background colourColours inside the payment formYour brand colours
Corner radiusField rounding inside the formMatch your theme inputs
LanguagePayment form language, or follow site languageAutomatic
Order status after paymentDefault, force Processing, or force CompletedDepends on fulfilment
Custom button label / coloursPopup mode only — styles your payment buttonMatch your theme
Webhook URLRead-only. Copy this into Whop.

12. Troubleshooting

Ordered roughly by how often each one actually happens.

SymptomUsual causeFix
Payment succeeds but the order stays pending No webhook, or it's subscribed to the wrong event Register the URL in Whop and subscribe to payment.succeeded
Webhook returns 404 The public callback URL is incorrect or blocked Copy the exact ?wc-api=whop_webhook URL shown in gateway settings, then verify it is publicly reachable over HTTPS
Worked in sandbox, first live order pending Webhook only registered on the sandbox account Add the webhook to your live Whop account too
Whop missing from checkout Gateway disabled, incomplete credentials, or another plugin filtering methods Check that the gateway is enabled, verify the credentials and then test with other payment customisations off
Card fields blank or never load A JavaScript error from another plugin is breaking the page Open the browser console; fix the erroring script or switch to popup mode
Fields work, then break after switching payment method Checkout Block re-render not tearing the frame down Update to the latest plugin version; report it if it persists
Live mode refuses to process No valid HTTPS certificate Install a certificate covering your checkout domain exactly
No webhook on a local install Whop can't reach localhost Expose the site with ngrok or Cloudflare Tunnel
Charged amount differs from the cart A currency-switcher plugin changing display but not store currency Confirm the store currency at checkout matches what's displayed
Order meta missing after enabling HPOS Another plugin writing post meta directly Not this gateway — identify the plugin still using post meta

Before you open a ticket

These four details get your issue resolved on the first reply instead of the third:

  1. WordPress, WooCommerce, PHP and plugin versions.
  2. Sandbox or live, and which checkout mode.
  3. Classic checkout or the Checkout Block.
  4. What you expected, what happened, and the order number. Never send your API key.

13. Get support

Send us the details from the checklist above and we'll pick it up. Tickets are monitored daily, and the form is protected by Google reCAPTCHA to keep spam out.

Strong anti-spam verification powered by Google reCAPTCHA.