Skip to main content
The Crypto Checkout WooCommerce plugin adds a native payment gateway to your WordPress store. Customers select “Pay with crypto (ETH)” at checkout, are redirected to your hosted checkout page to complete their payment, and their order is marked complete automatically the moment the blockchain payment is confirmed — no manual intervention required.

Requirements

WordPress 6.0+

The plugin is tested up to WordPress 6.6.

WooCommerce

Any recent WooCommerce version with standard payment gateway support.

PHP 7.4+

Minimum PHP version required by the plugin.

Crypto Checkout instance

A running self-hosted Crypto Checkout server with API access and a valid API key.

Installation

1

Download the plugin

Obtain the plugin ZIP from your Crypto Checkout instance or directly from the repository under integrations/wordpress/. Do not extract the ZIP — WordPress accepts it as-is.
2

Upload to WordPress

In your WordPress admin panel, go to Plugins → Add New Plugin → Upload Plugin. Choose the ZIP file, click Install Now, then Activate.
3

Configure the gateway

Navigate to WooCommerce → Settings → Payments → Crypto Checkout → Manage (or Settings). Fill in the following fields:
FieldValue
API Base URLYour Crypto Checkout instance URL, e.g. https://checkout.example.com
API KeyA key with sessions:write scope — ck_live_… for production, ck_test_… for test mode
Webhook Signing SecretThe whsec_… value from your webhook endpoint (see next step)
Webhook Endpoint IDThe UUID of your endpoint — enables Test send from the order admin screen
Store the API key and webhook secret in the plugin settings fields marked as password inputs. They are never displayed in plaintext after saving.
4

Create a webhook endpoint

In your Crypto Checkout dashboard, go to Webhooks and create a new endpoint with the following values:
  • URL: https://your-store.com/wp-json/crypto-checkout/v1/webhook
  • Events: subscribe to all session.* events (session.paid, session.expired, session.underpaid, etc.)
Copy the whsec_… secret immediately and paste it into the Webhook Signing Secret field in the WooCommerce settings. The secret is shown only once.
5

Enable the gateway

Back in WooCommerce → Settings → Payments, toggle Crypto Checkout to Enabled and save.
6

Test a purchase

Place a test order on your store and select Pay with crypto (ETH). You will be redirected to the hosted checkout page. Complete the payment using a test wallet and verify that the WooCommerce order transitions to Processing or Completed.
Use a ck_test_… API key during testing. Test-mode sessions don’t require real funds and won’t affect live order totals.

How It Works

When a customer selects Crypto Checkout at checkout and clicks Place Order, the plugin calls your Crypto Checkout instance’s API to create a new checkout session for the exact WooCommerce order total. The customer is then redirected to the hosted checkout page, where a deposit address and ETH amount are displayed. Once payment is detected on-chain, your Crypto Checkout instance fires a session.paid webhook to the endpoint you configured. The plugin verifies the HMAC signature, looks up the matching WooCommerce order via the wc_order_id stored in session metadata, and automatically updates the order status.

Webhook Handling

The plugin registers a REST API route at:
POST /wp-json/crypto-checkout/v1/webhook
Every incoming request is verified using the HMAC-SHA256 signature in the X-Webhook-Signature header before any order data is modified. Requests with an invalid or missing signature are rejected with a 401 response.

Order Status Mapping

Crypto Checkout session statusWooCommerce order status
pendingon-hold (set at session creation)
paidprocessing
overpaidprocessing
underpaidon-hold (pending review)
expiredcancelled
failedfailed
The WooCommerce order is set to on-hold immediately when the customer is redirected to checkout, before any blockchain activity occurs. This reserves stock while the payment is in flight.

Troubleshooting

If orders are not completing after payment, the most common causes are a mismatched webhook secret, an unreachable webhook URL, or a session.* event that was not subscribed to. Check the WordPress error log (wp-content/debug.log) and the delivery log in your Crypto Checkout dashboard.
SymptomLikely causeFix
Orders stuck on on-holdWebhook not reaching WordPressConfirm the /wp-json/crypto-checkout/v1/webhook URL is publicly reachable and not blocked by a firewall or Cloudflare rule
401 Unauthorized in delivery logsWrong webhook secretRe-copy the whsec_… value from the Crypto Checkout dashboard and paste it into the plugin settings
Duplicate ordersMissing idempotency keyThe plugin uses wc_order_<id>_v1 as the key — ensure you haven’t modified the PHP source
API call fails at checkoutWrong API Base URL or keyDouble-check the URL has no trailing slash and the key has sessions:write scope
For more on webhook delivery and retries, see Webhooks Overview. For API key scopes, see Authentication.