{"id":365034,"date":"2026-09-22T16:59:48","date_gmt":"2026-09-22T16:59:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/p2flux-for-woocommerce\/"},"modified":"2026-09-22T16:59:28","modified_gmt":"2026-09-22T16:59:28","slug":"p2flux-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/p2flux-for-woocommerce\/","author":23571002,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.1.2","requires":"6.5","requires_php":"8.1","requires_plugins":null,"header_name":"P2Flux for WooCommerce","header_author":"P2Flux","header_description":"Accept USDC on Base directly to your own wallet, including subscriptions. Non-custodial: payments go from the customer's wallet to yours.","assets_banners_color":"0c1224","last_updated":"2026-09-22 16:59:28","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/p2flux.com\/docs\/","header_author_uri":"https:\/\/p2flux.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":30,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"1.1.0":{"tag":"1.1.0","author":"p2flux","date":"2026-09-22 16:59:28","revision":3707803}},"upgrade_notice":{"1.1.0":"<p>Adds No-ETH checkout, off on upgraded stores until you enable it (it costs 0.10 USDC per payment made that way). Catches duplicate payments and warns when background jobs stop running.<\/p>","1.0.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3707803,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3707803,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3707803,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3707803,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3707803,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3707803,"resolution":"1","location":"assets","locale":"","width":2560,"height":1600},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3707803,"resolution":"2","location":"assets","locale":"","width":2560,"height":1600},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3707803,"resolution":"3","location":"assets","locale":"","width":920,"height":1960},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3707803,"resolution":"4","location":"assets","locale":"","width":2560,"height":1200},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3707803,"resolution":"5","location":"assets","locale":"","width":2560,"height":2090},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3707803,"resolution":"6","location":"assets","locale":"","width":2560,"height":2050},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3707803,"resolution":"7","location":"assets","locale":"","width":800,"height":840},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3707803,"resolution":"8","location":"assets","locale":"","width":2560,"height":2480},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3707803,"resolution":"9","location":"assets","locale":"","width":1560,"height":702}},"screenshots":{"1":"The payment method at checkout: pay with USDC from your own wallet, no account needed.","2":"Placing the order opens the P2Flux window; the pay screen behind it shows progress.","3":"The hosted checkout: the amount, the terms, the network, and the wallets found in the browser.","4":"My Account \u2192 USDC subscriptions: every subscription with its status and next payment.","5":"One subscription: payments, wallet authorization, and the customer's own controls.","6":"WooCommerce \u2192 P2Flux Subscriptions: a merchant's view of one subscription, with history and actions.","7":"The P2Flux box on an order: settlement transaction, explorer link, and the refund control.","8":"Gateway settings: environment, payout wallet, USDC approval mode, exchange rate.","9":"A simple product turned into a P2Flux Native Subscription with one checkbox and an interval."}},"plugin_section":[],"plugin_tags":[21057,1887,4079,209195,286],"plugin_category":[41,45],"plugin_contributors":[97242,282104],"plugin_business_model":[],"class_list":["post-365034","plugin","type-plugin","status-publish","hentry","plugin_tags-crypto","plugin_tags-payments","plugin_tags-subscriptions","plugin_tags-usdc","plugin_tags-woocommerce","plugin_category-communication","plugin_category-ecommerce","plugin_contributors-modulout","plugin_contributors-p2flux","plugin_committers-p2flux"],"banners":{"banner":"https:\/\/ps.w.org\/p2flux-for-woocommerce\/assets\/banner-772x250.png?rev=3707803","banner_2x":"https:\/\/ps.w.org\/p2flux-for-woocommerce\/assets\/banner-1544x500.png?rev=3707803","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/p2flux-for-woocommerce\/assets\/icon.svg?rev=3707803","icon":"https:\/\/ps.w.org\/p2flux-for-woocommerce\/assets\/icon.svg?rev=3707803","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/p2flux-for-woocommerce\/assets\/screenshot-1.png?rev=3707803","caption":"The payment method at checkout: pay with USDC from your own wallet, no account needed."},{"src":"https:\/\/ps.w.org\/p2flux-for-woocommerce\/assets\/screenshot-2.png?rev=3707803","caption":"Placing the order opens the P2Flux window; the pay screen behind it shows progress."},{"src":"https:\/\/ps.w.org\/p2flux-for-woocommerce\/assets\/screenshot-3.png?rev=3707803","caption":"The hosted checkout: the amount, the terms, the network, and the wallets found in the browser."},{"src":"https:\/\/ps.w.org\/p2flux-for-woocommerce\/assets\/screenshot-4.png?rev=3707803","caption":"My Account \u2192 USDC subscriptions: every subscription with its status and next payment."},{"src":"https:\/\/ps.w.org\/p2flux-for-woocommerce\/assets\/screenshot-5.png?rev=3707803","caption":"One subscription: payments, wallet authorization, and the customer's own controls."},{"src":"https:\/\/ps.w.org\/p2flux-for-woocommerce\/assets\/screenshot-6.png?rev=3707803","caption":"WooCommerce \u2192 P2Flux Subscriptions: a merchant's view of one subscription, with history and actions."},{"src":"https:\/\/ps.w.org\/p2flux-for-woocommerce\/assets\/screenshot-7.png?rev=3707803","caption":"The P2Flux box on an order: settlement transaction, explorer link, and the refund control."},{"src":"https:\/\/ps.w.org\/p2flux-for-woocommerce\/assets\/screenshot-8.png?rev=3707803","caption":"Gateway settings: environment, payout wallet, USDC approval mode, exchange rate."},{"src":"https:\/\/ps.w.org\/p2flux-for-woocommerce\/assets\/screenshot-9.png?rev=3707803","caption":"A simple product turned into a P2Flux Native Subscription with one checkbox and an interval."}],"raw_content":"<!--section=description-->\n<p>P2Flux settles payments from the customer's wallet to yours in a single on-chain transaction. There\nis no account to open, no balance to withdraw and no third party holding your revenue: the money\nnever sits anywhere on its way to you.<\/p>\n\n<p>Subscriptions work the same way. The customer signs one authorization in their wallet, and after\nthat the store decides when a renewal is due and this plugin collects it. The customer's wallet is\nnever asked again, and the amount, the wallet it pays and the billing period are fixed by what they\nsigned - a merchant cannot change them afterwards, which is the point.<\/p>\n\n<h4>Native Simple Subscriptions<\/h4>\n\n<p>Simple recurring products can use P2Flux Native Subscriptions without any separate subscription\nextension: WooCommerce plus this plugin is enough. Tick \"P2Flux recurring subscription\" on an\nordinary simple product, choose daily, weekly, monthly or yearly, and the product's price becomes\nthe recurring amount. The plugin creates a renewal order each period, collects it, and shows the\nsubscription under My Account \u2192 USDC subscriptions and WooCommerce \u2192 P2Flux Subscriptions.<\/p>\n\n<p>Native v1 supports fixed-price, non-taxable virtual subscription products, priced in US dollars,\nbought one at a time and on their own. Taxes, coupons, shipping, free trials, sign-up fees and\nvariable subscriptions are not supported in native mode. Native subscription products are paid\nthrough P2Flux only; other WooCommerce gateways cannot be used for them. Normal WooCommerce\nproducts continue to use your existing payment gateways - the P2Flux-only requirement applies only\nto products using P2Flux Native Subscriptions.<\/p>\n\n<p>If you already run WooCommerce Subscriptions, it keeps working as before and the two coexist; a\nproduct belongs to one of them, never both.<\/p>\n\n<h4>What you need<\/h4>\n\n<ul>\n<li>A wallet address on Base that you control. Payments arrive there directly.<\/li>\n<li>Prices in USD for subscriptions. One-time payments work in any currency the plugin can convert.<\/li>\n<li>For advanced subscription features (trials, sign-up fees, variable subscriptions, switching),\nWooCommerce Subscriptions. Simple fixed subscriptions need nothing extra.<\/li>\n<\/ul>\n\n<h4>Fees<\/h4>\n\n<p>P2Flux takes 1% of a one-time payment, and 2% plus a fixed 0.10 USDC network fee on a recurring\ncharge. On a renewal the gas is reimbursed out of the charge, capped by what the customer signed.<\/p>\n\n<p>A one-time payment's network fee is paid one of two ways. With \"No-ETH checkout\" on, the customer\npays it in USDC on top of the price, so they need no ETH, and you pay an additional fixed 0.10 USDC\nout of the amount you receive: a 20.00 USDC order pays you 20.00 - 0.20 - 0.10 = 19.70 USDC. The\ncustomer can still choose to pay the network fee in ETH themselves, and then you receive the price\nless 1%, as with \"No-ETH checkout\" off.<\/p>\n\n<h4>Test it first<\/h4>\n\n<p>The plugin ships with a test mode that settles on Base Sepolia. It behaves exactly like the live\none - same contracts, same signatures, same failure modes - with faucet money instead of real USDC.\nOrders keep the environment they were created in, so switching to live later never disturbs them.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin sends data to two external services.<\/p>\n\n<p><strong>P2Flux<\/strong> (https:\/\/api.p2flux.com, https:\/\/api-test.p2flux.com, and the hosted checkout at\nhttps:\/\/pay.p2flux.com \/ https:\/\/pay-test.p2flux.com)<\/p>\n\n<p>Used to create payment instructions, to verify payments against the Base blockchain, and to collect\nsubscription renewals. Sent: your payout wallet address, the amount in USDC, the billing period for\na subscription, and transaction hashes for verification. Your customers' browsers open the hosted\ncheckout window, which sees only the amount, the recipient and the network - never the product, the\ncustomer or the order.<\/p>\n\n<p>Terms of service: https:\/\/p2flux.com\/terms.html. Privacy policy: https:\/\/p2flux.com\/privacy.html.<\/p>\n\n<p><strong>Coinbase exchange rates<\/strong> (https:\/\/api.coinbase.com\/v2\/exchange-rates)<\/p>\n\n<p>Used only when your store's currency is not USD, to convert a price into USDC. Sent: nothing but the\nrequest itself; the response is cached for an hour. No order, customer or store data is included.<\/p>\n\n<p>Terms of service: https:\/\/www.coinbase.com\/legal\/developer-platform\/terms-of-service. Privacy policy:\nhttps:\/\/www.coinbase.com\/legal\/privacy.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>The plugin stores no name, address, email, wallet address, IP address or user agent of its own;\nthose stay in WooCommerce's customer and order records and follow WooCommerce's own personal-data\nexport and erasure. What the plugin stores is the financial history of each payment and\nsubscription: amounts, billing periods, public blockchain identifiers (an authorization id and\ntransaction hashes), the store's own payout wallet, and - for subscriptions - the customer's\nrecurring authorization, encrypted, which the store needs to refund a payment and the customer to\nrevoke it. Native subscriptions live in a table of their own, linked to the customer account by id.<\/p>\n\n<p>Personal-data requests: the plugin registers an exporter (what each subscription record says) and\nan eraser. Erasure unlinks the subscription from the customer, cancels it so a wallet whose owner\nthe store no longer knows is never charged, and keeps the financial rows; deleting the customer's\nWordPress account does the same. Financial records are retained because a payment that happened on a\npublic blockchain is not made private by deleting the store's only record of it, and the encrypted\nauthorization is what still allows a refund. Uninstalling keeps them too unless the store opts into\ndestructive removal.<\/p>\n\n<h3>Documentation<\/h3>\n\n<p>The full guide - installation, every renewal outcome, cancellation, refunds, recovery,\ntroubleshooting - is at https:\/\/p2flux.com\/docs\/woocommerce.html. Developer documentation and the\nsource are at https:\/\/github.com\/P2Flux\/woocommerce.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20does%20the%20money%20go%3F\"><h3>Where does the money go?<\/h3><\/dt>\n<dd><p>Straight to the wallet you configure, in the same transaction the customer sends. P2Flux never holds\nit and cannot move it.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20a%20customer%20closes%20the%20payment%20window%3F\"><h3>What happens if a customer closes the payment window?<\/h3><\/dt>\n<dd><p>Nothing is lost. The order keeps its payment instruction, the plugin checks whether the payment\narrived, and the customer's own \"I already paid - check my payment\" link asks the same question. It\nnever offers to pay again while a payment might already exist.<\/p><\/dd>\n<dt id=\"can%20i%20refund%3F\"><h3>Can I refund?<\/h3><\/dt>\n<dd><p>Yes, in full, from your own wallet. The order screen has a P2Flux box that prepares the refund and\nopens your wallet; WooCommerce records the refund once P2Flux confirms the transfer on chain. The\nrefund on chain is the USDC the customer paid; the WooCommerce refund record is the order total in\nyour store currency, so on a non-USD store the two figures differ by the conversion applied at\ncheckout (recurring products are USD-only, so the two always agree there). WooCommerce's normal\nrefund button is not offered, because no server can send money out of your wallet - only you can.\nThe P2Flux protocol allows exactly one refund per payment, so the plugin offers that refund in full: a\npartial refund would use up the only refund the order will ever have.<\/p><\/dd>\n<dt id=\"what%20does%20the%20customer%20see%20at%20checkout%3F\"><h3>What does the customer see at checkout?<\/h3><\/dt>\n<dd><p>They choose P2Flux, place the order, and a small P2Flux window opens from that same click: connect\na wallet, confirm, done. The order's pay screen stays behind it to show progress, and if a browser\nrefuses the window it offers a button that opens it on demand - \"Pay with USDC \u2014 no ETH required\"\nwhen the network fee is paid in USDC.<\/p><\/dd>\n<dt id=\"do%20customers%20need%20eth%3F\"><h3>Do customers need ETH?<\/h3><\/dt>\n<dd><p>Not with \"No-ETH checkout\" on (the default for new installs). The customer pays the price plus the\nnetwork fee in USDC, signs once in their wallet, and P2Flux sends the transaction: their wallet\nneeds USDC on Base and no ETH at all. The exact network fee is shown in the P2Flux window before\nthey confirm. A customer who holds ETH on Base can choose \"I have ETH on Base \u2014 pay the network fee\nin ETH\" on the pay screen instead. The setting costs you an extra fixed 0.10 USDC per payment made\nthat way (see Fees), and it does not apply to subscriptions. Stores upgraded from 1.0.0 keep it off\nuntil you turn it on under WooCommerce \u2192 Settings \u2192 Payments \u2192 P2Flux.<\/p><\/dd>\n<dt id=\"how%20does%20payment%20recovery%20work%3F\"><h3>How does payment recovery work?<\/h3><\/dt>\n<dd><p>It is safe for a customer to close the browser after confirming a payment. The payment instruction\nis stored on the order, so the store can find the payment on the blockchain without the customer:<\/p>\n\n<ul>\n<li>Automatic checks run about 15 minutes, 1 hour, 6 hours, 24 hours and 48 hours after the payment\nwas started. A payment found is verified and marks the order paid with its exact transaction.<\/li>\n<li>A daily sweep re-queues those checks for P2Flux orders from the last week that are still pending.<\/li>\n<li>A customer who comes back to the order's payment page is checked first, before being offered to\npay, and \"I already paid \u2014 check my payment\" asks at once.<\/li>\n<\/ul>\n\n<p>The automatic checks and the sweep, like subscription renewals, run from WooCommerce's Action\nScheduler, which runs from WP-Cron. On a store with little traffic WP-Cron only runs when someone\nvisits, so checks can run late; if WP-Cron is disabled, a server cron must call it. Either way, set\nup a real cron job that runs every few minutes, for example:<\/p>\n\n<pre><code>*\/5 * * * * curl -s https:\/\/example.com\/wp-cron.php?doing_wp_cron &gt; \/dev\/null\n<\/code><\/pre>\n\n<p>or <code>wp cron event run --due-now<\/code> from WP-CLI. If P2Flux jobs are more than two hours overdue, or\nAction Scheduler is missing, the plugin shows a warning to store managers in the WordPress admin.<\/p><\/dd>\n<dt id=\"a%20renewal%20failed.%20what%20now%3F\"><h3>A renewal failed. What now?<\/h3><\/dt>\n<dd><p>It depends on why, and the plugin says so on the order. A wallet that is short of USDC is retried\ndaily for three days and the customer is told to top up. An approval that ran short cannot be fixed\nby retrying, so the customer gets a \"Restore USDC approval\" button on their account page. A customer\nwho revoked their authorization has their subscription cancelled.<\/p><\/dd>\n<dt id=\"i%20changed%20a%20subscription%27s%20price.%20what%20happens%3F\"><h3>I changed a subscription's price. What happens?<\/h3><\/dt>\n<dd><p>Renewals stop, with a note on the order, because the customer's wallet authorized the old amount and\nthe plugin never charges an old authorization for new terms. The customer's account page explains\nthe new amount and offers \"Re-authorize\": one signature in their wallet, and the outstanding renewal\nis collected straight away. The old authorization stays on record so its payments remain refundable.<\/p><\/dd>\n<dt id=\"what%20if%20the%20customer%20cancels%3F\"><h3>What if the customer cancels?<\/h3><\/dt>\n<dd><p>WooCommerce stops collecting immediately - that part is entirely in the store's hands. The standing\npermission in the customer's wallet is theirs to remove, and their account page offers it.<\/p><\/dd>\n<dt id=\"do%20free%20trials%20work%3F\"><h3>Do free trials work?<\/h3><\/dt>\n<dd><p>Not in this version. A subscription's first charge and its renewals are one signed amount with one\nstart date, so a trial would need protocol support that does not exist yet. Sign-up fees, a second\nsubscription, or anything else in the cart alongside the subscription - all of which make the first\npayment differ from the renewals - are unsupported for the same reason. P2Flux is simply not offered\nfor such a cart, rather than selling a subscription it cannot renew; the customer pays with another\nmethod, or removes the extra item.<\/p><\/dd>\n<dt id=\"why%20does%20the%20wallet%20approve%20unlimited%20usdc%20at%20signup%3F\"><h3>Why does the wallet approve unlimited USDC at signup?<\/h3><\/dt>\n<dd><p>Because the subscription has no end and the approval can only ever be used for the terms the\ncustomer signed: it is granted to the P2Flux recurring contract, which moves nothing a signed\nauthorization does not permit. If you would rather bound it, the \"USDC approval for subscriptions\"\nsetting asks the wallet for 12, 24 or 36 billing periods' worth instead; when that runs out the\ncustomer's account page offers \"Restore USDC approval\" and the renewal is collected right after.<\/p><\/dd>\n<dt id=\"can%20i%20price%20subscriptions%20in%20euros%3F\"><h3>Can I price subscriptions in euros?<\/h3><\/dt>\n<dd><p>Not in this version. A recurring authorization fixes one USDC amount for its whole life, so a\nsubscription priced in another currency would drift away from its own price as the rate moved -\nand neither you nor the customer would have agreed to what it became. One-time payments convert\nnormally.<\/p><\/dd>\n<dt id=\"do%20i%20need%20woocommerce%20subscriptions%3F\"><h3>Do I need WooCommerce Subscriptions?<\/h3><\/dt>\n<dd><p>Not for simple fixed subscriptions. P2Flux Native Subscriptions handle a fixed price, one product,\none interval, with renewals, dunning, cancellation and refunds. WooCommerce Subscriptions is\nstill the right choice for free trials, sign-up fees, variable subscriptions, switching and\nproration, which native mode intentionally does not do.<\/p>\n\n<p>Feature comparison - P2Flux Native \/ WooCommerce Subscriptions: simple fixed subscription yes\/yes;\nUSDC recurring yes\/via P2Flux; free trial no\/WCS may support; sign-up fee no\/WCS may support;\nvariable subscriptions no\/WCS may support; switching and proration no\/WCS may support; multiple\nadvanced lifecycle features no\/yes.<\/p><\/dd>\n<dt id=\"how%20does%20a%20native%20subscription%20start%3F\"><h3>How does a native subscription start?<\/h3><\/dt>\n<dd><p>The customer authorizes it in their wallet at checkout and the first payment is collected right\naway. The first payment must complete shortly after authorization; if the setup expires before it\ndoes, the subscription is marked expired, it never activates, and nothing is charged automatically\nlater. The customer simply starts a new order. An expired signup keeps its unused wallet\nauthorization on record so the customer can revoke it from My Account.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20a%20native%20renewal%20cannot%20be%20collected%3F\"><h3>What happens when a native renewal cannot be collected?<\/h3><\/dt>\n<dd><p>The renewal order is marked failed, the subscription goes on hold, and the customer is emailed what\nto do (add USDC, restore the approval, or authorize again). Retries stay inside the renewal's own\nbilling period. A period that passes unpaid is never collected later, there is no catch-up billing,\nand the subscription is not cancelled automatically however many renewals are missed: it stays on\nhold until a later payment succeeds or somebody cancels it. If the store was offline for a while,\nat most one payment is attempted when it comes back - the current one.<\/p><\/dd>\n<dt id=\"where%20are%20subscription%20authorizations%20stored%3F\"><h3>Where are subscription authorizations stored?<\/h3><\/dt>\n<dd><p>Encrypted, in your own database, and never in a log, a page or a URL. For stronger protection add a\nkey to <code>wp-config.php<\/code>:<\/p>\n\n<pre><code>define( 'P2FLUX_WC_ENCRYPTION_KEY', 'your-base64-key' );\n<\/code><\/pre>\n\n<p>Without it the plugin generates a key and stores it in the options table, which protects an exported\norders table or a stolen backup but not a full database compromise. To rotate: set the new key,\nkeep the old one in <code>P2FLUX_WC_ENCRYPTION_KEY_PREVIOUS<\/code>, and every stored authorization keeps\nworking while new ones use the new key.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>No-ETH checkout: customers can pay a one-time order's network fee in USDC and need no ETH. On by default for new installs, off for upgrades; costs the merchant an extra fixed 0.10 USDC per payment made that way.<\/li>\n<li>Customers can switch to paying the network fee in ETH from the pay screen, and back.<\/li>\n<li>A second payment for an order that was already paid is caught, recorded, and flagged for a refund instead of going unnoticed.<\/li>\n<li>Verification asks about the payment instruction the customer actually paid, when the order has more than one.<\/li>\n<li>A customer returning to the pay screen is checked for an earlier payment before being offered to pay.<\/li>\n<li>An admin warning when background jobs (payment recovery, renewals) are more than two hours overdue, or Action Scheduler is missing.<\/li>\n<li>Bundled P2Flux PHP SDK updated to v0.7.3.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>One-time USDC payments on Base, classic and block checkout; the wallet window opens from the \"Place order\" click.<\/li>\n<li>P2Flux Native Subscriptions: simple fixed-price recurring products without WooCommerce Subscriptions.<\/li>\n<li>Subscriptions through WooCommerce Subscriptions: authorization, first charge, renewals, dunning, re-authorization after a price change.<\/li>\n<li>A \"USDC approval for subscriptions\" setting: unlimited, or a number of billing periods.<\/li>\n<li>Payment recovery when a checkout window dies before the store hears about the payment.<\/li>\n<li>Full refunds from the merchant's own wallet, recorded in WooCommerce only after confirmation.<\/li>\n<li>Privacy export and erasure for subscription records.<\/li>\n<li>Test mode on Base Sepolia.<\/li>\n<\/ul>","raw_excerpt":"Accept USDC on Base straight to your own wallet, subscriptions included. Customers need no ETH. Non-custodial: nobody holds your money but you.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/365034","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=365034"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/p2flux"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=365034"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=365034"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=365034"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=365034"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=365034"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=365034"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}