“Can I pay in USDT?” Say yes in ten minutes
For WooCommerce store owners: let buyers pay in the coin they already hold, and try the whole thing on a test order first.
The email is about a €48 order, and it’s one line long: “Can I pay in USDT?” Maybe their card keeps getting declined abroad, or their savings sit in stablecoins. You want the €48 either way.
Then your own questions start. USDT exists on several networks, so which one will they pay on? If a dollar goes missing on the way, does the order still count as paid, or does it sit there half-open? And there’s the refund, for someone who never gave you a card.
The network question is the one that loses sales. The shop asks for one coin on one network, the buyer holds something else, and they leave to convert it on another site and don’t come back. People keep USDT wherever their exchange put it.
Cherum Pay for WooCommerce, listed in the WordPress.org plugin directory since September, lets the buyer pick the coin and the network. You still get paid in one coin, USDC on the Base network, unless you pick another. USDC is a coin pegged to the US dollar.
They pay with what they already hold
On the payment page the buyer picks what to pay with: Bitcoin, Ethereum, Solana, TON, Tron, BNB or Polygon, or the dollar coins USDC and USDT across eight networks. If they hold ETH and the page asks for USDC, their wallet swaps it within the same payment. The 0.30% this costs shows up before they sign.
A buyer with no wallet at all can pay with a withdrawal from Binance or Coinbase. It counts like any other payment.
There’s a minimum order, and it depends on what the buyer pays with: $2 for USDC on the Base network, $175 on Ethereum, where moving money costs more. The payment page shows the live figure up front.
When the payment arrives a dollar short
Say a buyer pays a $50 order from an exchange that keeps $1 as its withdrawal fee, so $49 arrives. That still counts as paid. The order closes and your balance gets the $49 minus our fee. The order note says so.
A payment can come up to $2 short and still count as paid. On orders above $2,000 the allowance is 0.1% of the order instead. It never goes past 3% of the order, so on a $50 order the limit is $1.50 and the $1 gap passes.
Anything bigger leaves the invoice open, and the payment page asks the buyer for the rest. If they overpay, the same page offers the extra back.
What you receive
Prices stay in your store’s currency. The plugin handles 32 of them, so a €48 order becomes a €48 invoice and a shop in Bangkok keeps billing in baht.
Whatever the buyer paid with, your balance at Cherum receives USDC on Base, unless you’ve picked another coin in the dashboard. It arrives within minutes, less the 0.90% fee. A $100 order paid in USDC comes to $99.10. Payouts to your wallet go out after every payment, or past a threshold you set.
The order note records what arrived after fees in your store’s currency, along with the transaction reference.
Hosting has bad days. If your site misses the notification Cherum sends when a payment arrives, the order closes anyway. The order-received page and a check every 15 minutes both ask Cherum about unpaid orders.
Refunds from the screen you already use
Open the order, type the amount into WooCommerce’s own refund box and press Refund. Partial refunds work the same way.
Cherum then asks the buyer, on their payment page, which wallet should get the money back. They receive the full amount you typed, paid in USDC on Base and converted at the exchange rate recorded on the order. The refund’s fee and network cost come out of your balance on top. Each step shows up in the order notes. If a refund can’t go out, the note says why, for example that your balance is too low.
What it costs
We take 0.90% of each payment. The buyer pays a 0.30% swap fee, and only when their coin has to be converted to pay. There’s no monthly plan, setup fee, minimum volume or balance to pre-fund.
Cards usually cost a store 2 to 3%, so some shops pass part of the difference on as a crypto discount, which the plugin shows as its own line in the cart.
Limits
- Refunds need a live key (the one from step 5, not the test key). That’s on purpose, since they move real money.
- Refunds go out in USDC on Base only. If you’ve chosen to receive something else, switch back to USDC on Base first. The dashboard says so.
- Only the 32 currencies. A store priced in any other won’t show the method at checkout, and the settings screen says why.
- No notifications without https. A local test site gets none, though its orders still close through the 15-minute check.
- Not straight to your wallet. Until a payment reaches your balance, it sits on an address Cherum holds. That part takes minutes.
Your prices, checkout, order statuses and refund button stay as they are, on block checkout or classic. The plugin is open source (GPL) and carries no trackers. It sends nothing about a shopper until they pick Cherum Pay, and never their name or postal address. The code is on GitHub.
Try it without a real order
Setup takes about ten minutes, on a test key.
- In WordPress, go to Plugins → Add Plugin, search for “Cherum Pay” and install it. WooCommerce 9.0 or newer needs to be active.
- Open dashboard.cherum.io and sign in with an e-mail link. No wallet is needed until you withdraw. Create a test API key (it starts with
chm_test_) and tick the invoice and webhook permissions. - Paste the key into WooCommerce → Settings → Payments → Cherum Pay and save. The plugin sets up its own notifications and shows “Connected”.
- Place a test order and pick a coin on the payment page, as a buyer would. The page is marked TEST, and the payment address on it is a practice one that no network accepts. Then switch the dashboard to Test, open that invoice and press “confirmed” under Rehearse. The order closes in your store, notes and all.
- When you’re happy with it, swap in a live key made the same way, this time with refunds ticked.
If you’d rather click around first, there’s a demo store.
After step 5 you can answer that €48 email with a yes.