{"id":364056,"date":"2026-09-09T21:06:18","date_gmt":"2026-09-09T21:06:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/cherum-pay-for-woocommerce\/"},"modified":"2026-09-22T06:21:49","modified_gmt":"2026-09-22T06:21:49","slug":"cherum-pay-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/te.wordpress.org\/plugins\/cherum-pay-for-woocommerce\/","author":23559955,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.8","stable_tag":"1.3.8","tested":"7.1.2","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"Cherum Pay for WooCommerce","header_author":"Cherum","header_description":"Accept stablecoin payments in your WooCommerce store through Cherum Pay. The buyer picks the coin and the network; you get paid in the asset you chose.","assets_banners_color":"484552","last_updated":"2026-09-22 06:21:49","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/cherum.io\/woocommerce","header_author_uri":"https:\/\/cherum.io","rating":0,"author_block_rating":0,"active_installs":0,"downloads":109,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.3.8":{"tag":"1.3.8","author":"cherum","date":"2026-09-22 06:21:49","revision":3706686}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3706686,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3706686,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3706686,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3706686,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3706686,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.3.8"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3706686,"resolution":"1","location":"assets","locale":"","width":1280,"height":800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3706686,"resolution":"2","location":"assets","locale":"","width":1280,"height":800},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3706686,"resolution":"3","location":"assets","locale":"","width":1280,"height":800},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3706686,"resolution":"4","location":"assets","locale":"","width":1280,"height":800},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3706686,"resolution":"5","location":"assets","locale":"","width":1280,"height":800}},"screenshots":{"1":"The method at checkout, with the crypto discount line in the totals.","2":"The Cherum payment page: the buyer picks the coin and the network. Taken with a rehearsal key, so the page is marked TEST and the address it hands out is a practice one.","3":"Paid. One button takes the buyer back to the shop. Still the rehearsal key, hence the TEST mark.","4":"The order in WooCommerce: notes for each step, refund from the same screen.","5":"Settings: one key, connected."}},"plugin_section":[],"plugin_tags":[1886,157818,6593,209195,286],"plugin_category":[45],"plugin_contributors":[280000],"plugin_business_model":[],"class_list":["post-364056","plugin","type-plugin","status-publish","hentry","plugin_tags-bitcoin","plugin_tags-crypto-payments","plugin_tags-payment-gateway","plugin_tags-usdc","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-cherum","plugin_committers-cherum"],"banners":{"banner":"https:\/\/ps.w.org\/cherum-pay-for-woocommerce\/assets\/banner-772x250.png?rev=3706686","banner_2x":"https:\/\/ps.w.org\/cherum-pay-for-woocommerce\/assets\/banner-1544x500.png?rev=3706686","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/cherum-pay-for-woocommerce\/assets\/icon.svg?rev=3706686","icon":"https:\/\/ps.w.org\/cherum-pay-for-woocommerce\/assets\/icon.svg?rev=3706686","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/cherum-pay-for-woocommerce\/assets\/screenshot-1.png?rev=3706686","caption":"The method at checkout, with the crypto discount line in the totals."},{"src":"https:\/\/ps.w.org\/cherum-pay-for-woocommerce\/assets\/screenshot-2.png?rev=3706686","caption":"The Cherum payment page: the buyer picks the coin and the network. Taken with a rehearsal key, so the page is marked TEST and the address it hands out is a practice one."},{"src":"https:\/\/ps.w.org\/cherum-pay-for-woocommerce\/assets\/screenshot-3.png?rev=3706686","caption":"Paid. One button takes the buyer back to the shop. Still the rehearsal key, hence the TEST mark."},{"src":"https:\/\/ps.w.org\/cherum-pay-for-woocommerce\/assets\/screenshot-4.png?rev=3706686","caption":"The order in WooCommerce: notes for each step, refund from the same screen."},{"src":"https:\/\/ps.w.org\/cherum-pay-for-woocommerce\/assets\/screenshot-5.png?rev=3706686","caption":"Settings: one key, connected."}],"raw_content":"<!--section=description-->\n<p>Cherum Pay adds one payment method to your checkout. The buyer chooses it, lands on a Cherum payment page, picks a coin and a network they already use, and pays. When the payment confirms, a signed notification closes the order in your store. The fee is 0.90% of the payment; if the buyer pays in a coin other than the one the invoice asks for, converting it adds 0.30%.<\/p>\n\n<p>How it differs from the other crypto gateways in this directory:<\/p>\n\n<ul>\n<li><strong>The buyer chooses the coin and the network.<\/strong> Bitcoin, Ethereum, USDC, USDT, Solana, TON, TRON, BNB and Polygon, with the stablecoins available on eight networks. Most crypto plugins make the shop pick one coin on one network for everyone; here the person with the money decides.<\/li>\n<li><strong>You get one asset.<\/strong> Whatever the buyer pays with, your balance receives the asset you chose in your Cherum account. You never end up holding a coin you did not want.<\/li>\n<li><strong>Refunds from the WordPress order screen.<\/strong> Type the amount in the refund box WooCommerce already gives you and press Refund. Partial refunds work too, and a refund still waiting for the buyer's wallet can be called off from Order actions. You do not have to open another dashboard.<\/li>\n<li><strong>Setup is one field.<\/strong> Paste an API key, save. The plugin registers your store for notifications on its own; there is no secret to copy between two tabs.<\/li>\n<li><strong>0.90% of the payment.<\/strong> If the buyer pays in a coin other than the one the invoice asks for, converting it adds 0.30%; the payment page shows the figure before they send anything. No monthly fee, no minimum volume, no balance to top up before you can receive money.<\/li>\n<\/ul>\n\n<p>A few things you will notice once it runs:<\/p>\n\n<ul>\n<li><strong>The order note shows what actually arrived<\/strong> on your balance after fees, not what the buyer sent.<\/li>\n<li><strong>Underpaid is not \"lost\".<\/strong> If the buyer sends less than the invoice, it stays open and they can top it up. If they send more, the payment page offers them the surplus back and asks where to send it; the order note says what happened.<\/li>\n<li><strong>A lost notification costs minutes, not a stuck order.<\/strong> The \"order received\" page and a check every 15 minutes ask Cherum about unpaid orders and apply the answer through the same code the notification uses.<\/li>\n<li><strong>An optional discount for paying in crypto<\/strong>, shown as a line in the cart totals while this method is selected. Card processing costs you 2 to 3%; crypto costs 0.90%. Some shops hand part of that back.<\/li>\n<li><strong>Test mode.<\/strong> A key that starts with <code>chm_test_<\/code> makes orders and invoices that behave like real ones while no money can move.<\/li>\n<\/ul>\n\n<h4>What you need<\/h4>\n\n<ul>\n<li>A Cherum account and an API key. Both take a couple of minutes in the merchant dashboard at https:\/\/dashboard.cherum.io.<\/li>\n<li>A store on https. Notifications are only sent to a public https address; a local test site still works through the 15-minute check.<\/li>\n<li>A store currency Cherum can price: USD, EUR, GBP, CHF, JPY, CAD, AUD, NZD, SEK, NOK, DKK, PLN, CZK, HUF, RON, BGN, TRY, BRL, MXN, INR, ZAR, SGD, HKD, KRW, CNY, IDR, MYR, PHP, THB, ILS, AED, SAR. In any other currency the method stays hidden at checkout and the settings screen tells you why.<\/li>\n<li>Orders from $2. The floor belongs to the coin and the network, not to the plugin: moving money costs the network the same whether the payment is large or small. Today the cheapest is $2 (USDC on Base, Arbitrum, Optimism, Polygon or Solana), while other assets ask $10 to $40 and Ethereum asks $175, and the payment page names the live figure for each coin before the buyer sends anything. Under $0.50 Cherum will not create an invoice at all: the method takes itself off the checkout and the buyer is told why, and the settings screen names that figure in your own currency. Between $0.50 and the cheapest coin's floor the method is still offered and Cherum refuses the invoice when the order is placed. The buyer stays on the checkout with Cherum's own sentence, and nothing is charged.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin talks to Cherum Pay, a payment service run by Cherum (https:\/\/cherum.io). It creates payment invoices there and receives notifications about them. Nothing is sent until a customer chooses this payment method at checkout.<\/p>\n\n<p>Sent when an invoice is created: the order total, the store currency, the order number, a short line naming up to three items, the address to bring the customer back to after paying, the address to bring them back to if they leave without paying, and the store's language. No customer name or postal address is sent. The customer's e-mail address is sent only if you switch on \"Receipt from Cherum\", and then only so Cherum can e-mail them a receipt for the payment.<\/p>\n\n<p>Sent when you save the settings: the public address of this store's notification route, so Cherum knows where to send order updates.<\/p>\n\n<p>Sent when you refund: the invoice identifier, the amount and the reason you typed. When you cancel a refund, or when the plugin asks which refund is open on an order, only the refund or invoice identifier is sent.<\/p>\n\n<p>Received: the invoice identifier, the link to the payment page, and signed notifications about the invoice and refund status.<\/p>\n\n<p>Terms of service: https:\/\/cherum.io\/legal\/terms\nPrivacy policy: https:\/\/cherum.io\/legal\/privacy<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin. WooCommerce 9.0 or newer must be active.<\/li>\n<li>Go to WooCommerce \u2192 Settings \u2192 Payments \u2192 Cherum Pay.<\/li>\n<li>Paste your API key and save. The plugin connects the store and shows \"Connected\" with the endpoint number. Start with a <code>chm_test_<\/code> key: everything works and no money moves.<\/li>\n<li>Place a test order. The payment page shows a practice address; press the \"simulate\" control on it and watch the order close in your store.<\/li>\n<li>Swap in a live key when you are ready.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20plugin%20hold%20my%20money%3F\"><h3>Does the plugin hold my money?<\/h3><\/dt>\n<dd><p>The plugin holds nothing. Until settlement the deposit address belongs to Cherum, so the money is with Cherum, not with you: terms \u00a72.1. The plugin only creates invoices, reads their status and asks for refunds; what Cherum settles goes to the account you set up there.<\/p><\/dd>\n<dt id=\"how%20do%20refunds%20work%3F\"><h3>How do refunds work?<\/h3><\/dt>\n<dd><p>Open the order, press Refund, type the amount, confirm. Cherum reserves the amount on your balance and asks the buyer, on the payment page, for the wallet to send it to; the money leaves once they answer. If the balance is short or the network cost is higher than the amount, the refund is refused and the order note says why.<\/p>\n\n<p>One refund at a time per payment. A refund waiting for a wallet can be called off with Order actions \u2192 \"Cancel Cherum refund\" \u2192 Update, which puts the reserve back on your balance and lets you start another one. Deleting the refund line WooCommerce recorded does the same.<\/p><\/dd>\n<dt id=\"what%20if%20the%20shopper%20closes%20the%20browser%20after%20paying%3F\"><h3>What if the shopper closes the browser after paying?<\/h3><\/dt>\n<dd><p>The order still closes. The signed notification decides the order, not the browser.<\/p><\/dd>\n<dt id=\"why%20does%20the%20method%20not%20appear%20at%20checkout%3F\"><h3>Why does the method not appear at checkout?<\/h3><\/dt>\n<dd><p>Four usual reasons: no API key, a store currency Cherum cannot price, the method is switched off, or the order is smaller than the $0.50 Cherum can invoice at all. The settings screen says which, and a buyer looking at an order too small to pay in crypto is told so at the checkout. An order above $0.50 but below the cheapest coin's floor, $2 today, still shows the method: Cherum refuses that invoice when the order is placed and names the figure.<\/p><\/dd>\n<dt id=\"my%20store%20has%20no%20https%20yet.%20does%20it%20work%3F\"><h3>My store has no https yet. Does it work?<\/h3><\/dt>\n<dd><p>Orders still close, through the check that runs every 15 minutes. Notifications within seconds need a public https address.<\/p><\/dd>\n<dt id=\"what%20does%20test%20mode%20do%3F\"><h3>What does test mode do?<\/h3><\/dt>\n<dd><p>Orders, invoices, notifications and refunds behave like real ones. The payment address is a practice marker that no network accepts, so nothing can be paid by accident.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20block%20checkout%3F\"><h3>Does it work with the block checkout?<\/h3><\/dt>\n<dd><p>Yes, with the classic checkout and with the Cart and Checkout blocks. Nothing to switch. Up to 1.3.2 the crypto discount was the exception: it appeared in the block checkout and never in the classic one. It works in both from 1.3.3.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<p>The three most recent releases are here; everything older is in changelog.txt, in the plugin folder.<\/p>\n\n<h4>1.3.8<\/h4>\n\n<ul>\n<li>The settings screen no longer says \"Connected\" over a connection Cherum has switched off. Cherum switches a notification endpoint off by itself: when the store's address answers \"no such route\" long enough (a plugin update, maintenance mode), when every delivery fails for days, or when another endpoint takes over the same address. The store now reads that state, switches notifications back on and prints the reason it was off; it also asks Cherum four times a day instead of only when somebody presses Save.<\/li>\n<li>Changing the API key no longer leaves a dead endpoint behind. This store keeps one notification secret, and Cherum keeps an endpoint per key: swapping the key, test to live or a re-issued one, used to register a new endpoint, overwrite the only secret, and leave the previous endpoint switched on and rejecting every delivery for a day and a half. The old endpoint is now switched off at the moment of the change, while the store still holds the key that is allowed to do it.<\/li>\n<li>Events that happen while notifications are off are no longer lost: Cherum holds them and sends them when the endpoint comes back on, and the store says how many are on their way.<\/li>\n<\/ul>\n\n<h4>1.3.7<\/h4>\n\n<ul>\n<li>A discount can no longer make an order too small to pay for. Cherum will not create an invoice under $0.50 at all, and with a large discount next to a coupon the cart could land under that: the buyer filled in the checkout, pressed \"Place order\" and was told \"Amount is below the minimum of $0.5\" with nothing they could do about it. The discount now stops at the smallest payable amount, whatever the rate and the currency.<\/li>\n<li>An order that is too small on its own does not offer this payment method at all, and when it is the only method the buyer is told why and what to do, instead of \"there are no payment methods for your location\", which was neither true nor useful. The settings screen names the figure. In a shop whose currency is not the US dollar the exact figure is the one Cherum priced your last order at, so it is known from your first Cherum order onwards.<\/li>\n<li>An invoice that expires on an order that has already been paid no longer writes to the buyer. An order can be paid on an invoice that was replaced since (a buyer coming back to a pending order and paying the first one), and when the replacement expired, \"Leave it pending\" e-mailed the person who had already paid the details of their order with a link to pay it. The expiry is recorded on the order and nothing else happens; the safety-net check no longer asks about paid orders either.<\/li>\n<\/ul>\n\n<h4>1.3.6<\/h4>\n\n<ul>\n<li>A refund that has not been paid out yet can be called off from the order screen: Order actions \u2192 \"Cancel Cherum refund\" \u2192 Update. Cherum allows one open refund per payment, and an open one can wait days for the buyer to give a wallet. Until now that left the shop unable to finish it, replace it or end it without opening another dashboard.<\/li>\n<li>Deleting the refund line WooCommerce recorded (Order \u2192 Refunds \u2192 \u00d7) cancels the Cherum refund too, so a payout can no longer reach the buyer with no record of a refund left in the store.<\/li>\n<li>An order put on hold because a refund failed is put back where it was when you delete that refund line. It used to stay \"On hold\" for ever, including when you did exactly what the note told you to do.<\/li>\n<li>\"A refund is already open on this payment\" now names the refund and says how to end it, instead of stating a rule you could not act on.<\/li>\n<li>The Cherum Pay box on the order screen names an open refund while there is one.<\/li>\n<\/ul>","raw_excerpt":"Crypto payments for WooCommerce: the buyer picks the coin and network, you settle in one asset and refund from the order screen. 0.90%.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/364056","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=364056"}],"author":[{"embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/cherum"}],"wp:attachment":[{"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=364056"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=364056"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=364056"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=364056"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=364056"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/te.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=364056"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}