=== Super Duper Crypto Gateway ===
Contributors: rogerruckstuhl
Tags: woocommerce, cryptocurrency, bitcoin, payment gateway, solana
Requires at least: 6.4
Tested up to: 7.0
Requires PHP: 8.0
Stable tag: 1.2.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Accept Bitcoin, Solana, Tron and the major EVM chains in WooCommerce. Customers pay straight to your own wallet, verified on chain.

== Description ==

**Super Duper Crypto Gateway** lets your WooCommerce shop accept cryptocurrency without a payment processor in the middle. The customer pays from their own wallet directly to your address, and the plugin confirms on the blockchain that the money really arrived before the order moves on.

It also works without WooCommerce: other plugins - a form, a booking or a membership plugin - can request a payment through it and be told, once the blockchain confirms, that it went through.

🇨🇭🇩🇪🇦🇹 *Hinweis für DACH-Nutzer: Plugin und Support sind auf Deutsch (Schweiz/Deutschland/Österreich) verfügbar. Die deutschen Übersetzungen werden über translate.wordpress.org ausgeliefert.*

**Non-custodial by design.** There is no account to open, no deposit to hold, and no third party that could freeze your funds. Payments go wallet to wallet; this site only watches the blockchain to see that they did.

= Four payment methods, two ways to pay =

Each method is switched on separately and has its own settings, so a shop can offer one, some or all of them.

**Cryptocurrency** covers the EVM chains and uses the customer's browser wallet: they pick a currency and network on the payment page and confirm the transaction in MetaMask or whatever wallet they have installed.

**Bitcoin, Tron and Solana** need no browser extension at all. The payment page shows a QR code and an exact amount; the customer pays from any wallet app, and the shop finds the payment on the blockchain by itself. Nothing has to be typed and nothing has to be pasted.

= How a payment works =

1. The customer picks a crypto payment method at checkout. WooCommerce creates the order as pending.
2. On the payment page they choose a currency. The plugin quotes the exact amount at the current rate and freezes it.
3. They pay - from their browser wallet, or by scanning the code with a wallet app.
4. The server reads the transaction back from the blockchain and checks that it really pays this order.
5. Only then does the order move on.

= Verification is not optional =

A browser can only ever claim that a payment happened. This plugin treats that claim as unproven until the chain says otherwise, and it checks more than just "did money arrive":

* **Recipient** - the funds must have gone to your address, read from the transaction itself.
* **Amount** - each payment is quoted an amount that no other open payment is asking for, down to the smallest unit, and the transfer has to match it exactly. That unique amount is what makes a payment attributable to one order and only one order.
* **Timing** - the transaction must be newer than the quote, which makes older transfers to your address useless to somebody who read one off a public block explorer.
* **Uniqueness** - one transaction pays one order, enforced with a lock so two simultaneous requests cannot both claim it.
* **Sender** - on the EVM chains the paying wallet is recorded before the payment is signed and cannot be changed afterwards, so a transaction sent by somebody else does not count.
* **Settlement** - the order waits until the payment is safe from being undone: enough confirmations on Bitcoin, Tron and the EVM chains, and finality on Solana, which settles by consensus rather than by depth.

= Supported networks and currencies =

* **Bitcoin** - as its own payment method, with QR code and automatic matching
* **Tron** - as its own payment method: TRX, USDT and USDC, with QR code and automatic matching
* **Solana** - as its own payment method: SOL, USDC and USDT, with a Solana Pay code and automatic matching
* Ethereum - ETH, USDC, USDT
* Polygon - POL, USDC (native), USDC.e (bridged), USDT
* Base - ETH, USDC, USDT
* BNB Smart Chain - BNB, USDC, USDT
* Arbitrum One - ETH, USDC, USDT
* OP Mainnet - ETH, USDC, USDT
* Avalanche - AVAX, USDC, USDT
* Linea - ETH, USDC, USDT
* Sei - SEI, USDC, USDT
* Sepolia test network - ETH, USDC (test mode only)

Polygon carries two different USDC tokens and wallets label both of them simply "USDC". Both are offered, so a customer holding the older bridged USDC.e can pay without running into an unexplainable failure.

Test mode and live mode are mutually exclusive: with test mode on, only test networks are offered, so a live shop can never be paid in worthless faucet coins by accident.

= What you need =

* WooCommerce, if you want a checkout gateway. Without it the plugin still works as a payment provider for other plugins.
* A wallet address you control, for each method you switch on - an EVM address for the cryptocurrency method, and a Bitcoin, Tron or Solana address for those.
* HTTPS on your site - browser wallets refuse to work on insecure origins.
* A shop currency that can be converted to crypto rates (EUR, CHF, USD, GBP and around twenty more).

No API keys and no accounts are required. The public blockchain endpoints work out of the box, and you can point the plugin at your own node or provider if you prefer.

== External services ==

This plugin relies on external services to price orders and to verify payments. Nothing is sent to them that could identify your customers.

**1. CoinGecko price API (api.coingecko.com)**
Used to convert your shop currency into a crypto amount whenever an order is priced. The request contains only the cryptocurrency identifiers and your shop's currency code. No order data, customer data or site identifier is transmitted. Results are cached for five minutes.
Terms: https://www.coingecko.com/en/terms - Privacy: https://www.coingecko.com/en/privacy

**2. Public blockchain RPC endpoints (publicnode.com by default)**
Used to read transactions, receipts and block data when verifying a payment, and by the customer's wallet when adding a network. The request contains a transaction hash or block number - all of it already public information on the blockchain. No order or customer data is transmitted. You can replace the endpoint for each network in the gateway settings with your own node or provider.
Terms: https://www.publicnode.com/terms - Privacy: https://www.publicnode.com/privacy

**3. Bitcoin block explorers (mempool.space, blockstream.info)**
Used only when the Bitcoin payment method is enabled, to look up transactions to your own Bitcoin address and the current block height. The request contains your receiving address or a transaction id - both already public information on the blockchain. No order or customer data is transmitted. You can point the plugin at your own mempool or Esplora instance instead.
Terms: https://mempool.space/terms-of-service - Privacy: https://mempool.space/privacy-policy

**4. TronGrid API (api.trongrid.io)**
Used only when the Tron payment method is enabled, to look up incoming transfers to your own Tron address and the current block height. The request contains your receiving address, a token contract address or a transaction id - all of it already public information on the blockchain. No order or customer data is transmitted. An optional free API key can be entered in the settings; without one the service limits how often this site may ask. You can point the plugin at your own Tron node instead.
Terms: https://www.trongrid.io/terms - Privacy: https://www.trongrid.io/privacy

**5. Solana RPC node (api.mainnet-beta.solana.com by default)**
Used only when the Solana payment method is enabled, to look up transfers to your own Solana address and read the transactions behind them. The request contains your receiving address, a token mint address or a transaction signature - all of it already public information on the chain. No order or customer data is transmitted. You can point the plugin at your own node or a provider in the settings.
Terms: https://solana.com/tos - Privacy: https://solana.com/privacy-policy

**6. Etherscan API (api.etherscan.io) - optional**
Only contacted if you enter an Etherscan API key in the settings, in which case it is used as a fallback source for the same public transaction data. Without a key, no request is ever made.
Terms: https://etherscan.io/terms - Privacy: https://etherscan.io/privacyPolicy

The plugin does not load any script from a third party. The wallet connection uses the wallet extension the customer already has installed.

== Installation ==

1. Install and activate the plugin.
2. Go to **Crypto Payments > Settings**. Each payment method has its own tab.
3. In the tab of a method you want to offer, tick "Offer this payment method", enter the wallet address that should receive payments, and select the currencies you accept. The cryptocurrency tab uses one address across every EVM network by default, and lets you give a network its own address if you want to.
4. Repeat for each method. A method you leave switched off never appears at checkout.
5. Optional but recommended: switch on test mode under the General tab, pay a test order on the Sepolia network with free faucet coins, and confirm the whole flow works. Then switch test mode off.

**Crypto Payments > Payments** lists every payment, including the ones other plugins requested, and tells you why a method is not being offered at checkout when that happens.

== Frequently Asked Questions ==

= Where does the money go? =

Straight from your customer's wallet to the address you configured. It never touches this site, and the plugin never has access to it.

= What happens if a customer sends the wrong amount? =

The order is put on hold with a note showing what was expected and what arrived, and you decide. Nothing is completed automatically, in either direction.

= Why does the amount have so many decimal places? =

The last digits identify the order. That is what allows a payment to be matched to exactly one order and stops somebody from claiming a payment that was meant for another.

= Can a customer pay from a hardware wallet or an exchange? =

Yes. On Bitcoin, Tron and Solana that is the normal case anyway - scan the code or copy the amount and address, and pay from anywhere. On the EVM chains, open "Paying from another wallet", enter the address you are sending from, send the exact amount, and paste the transaction hash. It goes through exactly the same on-chain verification.

= Does the customer need MetaMask specifically? =

Only for the cryptocurrency method, and not MetaMask specifically: the plugin talks to the EIP-1193 standard that every browser wallet implements, so Rabby, Coinbase Wallet, Brave's built-in wallet and others all work the same way. Bitcoin, Tron and Solana need no browser extension at all.

= Why do Solana addresses get a warning in the settings? =

Because Solana addresses carry no checksum. Bitcoin and Tron catch a mistyped address the moment you save; Solana cannot, since the format holds nothing to check against. The plugin does the next best thing and tells you whether the address has ever been seen on the chain. Copy your address out of your wallet rather than typing it.

= What if the customer closes the browser after paying? =

A background job re-checks pending payments every five minutes and completes the order once it has enough confirmations.

= Does this work with the checkout block? =

Yes, and with the classic checkout. In both cases the payment happens on the payment page after the order is created.

= Are refunds supported? =

Not automatically. Blockchain transactions cannot be reversed, so a refund is something you send back manually from your wallet.

== Screenshots ==

1. Choosing a currency and network on the payment page.
2. The quoted amount, receiving address and wallet button.
3. Paying Bitcoin, Tron or Solana by scanning the code - no extension needed.
4. Live confirmation progress while the payment settles.
5. The payment panel on the order screen in wp-admin.
6. The settings, one tab per payment method.
7. Every payment in one list under Crypto Payments.

== Changelog ==

= 1.2.1 - 15.08.2026 =

* Improved: The notice confirming a manual payment re-check now appears only on the order screen it was started from, instead of on any admin page the parameter happened to reach.
* Fixed: The checkout diagnostic notice no longer carries an inline style; it uses WordPress' own admin list class.

= 1.2.0 - 15.08.2026 =

First public release.

* Four payment methods, each with its own settings and its own verification: **Cryptocurrency** (Ethereum, Polygon, Base, BNB Smart Chain, Arbitrum One, OP Mainnet, Avalanche, Linea, Sei, and Sepolia for testing), **Bitcoin**, **Tron** (TRX, USDT, USDC) and **Solana** (SOL, USDC, USDT).
* Non-custodial throughout: money goes from the customer's wallet to yours, and this plugin only reads the blockchain to confirm that it did.
* Every payment is verified server-side before an order moves on - recipient, exact amount, timing against the quote, one transaction per order, and enough confirmations or finality.
* Works with the block checkout and the classic checkout.
* Also usable **without WooCommerce**: other plugins can request a payment through the provider API and are told, once the chain confirms, that it went through.
* Its own admin area with every payment in one list, a reason shown whenever a method is not offered at checkout, and per-method settings in tabs.
* Order confirmations and emails show the crypto amount, the exchange rate at the time of the order, and a link to the transaction.

= 1.1.16 and earlier - development =

Not publicly released. The plugin was built and tested privately between 13.08.2026 and 15.08.2026: the EVM gateway and its verification core first, then Bitcoin, the provider API and the admin area, then Tron and Solana as payment methods of their own, plus the checkout-block registration, the tabbed settings screen, the receipt on orders and emails, and the regression suites that cover the fraud scenarios each method has to refuse.

== Upgrade Notice ==

= 1.2.1 =
Keeps the plugin's admin notices to the screens they belong to.

= 1.2.0 =
First public release. Accept Bitcoin, Solana, Tron and the major EVM chains in WooCommerce, straight into your own wallet, with every payment verified on the blockchain before the order completes.
