Skip to content

Integrations

Adding crypto payments to an online store: a launch checklist for WooCommerce, OpenCart, PrestaShop and Magento

Everything to decide and check before your store takes crypto: plugin and versions, API key, webhook, coins, time to pay, order statuses, refunds and a test plan.

Key takeaways

  • Install the CryptoLike plugin for your platform, give it an API key with create_invoice and read only, and add its webhook URL as an endpoint with every invoice.* event.
  • Decide before launch: which coins to offer, how long customers have to pay, which order status each payment state gets, and who handles partial and late payments.
  • Refunds are payouts from the cabinet: plan how support asks for an address and a network.
  • Run the test plan — paid, partial with top-up, expired, late, double click — and make sure the 15-minute reconciliation job runs.

To add crypto payments to a WooCommerce, OpenCart, PrestaShop or Magento store, install the CryptoLike plugin for your platform, connect it with an API key that can only create and read payments, and register its webhook URL in the cabinet. That part takes minutes. The launch goes smoothly when you also decide in advance which coins to offer, how long customers have to pay, what happens to partial and late payments, and how refunds work — and when you test each of those cases once. This checklist walks through all of it. If you have not chosen a provider yet, start with the 10 questions to ask a crypto payment gateway.

The short checklist

Each line below is covered in a section of this article. Print it, or copy it into your launch ticket.

  1. The plugin for your platform and version is installed and active.
  2. An API key with create_invoice and read only is saved in the plugin; "Check connection" answers "Connected".
  3. The plugin's webhook URL is an endpoint in the cabinet with every invoice.* event, and its secret is in the plugin.
  4. The store currency is enabled for payments in your account.
  5. Coins, payment page mode and time to pay are chosen.
  6. Each payment state maps to an order status your team understands, including a review status.
  7. Support knows what to do with partial, late and overpaid payments, and how to refund.
  8. The 15-minute reconciliation job runs.
  9. The test plan passed; the live key and the default API URL are in place.

1. Pick the plugin for your platform

CryptoLike has a plugin for each of four CMS platforms, all following one contract: one payment per order, the order status driven by signed webhooks, a check every 15 minutes that catches up on missed events, and logs without secrets or customer data. The platform-specific parts are the versions, where the webhook arrives and how the 15-minute check runs.

Platform Versions 15-minute check
WooCommerce WordPress 6.1+, WooCommerce 7.0+, PHP 7.4–8.4; block and classic checkout WP-Cron
OpenCart 3.0.x (PHP 7.4+) and 4.0.x (PHP 8.0–8.2); 4.1 is not supported A URL for your server's cron
PrestaShop 8.x, tested on 8.1; 1.7.8 is the declared minimum A URL for your server's cron
Magento 2 2.4.6+, PHP 8.1–8.4, Luma checkout Magento cron job cryptolike_reconcile

Where the webhook arrives (the plugin settings show the full URL) and where the plugin writes its log:

  • WooCommerce: /wp-json/cryptolike/v1/webhook; log in WooCommerce → Status → Logs, source cryptolike.
  • OpenCart 3.0: index.php?route=extension/payment/cryptolike/callback; OpenCart 4.0: index.php?route=extension/cryptolike/payment/cryptolike.callback; log system/storage/logs/cryptolike.log.
  • PrestaShop: /module/cryptolike/webhook; log in Advanced Parameters → Logs, object Cryptolike.
  • Magento 2: /cryptolike/webhook/, per store view; log var/log/cryptolike.log.

Versions as stated in each plugin's documentation on 2026-09-24. A Хорошоп shop needs no plugin: see the Хорошоп connector. A store on its own code uses the API instead — see how to accept crypto payments on a website.

2. Connect the account: key and webhook

The plugin needs two secrets from the CryptoLike cabinet: an API key to create payments, and the secret of a webhook endpoint to verify what CryptoLike sends back. Both are write-only in the plugin: after saving, they are never shown again.

  • API key. In Developers → API keys, create a key with two permissions: create_invoice and read. A shop never needs withdraw. Add the IP address of your web server to the key's IP whitelist if it is fixed.
  • Webhook endpoint. Copy the webhook URL from the plugin settings, add it in the cabinet under Developers → Webhooks → Add endpoint with every invoice.* event, and paste the endpoint's secret into the plugin. Without an enabled endpoint the store takes no crypto orders: CryptoLike refuses a payment that carries a webhook URL while your account has no enabled endpoint, and all four plugins hide the payment method until the secret is saved.
  • Reachability. The shop must answer over https:// from the internet. Maintenance, "coming soon" and firewall plugins must let the webhook path through; CryptoLike does not follow redirects.

Press Check connection: the plugin answers "Connected: N currencies available." If it answers "Connection failed" with auth.invalid_key or auth.invalid_signature, the key ID or secret is wrong; auth.ip_not_allowed means the key's IP whitelist does not include your server. How signatures work: verifying webhooks.

3. Check the store currency

The plugin creates each payment in the order's currency, and CryptoLike converts it into the coin the customer chooses, at a rate locked until the payment's deadline. USD, EUR, UAH, GBP and CAD are enabled for every account by default. In any other currency the payment cannot be created: when the customer places the order, the checkout says that crypto payment is not available for that currency and asks them to choose another payment method. In PrestaShop and Magento the order already exists at that point and stays awaiting payment.

The crypto amount is the order total at the market rate, with no conversion spread, and the platform fee — 0.8 % under the standard rates, with a minimum per asset — is charged to you when the payment is confirmed: the plugins do not pass it to the customer. How the amount is calculated: pricing in USD, getting paid in crypto; the fee schedule is on the pricing page.

4. Choose coins, page mode and time to pay

Three settings shape what the customer sees. None of them is hard to change later, but they are worth a deliberate choice before the first order.

  • Coins. By default the customer picks a coin on the CryptoLike payment page from those enabled in your account. WooCommerce, OpenCart and PrestaShop can show the coin list in your own checkout instead. USDT on TRON is the usual first choice; add Bitcoin and USDT on Ethereum if your customers ask. The full list is in the coins catalogue.
  • Payment page mode. Redirect the customer to the CryptoLike payment page, or embed it on your order confirmation page. Embedding needs your shop's address in the cabinet under Settings → Integration → Allowed origins.
  • Time to pay. Empty means your account's default — 30 minutes unless changed. Longer suits customers who buy coins on an exchange first; shorter limits market movement for volatile coins.

Also choose what happens when time runs out: cancel the order, or keep it pending so the customer can start a new payment from "Pay for order".

5. Map payment states to order statuses

Every plugin turns a payment state into an order state by the same rules; you choose the exact status names in the settings. Two rules make the mapping safe: a lower state never replaces a higher one, and money that needs a decision goes to a review status, never to paid. Make sure your team knows what the review status means.

Payment Order (default) Who acts
Created Pending payment Nobody
Transfer detected Unchanged, note with the transaction ID Nobody
Confirmed (paid) Processing: stock, e-mails, fulfilment as usual Warehouse
Paid more than the total Processing, with a note about the surplus Support: refund or credit the surplus
Partial, before the deadline On hold, note with the missing amount Nobody: the customer tops up
Partial after the deadline, late payment, second payment, reversal Review status Support decides
Expired Cancelled, or kept pending Nobody

Magento uses its own Payment Review state with Accept and Deny buttons for review cases; a Magento order that was already cancelled stays cancelled with a comment, because Magento cannot reopen it. Details per platform are on each integration page.

6. Agree on partial, late and refunded payments

Crypto transfers are pushed by the customer, so a store sees cases a card processor hides. Write down, before launch, who handles each case and how, so the first one does not reach a developer.

  • Partial payment. By default a shortfall of up to 0.5 % of the amount counts as paid, so only a larger one leaves the payment partial. The customer sees how much is missing and can top up to the same address until the deadline. After the deadline: ship for the partial amount, ask for the rest with a new payment, or refund.
  • Late payment. The funds are on your balance; the order is in review. Ask the customer whether they still want the order.
  • Overpayment. The order is paid; settle the surplus with the customer — refund it or count it towards the next order.
  • Refund. A blockchain transfer cannot be pulled back, and plugins do not refund. Ask the customer for an address and its network, then send a payout from the cabinet; the estimate shows the fees before you confirm.

Each case, with the statuses and webhooks behind it, is explained in underpaid, overpaid and late crypto payments. For refunds, whitelist regular addresses and set a second approval for large amounts — see protect crypto payouts.

7. Make sure the 15-minute check runs

Webhooks are the main channel, but a store can be down or blocked when one arrives. Each plugin therefore re-reads open payments of the last 7 days every 15 minutes, so an order catches up even if a webhook never reached the shop. On WooCommerce this runs on WP-Cron; on sites with DISABLE_WP_CRON, call WP-Cron from the system cron. On OpenCart and PrestaShop, add the plugin's reconciliation URL to your server's cron. On Magento, the Magento cron must be running.

After the first orders, check the plugin's status: WooCommerce shows "Last verified webhook" in the settings. An empty value means webhooks do not reach the shop, and orders move only through the 15-minute check.

8. Run the test plan, then go live

Test each case once before real customers find it. Test mode needs two things in the plugin: a ck_test_ key and the test API URL in the API URL setting — ask CryptoLike support for it; with the default URL the connection check fails with auth.test_key. The plugin then works with test keys and test networks and shows a "Test mode" badge at checkout. Test coins have no value, and CryptoLike support can send you some. The plugin itself refuses a live key in test mode and a test key in live mode. Finish with one small real order in the coin you expect most. How the test environment differs from production, and which errors mix them up: testing crypto payments before launch.

Test Expected order state
Pay the exact amount Processing after confirmations; the payment page shows "Payment confirmed."
Pay part, then top up before the deadline On hold, then Processing
Let the time run out Cancelled, or pending (your setting)
Pay after the deadline Review status; funds on your balance
Press "Pay" twice, reload the page One payment page for the order
Stop the webhook (wrong secret), then fix it The order catches up within 15 minutes

When everything passes, switch off test mode, restore the default API URL, paste a live key and place the first real order. For the store-side picture of the same flow see crypto payments for online stores.

FAQ

Which API key permissions does a store plugin need?

Two: create_invoice to create a payment for each order, and read to check payments and the currency list. A store never needs withdraw. Limit the key to your web server's IP address when it is fixed, so a leaked key cannot be used elsewhere.

Does the plugin register the webhook automatically?

No. The plugin shows its webhook URL; you add it in the CryptoLike cabinet under Developers → Webhooks as an endpoint with every invoice.* event and paste that endpoint's secret into the plugin. Until then the store takes no crypto orders: all four plugins hide the payment method while the secret is empty, and CryptoLike refuses a payment that carries a webhook URL while your account has no enabled endpoint.

Can customers pay in every currency my store uses?

The store currency must be one CryptoLike accepts: USD, EUR, UAH, GBP or CAD, all enabled by default. In another currency a payment for the order cannot be created: when the order is placed, the checkout says that crypto payment is not available for that currency. To ask for another currency, write to support: a currency is added only when two independent sources quote its rate.

How do I refund a crypto order?

Plugins do not refund, because a blockchain transfer cannot be pulled back. Ask the customer for an address and its network, then send a payout from the CryptoLike cabinet. The estimate shows the platform fee, the network fee and the total before you confirm.

What happens if my store is down when a payment is confirmed?

CryptoLike retries the webhook for about 31 hours, and the plugin also re-reads open payments every 15 minutes. When the store is back, the order moves to the right status without manual work, as long as the reconciliation job runs.

Terms used here

Read next

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.