Back

VibeFox Stripe for WooCommerce — Help

Requirements

WordPress: 6.0 or later.

WooCommerce: 7.0 or later, installed and active. The plugin refuses to activate without it.

PHP: 8.0 or later.

HTTPS: your site should use HTTPS for live payments.

Stripe account: you need the secret API keys of your Stripe account and a webhook endpoint in the Stripe Dashboard (see Configuration). Only the secret keys and the webhook signing secrets are used. The publishable keys (pk_...) are not needed, because Stripe Checkout is a Stripe-hosted page.

VibeFox license key: bought on vibefox.net. One key works on one domain.

Installation

1. In WordPress go to Plugins > Add New > Upload Plugin, choose the plugin ZIP file and click Install Now. You can also upload the wcp_stripe_gateway folder to /wp-content/plugins/ by FTP.

2. Click Activate.

3. Open the settings: WooCommerce > Settings > Payments > Stripe > Manage, or click Settings under the plugin name on the Plugins page.

4. Enter your VibeFox license key in the license block at the top of the page and click Activate.

5. Paste your Stripe secret keys, set up the webhook in the Stripe Dashboard and paste its signing secrets (see Configuration).

6. Turn on Enable/Disable. Test a payment in test mode with the card 4242 4242 4242 4242, then untick Test Mode.

Configuration

All settings are on one page: WooCommerce > Settings > Payments > Stripe. Above the fields the page warns you when the current mode has no secret key (the payment method is then hidden at checkout) or no webhook signing secret, and shows Test mode is on: no real payments are taken. while test mode is on. In the list of payment methods, Stripe is marked as needing setup until the current mode has a secret key.

General

Enable/Disable: Enable Stripe Gateway turns the payment method on or off. Default: off.

Title: the payment method name customers see at checkout. Default: Stripe.

Description: the text shown under the payment method at checkout. Default: Pay securely with your credit or debit card via Stripe.

API keys

Copy the secret keys from Stripe Dashboard > Developers > API keys. Test and live keys are separate. Test mode uses only the test keys, live mode only the live keys. When you save, the plugin warns you if a value does not start with the expected prefix, for example when a publishable key was pasted instead of a secret key.

Test Mode: Enable test mode uses the Stripe test keys. No real money is charged; pay with Stripe test cards such as 4242 4242 4242 4242. Default: on. Untick it to take real payments.

Test Secret Key: the secret key of the test mode. It starts with sk_test_ (or rk_test_ for a restricted key).

Test Webhook Secret: the signing secret (whsec_...) of the webhook endpoint created in test mode.

Live Secret Key: the secret key of the live mode. It starts with sk_live_ (or rk_live_ for a restricted key).

Live Webhook Secret: the signing secret (whsec_...) of the webhook endpoint created in live mode.

Webhook

The webhook tells your store that a payment has been made. In Stripe Dashboard > Developers > Webhooks add an endpoint in test mode and another one in live mode. Use the URL shown in this section of the settings. It looks like https://your-site/wc-api/strg_stripe_webhook/. If your site uses a language prefix in URLs, copy the URL exactly as the settings show it, because Stripe does not follow redirects.

Select these events for each endpoint:

checkout.session.completed: the customer finished the payment on the Stripe page.
checkout.session.async_payment_succeeded: a delayed payment was confirmed.
checkout.session.async_payment_failed: a delayed payment failed.
charge.refunded: a payment was refunded, for example in the Stripe Dashboard.

After creating each endpoint, copy its signing secret (whsec_...) from Stripe and paste it into Test Webhook Secret or Live Webhook Secret. Webhooks without a valid signature are rejected. Without the webhook, an order is confirmed only when the customer comes back to the store after paying.

Orders

Order Status After Payment: the order status set after a successful payment. The status is set at once, without a second status change.

Processing: the WooCommerce default (default). Orders with only virtual downloadable products become Completed.
Completed: every paid order becomes Completed.
On Hold: every paid order waits for your manual review.

Advanced

Logging: Enable logging writes Stripe requests and webhooks to WooCommerce > Status > Logs, source wcp_stripe_gateway. Keys and customer data are not logged. Default: off.

Delete Data on Uninstall: when on, deleting the plugin removes the gateway settings, the Stripe data stored on orders and the logs. Default: off.

Checkout

The customer chooses the payment method (by default Stripe) and places the order. The plugin creates a Stripe Checkout Session for the order total in the order currency and sends the customer to the Stripe payment page. There the customer pays by credit or debit card. The customer's billing e-mail is passed to Stripe, and the payment shows on the Stripe page as Order # and the order number.

After paying, the customer returns to the order received page of your store. The order is marked paid only after Stripe confirms it: by the signed webhook or by a server-side request to Stripe when the customer lands on that page. If the payment is not confirmed yet, the page shows Your payment is being confirmed by Stripe. You will receive an e-mail as soon as it is confirmed.

If the customer cancels on the Stripe page, the order is cancelled the standard WooCommerce way. A customer can pay an unpaid order again, for example from the Pay for order page. Each new attempt closes the previous Stripe session, so the order cannot be paid twice.

If Stripe cannot start the payment, the customer sees a short message, for example that the order total is below the minimum amount Stripe can charge in this currency, and can choose another payment method. The technical reason is added to the order notes and the log. Logged-in store managers also see it in the message.

The payment method works on the classic checkout, on the Checkout block and on the Pay for order page. It is compatible with WooCommerce High-Performance Order Storage (HPOS).

The plugin takes card payments only, captured immediately on the Stripe page. It has no saved cards, subscriptions or recurring payments, no on-site card form, no Apple Pay or Google Pay buttons on your site and no separate authorize and capture.

Orders and refunds

Order statuses

Pending payment: the customer was sent to Stripe and has not paid yet, or Stripe has not confirmed the payment yet.

Processing, Completed or On Hold: the payment was confirmed. The status follows Order Status After Payment. The order note shows the Stripe payment and how it was confirmed (webhook or return). The transaction ID is the Stripe payment ID (pi_...), and on the order screen it links to the payment in the Stripe Dashboard.

On hold after payment: Stripe reported a different amount or currency than the order total (for example, the order was edited after the payment started), or the payment arrived after the order had been cancelled. The order note explains it. Check the order and fulfil it or refund the payment.

Failed: a delayed payment failed.

Cancelled: the customer cancelled on the Stripe page, or the order was cancelled by you or by the WooCommerce stock hold timeout. The open Stripe session of the order is closed, so it can no longer be paid.

If a second payment arrives for an order that is already paid, the order is not changed again. A note asks you to check it and refund the duplicate in the Stripe Dashboard.

Refunds

Open the order, click Refund, enter the amount and click Refund via Stripe. Full and partial refunds are supported. The refund is sent in the mode the payment was made in (test or live), so that mode's secret key must be set. If Stripe does not accept the refund, WooCommerce shows the error and no refund is recorded. A successful refund is added to the order notes with the Stripe refund ID.

Refunds made in the Stripe Dashboard arrive by the charge.refunded webhook and are added to the order notes. They are not recorded as WooCommerce refunds automatically. If needed, create a manual refund in WooCommerce without Refund via Stripe.

License key

The plugin works with a VibeFox license key from vibefox.net. The license block is at the top of WooCommerce > Settings > Payments > Stripe. Paste the key into License key and click Activate. The block shows the status, for example the date the license is active until and your domain. Use Check now to check the status again, Change key to enter another key and Remove key to remove it from this site. The link Manage licenses and domains in your account opens your vibefox.net account.

One key works on one domain. Removing the key from a site does not free its domain slot. Free the slot in your vibefox.net account.

Without an active key, Stripe is not shown to customers at checkout. If a payment is started anyway, the customer sees This payment method is not available. Please choose another one. Logged-in store managers still see the payment method, marked (unlicensed — visible to admins only), so you can set up and test the plugin before you buy a key. A reminder appears on the Plugins page and on WooCommerce pages. Existing orders are not affected: payments already started are still confirmed, and refunds work.

When a license expires, the plugin keeps working, but updates and support need a renewal. The status is checked again automatically in the background.

Troubleshooting

Stripe does not appear at checkout: check that the license is active, Enable/Disable is on and the current mode has a secret key: Test Secret Key in test mode, Live Secret Key in live mode. The settings page shows a warning when the key is missing.

The payment went through, but the order stays Pending payment: the webhook is not working. In the Stripe Dashboard check that the endpoint exists in the mode you use (test or live), that its URL is exactly the one shown in the settings and that the four events are selected. Check that the signing secret of that endpoint is in the matching field (Test Webhook Secret or Live Webhook Secret). The Stripe Dashboard shows the answer of your store for each webhook. The order is also confirmed when the customer returns to the store after paying.

Webhook answers Webhook secret not configured: neither webhook secret is set. Paste the signing secret into the settings.

Webhook answers Invalid signature: the signing secret belongs to another endpoint or another mode, or the server clock is wrong. Stripe signatures are accepted within 5 minutes of the server time.

Webhook answers Busy, retry: the order was being confirmed by another request at the same moment. Stripe retries the webhook automatically.

The value does not look right warning on save: a key was pasted into the wrong field. Secret keys start with sk_test_ / rk_test_ or sk_live_ / rk_live_, webhook secrets with whsec_.

The customer sees an error when placing the order: open the order notes or turn on Logging and look at WooCommerce > Status > Logs, source wcp_stripe_gateway. A wrong or missing key gives the message that the payment method is not configured correctly. An order total below the Stripe minimum for the currency (for example 0.50 EUR) cannot be paid with Stripe.

Test payments do not confirm a live order: test and live payments are kept apart. A test payment never confirms a live order and the other way round. Switch Test Mode to the mode you want and use that mode's keys and webhook.

Order is On hold after payment: read the order note. The paid amount or currency differed from the order, or the payment came after the order was cancelled. Fulfil the order or refund the payment.

Refund fails with a message about the mode: the payment was made in test or live mode, and the secret key of that mode is not set. Enter it and try again.

The license block shows an error: follow the message in the block. For example, if the key is already used on another domain, free a slot in your vibefox.net account and click Check now. If the site address changed, click Check now to activate the key for the new domain. If the license server cannot be reached, the plugin keeps working on the last known status.

Uninstall

Deactivating the plugin keeps all data. To remove it, deactivate and delete it on the Plugins page. The license key and license status of this plugin are always removed. The gateway settings, the Stripe data stored on orders and the logs are removed only if Delete Data on Uninstall was on. Otherwise they stay for a later re-install. Existing orders keep their payment notes and transaction IDs.

Stripe is a trademark of its respective owner. This plugin is not affiliated with or endorsed by Stripe.