{"id":311786,"date":"2026-07-30T17:56:48","date_gmt":"2026-07-30T17:56:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/qbitflow-for-woocommerce\/"},"modified":"2026-07-30T23:08:55","modified_gmt":"2026-07-30T23:08:55","slug":"qbitflow-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/qbitflow-for-woocommerce\/","author":23497895,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.5","stable_tag":"1.1.5","tested":"7.0.2","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"QBitFlow for WooCommerce","header_author":"QBitFlow","header_description":"Accept cryptocurrency payments in WooCommerce via QBitFlow. Non-custodial \u2014 funds go directly to your wallet.","assets_banners_color":"162f59","last_updated":"2026-07-30 23:08:55","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/qbitflow.app","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":26,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.5":{"tag":"1.1.5","author":"qbitflow","date":"2026-07-30 23:08:55"}},"upgrade_notice":{"1.1.2":"<p>Documents the QBitFlow external service (with Terms &amp; Privacy links) and hardens refund syncing so no order changes happen on page load \u2014 refunds are now applied via an explicit, nonce-protected admin action. Recommended for all users.<\/p>","1.1.1":"<p>Adds the WooCommerce dependency header, makes the checkout description editable, and ships a cleaner plugin package. Recommended for all users.<\/p>","1.1.0":"<p>API compatibility updates, automatic refund completion in WooCommerce, and a per-email customer model so two orders with two different emails resolve to distinct QBitFlow customers. Recommended for all users.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3628993,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3628993,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3628993,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3628993,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.5"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3628993,"resolution":"1","location":"assets","locale":"","width":1394,"height":841},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3628993,"resolution":"2","location":"assets","locale":"","width":1064,"height":893},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3628993,"resolution":"3","location":"assets","locale":"","width":1755,"height":935},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3628993,"resolution":"4","location":"assets","locale":"","width":1751,"height":833},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3628993,"resolution":"5","location":"assets","locale":"","width":1747,"height":924},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3628993,"resolution":"6","location":"assets","locale":"","width":1751,"height":630}},"screenshots":{"1":"Customers select QBitFlow as the payment method at checkout","2":"Order received page after a successful crypto payment","3":"Admin order view with the QBitFlow payment block (status, tx hash, customer, invoice link)","4":"Pending refund request shown directly in the order meta box","5":"Once the refund is approved and settled on-chain, one click syncs the order to Refunded","6":"Plugin settings (API key, debug logging) under WooCommerce \u2192 Settings \u2192 Payments"}},"plugin_section":[],"plugin_tags":[12611,18737,1887,209256,156271],"plugin_category":[45],"plugin_contributors":[273892],"plugin_business_model":[],"class_list":["post-311786","plugin","type-plugin","status-publish","hentry","plugin_tags-cryptocurrency","plugin_tags-ethereum","plugin_tags-payments","plugin_tags-solana","plugin_tags-web3","plugin_category-ecommerce","plugin_contributors-qbitflow","plugin_committers-qbitflow"],"banners":{"banner":"https:\/\/ps.w.org\/qbitflow-for-woocommerce\/assets\/banner-772x250.png?rev=3628993","banner_2x":"https:\/\/ps.w.org\/qbitflow-for-woocommerce\/assets\/banner-1544x500.png?rev=3628993","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/qbitflow-for-woocommerce\/assets\/icon-128x128.png?rev=3628993","icon_2x":"https:\/\/ps.w.org\/qbitflow-for-woocommerce\/assets\/icon-256x256.png?rev=3628993","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/qbitflow-for-woocommerce\/assets\/screenshot-1.png?rev=3628993","caption":"Customers select QBitFlow as the payment method at checkout"},{"src":"https:\/\/ps.w.org\/qbitflow-for-woocommerce\/assets\/screenshot-2.png?rev=3628993","caption":"Order received page after a successful crypto payment"},{"src":"https:\/\/ps.w.org\/qbitflow-for-woocommerce\/assets\/screenshot-3.png?rev=3628993","caption":"Admin order view with the QBitFlow payment block (status, tx hash, customer, invoice link)"},{"src":"https:\/\/ps.w.org\/qbitflow-for-woocommerce\/assets\/screenshot-4.png?rev=3628993","caption":"Pending refund request shown directly in the order meta box"},{"src":"https:\/\/ps.w.org\/qbitflow-for-woocommerce\/assets\/screenshot-5.png?rev=3628993","caption":"Once the refund is approved and settled on-chain, one click syncs the order to Refunded"},{"src":"https:\/\/ps.w.org\/qbitflow-for-woocommerce\/assets\/screenshot-6.png?rev=3628993","caption":"Plugin settings (API key, debug logging) under WooCommerce \u2192 Settings \u2192 Payments"}],"raw_content":"<!--section=description-->\n<p><strong>QBitFlow for WooCommerce<\/strong> lets you accept cryptocurrency payments directly in your WooCommerce store. Powered by smart contracts, payments go straight to your wallet \u2014 no middleman, no custody risk.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>Non-Custodial<\/strong> \u2014 Funds go directly to your wallet via smart contracts<\/li>\n<li><strong>Multiple Cryptocurrencies<\/strong> \u2014 ETH, SOL, USDC, USDT, and more<\/li>\n<li><strong>Block Checkout Support<\/strong> \u2014 Works with both classic and block-based checkout<\/li>\n<li><strong>Automatic Customer Sync<\/strong> \u2014 Buyer details (email, name, phone, billing address) sync to QBitFlow at checkout, so the QBitFlow page never re-prompts for what WooCommerce already has<\/li>\n<li><strong>Invoice &amp; Management Pages<\/strong> \u2014 Hosted payment details pages for customers<\/li>\n<li><strong>Webhook Verified<\/strong> \u2014 Server-to-server payment confirmation with HMAC signature verification<\/li>\n<li><strong>Real-time Order Updates<\/strong> \u2014 Order status updates automatically on payment<\/li>\n<li><strong>Refunds, end-to-end<\/strong> \u2014 Pending refund requests surface as an admin notice; once you approve a refund on the QBitFlow dashboard and the on-chain refund settles, a notice at the top of the order screen offers a one-click <strong>Sync refund to WooCommerce<\/strong> button that marks the order <strong>Refunded<\/strong> and records the refund tx hash<\/li>\n<li><strong>Test Mode<\/strong> \u2014 Try the full payment flow without spending any real cryptocurrency<\/li>\n<li><strong>Debug Logging<\/strong> \u2014 Built-in logging for troubleshooting<\/li>\n<\/ul>\n\n<h4>How It Works<\/h4>\n\n<ol>\n<li>Customer selects \"Pay with Crypto\" at checkout<\/li>\n<li>Customer is redirected to QBitFlow's secure payment page<\/li>\n<li>Customer pays with their preferred cryptocurrency<\/li>\n<li>Payment is confirmed on-chain and order is updated automatically<\/li>\n<li>Customer receives invoice with transaction details<\/li>\n<\/ol>\n\n<h4>Test Mode \u2014 Try Before Going Live<\/h4>\n\n<p>QBitFlow provides a test mode that lets you simulate the entire payment flow \u2014 checkout, on-chain confirmation, webhooks, order updates \u2014 without spending any real cryptocurrency.<\/p>\n\n<ol>\n<li>Create a <strong>Test API Key<\/strong> from your <a href=\"https:\/\/qbitflow.app\">QBitFlow dashboard<\/a><\/li>\n<li>Paste it into the plugin settings at WooCommerce \u2192 Settings \u2192 Payments \u2192 QBitFlow<\/li>\n<li>Place a test order \u2014 everything works exactly like production, but no real funds are moved<\/li>\n<\/ol>\n\n<p>When you're ready to accept real payments, simply replace the test key with a <strong>Live API Key<\/strong> and save.<\/p>\n\n<p>For more details, see the <a href=\"https:\/\/qbitflow.app\/docs?section=test-mode\">QBitFlow Test Mode Documentation<\/a>.<\/p>\n\n<h4>Learn more<\/h4>\n\n<ul>\n<li><a href=\"https:\/\/qbitflow.app\/woocommerce\">Accept crypto on WooCommerce \u2014 full overview<\/a> \u2014 how the non-custodial checkout works, which chains and tokens your customers can pay with, and pricing.<\/li>\n<li><a href=\"https:\/\/qbitflow.app\/blog\/19-How-to-accept-crypto-payments-on-WooCommerce\">Step-by-step setup guide<\/a> \u2014 install the plugin, connect your wallet, and take your first crypto payment.<\/li>\n<li><a href=\"https:\/\/qbitflow.app\/docs\">QBitFlow documentation<\/a> \u2014 API keys, test mode, webhooks, and full API reference.<\/li>\n<\/ul>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WooCommerce 7.0 or later<\/li>\n<li>PHP 7.4 or later<\/li>\n<li>A QBitFlow account (<a href=\"https:\/\/qbitflow.app\">sign up free<\/a>)<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin relies on QBitFlow, a third-party cryptocurrency payment service, to function. QBitFlow processes crypto payments non-custodially (funds go directly to your wallet via smart contracts). Without it, the gateway cannot create payments or process refunds. The plugin communicates with the QBitFlow API at <code>https:\/\/api.qbitflow.app<\/code>. Every request is authenticated with the QBitFlow API key you enter in the plugin settings.<\/p>\n\n<p>What data is sent, and when:<\/p>\n\n<ul>\n<li><strong>At checkout<\/strong>, when a customer chooses to pay with QBitFlow, the plugin sends the buyer's email address, first and last name, phone number, and billing address, together with the order and transaction details (amount, currency, order reference), in order to find or create the matching customer record on QBitFlow and to create the payment session the customer is redirected to.<\/li>\n<li><strong>On the admin order screen and when you sync a refund<\/strong>, the plugin sends the transaction identifier for that order to look up its current refund status.<\/li>\n<li><strong>When QBitFlow sends a webhook<\/strong> to confirm a payment, the plugin sends the received webhook payload and its signature back to QBitFlow to verify the notification is authentic before acting on it.<\/li>\n<\/ul>\n\n<p>The plugin does not send any data to QBitFlow outside of these actions.<\/p>\n\n<p>This service is provided by QBitFlow. By using it you agree to their terms and privacy policy:<\/p>\n\n<ul>\n<li>Terms of Service: https:\/\/qbitflow.app\/terms<\/li>\n<li>Privacy Policy: https:\/\/qbitflow.app\/privacy<\/li>\n<\/ul>\n\n<!--section=installation-->\n<h4>Automatic (recommended)<\/h4>\n\n<ol>\n<li>In your WordPress admin, go to Plugins \u2192 Add New<\/li>\n<li>Search for \"QBitFlow\"<\/li>\n<li>Click \"Install Now\", then \"Activate\"<\/li>\n<li>Go to WooCommerce \u2192 Settings \u2192 Payments \u2192 QBitFlow<\/li>\n<li>Enter your API key from your <a href=\"https:\/\/qbitflow.app\">QBitFlow dashboard<\/a><\/li>\n<li>Enable the payment method and save<\/li>\n<\/ol>\n\n<h4>Manual<\/h4>\n\n<ol>\n<li>Download the <a href=\"https:\/\/github.com\/QBitFlow\/qbitflow-for-woocommerce\/releases\">Plugin ZIP<\/a> and upload it via Plugins \u2192 Add New \u2192 Upload Plugin\n(or extract the <code>qbitflow-for-woocommerce<\/code> folder to <code>\/wp-content\/plugins\/<\/code>)<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress<\/li>\n<li>Go to WooCommerce \u2192 Settings \u2192 Payments \u2192 QBitFlow<\/li>\n<li>Enter your API key from your <a href=\"https:\/\/qbitflow.app\">QBitFlow dashboard<\/a><\/li>\n<li>Enable the payment method and save<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20do%20i%20get%20an%20api%20key%3F\"><h3>Where do I get an API key?<\/h3><\/dt>\n<dd><p>Sign up at <a href=\"https:\/\/qbitflow.app\">qbitflow.app<\/a> and generate an API key from your dashboard.<\/p><\/dd>\n<dt id=\"which%20cryptocurrencies%20are%20supported%3F\"><h3>Which cryptocurrencies are supported?<\/h3><\/dt>\n<dd><p>ETH, SOL, USDC, USDT, and more. Check the QBitFlow dashboard for the full list.<\/p><\/dd>\n<dt id=\"is%20this%20custodial%3F\"><h3>Is this custodial?<\/h3><\/dt>\n<dd><p>No. QBitFlow is fully non-custodial. Payments go directly to your wallet via smart contracts.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20new%20block%20checkout%3F\"><h3>Does it work with the new block checkout?<\/h3><\/dt>\n<dd><p>Yes. The plugin supports both the classic shortcode checkout and the new WooCommerce block-based checkout.<\/p><\/dd>\n<dt id=\"how%20are%20refunds%20handled%3F\"><h3>How are refunds handled?<\/h3><\/dt>\n<dd><p>Customers request a refund from their QBitFlow invoice page; you approve or refuse it in the QBitFlow dashboard. Once you approve a refund and the on-chain refund settles, a notice at the top of the order screen shows a <strong>Sync refund to WooCommerce<\/strong> button; clicking it marks the WooCommerce order <strong>Refunded<\/strong> and adds a note recording the refund transaction hash. The order's QBitFlow meta box shows the current refund status at all times. While a request is still pending, an admin notice keeps it on your radar with a one-click link to the QBitFlow refund queue. Only full refunds are supported (blockchain transactions are irreversible, so partial refunds aren't applicable).<\/p><\/dd>\n<dt id=\"can%20i%20test%20the%20plugin%20without%20real%20payments%3F\"><h3>Can I test the plugin without real payments?<\/h3><\/dt>\n<dd><p>Yes! Create a Test API Key from your QBitFlow dashboard and use it in the plugin settings. You can simulate the entire payment flow without spending any cryptocurrency. See the <a href=\"https:\/\/qbitflow.app\/docs?section=test-mode\">Test Mode Documentation<\/a> for details.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20forget%20to%20switch%20from%20test%20to%20live%20mode%3F\"><h3>What happens if I forget to switch from test to live mode?<\/h3><\/dt>\n<dd><p>Test API keys will not process real transactions. Make sure to replace your test key with a live key before launching your store.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.5<\/h4>\n\n<ul>\n<li>Updating Screenshots<\/li>\n<li>Ready for publishing<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Settings now show a <strong>Test \/ Live<\/strong> mode badge derived from your API key, plus a plain-language reminder that test keys run on blockchain testnets with faucet funds (no real cryptocurrency spent)<\/li>\n<li>Settings now display your store's webhook URL with a reminder to register it in the QBitFlow dashboard (Settings \u2192 Webhooks \u2192 Test\/Live section, matching your API key)<\/li>\n<li>Documented the QBitFlow external service in a dedicated \"External services\" section, including what data is sent and when, plus Terms of Service and Privacy Policy links (WordPress.org requirement)<\/li>\n<li>Hardened refund syncing: the admin order screen is now strictly read-only (no order changes happen on page load). When QBitFlow has settled a refund on-chain that WooCommerce hasn't recorded yet, a notice with a \"Sync refund to WooCommerce\" button appears at the top of the order screen. Applying the refund now runs through an explicit, nonce-protected, capability-checked (<code>edit_shop_orders<\/code>) action that marks the order <strong>Refunded<\/strong>, records the refund tx hash, and adds an order note<\/li>\n<li>Refund status lookups on the order screen are cached briefly to avoid repeated API calls on screen refreshes<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Added the <code>Requires Plugins: woocommerce<\/code> header so WordPress enforces the WooCommerce dependency before activation<\/li>\n<li>The checkout payment method description is now an editable setting (Description field) instead of a hardcoded string<\/li>\n<li>Distributed ZIP no longer includes directory assets or development-only files (<code>.wordpress-org<\/code>, raw screenshots, dev docs); added a <code>build.sh<\/code>\/<code>.distignore<\/code> build pipeline<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Customer sync \u2014 find-or-create on QBitFlow at checkout (<code>GET \/customer\/email\/{email}<\/code> first, <code>POST \/customer<\/code> only when missing) so the QBitFlow checkout never re-prompts the buyer for details WooCommerce already has<\/li>\n<li>Customer identity is now keyed on the order's billing email (not the WP account), backed by a persistent email \u2192 UUID map; the same WP user placing two orders with two different emails resolves to two distinct QBitFlow customers<\/li>\n<li>Customer billing address is synced to QBitFlow as a single string (street, city, state, postal code, country)<\/li>\n<li>Refunds end-to-end \u2014 admin notice for pending refunds (live, no cache); refund block on the order meta box shows status, reason, merchantMessage, refund tx hash, respondedAt; once approved on-chain the order is auto-marked <strong>Refunded<\/strong> with the refund tx hash recorded as an order note<\/li>\n<li>Refund snapshots persisted on the order once the refund reaches a terminal state (approved\/refused\/failed); pending refunds keep refetching live<\/li>\n<li>Updated payment session endpoint to <code>\/transaction\/session-checkout\/new\/payment<\/code>; fixed <code>customerUUID<\/code> field casing<\/li>\n<li>Fixed undefined variable bug in webhook handler for stock reduction<\/li>\n<li>Fixed potential fatal error when cart is unavailable during REST webhook processing<\/li>\n<li><code>uninstall.php<\/code> cleans up plugin options, the email \u2192 UUID map, and the legacy customer-uuid user meta on deletion<\/li>\n<li>Standardised license to GPL-2.0-or-later across LICENSE, plugin header, readme, and README (required for WordPress.org)<\/li>\n<li>Plugin header <code>Tested up to: 7.0<\/code> and <code>WC tested up to: 9.7<\/code> (in sync with readme)<\/li>\n<li>Added translation template (<code>languages\/qbitflow-for-woocommerce.pot<\/code>)<\/li>\n<li>Added WordPress.org directory assets (banners, icons, listing screenshots)<\/li>\n<li>Documented webhook <code>permission_callback<\/code> auth model with inline comment<\/li>\n<li>Plugin Check pass: translators comments on every placeholder, escape-output on the plain-text email branch, refactored webhook order lookup to <code>meta_query<\/code>; remaining structural warnings annotated with justified <code>phpcs:ignore<\/code> comments<\/li>\n<li>Plugin slug renamed to <code>qbitflow-for-woocommerce<\/code> to comply with the WordPress.org trademark policy (settings option name and gateway ID unchanged, so existing installs preserve their API key and order history)<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>One-time crypto payments via QBitFlow<\/li>\n<li>Block and classic checkout support<\/li>\n<li>Automatic customer sync<\/li>\n<li>Webhook signature verification<\/li>\n<li>Invoice and management page links<\/li>\n<li>Admin order meta box with payment details<\/li>\n<li>Email instructions with transaction details<\/li>\n<li>Test mode support<\/li>\n<\/ul>","raw_excerpt":"Accept cryptocurrency payments in WooCommerce via QBitFlow. Non-custodial \u2014 funds go directly to your wallet via smart contracts.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/311786","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=311786"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/qbitflow"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=311786"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=311786"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=311786"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=311786"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=311786"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=311786"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}