Skip to content

Cryptonly - Crypto Payment Gateway for WooCommerce lets your store accept cryptocurrency payments through Cryptonly’s secure hosted checkout.

Customers select Cryptonly at checkout, pay on the Cryptonly payment page, and return to your store. WooCommerce order statuses are updated automatically when Cryptonly sends signed invoice.statusChanged webhooks.

The plugin supports both classic WooCommerce checkout and WooCommerce Blocks.


At a high level:

  1. The customer places a WooCommerce order and chooses Cryptonly as the payment method.
  2. The plugin creates a Cryptonly invoice server-side (your API key never reaches the browser).
  3. The customer is redirected to the Cryptonly hosted payment page.
  4. After payment, Cryptonly sends webhooks to your store.
  5. The plugin verifies each webhook and updates the WooCommerce order status.

For more detail on invoices and statuses, see Invoices.


Before installing the plugin, make sure you have:

RequirementDetails
WordPress6.0 or higher
WooCommerce7.1 or higher
PHP7.4 or higher
Cryptonly accountCryptonly merchant account
Supported store currencyYour WooCommerce store currency must be supported by Cryptonly

The plugin is available in the official WordPress plugin directory:

  1. In WordPress, go to Plugins → Add New.
  2. Search for Cryptonly.
  3. Click Install Now, then Activate.

After activation, go to WooCommerce → Settings → Payments → Cryptonly and enable the payment method.


Open WooCommerce → Settings → Payments → Cryptonly and review each setting.

First enable the payment method, then complete the Connection settings, customize customer-facing text, and adjust Advanced options only if needed.

SettingPurpose
Enable Cryptonly paymentsTurn the payment method on or off

Connection

SettingPurpose
API KeyCryptonly API key. The key selects the account. See required scopes
Webhook Signing KeySigning key from that account’s Security settings. Used to verify incoming Cryptonly webhooks
Public site URLOptional public HTTPS base URL for generated webhook and merchant return links (return / success / failed CTAs). Leave empty on public HTTPS stores; set it when the WordPress site URL is local or private
Webhook URLRead-only preview of the webhook endpoint sent with each invoice
Sandbox ModeUse the Cryptonly sandbox API for test payments

Create the key on the account’s Security settings and enable only these scopes:

ScopeUsed for
invoices.createCreate the invoice at checkout (POST /invoice)
invoices.listLoad an existing invoice when create returns a duplicate orderId (GET /invoice)
invoices.cancelCancel the invoice when the WooCommerce order is cancelled (POST /invoice/cancel)
currencies.listCheck that the store currency is supported (GET /currencies/fiat)

Customization

SettingPurpose
TitlePayment method name shown at checkout (default: Pay with Crypto)
DescriptionShort text shown under the payment method at checkout
InstructionsOptional text on the thank-you page and in customer emails for pending or on-hold orders
Resume payment buttonButton label that returns customers to the Cryptonly payment page

Advanced

SettingPurpose
Order ID PrefixPrefix for Cryptonly orderId values (default: WC-). Must not end with a digit. Use a unique prefix per store
Compatibility ModeSend only the final order total when line-item totals do not match because of checkout or pricing plugins
Debug LogWrite Cryptonly events to WooCommerce → Status → Logs (source: cryptonly)

Webhook URL behavior

The plugin sends a webhookUrl automatically on every invoice it creates. You do not need to configure a default invoice webhook in the Cryptonly dashboard for the standard WooCommerce flow.

The Webhook URL field in plugin settings is a preview for troubleshooting only. In production it must be a public HTTPS address, for example:

https://your-store.com/?wc-api=WC_Gateway_Cryptonly

On each invoice the plugin sends browser “Return to merchant” CTAs (not webhooks / not auto-redirects). Order status still updates via the HTTPS webhookUrl.

FieldWooCommerce URLShown when Cryptonly invoice is
returnUrlThank-you / order-receivedcancelled, expired
successUrlThank-you / order-receivedpaid, overpaid
failedUrlOrder-pay (retry payment)failed, suspended, partially_paid

Cryptonly accepts any http/https URL for these fields (including http://localhost:… for local testing). See Invoice statuses for the full status → URL map.

If your WordPress site URL is local or private (for example during staging), set Public site URL to your public HTTPS domain so Cryptonly can reach the webhook endpoint and rewrite merchant return URLs onto the correct store host.

For webhook signing details, see Webhooks.


  1. Register at the sandbox merchant panel.
  2. Copy your sandbox API Key and Webhook Signing Key from the account Security settings.
  3. In the plugin settings, enable Sandbox Mode.
  4. Enter your sandbox credentials and save.
  5. Place a test order and complete payment on the Cryptonly sandbox payment page using testnet assets only, or use Simulate payment on the invoice in Cryptonly Accounts → History to settle it without sending testnet funds.
  6. Confirm the WooCommerce order updates to Completed.

See the Sandbox environment guide for supported test networks and safety notes, and Testing your integration for more on the History and simulator tools.


  1. The customer adds products to the cart and goes to checkout.
  2. They select the Cryptonly payment method and place the order.
  3. WooCommerce creates the order and the plugin creates a Cryptonly invoice.
  4. The customer is redirected to the Cryptonly hosted payment page.
  5. After payment, the customer returns to your store thank-you page.

If the customer abandons payment

The WooCommerce order stays open while the Cryptonly invoice is still payable. The customer can return to the payment page from:

  • the thank-you page
  • order details
  • customer emails
  • customer orders list

The plugin listens for invoice.statusChanged webhooks and maps Cryptonly invoice statuses to WooCommerce order statuses:

Cryptonly invoice statusWooCommerce order status
createdpending
processing, suspendedon-hold
paid, overpaidcompleted
partially_paidon-hold
expired, failedfailed
cancelledcancelled

Key behavior:

  • Webhooks are the source of truth for payment status updates.
  • The plugin verifies the x-webhook-signature header using your Webhook Signing Key.
  • Once an order is paid or completed, later out-of-order webhooks will not downgrade it.
  • The invoice (and its WooCommerce order) stays pending from checkout until an on-chain transaction is detected, then moves to on-hold; there is no separate “deposit address generated” webhook.

For the full invoice lifecycle, see Invoice statuses.


Before accepting real payments:

  • Disable Sandbox Mode
  • Enter production API Key and Webhook Signing Key
  • Confirm your store uses a public HTTPS URL
  • Confirm the webhook preview in plugin settings shows https://…
  • Confirm the Webhook Signing Key in the plugin matches the account Security settings in Cryptonly
  • Place a small real test order
  • Verify the order moves from pending/on-hold to completed after payment

Cryptonly is not shown at checkout

  • Go to WooCommerce → Settings → Payments and make sure Cryptonly is enabled.
  • Confirm API Key and Webhook Signing Key are filled in.
  • For block checkout, hard-refresh the page after saving settings.

“Unable to start Cryptonly payment”

Common causes:

  • Missing or invalid Cryptonly credentials
  • Store currency is not supported by Cryptonly
  • webhookUrl is not a valid public HTTPS URL (Cryptonly must reach it)
  • returnUrl / successUrl / failedUrl are not valid http/https URLs (localhost is allowed for local testing)

If your WordPress site URL is local or private, set Public site URL to your public HTTPS domain for webhooks (or use a tunnel such as ngrok), and try again.

Webhooks are not arriving

  • Confirm the webhook preview in plugin settings uses https://…, not http://localhost
  • Confirm your store is reachable from the public internet
  • Confirm the Webhook Signing Key in the plugin matches the account’s Accounts → Settings → Security page
  • Enable Debug Log and check WooCommerce → Status → Logs (source: cryptonly)

Order stays pending after payment

  • Check whether Cryptonly shows the webhook as delivered
  • Verify the webhook signing key is correct (invalid signatures are rejected)
  • Enable Debug Log and look for Webhook received for event invoice.statusChanged
  • Confirm the WooCommerce order exists and matches the Cryptonly invoice

Customer cannot resume payment

  • The Cryptonly invoice may have expired or been cancelled
  • Ask the customer to place a new order if the invoice is no longer payable
  • Customize the resume button label under Resume payment button if needed

WooCommerce cancelled the order while payment was in progress

Crypto payments can take time to confirm on-chain. If orders are cancelled too early:

  • Increase WooCommerce → Settings → Products → Inventory → Hold stock (minutes), or disable it
  • The order stays pending until an on-chain transaction is detected (invoice moves to processing, mapped to on-hold)

Which cryptocurrencies are supported?

Cryptonly supports Bitcoin, Ethereum, USDT, USDC, and many other cryptocurrencies. Available assets depend on your Cryptonly account and enabled networks.

Does it work with WooCommerce Blocks checkout?

Yes. The plugin supports both classic WooCommerce checkout and WooCommerce Blocks.

Can I customize checkout text?

Yes. In plugin settings you can change Title, Description, Instructions, and Resume payment button.

Do I need to configure webhooks in the Cryptonly dashboard?

No. The WooCommerce plugin sends the webhook URL automatically with each invoice. You only need to enter the Webhook Signing Key in the plugin so incoming webhooks can be verified.

Can I run the store in another language?

Yes. The plugin includes bundled translations for Spanish, German, and Russian. Set your site language in Settings → General → Site Language.



For help with your Cryptonly merchant account, supported assets, credentials, or payment questions, contact us via email [email protected].