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

  1. Download noncepay.zip from the latest release. Do not unzip it.
  2. In the Back Office, go to Modules > Module Manager, click Upload a module and drop the zip.
  3. 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

  1. At checkout the customer picks Pay with crypto and places the order, which is created in the Awaiting NoncePay payment status.
  2. 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.
  3. The customer picks a coin and pays. Each payment is forwarded to your wallet as soon as it confirms.
  4. Once the payments cover the order, NoncePay sends the link-paid callback. The module verifies its x-ca-signature against 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.
  5. 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

SettingDefaultWhat it does
WalletsemptyOne per family: EVM, Tron, Bitcoin, Litecoin, Bitcoin Cash, Dogecoin, Solana; split syntax accepted
Coins offeredevery coin of your walletsOptional comma-separated tickers such as trc20/usdt,bep20/usdt,btc
Merchant name, logoshop name, noneShown on the payment page; the logo must be an https URL
Underpayment tolerance0%0 to 1%: how much less than the order total still marks it paid
Pinned public keyemptyOptional 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.

On this page