Accept crypto payments with PrestaShop
Add a non-custodial crypto payment module to PrestaShop with NoncePay. Customers pay their orders in USDT, USDC, BTC, ETH, SOL and more, forwarded to your own wallets.
The NoncePay module for PrestaShop adds a Pay with crypto payment option to your checkout. The customer places the order, pays on the NoncePay hosted payment page, and the order moves to Payment accepted once the payment is confirmed. Every payment is forwarded to your own wallet, minus our fee. There is no account, no API key and no withdrawal step.
Install
- Download
noncepay.zipfrom the latest release. Do not unzip it. - In the Back Office, go to Modules > Module Manager, click Upload a module and drop the zip.
- Click Configure, enter a receiving wallet for each family of coins you accept, then save.
Requires PrestaShop 8.x (1.7.8 also works) and PHP 7.4 to 8.3 with curl and openssl. Your store must be
reachable from the internet and not in maintenance mode so NoncePay can call its callback. The module is in English
and French. The source is on GitHub.
How it works
- At checkout the customer picks Pay with crypto and places the order, which is created in the Awaiting NoncePay payment status.
- The module creates a payment link for the order total in the order currency, valid 7 days, and redirects the customer to its page. Coming back from the order confirmation page or the order history reuses the same link; a new one is created only when the total changes or the link is about to expire.
- The customer picks a coin and pays. Each payment is forwarded to your wallet as soon as it confirms.
- Once the payments cover the order, NoncePay sends the link-paid callback. The module verifies
its
x-ca-signatureagainst the key from/pubkey/, checks the link and the amount, records the payment with the link id as transaction id and moves the order to Payment accepted, so a repeated callback is recorded once. - The customer is sent back to the order confirmation page, which says the payment is being confirmed. The order is only marked paid by the signed callback, never by this redirect.
Callbacks are listed in Advanced Parameters > Logs, attached to their order.
Settings
| Setting | Default | What it does |
|---|---|---|
| Wallets | empty | One per family: EVM, Tron, Bitcoin, Litecoin, Bitcoin Cash, Dogecoin, Solana; split syntax accepted |
| Coins offered | every coin of your wallets | Optional comma-separated tickers such as trc20/usdt,bep20/usdt,btc |
| Merchant name, logo | shop name, none | Shown on the payment page; the logo must be an https URL |
| Underpayment tolerance | 0% | 0 to 1%: how much less than the order total still marks it paid |
| Pinned public key | empty | Optional PEM key; empty fetches /pubkey/ and caches it |
Limits
- The cart currency must be one NoncePay prices (USD, EUR, GBP and about thirty others). For another currency the option is hidden, and the configuration page lists the currencies concerned.
- An overpayment is recorded in full as the order payment. An underpayment beyond the tolerance is asked for again on the payment page, and the order keeps waiting.
- A payment made after the link expired is still forwarded to your wallet and shows in the logs, but it does not mark the order paid: add it by hand on the order page.
- Refunds are sent from your wallet: NoncePay holds nothing to refund from.
Accept crypto payments with WHMCS
Add a non-custodial crypto payment gateway to WHMCS with the NoncePay module. Customers pay invoices in USDT, USDC, BTC, ETH, SOL and more, forwarded to your own wallets.
Accept crypto payments with Magento
Add a non-custodial crypto payment method to Magento 2 and Adobe Commerce with the NoncePay module. Customers pay orders in USDT, USDC, BTC, ETH, SOL and more, forwarded to your own wallets.