Skip to content

IntegrationsGuide

How to accept crypto payments on a website: 4 ways compared

Four ways to accept crypto payments with CryptoLike: a CMS plugin, the API or an SDK with a widget, a payment link, the Хорошоп connector. Steps and comparison.

CryptoLike gives a website four ways to accept crypto payments: a plugin for WooCommerce, OpenCart, PrestaShop or Magento 2; the REST API or an SDK with a hosted or embedded payment page; a payment link from the cabinet or Telegram; and a connector for Хорошоп. Each ends with a confirmed payment and a status your team can act on.

The four ways at a glance

CryptoLike puts the same payment page and the same payment statuses behind every way to accept crypto; what differs is who does the setup. A CMS plugin needs no developer, the API gives a backend team full control, a payment link needs no website, and the Хорошоп connector links a shop from the cabinet. Times assume a registered account and one test payment.

Way Who it is for What you need Time to first payment How you learn the result
CMS plugin Shops on WooCommerce, OpenCart 3/4, PrestaShop, Magento 2 Shop admin over https, an API key, a webhook endpoint 30–60 minutes The order status changes by itself
API or SDK, hosted page or widget Teams with their own backend: marketplaces, SaaS, apps A server that keeps the secret, an API key, an https endpoint About 10 minutes to a test payment, 1–3 days to launch Signed invoice.* webhooks or GET /v1/invoices/{id}
Payment link Freelancers, B2B invoices, sales in messengers A cabinet account; optionally the Telegram bot 5 minutes The cabinet and a Telegram message
Хорошоп connector Shops on Хорошоп A plan with API access, a separate admin, a «Cryptocurrency» payment method About 15 minutes The order is marked paid; the sync log shows each step

Downloads and details for each way are on the integrations page; shop scenarios are in crypto payments for online stores, services with their own backend in crypto payments for digital goods and SaaS, and balance top-ups in deposits to static addresses. Step-by-step code for your own backend: PHP, Node.js and Python.

Before you start

CryptoLike needs an account in the cabinet, a list of assets you want to accept and, for a plugin or the API, a site served over https. Only payouts need a verified account (KYB); payments, payment links, plugins and the Хорошоп connector work without it, so start the verification early only if you plan to pay out. Test first with test keys (ck_test_) and test networks.

The assets are Bitcoin, Litecoin, Ethereum with ERC20 USDT and USDC, and TRON with TRC20 USDT. Each one's network and confirmation threshold is in GET /v1/currencies and on the supported assets page. In the cabinet's Coins section, Enabled switches an asset on for your account, and For invoices decides whether payments offer it.

1. Choose the way that matches how you sell

Pick the CryptoLike way by where your customers already pay. A shop on WooCommerce, OpenCart, PrestaShop or Magento 2 installs the plugin; a shop on Хорошоп connects in the cabinet; a site or app with its own backend uses the API or an SDK; a business without a website sends payment links. All of them credit the same balance.

Not sure yet? Create one payment link: in five minutes you see the payment page and the statuses your customers will see.

2. Create an API key in test mode

CryptoLike authenticates a plugin or your server with an API key: in the cabinet open Developers → API keys, create a key with the create_invoice and read permissions and copy the secret — it is shown once. A ck_test_ key works with test networks through the test API URL that CryptoLike support gives you (on mainnet it gets 401 auth.test_key); payment links and the Хорошоп connector need no key at all.

Keep the secret on the server, never in a web page or an app. Lost it? Create a new key, switch the integration to it and revoke the old one.

3. Connect the payment flow

CryptoLike creates a payment the same way in every flow: an amount, a currency — USD, EUR, UAH, GBP or CAD, or a coin ticker — and your order reference produce a payment with a checkout_url. Unless you fix the asset with coin_id, the payer chooses it on that page from the coins you offer for invoices, each shown with an approximate amount marked ≈; allowed_coin_ids or a plugin's coin list narrows the choice for one payment. The rate is locked at the choice for the payment's lifetime, and the page shows the amount, network, address, QR code and time left.

A CMS plugin. Upload the archive for WooCommerce, OpenCart, PrestaShop or Magento 2 in the shop's admin panel, paste the key ID and secret and press «Check connection». Add the plugin's webhook URL as an endpoint in Developers → Webhooks with every invoice.* event and paste the endpoint secret back: the plugin sends webhook_url with every payment, so without an enabled endpoint no payment can be created. A double click or a reload returns the order's open payment instead of a second one.

The API or an SDK. Your server calls POST /v1/invoices and sends the customer to checkout_url, or keeps them on your page with the checkout widget. The SDKs for TypeScript, Python, Go and PHP sign requests and add an Idempotency-Key; they are pre-release and install from the repository.

ts
const invoice = await api.invoices.create(
  { amount: "10.50", currency: "USD", order_id: "A-1001" },
  "order-A-1001", // Idempotency-Key: a retry returns the same payment
);
// redirect the customer to invoice.checkout_url

A payment link. In the cabinet open Invoices → Create invoice, enter the amount, the currency and a description, then copy the link or send it to a messenger. In the Telegram bot the /invoice command does the same. See payment links.

The Хорошоп connector. Хорошоп takes no third-party payment plugins, so CryptoLike connects through its API: create a separate admin in Хорошоп, add a «Cryptocurrency» payment method of the simple type, then open Integrations → Хорошоп in the cabinet and press «Check». The customer gets the payment link by e-mail within about a minute of the order.

4. Learn the result from a signed webhook

CryptoLike reports the result with a webhook signed with HMAC-SHA256: invoice.paid means the funds are confirmed and credited to your balance. Your endpoint answers 2xx within 10 seconds; a failed delivery is retried after 1 min, 5 min, 15 min, 1 h, 6 h and 24 h with the same event_id, so process each event once.

Plugins and the Хорошоп connector apply these events for you. With the API, check the webhook signature over the raw body — see verify crypto payment webhooks — and ship on paid; other states are in the status model. Your handler rejects real deliveries? It probably holds the wrong endpoint secret. The secret is shown only once, so rotate it in Developers → Webhooks and deploy the new value.

5. Make a test payment and go live

CryptoLike test payments run on test networks: test coins have no value, and CryptoLike support can send you some; send the exact amount to the address on the payment page and watch the status move from pending to paid. Then switch the plugin or your server to a live key and remove test keys and the test base URL from the production configuration. The full rehearsal, status by status: how to test crypto payments.

Underpay once on purpose by more than 0.5 % to see underpaid, and let one payment run out to see expired. A store on a CMS can follow the full launch checklist for online stores. Хорошоп has no sandbox: order a cheap hidden test product and pay the small amount.

Errors and what to do

CryptoLike answers every API error in one envelope: an HTTP status, a machine-readable code, a message for people and details that name the problem. Branch on code and fix what details.field or details.reason points to. These are the errors a new integration meets most often; the full list is in the API reference.

HTTP · code What happened What to do
400 validation_error, field currency The order's currency is not enabled for your account Price the order in a code from GET /v1/fiat-currencies (by default USD, EUR, UAH, GBP, CAD) or in crypto
401 auth.invalid_signature The request signature does not match Check the signing against the reference vector in API authentication
403 auth.permission_denied The key lacks a permission (details.required) Create a key with create_invoice and read
409 conflict, order_invoice_mismatch The order was edited after its payment was created Cancel the open payment (details.invoice_id) while it is new and create a new one
409 conflict, order_has_payment The order already received funds Do not create another payment; resolve the order by hand
422 no_allowed_coins None of the coins in allowed_coin_ids (or in the plugin's coin list) is offered for invoices in this currency Pick other coins, or turn For invoices on for one of them in the cabinet's Coins section
429 rate_limited Too many requests for this key (600/min by default) Wait Retry-After seconds
503 unavailable The rate feed or the asset is temporarily unavailable Retry with backoff, or create the payment in crypto

FAQ

Can I accept crypto payments without a website?

Yes. A CryptoLike payment link needs no website and no code: create a payment in the cabinet or with /invoice in the Telegram bot and send the link. The customer gets the same payment page online shops use, and you see the status in the cabinet or in a Telegram message.

Which way is the quickest to launch?

A payment link takes about 5 minutes, the Хорошоп connector about 15, a CMS plugin 30–60 minutes and an API integration 1–3 days, with a test payment first. A first test payment through the API takes about 10 minutes.

How much does it cost?

CryptoLike charges a platform fee per asset only when a payment is confirmed and credited; creating a payment costs nothing. The current schedule is on the pricing page.

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.