{"id":376198,"date":"2026-10-09T16:20:48","date_gmt":"2026-10-09T16:20:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/blokko-payments\/"},"modified":"2026-10-09T17:12:38","modified_gmt":"2026-10-09T17:12:38","slug":"blokko-payments","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/blokko-payments\/","author":23573638,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.3","requires":"6.4","requires_php":"8.1","requires_plugins":null,"header_name":"Blokko Payments","header_author":"Blokko","header_description":"Accept stablecoins, crypto and real-time payments on your store: as a WooCommerce payment method, in the classic checkout and in the Cart & Checkout Blocks, and as a payment button on any WordPress page.","assets_banners_color":"f1d3f2","last_updated":"2026-10-09 17:12:38","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/blokko-payments\/","header_author_uri":"https:\/\/www.blokko.io\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":75,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.5.0":{"tag":"0.5.0","author":"blokko","date":"2026-10-09 16:20:14","revision":3737063},"1.0.0":{"tag":"1.0.0","author":"blokko","date":"2026-10-09 17:12:38","revision":3737119}},"upgrade_notice":{"1.0.0":"<p>First stable release. No functional changes since 0.5.0.<\/p>","0.5.0":"<p>&quot;Pay for order&quot; now pays in a window over your store, payment confirmation stays fast with any number of abandoned carts, WooCommerce&#039;s payment settings explain your Blokko connection, and a notice says which credentials are still missing.<\/p>","0.4.0":"<p>Direct charges now open Blokko&#039;s payment page in a window over your page, the same way WooCommerce checkouts do, and a buyer who retries gets the same payment page back.<\/p>","0.3.0":"<p>Fixes a double charge: a buyer who came back to pay could end up with two payable pages for one order. Payments are now marked as paid automatically, with no switch. A stuck direct charge closes on its own and can be checked against Blokko from Transactions.<\/p>","0.2.2":"<p>Direct charges always failed. If you use that module, please update.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3737063,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3737063,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3737063,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3737063,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"blokko\/charge":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"blokko\/charge","title":"Blokko \u2014 Direct charge","category":"widgets","icon":"money-alt","description":"Direct-charge form via Blokko (fixed or variable amount), without a shopping cart.","keywords":["blokko","payment","charge","checkout"],"textdomain":"blokko-payments","attributes":{"amountMode":{"type":"string","default":"fixed"},"amount":{"type":"string","default":"0.00"},"minAmount":{"type":"string","default":"0.00"},"maxAmount":{"type":"string","default":"0.00"},"currency":{"type":"string","default":"USD"},"label":{"type":"string","default":""},"description":{"type":"string","default":""},"buttonText":{"type":"string","default":""}},"supports":{"html":false},"editorScript":"blokko-charge-block-editor","render":"file:.\/render.php"}},"tagged_versions":["0.5.0","1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3737063,"resolution":"1","location":"assets","locale":"","width":1440,"height":1000},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3737063,"resolution":"2","location":"assets","locale":"","width":1440,"height":1000},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3737063,"resolution":"3","location":"assets","locale":"","width":1440,"height":1000},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3737063,"resolution":"4","location":"assets","locale":"","width":1440,"height":1000},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3737063,"resolution":"5","location":"assets","locale":"","width":1440,"height":1000}},"screenshots":{"1":"The Blokko Payments settings screen: credentials, environment and the active-environment badge.","2":"The webhook section, with the callback URL visible and copyable and registration against Blokko.","3":"Gateway settings under WooCommerce \u2192 Settings \u2192 Payments.","4":"The \"Blokko \u2014 Direct charge\" block in the WordPress editor, with a fixed or buyer-entered amount.","5":"The \"Payments from your pages\" screen: every payment started from a page, with its own status."}},"plugin_section":[],"plugin_tags":[21057,6593,1373,231844,286],"plugin_category":[45],"plugin_contributors":[285413],"plugin_business_model":[],"class_list":["post-376198","plugin","type-plugin","status-publish","hentry","plugin_tags-crypto","plugin_tags-payment-gateway","plugin_tags-qr-code","plugin_tags-stablecoin","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-blokko","plugin_committers-blokko"],"banners":{"banner":"https:\/\/ps.w.org\/blokko-payments\/assets\/banner-772x250.png?rev=3737063","banner_2x":"https:\/\/ps.w.org\/blokko-payments\/assets\/banner-1544x500.png?rev=3737063","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/blokko-payments\/assets\/icon-128x128.png?rev=3737063","icon_2x":"https:\/\/ps.w.org\/blokko-payments\/assets\/icon-256x256.png?rev=3737063","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/blokko-payments\/assets\/screenshot-1.png?rev=3737063","caption":"The Blokko Payments settings screen: credentials, environment and the active-environment badge."},{"src":"https:\/\/ps.w.org\/blokko-payments\/assets\/screenshot-2.png?rev=3737063","caption":"The webhook section, with the callback URL visible and copyable and registration against Blokko."},{"src":"https:\/\/ps.w.org\/blokko-payments\/assets\/screenshot-3.png?rev=3737063","caption":"Gateway settings under WooCommerce \u2192 Settings \u2192 Payments."},{"src":"https:\/\/ps.w.org\/blokko-payments\/assets\/screenshot-4.png?rev=3737063","caption":"The \"Blokko \u2014 Direct charge\" block in the WordPress editor, with a fixed or buyer-entered amount."},{"src":"https:\/\/ps.w.org\/blokko-payments\/assets\/screenshot-5.png?rev=3737063","caption":"The \"Payments from your pages\" screen: every payment started from a page, with its own status."}],"raw_content":"<!--section=description-->\n<p>Blokko Payments connects Blokko's alternative payment methods to your store without changing how\nyou operate today. Blokko sums it up in its own tagline: \"More Ways to Pay\".<\/p>\n\n<p>According to Blokko, its service lets you accept stablecoins, real-time international payments and\ncrypto through the systems you already use, settling in local fiat currency over existing banking\nrails, with connectivity to payment networks and regulated exchanges handled by Blokko. This plugin\nis the WordPress side of that service.<\/p>\n\n<h4>Two ways to take a payment<\/h4>\n\n<ul>\n<li>At your WooCommerce checkout: Blokko appears as one more payment method, in the classic checkout\nand in the Cart &amp; Checkout Blocks, next to the ones your store already offers.<\/li>\n<li>On any page of your site: a payment button you drop into a page with the WordPress block editor,\nor with the [blokko_pago] shortcode, for a fixed amount or for an amount your customer types.<\/li>\n<\/ul>\n\n<h4>How the buyer pays<\/h4>\n\n<p>The buyer needs no account and no wallet on your site: they pick a payment method and pay on a\npayment page hosted by Blokko, and several methods are paid by scanning a QR code. How they get\nthere depends on where the payment started:<\/p>\n\n<ul>\n<li>At the WooCommerce checkout, Blokko's payment page opens in a window over your own checkout, so\nthe buyer pays without leaving it. If their browser cannot open that window, they are taken to\nBlokko's payment page instead.<\/li>\n<li>From a payment button on one of your pages, Blokko's payment page opens in the same kind of\nwindow over your page. If their browser cannot open it, they go to the page hosted by Blokko\ninstead.<\/li>\n<\/ul>\n\n<p>Either way, Blokko returns the buyer to your site when they are done.<\/p>\n\n<h4>How a payment is confirmed<\/h4>\n\n<p>This is the part worth reading closely, because it defines what the plugin guarantees:<\/p>\n\n<ul>\n<li>The notification Blokko sends decides nothing. It arrives signed, and its only effect is to bring\na check forward. The state carried in it is never used to mark an order as paid.<\/li>\n<li>Confirmation is re-read from Blokko over a signed request. Marking an order as paid is decided by\nthe signed response of Blokko's status endpoint \u2014 not by what a third party claims, and not by\nwhat the browser returns.<\/li>\n<li>The browser return page is informational. It exists to tell the buyer what happened; it is not a\npayment authority.<\/li>\n<li>Every request the plugin sends is signed, and every request it receives is verified against the\nsame signature before it is processed.<\/li>\n<li>The amount and currency of the invoice Blokko returns are compared against the order. If they do\nnot match, Blokko's payment page is not opened and the order is left for manual review.<\/li>\n<\/ul>\n\n<h4>Compatibility<\/h4>\n\n<ul>\n<li>HPOS (High-Performance Order Storage): the WooCommerce side of the plugin supports it, so the\nstore keeps working whichever order storage WooCommerce uses.<\/li>\n<\/ul>\n\n<h4>Payment methods<\/h4>\n\n<p>The available methods are not hardcoded in the plugin: they are read from your Blokko account and\ngrouped into real-time payments, stablecoins and exchanges. Two criteria are applied on top of that\nlist:<\/p>\n\n<ul>\n<li>A method that Blokko reports as subject to AML (anti-money-laundering) controls is not offered.<\/li>\n<li>A method whose order total exceeds the high-value transaction threshold Blokko defines for it is\nshown with a warning.<\/li>\n<\/ul>\n\n<h4>Coverage, as stated by Blokko<\/h4>\n\n<p>Blokko states more than 700 wallets (among them Binance, Crypto.com and Strike), more than 200\nalternative payment methods (including USDC, USDT, Bitcoin and international real-time payments)\nand operation in Brazil, Mexico, Colombia, Chile, Bolivia and Peru, with Venezuela, Canada and the\nEuropean Union announced as upcoming. Coverage is defined by Blokko and depends on your account:\nthe plugin imposes no geographic restrictions of its own.<\/p>\n\n<h4>Current limits<\/h4>\n\n<ul>\n<li>Environments: sandbox and production are both selectable, and each keeps its own credentials. A\nstore with production selected and production credentials saved charges for real \u2014 update\ndeliberately. Blokko has confirmed production's API base URL and its payment page; what has not\nhappened yet is the first real production invoice that exercises that host end to end.<\/li>\n<li>Confirmation has no setting to turn it on or off: whatever Blokko confirms for the exact amount\nand currency of the order or charge is marked as paid. The only way to refuse it for one site is a\ncode-level filter, described in the FAQ.<\/li>\n<li>No currency conversion: the plugin sends the total in your store's currency and converts nothing.\nIf your store charges in a currency your Blokko account does not settle, that payment will not\ncomplete.<\/li>\n<\/ul>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.4 or newer.<\/li>\n<li>PHP 8.1 or newer, with the OpenSSL extension.<\/li>\n<li>A Blokko account with a Merchant ID, an API Key and an API Secret.<\/li>\n<li>HTTPS on your site: the callback URL registered with Blokko is HTTPS.<\/li>\n<li>WooCommerce is optional.<\/li>\n<\/ul>\n\n<h4>Links<\/h4>\n\n<ul>\n<li>Blokko website: https:\/\/www.blokko.io\/<\/li>\n<li>API documentation: https:\/\/docs.blokko.us\/<\/li>\n<li>Supported payment methods: https:\/\/blokko.us\/supported-payment-methods\/<\/li>\n<li>Contact: https:\/\/blokko.us\/contact\/<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>Blokko Payments is a client of Blokko, a payment gateway, and it does not work without it: every\npayment the plugin starts is created, hosted and settled by Blokko's service. This plugin is the\nWordPress side of a service you already have an account with. The service is described at\nhttps:\/\/www.blokko.io\/, and it is governed by its own terms of use and its own privacy policy:<\/p>\n\n<ul>\n<li>Terms of use: https:\/\/www.blokko.us\/docs\/TermsandConditionswebsite.pdf<\/li>\n<li>Privacy policy (USA): https:\/\/www.blokko.us\/docs\/PrivacyPolicyforUSA.pdf<\/li>\n<li>Privacy policy (Brazil): https:\/\/www.blokko.us\/docs\/PrivacyPolicyforBrazil.pdf<\/li>\n<li>Privacy policy (Mexico): https:\/\/www.blokko.us\/docs\/PrivacyPolicyforMexico.pdf<\/li>\n<\/ul>\n\n<p>The plugin talks to these Blokko hosts, and to no others. Which pair is used depends on the\nenvironment you select in the plugin's settings:<\/p>\n\n<ul>\n<li>Sandbox: https:\/\/sandbox.blokko.dev (signed API) and https:\/\/payment-link-sandbox.blokko.dev (hosted payment page).<\/li>\n<li>Production: https:\/\/api.blokko.app (signed API) and https:\/\/payment-link.blokko.app (hosted payment page).<\/li>\n<\/ul>\n\n<h4>When the plugin contacts Blokko, and what it sends<\/h4>\n\n<p>What follows is what the shipped code does. There is no telemetry, no usage reporting, no license\ncheck and no update check against any server: every call below exists to start a payment or to\nconfirm one.<\/p>\n\n<ul>\n<li>Creating the invoice for a payment. When a buyer places an order with Blokko selected as the\npayment method, or submits a charge made with the \"Blokko \u2014 Direct charge\" block or the\n[blokko_pago] shortcode, the plugin asks Blokko to create the hosted invoice for that payment. It\nsends your Merchant ID, the amount of that order or charge in your store's currency, and \u2014 when it\ncan build it \u2014 the address on your site Blokko should return the buyer to. Blokko answers with the\nURL of the hosted invoice and with the amount and currency it recorded; the plugin compares those\nagainst the order before the buyer is sent anywhere.<\/li>\n<li>Re-reading the status of a transaction. When Blokko delivers an event to the callback URL your\nsite registered, the plugin asks Blokko for the status of the transaction that event names. The\nevent never marks an order as paid \u2014 it only brings the confirmation forward \u2014 and what the plugin\nacts on is the signed answer of the status endpoint.<\/li>\n<li>Registering your site's callback URL. When you register the webhook from the plugin's settings\nscreen, the plugin sends Blokko your Merchant ID and this site's own callback URL. Registering an\nearlier URL again, from that same screen, is the same call carrying that earlier URL instead.<\/li>\n<li>Initializing the payment terminal. When you use \"Verify connection\", the plugin sends Blokko the\nterminal serial and type you configured, and stores the terminal identifier Blokko answers with.<\/li>\n<li>The scheduled reconciliation. Confirming a payment is not the webhook's job: the plugin re-reads\nthe status of the invoices a buyer worked on in the last 15 minutes, on a scheduled task that runs\nevery five minutes, and once more right away when a buyer comes back from Blokko's payment page\n(at most once every 30 seconds for the whole site). That read is a GET to the payment page host of\nyour environment, at \/api\/invoices\/{reference}\/payment-state, asking for the state of one invoice,\nidentified by the reference Blokko issued for it, and it carries no\ncredentials at all. It is a read-only query: it changes nothing on your site and nothing on\nBlokko's.<\/li>\n<\/ul>\n\n<h4>What does not leave your site<\/h4>\n\n<p>No buyer data. The buyer pays on the page hosted by Blokko without an account on your site, and the\nplugin never receives or stores their name, email address, postal address, card details or wallet\nkeys \u2014 it does not read any of them, so there is nothing of theirs for it to send. The buyer's own\nbrowser does visit Blokko's payment page, or loads it in the frame of the embedded checkout; that\nrequest is the buyer's browser contacting Blokko, the way any visit to a website is.<\/p>\n\n<p>Your credentials: the signed calls to Blokko's API carry your Merchant ID and your API Key to\nidentify your account, and each one carries a signature computed on your site with your API Secret.\nThe API Secret is never sent. What stays on your site is what Blokko has no need for: your orders\nand charges, and the credentials you saved.<\/p>\n\n<h4>The embedded checkout's frame<\/h4>\n\n<p>On a store that can pay with Blokko, the plugin can open the hosted payment page in a window on your\nown checkout page, or on the page that carries a payment button, instead of navigating to it. That window loads the invoice URL Blokko returned for\nthat payment attempt in an iframe, and that URL is served by the payment page host of the\nenvironment your store is bound to: payment-link-sandbox.blokko.dev in sandbox, payment-link.blokko.app\nin production. The plugin accepts that frame's address only when its host is exactly the one\nconfigured for the environment in use \u2014 never a subdomain of it, never a suffix, never a wildcard \u2014\nand it sets no sandbox and no allow attribute on the frame. Nothing about the payment is decided in\nthat frame: the store's own status endpoint decides it, as the Description of this plugin explains.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to \/wp-content\/plugins\/, or install the ZIP from Plugins \u2192 Add New \u2192\nUpload Plugin.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Go to \"Blokko Payments\" in the admin menu and enter the Merchant ID, API Key and API Secret from\nyour Blokko account. The API Secret is stored and never shown again.<\/li>\n<li>Pick the environment and save: sandbox and production are both selectable, and each keeps its own\ncredentials, terminal and callback state.<\/li>\n<li>Register the address Blokko calls back: the screen shows the exact URL and registers it with\nBlokko without leaving WordPress.<\/li>\n<\/ol>\n\n<p>If you are going to take payments at your WooCommerce checkout:<\/p>\n\n<ol>\n<li>Under WooCommerce \u2192 Settings \u2192 Payments, enable \"Blokko Payments\" and set the name and the text\nthe buyer sees at checkout. If you do not have Blokko credentials yet, ask for them from\n\"Blokko Payments\" in the admin menu: that screen is where they are entered, and where the plugin\noffers to request them.<\/li>\n<\/ol>\n\n<p>If you are going to put payment buttons on your own pages:<\/p>\n\n<ol>\n<li>Insert the \"Blokko \u2014 Direct charge\" block on a page, or the [blokko_pago] shortcode, with a\nfixed or a buyer-entered amount.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20blokko%20account%3F\"><h3>Do I need a Blokko account?<\/h3><\/dt>\n<dd><p>Yes. The plugin uses your Blokko account credentials (Merchant ID, API Key and API Secret). The one\nwho needs no account is the buyer: they pay on the page hosted by Blokko, without registering on\nyour site or opening a wallet there.<\/p><\/dd>\n<dt id=\"does%20it%20work%20without%20woocommerce%3F\"><h3>Does it work without WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. Payment buttons work on any WordPress site: you insert the \"Blokko \u2014 Direct charge\" block, or\nthe [blokko_pago] shortcode, on one of your pages, with a fixed amount or one your customer types.\nNeither WooCommerce nor any other commerce plugin is required.<\/p><\/dd>\n<dt id=\"which%20countries%20does%20it%20operate%20in%3F\"><h3>Which countries does it operate in?<\/h3><\/dt>\n<dd><p>According to Blokko: Brazil, Mexico, Colombia, Chile, Bolivia and Peru, with Venezuela, Canada and\nthe European Union announced as upcoming. The plugin adds no geographic restrictions of its own \u2014\nactual availability is determined by your Blokko account.<\/p><\/dd>\n<dt id=\"which%20currency%20do%20i%20receive%20the%20money%20in%3F\"><h3>Which currency do I receive the money in?<\/h3><\/dt>\n<dd><p>Blokko states that it settles in local fiat currency over existing banking rails. The plugin does\nnot convert currency: it sends the total in your store's currency and requires the invoice Blokko\nreturns to match in amount and currency before opening Blokko's payment page. If your store charges\nin a currency your Blokko account does not settle, that payment does not complete.<\/p><\/dd>\n<dt id=\"the%20buyer%20closed%20the%20browser%20after%20paying.%20is%20the%20payment%20lost%3F\"><h3>The buyer closed the browser after paying. Is the payment lost?<\/h3><\/dt>\n<dd><p>No. Payment does not depend on the buyer seeing the return page: the plugin asks Blokko for the\nstatus over a signed request, on a scheduled reconciliation, and also reacts to the events Blokko\nsends. The confirmation arrives either way.<\/p><\/dd>\n<dt id=\"does%20the%20notification%20blokko%20sends%20mark%20the%20order%20as%20paid%3F\"><h3>Does the notification Blokko sends mark the order as paid?<\/h3><\/dt>\n<dd><p>No, and that is deliberate. The notification arrives signed and only brings a check forward; the\nstate it carries never decides a payment. What marks an order as paid is the signed response of\nBlokko's status endpoint, queried by the plugin.<\/p><\/dd>\n<dt id=\"can%20settlement%20be%20turned%20off%20for%20one%20site%3F\"><h3>Can settlement be turned off for one site?<\/h3><\/dt>\n<dd><p>Only by code, and deliberately. There is no setting for it: when Blokko confirms a payment for the\nexact amount and currency the order asked for, that order is marked as paid. To refuse settlement\nfor one site, whoever maintains it adds a filter that returns false \u2014 <code>blokko_payments_settle_orders<\/code>\nfor WooCommerce orders, <code>blokko_direct_charge_settle_charges<\/code> for direct charges. A store that still\nhas the older \"settlement off\" choice saved keeps that row where it is, and it decides nothing.<\/p><\/dd>\n<dt id=\"why%20don%27t%20i%20see%20every%20payment%20method%3F\"><h3>Why don't I see every payment method?<\/h3><\/dt>\n<dd><p>Because the list is defined by your Blokko account, and two filters are applied on top: methods\nsubject to AML (anti-money-laundering) controls are not offered, and those above Blokko's\nhigh-value transaction threshold are shown with a warning.<\/p><\/dd>\n<dt id=\"can%20the%20same%20payment%20be%20confirmed%20twice%3F\"><h3>Can the same payment be confirmed twice?<\/h3><\/dt>\n<dd><p>No. For a payment made from one of your pages, the move to \"paid\" is a single atomic transition on\nthe payment's own record: only the process that actually performs it fires the extension event, and\na second attempt on the same payment does nothing and duplicates no events.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20store%20card%20data%20or%20wallet%20keys%3F\"><h3>Does the plugin store card data or wallet keys?<\/h3><\/dt>\n<dd><p>No. The buyer picks the method and pays on the page hosted by Blokko; the plugin never receives or\nstores that data. What stays on your site is your Blokko account credentials and the payment\nrecords.<\/p><\/dd>\n<dt id=\"can%20i%20use%20it%20in%20production%20today%3F\"><h3>Can I use it in production today?<\/h3><\/dt>\n<dd><p>Yes. Production is selectable on the settings screen and each environment keeps its own\ncredentials, so a store with production selected and production credentials saved charges for\nreal. Do it deliberately: switching the selector does not move anything else, and the environment\nyou save is the one this store transacts against from then on.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20if%20i%20uninstall%20the%20plugin%3F\"><h3>What happens to my data if I uninstall the plugin?<\/h3><\/dt>\n<dd><p>Everything the plugin created is removed: its options, the payment records and its scheduled tasks.\nOn a multisite installation, the cleanup applies to the site being uninstalled or to the whole\nnetwork, depending on how it is uninstalled.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First stable release. No functional changes since 0.5.0.<\/li>\n<\/ul>\n\n<h4>0.5.0<\/h4>\n\n<ul>\n<li>The \"Pay for order\" page (the link in the order email, or My account \u2192 Orders) now opens\nBlokko's payment page in the same window over your store as the checkout does, instead of\nsending the buyer away. It only steps in when the buyer chose Blokko, so other payment methods\non that page work exactly as before.<\/li>\n<li>When a payment takes longer than usual to confirm, the payment window says so and keeps\nchecking, instead of stopping; a buyer who closes it after returning sees that the payment is\nstill being confirmed.<\/li>\n<li>The payment window's waiting screens were redesigned: they stay readable on any theme, show\na moving progress indicator and the three steps of the payment, and announce each step to\nscreen readers.<\/li>\n<li>When the buyer comes back from Blokko's page, the store checks that payment with Blokko right\naway instead of waiting for its next automatic pass, so a payment is confirmed in seconds even\nwhen Blokko's notification does not reach this site. Those checks are limited to one every 30\nseconds for the whole store.<\/li>\n<li>Automatic payment confirmation now checks only the payments a buyer worked on in the last\n15 minutes, taking turns between them, so a store with a large number of abandoned carts\nconfirms real payments just as quickly and no longer asks Blokko about old abandoned ones.<\/li>\n<li>When a paid order is not marked as paid because a support-level filter holds settlement back,\nthe order note says so.<\/li>\n<li>The notification connection details describe a failure only by what this site can actually\nknow: whether it could not reach Blokko, or Blokko refused the request.<\/li>\n<li>The Blokko section in WooCommerce's payment settings now explains what Blokko does for your\nstore, shows your connection status, and offers a link to connect or request credentials \u2014\nwithout leaving the section. The Blokko Payments settings screen links back to it too, so you\ncan move between the two without guessing where either one lives.<\/li>\n<li><p>After activating the plugin, a dismissible notice tells you when your store still needs\ncredentials and where to add them \u2014 on the plugin's settings screen, WooCommerce's Payments\nscreen, and the plugins list. It goes away on its own once your credentials are complete.<\/p><\/li>\n<li><p>If your store stops receiving payment confirmations, the connection details now offer\n\"Reconnect Blokko's notifications\": it tells Blokko to notify this site's address again, and\nsays so before it does. If a reconnect fails, the settings screen keeps saying so until one\nsucceeds.<\/p><\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Direct charges pay in the same window as WooCommerce checkouts. The charge form (block or\nshortcode) opens Blokko's payment page in a window over your page instead of sending the\nbuyer away, and brings them back to your page when the payment settles. Without JavaScript\nthe form still works the classic way.<\/li>\n<li>A buyer who closes that window and presses Pay again gets the same payment page back \u2014 never\na second one \u2014 and pressing Pay twice in a row opens one window, not two.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Payments Blokko confirms are always marked as paid, with no switch to forget. An order or a\ndirect charge is settled only when Blokko confirms the exact amount and currency it asked for.\nTo refuse settlement on one site, whoever maintains it can use the <code>blokko_payments_settle_orders<\/code>\nor <code>blokko_direct_charge_settle_charges<\/code> filter (see the FAQ).<\/li>\n<li>Blokko Payments is what your store calls it. The payment method, the settings screen and the\nsubmenu all use the same name and speak in plain terms, and WooCommerce's \"Complete setup\"\nnow takes you to the Blokko Payments screen instead of somewhere you cannot finish from.<\/li>\n<li>Don't have credentials yet? The settings screen now offers to request them, right beside the\nplace they go, and tells you what it will send.<\/li>\n<li>The connection details and repair tools moved into a block you open only when you need them.\nNothing your store needs to take payments is hidden behind it.<\/li>\n<li>Your terminal type is worked out from the serial you enter, so there is one less field to get\nwrong.<\/li>\n<li>The webhook repairs itself. If your callback address moves because you changed permalinks,\nthe plugin re-registers it without asking. If your site address itself changed, it says so\nand waits for you: it will never send a registration you did not ask for.<\/li>\n<li>A direct charge that got stuck now finishes on its own once its payment window closes, and\nyou can ask Blokko about any charge from the Transactions screen instead of waiting.<\/li>\n<li>One order, one payment page. If a buyer closes the Blokko window without paying and comes\nback to buy the same thing again, WooCommerce now reuses the order and the payment page they\nalready have instead of creating a second order with a second page that can also be paid.\nBefore this, both pages stayed payable and nothing stopped a buyer paying twice.<\/li>\n<li>The new-order email to you now arrives when the payment is settled, instead of as soon as the\nbuyer is sent to the payment page. Your customer's email changes with it: the order waits in\n\"pending payment\" rather than \"on hold\", so they no longer receive the \"is on hold\" email at\nall, and WooCommerce sends them its order-received one when the payment settles. While the\npayment page is unpaid the order waits for payment and nobody is emailed.<\/li>\n<li>Fixed: switching the environment (sandbox\/production) on the settings screen without reloading\nleft the Merchant ID and API Key showing the previous environment's values; saving in that state\nsilently overwrote the new environment's credentials with the old ones. The selector now reloads\nthe page with the chosen environment before saving is allowed.<\/li>\n<li>Production is available. Both environments are selectable, each keeps its own credentials,\nterminal and callback state, and a store with production selected and production credentials\nsaved charges for real. The first real production invoice is still the last step to be exercised\nend to end.<\/li>\n<li>Fixed: the \"Cancel\" button on the API Secret field now uses WordPress' native styling for the\nshow\/hide password pattern.<\/li>\n<li>The collapsed API Secret field shows generic dots instead of looking empty.<\/li>\n<li>The webhook section now really registers the URL with Blokko, reverting to the previous URL on\nfailure, and keeps the callback URL visible and copyable.<\/li>\n<li>Active-environment badge (sandbox\/production) next to the screen title.<\/li>\n<li>Visual separation between the critical sections (credentials) and the optional ones\n(notifications).<\/li>\n<li><p>The payment method's default description no longer says the buyer is redirected to Blokko:\nthe Blokko checkout now opens in a window on your own checkout page, and the description\nworks on both paths. A store that saved a description of its own keeps it \u2014 check yours if\nit mentions a redirect.<\/p><\/li>\n<li><p>Settlement is applied automatically, with no switch to turn on: when Blokko confirms a payment for\nthe exact amount and currency an order asked for, that order is marked as paid. The Settlement\nsection is gone from the settings screen, and refusing settlement for one site is a code-level\ndecision, documented in this readme.<\/p><\/li>\n<\/ul>\n\n<p>Earlier releases are listed in changelog.txt.<\/p>","raw_excerpt":"Accept stablecoins, crypto and real-time payments in your WooCommerce checkout, and with a payment button on any WordPress page.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/376198","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=376198"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/blokko"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=376198"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=376198"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=376198"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=376198"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=376198"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=376198"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}