Skip to content

Integrations · PrestaShop

Accept crypto payments in PrestaShop

Accept Bitcoin, USDT, Ethereum, Litecoin and TRON in PrestaShop 1.7.8 and 8. Install the module, paste the key; the order is marked paid once the payment confirms.

PrestaShop

PrestaShop 1.7.8 · 8.x

  • Module (.zip) — The archive is published with the next release — the guide explains installing from the repository.
Set up in the cabinetKeys, webhook URLs and downloads for this platform are in the cabinet under Integrations.

The CryptoLike module adds "Pay with crypto" to PrestaShop and moves the order to Payment accepted only when the payment is confirmed on the blockchain. PrestaShop then records the payment and, if you use them, the invoice. Customers pay in Bitcoin, USDT, Ethereum, Litecoin, TRON or USDC from their own wallet.

Requirements

The module supports PrestaShop 8.x and declares 1.7.8 as the minimum version. It was tested end to end on PrestaShop 8.1 with PHP 8.1; on 1.7.8 it needs PHP 7.4 or newer. The shop must be reachable over https:// from the internet so webhooks can arrive; the webhook endpoint needs no session or cookie and answers in maintenance mode too.

What Supported
PrestaShop 8.x; 1.7.8 declared minimum
PHP 7.4 and newer (8.1 tested)
Currencies, countries, carriers Enabled for all on install; untick in Payment → Preferences
Store currency USD, EUR, UAH, GBP or CAD (all five are enabled for every account by default)

What the module does

Installing the module adds three order states of its own: Awaiting crypto payment (the payment page is open or the transfer is confirming), Crypto underpaid (a partial payment the customer can still top up) and Crypto payment review (money that needs a person). Paid orders go to PrestaShop's Payment accepted, expired and cancelled ones to Canceled; you can change each in the settings.

  • Redirect or embedded page. The customer goes to the CryptoLike payment page, or sees it on the shop's order status page.
  • A status page for the customer, linked from their order details: "Payment detected. Waiting for confirmation.", "Payment confirmed.", what is missing after a partial payment, and Create a new payment when one expired.
  • A private message on the order for every step: payment created, transaction ID, paid amount, overpayment, what to do in review.
  • One open payment per order. A reload or a second click returns the same page; if the order total is edited, the old page is cancelled and a new one created.
  • Coin choice on the CryptoLike payment page or at the shop's payment step. Coins offered limits both; on the payment page none selected means every coin available for invoices in your account.
  • A reconciliation URL for the server cron, in case a webhook could not reach the shop.

1. Install the module

In the back office open Modules → Module Manager → Upload a module, choose the module archive from this page and press Configure. You can also unpack the zip into modules/ and install CryptoLike — crypto payments from the list. The module creates its tables and its three order states.

2. Connect your CryptoLike account

In the CryptoLike cabinet open Developers → API keys → Create key with the permissions create_invoice and read, and paste the key ID and the secret into the module settings; the secret is shown once. Copy the Webhook URL from the settings page (https://shop/module/cryptolike/webhook), add it in the cabinet under Developers → Webhooks → Add endpoint with all eight invoice.* events, and paste the endpoint's secret into Webhook secret.

3. Check the connection and go live

Press Check connection: "Connected: N currencies available." In Payment → Preferences, untick the currencies, countries or carriers where you do not want crypto. Add the Reconciliation URL from the settings to the server's cron every 15 minutes. Test first with a ck_test_ key and the test API URL in API URL (the default is production; ask CryptoLike support for the test URL): test keys work with test networks, the checkout shows "Test mode: testnet coins, no real funds.", and a live key is refused in test mode.

What happens to an order

Payment Order state (default) The customer sees on the status page
Created Awaiting crypto payment The payment page button, or the embedded page
Transfer detected Awaiting crypto payment "Payment detected. Waiting for confirmation."
Confirmed Payment accepted "Payment confirmed."
Partial payment, before the deadline Crypto underpaid How much is missing, to the same address, until when
Partial after the deadline, late payment, funds on a cancelled order, reversal after paid, changed order amount Crypto payment review A message for the case, for example "Payment received. The store is checking it and will contact you."
Expired Canceled, or kept awaiting (setting) "Payment expired. Create a new payment."

The time to pay is your account setting (30 minutes by default) unless you set another value in the module. The order page in the back office also shows the current payment: ID, state, deadline and the payment page link.

The same payment-to-order rules apply on every platform; the other shop platforms are compared in crypto payments for online stores.

Troubleshooting

You see What to do
The method is not in the checkout Save the key ID, the secret and the webhook secret; use a key whose prefix matches the mode; tick the cart currency in Payment → Preferences.
Orders stay "Awaiting crypto payment" after paying Open the endpoint's deliveries in the cabinet: 401 means the webhook secret differs; 404 or 503 points at the URL or at a proxy or WAF. Behind a CDN, allow POST to the webhook URL without a challenge.
"Connection failed: auth.…" auth.invalid_key or auth.invalid_signature: wrong key ID or secret. auth.ip_not_allowed: the key's IP whitelist does not include your server. auth.test_key: a ck_test_ key with the default API URL; test mode also needs the test API URL.
Webhook answered 503 not_configured The webhook secret is empty: paste it and save.

Logs are in Advanced Parameters → Logs, object type Cryptolike, without secrets, signatures, webhook bodies or customer data. Uninstalling removes the settings, both secrets and the module tables; the three order states stay hidden because existing orders use them.

For developers

The module implements the shared CryptoLike plugin contract: server-side payment creation with one open payment per order (idempotency_by_order_id), webhook signatures checked over the raw body, deduplication by event_id, a row lock on the order and a 200 answer only after the state is written. The archive includes a developer README with the module layout.

FAQ

What happens if the customer pays less than the order total?

The order moves to Crypto underpaid, and the status page shows the customer how much is missing, to which address and until when. If the rest arrives before the deadline, the order goes to Payment accepted. After the deadline it moves to Crypto payment review, and a private message on the order says what to decide.

What if the customer pays after the payment expired?

CryptoLike credits the funds to your balance, and the order moves to Crypto payment review instead of Payment accepted. The private message on the order shows the amount. You decide whether to fulfil the order or refund the customer; the module never marks such an order paid on its own.

How do refunds work?

A blockchain transfer cannot be reversed by the shop, so refunds are manual. Ask the customer for an address and send the amount as a payout from the CryptoLike cabinet. The estimate shows the platform fee and the network fee before you confirm; the rates are on the pricing page.

Which store currencies can I use?

The module creates each payment in the cart currency (USD, EUR, UAH, GBP or CAD), and CryptoLike converts it into the coin at a rate locked until the payment expires. A currency that your account does not accept makes the payment fail with "Crypto payment is not available", so untick it in Payment → Preferences.

Can I test the module without real money?

Yes. Switch on test mode, save a ck_test_ key and enter the test API URL that CryptoLike support gives you. Test keys work with test networks, and test coins have no value. A "Test mode" banner stays on the settings page and the checkout says "Test mode: testnet coins, no real funds." The form refuses a live key in test mode.

What does the customer see if the payment page cannot be created?

The order stays Awaiting crypto payment and the customer lands on the status page with the reason and a Create a new payment button. This happens when the API is unreachable or the currency is not enabled. The same page, linked from the customer's order details, later shows the live status.

Guides and articles

Terms used here

Start with a test payment

Create an account, ask support for the test environment and see a payment go from pending to paid on a test network.