How to accept cryptocurrency payments on your website

Choose a cryptocurrency payment flow, prepare receiving addresses and connect payment verification to your orders.

Updated:

To accept cryptocurrency payments, choose an asset and network, prepare a receiving address, and decide how your website will learn that a payment has arrived. With Cryptanio, you can start with a payment link, create individual invoices for orders, or let customers top up an internal balance. Funds arrive at your addresses, while the service tracks transfers and reports changes in their status.

This guide explains which option suits your task and what to check before the first payment. We will cover USDT and USDC within the same process: choosing a coin matters, but it does not by itself determine how to integrate payments.

Choose a payment method

A payment link works for a one-off sale or a service fee. Connect your addresses to a project, create a page in the account dashboard, describe the purpose of the payment, and select the available payment options. Then send the link to your customer. This does not require a payment interface of your own or a server integration.

If you run an online store or an application with orders, creating an individual invoice for each purchase is more convenient. An invoice specifies an amount, an expiry time, and its own status. Your server stores the connection between the invoice and the order and receives payment notifications. You can then automatically grant access or send a paid order for fulfilment.

The deposit workflow is for products where users first top up a balance in your service and then spend it on services. Cryptanio reports incoming transfers; your application implements the rules for crediting, spending, and displaying that internal balance.

Your task Where to start
Receive a one-off payment through a link A payment page in the account dashboard
Automatically track payment for each order Invoices and a webhook
Accept top-ups to a user balance Deposit addresses and server-side accounting

If your website currently only describes your services, adding a payment link is enough. An API integration makes sense when the payment result needs to change the state of your product.

Prepare the project and addresses

Sign in to your Cryptanio account and select a project for the website or service. Projects keep the addresses, settings, and events of different products separate.

Prepare a wallet address for the selected network. To accept USDT or USDC as described here, you need a public receiving address. You do not need to provide a seed phrase or a private key that authorizes spending funds for this setup.

Saving the address in the address book is only part of the setup: also connect it to the project for the relevant service. For example, invoices use addresses connected to «Payments», while pages shared through a link use «Links». Before accepting payments, make sure the connection is active. An address appearing in the general list does not mean that the required service is using it.

Set up USDT payments

For USDT, first select a supported combination of token and network. Confirm it with the payer before sending a link or invoice. The same USDT name in two wallets does not prove that the transfer will take place on the same network.

The payment page must make three things clear: which asset to send, on which network, and to which address. With an automated integration, display the amount and address returned for that specific invoice. The amount may include additional decimal places needed to distinguish payments.

If you check the token contract manually, use Tether's list of supported protocols and addresses. Support for a network by the issuer and support for that network by the payment service are separate conditions; both must hold to accept the payment.

Set up USDC payments

For USDC, also check the network and the exact supported token. Assets with similar names may exist on the same network, including versions transferred through a bridge. Use the precise asset identifier specified in your payment settings.

Official USDC addresses are published in Circle's documentation. This information helps you identify the token, but it does not replace checking whether it is available in Cryptanio.

If you accept both USDT and USDC, present them as separate payment options. A transfer of one token cannot be treated as payment of an invoice denominated in the other simply because their values are similar.

Decide how to confirm orders

For manual handling, you can follow events in the account dashboard and receive messages in Telegram or Discord. Check the network, asset, address, amount actually received, and transfer status. A customer's screenshot or an unconfirmed transaction appearing is not enough to release goods.

For automated handling, configure a webhook: a notification containing event data that Cryptanio sends to your server. The server verifies the message signature, finds the associated order, and checks the invoice state. Repeated delivery of the same event must not cause goods to be delivered or a balance to be credited twice.

A confirmed transfer and a fully paid order are different facts. The customer may have sent less than required or paid an expired invoice. Define how to handle these situations in advance. Also account for confirmation being rolled back after a blockchain reorganization.

Check the complete payment flow

Before adding a payment button, check that the payer sees the correct payment details and that you can find the result in the right project. Make sure the notification reaches the selected recipient and that the order changes status only after the necessary checks.

Testing with a real transfer requires funds and a network fee. If you perform this check, use your own wallets, a supported network, and a small amount that respects the limits of the chosen payment method. Finish the check by reconciling the amount received and the status, rather than merely opening the payment page.

Understand costs and the invoice currency

An order amount may be stored in dollars as a unit of account while payment takes place in the selected cryptocurrency. This does not mean receiving dollars into a bank account or automatically exchanging the received coins for fiat money.

In the API, the order price and the expected cryptocurrency amount serve different purposes. Supplying these fields does not itself initiate a conversion of funds. The payment page needs to show the amount of the selected asset that the customer must send.

Check Cryptanio's terms of use on the pricing page. Account separately for the blockchain fee, which depends on the network and the sender's wallet. Do not reduce the invoice amount by an estimated fee without an explicit rule for handling an underpayment.

Choose your next step

If you want to handle payments manually, start with “How to create a cryptocurrency payment link without a website or programming.” For notifications, use the Telegram and Discord guides in this collection.

If your website needs to deliver goods automatically after a purchase, continue with “How to automatically confirm order payment through a webhook.” The supported public API is described in the Cryptanio documentation.