Skip to content

Frequently asked questions about CryptoLike

Answers about CryptoLike: payment statuses, supported assets and networks, fees, payouts, CMS plugins, webhooks, SDKs, API keys and account controls.

CryptoLike is a crypto payment processing platform. This page answers the questions businesses and developers ask most often: how a payment moves from created to confirmed, which assets and networks work, how fees and payouts are handled, which integrations exist and which controls protect an account. Every answer links to the page with the full details.

Getting started

What is CryptoLike?

CryptoLike is a crypto payment processing platform. Businesses accept Bitcoin, Litecoin, Ethereum, TRON and the USDT and USDC stablecoins through a REST API, CMS plugins, payment links and a hosted checkout page, get the result by signed webhook, and send payouts from one balance. The overview of how CryptoLike accepts crypto payments shows the whole flow.

Can individuals use CryptoLike, or only businesses?

Both. CryptoLike is built for businesses, and private individuals can open an account and use the same tools: payment links, invoices, a balance and payouts. There is no separate product for individuals. Accepting payments needs no verification; payouts start after the account is verified, and businesses in regulated or higher-risk categories are reviewed individually during verification. More in about CryptoLike.

How long does it take to integrate CryptoLike?

A first payment on a test network takes about ten minutes: create an API key, call POST /v1/invoices from your server, send the customer to checkout_url and handle one signed webhook. Production uses the same three pieces of code; the rest of the work is mapping the result to your own order states. The CryptoLike developer quickstart walks through each step.

Do I need to run a node or hold private keys?

No. CryptoLike derives the addresses, watches the networks, counts confirmations, consolidates funds and signs payouts. Your integration is one REST API: create a payment, read its status, receive signed webhooks. Confirmed funds land on your platform balance. Payout addresses can be restricted to a whitelist, and large payouts can require a second approval. Details are in the CryptoLike developer guide.

Is there a test mode?

Yes. CryptoLike keys prefixed ck_test_ sign exactly like live keys and work with test networks through the test API URL; test coins have no value, and CryptoLike support gives you the URL and the coins. On mainnet a test key is refused with 401 auth.test_key. Keep test and live keys in separate configurations. The reference signature vector tells you in one call whether your signing is right. See test keys and test networks.

Which way of accepting crypto should I choose?

It depends on where you sell. A shop on WooCommerce, OpenCart, PrestaShop or Magento 2 installs the CryptoLike plugin; a shop on Хорошоп connects without a plugin; your own site or app calls the API or an SDK and can embed the payment page as a widget; without a website, a payment link from the cabinet or the Telegram bot is enough. Compare them on the CryptoLike integrations page.

Payments & statuses

What statuses can a CryptoLike payment have?

A payment moves new → pending → paid. pending means a transfer was detected and waits for confirmations; paid means the full amount is confirmed and credited. underpaid stays open for a top-up until the payment's time limit, then becomes final. expired (time limit passed, nothing confirmed) and cancelled (you cancelled it from new) are terminal. The same strings appear in the cabinet, the API and webhooks: payment status model.

How do I learn that a payment is confirmed?

Subscribe a webhook endpoint: every CryptoLike event is signed with HMAC-SHA256 and retried with the same event id, so your handler can act once and ignore repeats. Or read GET /v1/invoices/{id} from your server, no more often than every few seconds: status paid means the funds are confirmed and credited to your balance. The webhooks contract lists every event.

How does a payment priced in fiat work?

Create the payment in USD, EUR or another enabled fiat currency; currency also takes a coin ticker. The exchange rate is locked the moment the coin is known, at creation or when the payer chooses the coin on the checkout page, and holds until the payment expires. There is no conversion spread: the crypto amount is the price at the locked rate, rounded up to the coin's smallest unit. More on rate lock.

Which fiat currencies can I set a price in?

Set the price in USD, EUR, UAH, GBP or CAD, or in a coin; all five are enabled for every account by default. The payer pays in crypto at the rate locked when the asset is chosen. If two rate sources disagree on a pair beyond a set limit, the payment answers 503 unavailable until they agree: a guessed rate is never used. Another currency is added only when two independent sources quote it. Details in pricing in fiat.

Can I limit which coins the payer can choose?

Yes, in two places. In the cabinet's Coins section, For invoices decides which coins your payments offer; static addresses and payouts do not depend on it. For one payment, pass allowed_coin_ids in the API, pick fewer coins in the cabinet form, or tick coins in a plugin's settings. If none of the listed coins can be offered in that currency, the API answers 422 no_allowed_coins. Details in the invoice guide.

What if the customer pays less or more than the amount?

Less: the payment becomes underpaid, the page shows the remaining amount, and the customer can top it up to the same address until the payment expires; a shortfall within your account's tolerance still counts as paid. More: the payment is paid, the whole sum is credited to you and the webhook carries overpaid_amount, so you can settle with the customer. Read how CryptoLike handles underpaid payments.

What if the customer pays after the payment expired?

The funds are credited to your balance anyway. The payment keeps its status, gets late_payment: true, and CryptoLike sends invoice.late_payment. Decide with the customer whether to fulfil the order or return the funds; CMS plugins move such an order to review and never mark it paid automatically. For the customer the recovery is simple: payment expired, create a new payment. See expired payments.

Invoice or static address: which one do I need?

An invoice is a one-off payment for a fixed amount with a time limit: an order, a top-up, a subscription charge. A static address is a permanent deposit address for one customer, where every incoming transfer is credited after the confirmations of that asset: balances, deposits, recurring funding. In CryptoLike both are created with one API call and report through the same webhooks. Compare them on static addresses.

What happens if a confirmed transfer is reversed?

If a chain reorganisation reverts a confirmed transfer, CryptoLike recomputes the payment and sends invoice.reverted; paid_amount decreases and the status follows it. Stop fulfilment until a new invoice.paid arrives. Static addresses get deposit.reverted in the same case. CMS plugins move a reverted paid order to review so it is not shipped. The rule is part of the payment status model.

Assets & networks

Which assets can I accept?

CryptoLike accepts Bitcoin (BTC), Litecoin (LTC), Ethereum (ETH) with the ERC20 tokens USDT and USDC, and TRON (TRX) with USDT on TRC20. The active catalogue is served by GET /v1/currencies; every asset shows its network and confirmation threshold before you use it, and you can switch single assets off in the cabinet, or only for invoices. The list with networks is on supported coins.

How long does a payment take to confirm?

It depends on the asset: each one has a confirmation threshold set in the CryptoLike catalogue (GET /v1/currencies) and shown on the checkout page as "n of N confirmations, usually about X min". The payer sees "Payment detected" as soon as the transfer is in the network, and "Payment confirmed" when the threshold is reached; at that moment the funds are credited to your balance. More in crypto payment confirmations.

USDT on TRC20 or ERC20: which one should I accept?

In CryptoLike they are two assets: USDT on TRON (TRC20) and USDT on Ethereum (ERC20), each with its own address, confirmation threshold and fee schedule. The payer covers the network cost of their transfer: energy and bandwidth paid in TRX on TRON, gas paid in ETH on Ethereum. TRON addresses start with "T", Ethereum addresses with "0x". You can enable both and let the customer choose on the checkout page. Read USDT TRC20 vs ERC20.

What if the customer sends funds on the wrong network?

A transfer on another network never reaches the payment, and the payment stays unpaid. The CryptoLike checkout page names the network next to the asset and the address, adds a network badge to token icons and warns before the customer sends. Bitcoin and Litecoin test addresses look different from mainnet ones, but TRON and Ethereum use the same format on both, so check the network name in testing too. The asset and network list shows which network each asset uses.

Fees

How much does CryptoLike charge?

The standard rate is 0.8 % of each confirmed incoming payment, at least the minimum of the asset: 0.6 USDT on TRON (about $0.6 in BTC, LTC or TRX), 2 USDT or USDC on Ethereum (about $2 in ETH). Payouts carry no platform fee, except a fixed 1 USDT for USDT on TRON; you pay the network fee with no mark-up. A price in USD or EUR is converted with no spread. Every minimum is on the pricing page.

Why is there a minimum fee?

Because collecting a payment costs about the same whatever its amount. Each payment is moved from its payment address into the platform's wallet in a network transaction whose fee the platform pays, higher on Ethereum than on TRON, Bitcoin or Litecoin. The minimum decides below 75 USDT on TRON and 250 USDT on Ethereum; above that only the 0.8 % applies. A transfer smaller than the minimum is kept whole as the fee. Exact minimums: fee schedule.

How are fees shown?

As a concrete amount with its unit: in the payout estimate before you confirm, in the API response and in the cabinet. The checkout page shows the payer one amount; when the payer bears the fee, it is already included. The CryptoLike platform fee is set per asset and charged only when a payment is confirmed; each transaction then shows the gross amount, the fee and the net amount. The current schedule is on the CryptoLike pricing page.

When is the platform fee charged?

Only when a payment is confirmed, at the rate in force when the payment was created: a tariff change never reprices an existing payment. Creating a payment costs nothing, and an expired or cancelled payment is not charged. The CryptoLike platform fee is set per asset and per direction, incoming payments and payouts. Every transaction row shows the gross amount, the fee and the net_amount. Current rates are on the pricing page.

Who pays the platform fee, the merchant or the customer?

By default the merchant: fee_paid_by is merchant, and the platform fee is deducted from what you receive. With fee_paid_by: payer on the payment, CryptoLike adds the fee on top of the amount: payer_amount is what the customer must send, amount_crypto is what you receive. The two amounts differ only in that case. See platform fee.

How is the network fee of a payout calculated?

Before a payout, POST /v1/withdrawals/estimate returns the platform fee, the reserved network fee and the total debit; the reserve is the network's estimate with no mark-up. CryptoLike charges either the reserved estimate (the default) or the fee actually paid on the network (network_fee_mode: actual), in which case the unused reserve returns to your available balance. If no estimate is available, the payout is not created. More on the network fee.

Payouts

How do I send a payout?

Ask POST /v1/withdrawals/estimate for the fees and the total debit, then create the payout with POST /v1/withdrawals or in the cabinet. CryptoLike moves the whole total debit to hold, and the payout goes pending → processing → broadcast → completed. An API key needs the withdraw permission; in the cabinet each payout is confirmed with a 2FA code. Statuses and errors are in the API reference.

How do mass payouts work?

Upload a CSV of up to 1,000 rows in the format address,amount[,payout_id[,comment]] in the CryptoLike cabinet. Every row is checked before anything is created: one bad row rejects the whole file with a report of row, field and error, and nothing is paid. A valid file is confirmed with one 2FA code for the whole batch. Through the API, payouts go one by one with payout_id. Follow the mass payouts guide.

Can a retried payout request pay twice?

No, if you send your own payout_id. Repeating the request with the same coin, amount and address returns the existing CryptoLike payout instead of creating a new one; the same payout_id with different parameters is refused with 409. For an exact replay of the first response, add an Idempotency-Key. The rules are in the API reference.

Why is my payout in review?

A payout goes to review when it needs a manual check: a limit was exceeded, the pattern is unusual (a new address, a burst of payouts), your account is in manual mode, or the destination needs compliance screening. Review usually finishes within 24 hours, and the funds stay on hold meanwhile. CryptoLike then continues the payout or rejects it and returns the full amount to your available balance. See mass payouts.

What happens if a payout fails or is cancelled?

Payout failed: the network refused or dropped the transaction, and the full total debit is back in your available balance; failure_reason says why. Create a new payout. A payout rejected on review returns the same way. You can cancel a CryptoLike payout yourself while it is pending, review or awaiting_approval; from processing it can no longer be cancelled. The statuses are in the API reference.

Do I need a verified account to send payouts?

Yes. CryptoLike sends payouts only from a verified account: until the account verification (KYB) is complete, a payout request answers 403 kyb_required. Upload the documents in the cabinet and wait for the review; the steps are in KYB for crypto merchants. Accepting payments, including payment links and the Хорошоп connector, does not wait for verification. The mass payouts use case lists everything a payout needs.

Integrations

Which platforms have a CryptoLike plugin?

CryptoLike has a plugin for WooCommerce (block and classic checkout), an extension for OpenCart 3 and 4, a module for PrestaShop 1.7.8 and 8 and a module for Magento 2. Shops on Хорошоп connect through a hosted connector without a plugin. Every plugin needs an API key with only create_invoice and read; a shop never needs withdraw. All options are on the integrations page.

How does a CryptoLike plugin update the order status?

The order is created as pending payment. A confirmed payment moves it to processing (or the status you choose); an underpaid one goes on hold while the customer can top up; an expired payment cancels the order or keeps it pending, as you set. Money that needs a person, such as a late payment or a reversal, goes to a review status and is never marked paid automatically. See the WooCommerce plugin.

How do I accept crypto on a Хорошоп shop?

Хорошоп does not take third-party payment plugins, so CryptoLike connects to the shop through its API. Create a separate admin account for CryptoLike, add a "Cryptocurrency" payment method, and connect the shop in the cabinet under Integrations → Хорошоп. Within about a minute of an order the customer gets an e-mail with a payment link; the paid status is written back to the order. See the Хорошоп integration.

Can I accept crypto without a website?

Yes. Create a payment in the CryptoLike cabinet or in the Telegram bot with the /invoice command, and share the link: copy it or send it straight to a messenger. The customer opens the same payment page online shops use, with the amount, network, address and time left. Follow the status in the cabinet or get a Telegram message when it is confirmed. Read about payment links.

Can I keep the payment page inside my own checkout?

Yes. The CryptoLike checkout widget embeds the same payment page in an iframe with a loader of about 5 KB and reports status changes to your page through postMessage. Add your origin to the allowlist in the cabinet; the browser receives the invoice id and nothing else. Fulfil the order on the webhook, not on a browser message. The checkout widget guide has the details.

Developers

How do I process a webhook exactly once?

Verify the HMAC-SHA256 signature over the raw body, then look event_id up in your store: if you have seen it, answer 2xx and stop. CryptoLike delivers at least once and retries six times over about 31 hours, so duplicates are expected, not an error. Answer within 10 seconds and process afterwards. Step by step: verify crypto payment webhooks.

How do I verify a CryptoLike webhook signature?

Compute "sha256=" + hex(HMAC-SHA256(secret, X-Timestamp + "." + raw_body)) with your endpoint secret and compare it with X-Signature in constant time. Use the raw bytes as received, never re-serialised JSON, and reject timestamps more than a few minutes off your clock in either direction; the SDKs allow 300 seconds. A reference test vector checks your code in one run. See the webhooks contract.

Which SDKs does CryptoLike offer?

Four server-side SDKs: TypeScript for Node.js 18+, Python 3.10+, Go 1.23+ and PHP 7.4 to 8.x. Each signs requests, adds an Idempotency-Key to every POST, retries safely and verifies webhooks. They are pre-release: install them from the CryptoLike repository, not from npm, PyPI or Packagist yet. The secret stays on your server. See the SDK documentation.

How do retries avoid creating a second payment?

Send an Idempotency-Key with every POST: a repeated request returns the original CryptoLike response for 24 hours, and a different body with the same key is refused with 422. Shops can also send idempotency_by_order_id: true with order_id: a repeat for the same order returns its open payment instead of creating a second one. More on the idempotency key.

Account & security

What can a CryptoLike API key do?

Each key has permissions: read, create_invoice, create_address and withdraw, plus a request limit (600 requests per minute by default, adjustable per key) and, if you want, an IP whitelist. A request without the permission or from another IP answers 403; over the limit, 429. Give a key only what it needs: a shop plugin needs create_invoice and read. The secret is shown once. See API authentication.

How do I rotate or revoke an API key?

In the CryptoLike cabinet, Rotate issues a new secret and shows it once; the previous secret keeps working for 10 minutes so you can deploy without downtime. Disable stops a key until you enable it again. Revoke is final: the key stops at once and a new one has to be created. Every change is written to the team security log with the person who made it. See API authentication.

How does the payout address whitelist work?

You add a payout address in the CryptoLike cabinet with a fresh 2FA code, and it becomes active only after a delay, so a stolen session cannot redirect payouts at once. Removing an address takes effect immediately. When the whitelist is enforced, payouts from the cabinet and from API keys go only to active whitelisted addresses; anything else answers 403. Read about the payout whitelist.

How does the second approval for large payouts work?

When a payout created in the cabinet exceeds your account's threshold, it waits in awaiting_approval. Another owner or admin of the account, not the person who created it, confirms it in the CryptoLike cabinet with a 2FA code; until then the funds stay on hold. Payouts through an API key with withdraw do not wait for it, so grant that permission sparingly. See dual approval.

When does CryptoLike ask for a 2FA code?

For actions that move money or open a new destination. The CryptoLike cabinet asks for a fresh 2FA code when you create a payout, confirm a CSV batch (one code for the whole file), give a second approval, add a whitelist address, change payout settings or give an API key withdraw; so does the Telegram bot for payouts. Removing a whitelist address needs no code; API payouts rely on the key's permission. See the mass payouts guide.

How does CryptoLike protect the funds on my balance?

Private keys stay inside a separate signing service that the API cannot read, and it signs a payout only when the payout is in processing with a matching hold in the ledger. Surplus funds go to cold storage only after an operator approves with 2FA. Cabinet payouts need a fresh 2FA code, API payouts a key with withdraw; a whitelist and a second approval are optional. Every control is listed on the security page.

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.