You can add crypto checkout to WooCommerce today with no plugin required: connect your wallet's xPub to a non-custodial gateway, then add a hosted "Pay with crypto" option or wire the API and webhooks into checkout. Payments settle final and go straight to a wallet you control - no KYC, no chargebacks, 0% transaction fees. Here is the full setup.
Why WooCommerce stores add crypto
WooCommerce gives you control over your store - but your payment gateway can still freeze your payouts or hand a customer a chargeback weeks after you have shipped. Adding crypto fixes both: payments settle final, and they go straight to a wallet you control. No holds, no reversals, no "high-risk" bans. This guide shows you how to set it up.
What you will need
- A WooCommerce store (any host).
- A wallet that gives you an extended public key (xPub) - most modern Bitcoin wallets do. If you have never worked with one, read what an xPub key is and how one key generates unlimited addresses.
- A free GriffNode account (email + password - no KYC).
How it works under the hood
GriffNode is non-custodial. You paste in your xPub once; for every order, we derive a fresh receiving address from it so the customer pays directly into your wallet. We never hold or touch the funds - we cannot spend them and we cannot freeze them. The store gets real-time confirmation tracking (from 0/3 to 3/3 confirmations) and a webhook when payment is complete. Because a new address is generated per order, payments are easy to reconcile and your customers never share an address.
Two ways to add crypto to WooCommerce
There is no official WooCommerce plugin to install - and you do not need one. Pick the path that matches your store and your comfort with code. The WooCommerce integration page summarises all of them.
Path 1: Hosted checkout / payment links (no code)
This is the fastest way to go live, and it works on any WooCommerce host without touching a single line of PHP.
- In your GriffNode dashboard, create a hosted checkout page or a payment link for the amount you want to collect.
- Add it to your store as a "Pay with crypto" option - a button on the cart or thank-you page, a link in your order-confirmation email, or a manual invoice you send after checkout.
- The customer lands on a GriffNode-hosted page that shows the exact crypto amount, a BIP-21 QR code for one-tap payment from any wallet app, and a live confirmation status.
- You watch the payment confirm in your dashboard and fulfill the order.
This path is ideal for smaller stores, service businesses, digital downloads, and anyone who wants crypto live this afternoon rather than after a sprint. It is the same approach we describe for accepting crypto on WordPress generally, and it maps cleanly onto WooCommerce.
Path 2: REST API + webhooks (fully automated)
If you want crypto to behave like a native WooCommerce gateway - order created at checkout, marked complete automatically the moment it confirms - use the REST API and webhooks. GriffNode ships SDKs for JavaScript, Python, and PHP, and since WooCommerce is PHP, you can wire this directly into your theme or a small custom plugin of your own.
The flow is: your store calls the API to create a payment when the customer checks out, redirects them to the returned checkout URL, and then listens for the payment.confirmed webhook to complete the WooCommerce order. There are three webhook events - payment.created, payment.confirmed, and payment.expired - covering the full lifecycle. For the full webhook model, see the crypto payment webhooks guide.
Step-by-step WooCommerce setup
- Create your GriffNode account and connect your wallet's xPub under Wallets.
- Generate an API key in your dashboard.
- Add crypto checkout to WooCommerce using Path 1 (hosted checkout / payment link) or Path 2 (REST API + webhooks) from above.
- Test a small live order end to end - scan the BIP-21 QR, pay, and watch it confirm in the dashboard.
- Go live. Customers can now pay in BTC, ETH, LTC, DOGE, DASH, plus the USDT, USDC, and DAI stablecoins.
A concrete API example
Here is the developer path end to end. First, create a payment when the customer places the order. Endpoint paths below are illustrative - check the current shapes in the API docs at docs.griffnode.com.
// Create a crypto payment for a WooCommerce order
$response = wp_remote_post( 'https://api.griffnode.com/v1/payments', array(
'headers' => array(
'Authorization' => 'Bearer ' . GRIFFNODE_API_KEY,
'Content-Type' => 'application/json',
),
'body' => wp_json_encode( array(
'amount' => $order->get_total(), // e.g. 49.00
'currency' => 'USD', // priced in USD, paid in crypto
'coin' => 'USDT', // let the customer pick, or default
'order_id' => $order->get_id(),
'webhook_url' => 'https://yourstore.com/?wc-api=griffnode',
) ),
) );
$payment = json_decode( wp_remote_retrieve_body( $response ), true );
// Redirect the customer to the hosted checkout for this payment
wp_redirect( $payment['checkout_url'] );
exit;
Then handle the payment.confirmed webhook to complete the order automatically. Always verify the webhook signature before trusting the payload.
// WooCommerce webhook endpoint: ?wc-api=griffnode
add_action( 'woocommerce_api_griffnode', function () {
$payload = file_get_contents( 'php://input' );
$event = json_decode( $payload, true );
// Verify the signature header against your webhook secret first.
// (see docs.griffnode.com for the exact scheme)
if ( $event['type'] === 'payment.confirmed' ) {
$order = wc_get_order( $event['data']['order_id'] );
if ( $order ) {
$order->payment_complete( $event['data']['payment_id'] );
$order->add_order_note( 'Crypto payment confirmed on-chain.' );
}
}
status_header( 200 );
exit;
} );
That is the whole loop: create a payment, send the customer to the hosted checkout, and let the confirmed webhook flip the WooCommerce order to complete. Nothing custodial sits in the middle - the funds moved straight into your wallet.
Which coins and stablecoins to enable
GriffNode supports Bitcoin, Ethereum, Litecoin, Dogecoin, and Dash, plus the ERC-20 stablecoins USDT, USDC, and DAI. Which you enable depends on how much price movement you want to carry.
- Stablecoins (USDT, USDC, DAI) track the US dollar, so a $49 order stays worth about $49 from checkout to settlement. If you would rather not think about volatility, lead with stablecoins - see how to accept stablecoin payments. Note that forwarding a token payment carries a small $1 native-coin network fee, since ERC-20 transfers need ETH for gas.
- Bitcoin and the other native coins are what many crypto-native customers actually hold and prefer to spend. Enabling them widens your reachable audience; you just accept that the fiat value can drift between quote and confirmation.
A common setup is stablecoins for price-sensitive invoices and BTC/LTC/DOGE for consumer checkout, but you can enable whatever fits your catalog.
Handling orders and fulfillment
- Each payment has a short 15-minute expiry window, so the crypto amount stays accurate to the rate quoted. If it lapses, you get a
payment.expiredevent and the customer simply starts a new one. - Use the webhook to trigger fulfillment automatically on confirmation - no manual checking.
- Selling digital goods? On-chain finality means zero chargebacks - see crypto for digital products.
Refunds on a no-chargeback rail
Because crypto payments are final and there is no card network sitting in the middle, refunds are not automatic reversals - they are a new payment you send back. That is a feature, not a gap: no one can quietly claw funds out of your wallet weeks later, and no processor can freeze a payout because a category looks "high-risk." When you do need to refund a customer, you send crypto back to an address they provide, on your terms and your timing. For the bigger picture on why this removes a whole class of fraud loss, read how crypto payments eliminate chargebacks.
What does it cost?
GriffNode is flat monthly pricing with no percentage per transaction. The Starter tier is free (30 transactions per month), Business is $49/month (300 transactions), and Professional is $129/month (1,000 transactions), with a small per-transaction overage in cents above your plan. That matters at scale: a 2.9% card fee on a $200 order is $5.80 every time, while a flat plan does not grow with your ticket size. Here is how the common WooCommerce payment options compare - and there is a fuller breakdown in crypto payment gateway fees explained.
| Method | Per-transaction fee | Custody | Chargebacks |
|---|---|---|---|
| Card / PayPal | 2.4-2.9% + $0.30 | Held / payout delay | Yes |
| BitPay / Coinbase Commerce | ~1% | Custodial | No |
| NOWPayments | 0.5-1% | Routed | No |
| GriffNode | 0% (flat monthly) | Your own wallet | No |
What a crypto payment actually costs on the network
Your gateway fee is one number. The network fee your customer pays to move the coins is the other, and almost every guide on this topic still quotes figures from the last congestion peak. We run our own full Bitcoin and Ethereum nodes, so rather than estimate we measured every Bitcoin block since 2009 and every Ethereum block since the London fork.
| Year | Median Bitcoin fee | Fee rate | Median Ethereum base fee |
|---|---|---|---|
| 2017 (costliest year for block space) | 41,174 sat | 134 sat/vB | before EIP-1559 |
| 2021 | 2,712 sat | 10 sat/vB | 81.04 gwei |
| 2024 | 1,733 sat | 10 sat/vB | 10.30 gwei |
| 2025 | 356 sat | 2 sat/vB | 0.55 gwei |
| 2026 | 163 sat | 1 sat/vB | 0.114 gwei |
163 satoshis is 0.00000163 BTC. At a Bitcoin price of 100,000 dollars that is roughly 16 cents, and the Ethereum base fee puts the floor for a plain transfer at 0.00000239 ETH. Set that against 2.9 percent plus 30 cents, which on a 100 dollar order is 3.20 dollars taken out of every single sale, before you count the chargeback risk.
Speed is the other number merchants ask about, and the rules of thumb are wrong in both directions. Measuring 30 days of blocks, Bitcoin's median time to one confirmation was 427 seconds, so about 7 minutes rather than the usual 10. But the 90th percentile was 1,370 seconds, nearly 23 minutes in the slow tail, which is the number that actually matters at a checkout.
Both datasets are published in full, with the methodology and the raw CSV, under CC BY 4.0: measured transaction fees by year and measured confirmation times.
Frequently asked questions
Do I need a WooCommerce plugin?
No. There is no official plugin to install, and you do not need one. Go live today with a no-code hosted checkout or payment link, or wire the REST API and webhooks into your store for a fully native, automated flow.
How fast do payments confirm?
You get real-time status from the first sighting (0/3) through full confirmation (3/3), with a webhook fired the moment it is confirmed. Speed depends on the coin and network conditions; stablecoins and faster chains typically confirm in minutes.
What fees does GriffNode charge?
A flat monthly fee and 0% per transaction. Starter is free (30 tx/mo), Business is $49/mo (300 tx/mo), and Professional is $129/mo (1,000 tx/mo), with cents-level overage above your plan. Token forwarding carries a small $1 native network fee for gas. Full detail is on the pricing page.
Is it really no-KYC?
Yes. Because funds never touch us, there is no custodial obligation to verify identity. You start with just an email and password.
What happens if the price moves during checkout?
Each payment locks a crypto amount for a 15-minute window, so a customer who pays inside that window pays what was quoted. If the window lapses, the payment expires and they simply start a fresh one at the current rate. Pricing orders in a stablecoin removes the volatility question entirely.
Where does the money go?
Directly to your own wallet, every time. GriffNode never custodies it and cannot freeze or spend it.
Which coins can WooCommerce customers pay with?
Bitcoin, Ethereum, Litecoin, Dogecoin, and Dash, plus the USDT, USDC, and DAI stablecoins for price-stable payments.
Are crypto payments on WooCommerce reversible?
No. On-chain settlement is final, so there are no chargebacks - a major advantage for digital goods and high-risk categories.
Bottom line
Crypto checkout on WooCommerce takes minutes and gives you payments that cannot be frozen or reversed. Create your free account and add a freeze-proof payment rail to your store. Running a second storefront? The same approach works for accepting crypto on Shopify, and you can go deeper on how crypto payments eliminate chargebacks before you flip it on.