WooCommerce
A "Pay with crypto" method for your store, classic or block checkout, with no code.
Customers pay on QBitFlow's payment page; the funds go straight to your wallet, and the order updates itself. WooCommerce tells what it offers your store.
- Version
- 2.0.0
- WordPress
- 6.4 or later
- WooCommerce
- 8.0 or later
- PHP
- 8.2 or later
- Tested up to
- WordPress 7.1, WooCommerce 11.2
On WordPress.org (opens in a new tab)The plugin's ZIP (releases) (opens in a new tab)
- Your store → QBitFlow API: Pay with crypto: a payment page
- QBitFlow API → Customer wallet: The customer picks a coin
- Customer wallet → Payment contract, on-chain: Pays, signed once
- Payment contract → Your wallet, on-chain: Your share, QBitFlow's fee split off
- QBitFlow API → Payment contract: Follows it to confirmation
- QBitFlow API → Your store: Webhook: the order is paid
Install it
- In your WordPress admin, open Plugins › Add New and search for QBitFlow.
- Click Install Now, then Activate.
No access to the directory? Download the plugin's ZIP from its releases (link above) and upload it in Plugins › Add New › Upload Plugin.
Set it up in test mode first
- In QBitFlow's dashboard, switch to Test, add a wallet in Settings › Wallets and create an API key in Settings › API keys.
- In WordPress, open WooCommerce › Settings › Payments › QBitFlow: tick Enable, paste the key in API Key, save. The screen shows Test or Live from the key itself.
- Click Connect webhook. The plugin registers your store's endpoint for the key's mode and keeps its signing secret, so payments and refunds reach your orders.
- Place an order of $5 or less and pay it with faucet tokens.
An order settles even if a webhook is missed: the return page and a check every 15 minutes read its checkout. The settings show your account, the mode, the coins your wallets accept and the webhook's health.
The settings
- Itemized checkout (on by default): taxes, shipping and fees as their own lines on the payment page, adding up to the order total.
- Processing fee: Use my QBitFlow setting (your
checkout.customerPaysProcessingFee, the default), Customer pays (QBitFlow's fee as a last line, so you receive the full order total) or Store pays. - Accepted coins: shown under the payment method at checkout.
- Description (the line under the payment method) and Debug Log (entries under
WooCommerce › Status › Logs, in
qbitflow).
Refund rules, receipt emails and branding are your QBitFlow account's, shared by every store and integration: change them in the dashboard.
QBitFlow prices in US dollars. A store in another currency keeps QBitFlow hidden at checkout until
the qbitflow_wc_usd_rate filter gives it a rate (from a multi-currency plugin or your own code):
PHP
add_filter( 'qbitflow_wc_usd_rate', function ($rate, string $currency) { return $currency === 'EUR' ? 1.08 : $rate; // USD per unit of $currency}, 10, 2);Refunds
Your customer asks from their QBitFlow invoice page; you approve or refuse in the dashboard, and your wallet signs the transfer. The plugin records each refund on the order once it's sent (a partial one for its share), notes requests and refusals, and shows how many requests wait for you.
Accounting and WP-CLI
Accounting export, in the settings, downloads every payment, refund and fee of your QBitFlow account as CSV or JSON, for any range of days in UTC: the whole account, not only this store's orders (the export). The same from WP-CLI:
Shell
wp qbitflow statuswp qbitflow connect-webhookwp qbitflow reconcile <order-id> # or --allwp qbitflow export --from=2026-01-01 --to=2026-01-31 --output=jan.csvA seller's key
A marketplace seller's own key works too, within their organization's policies. The
organization's processing fee applies (shown read-only). With members.checkoutRedirects off, the
plugin opens the checkout without return addresses: the order still settles, but the customer
isn't sent back to the store. With members.products off, QBitFlow stays hidden at checkout, with
a notice in the settings.
Upgrading from 1.x
- Create a new API key (
sk_live_…orsk_test_…: the old format is refused) and paste it. - Click Connect webhook. 2.0 verifies webhooks with their signing secret, so the endpoint you added by hand for 1.x no longer applies: delete it in the dashboard.
Your settings and order history stay. 2.0 needs PHP 8.2 or later.
Go live
Nothing carries over from test. With the dashboard on Live, add your mainnet wallets and create a live API key, paste it in the plugin's settings, then click Connect webhook again: test and live each have their own. The go-live checklist lists the rest.
Note
At checkout the plugin sends QBitFlow the buyer's email, name, phone and billing address with the order's details, so the payment page doesn't ask again. Its README lists every call it makes.