en

How do I accept crypto payments on my website?

Published
28.10.2024
Updated
01.10.2026
A shop owner relaxes after adding crypto payments to the online store: USDT and bitcoin coins flow from the site into a safe with a green check
A shop owner relaxes after adding crypto payments to the online store: USDT and bitcoin coins flow from the site into a safe with a green check
Contents

    You sign up with a crypto payment processor, a service that accepts crypto payments on your behalf, and put its checkout on your site. For every order the processor shows the customer an exact amount and a one-time address, watches the blockchain (the public record of all transfers) and tells your site when the money has arrived. There are four ways to put that checkout on a site, from a plain link to a full integration, and the right one depends on who can edit your site's code.

    Why not just put your wallet address on the site?

    You can, and for a tip jar it is enough. A wallet address works like a bank account number with no payment reference: anyone can send money to it, and it never says who paid for what.

    The trouble starts once there are orders. Say two customers each send 50 USDT within the same hour.

    Now you have three things to work out by hand:

    • Which transfer belongs to which order. Both arrived as 50 USDT from addresses you have never seen.
    • Whether the amount is complete. One customer's exchange may have kept a withdrawal fee, so 49 USDT arrived instead of 50.
    • Whether the network is right. A transfer sent on a network you don't watch doesn't show up where you are looking.

    Your site knows none of this either, so it can't mark an order paid or send the download link by itself.

    There are three ways to receive crypto, and they differ in who does that matching:

    • Your own wallet address. It is free and ready in minutes, but you match every payment to its order by hand, and the site never learns that an order is paid.
    • A hosted processor. A service creates a one-time address and an exact amount for each order, waits for the network to confirm the transfer and tells your site. It charges a percentage of each payment.
    • A self-hosted gateway. Open-source software on your own server does the matching without a per-payment fee. Hosting, updates and the safety of the private keys, the secret that controls the money, become your job.

    For a shop or a service business, the real choice is between the last two. A hosted processor takes a percentage and keeps the infrastructure off your hands; your own server takes no percentage and a fair amount of engineering time. Both sides of that trade, with what each really costs, are weighed in self-hosted versus hosted crypto payment gateways.

    From here on, the article follows the hosted route, because it needs no server of your own.

    Four ways to put a crypto checkout on your site

    A processor can connect to a website in four ways, from no code at all to a full integration. Which one fits depends mostly on who can change your site's code. One processor often offers several, so you can start simple and move up later.

    Four ways to take crypto on a website side by side: a payment link sent in a chat, a pay button opening a payment window, a store admin panel with crypto switched on, and a server exchanging notifications with a payment service, with USDT and bitcoin coins in each

    A payment link: nothing to install

    The processor creates a checkout page for a set amount and gives you a link to it. You can put that link behind a "Pay with crypto" button on any page, into an emailed invoice or into a chat with a client. Anyone who can edit a page on your site can set it up.

    The customer clicks, picks a coin and a network, and pays on the processor's page. The processor tracks the payment and shows you which link was paid, so the matching problem of the wallet route is gone. What you don't get is automation: your site doesn't learn about the payment, so someone checks the dashboard and fulfils the order.

    That makes a link a good fit for services, invoices and short catalogues. The same link can also become a QR code on a printed invoice or on a screen at a counter, which is how payment links and QR invoices let you accept USDT without a full integration.

    A checkout widget: one script on the page

    A widget is a piece of the processor's code that you add to your page. It puts a payment button on the site, and the button opens the full checkout in a window on top of your page, so the customer never leaves it.

    An online shop open on a laptop at the moment of payment: a crypto payment window with the USDT coin, a QR code and a countdown ring over the product cards

    The widget can also tell your site that the order is paid. When the customer pays, the processor sends a callback, a message to an address on your server, and your site uses it to mark the order paid. Setting this up takes someone who can paste a script into the page and write a few lines of code that handle that message.

    A widget suits a site you built yourself or on a builder that lets you add your own code; some builders allow custom scripts only on paid plans, so check that first. It gives you a checkout on your own page without building the payment screen, and how it compares with the other routes is laid out in when an HTML widget beats an API or a plugin for crypto payments.

    A plugin for your store platform

    If your shop runs on a platform such as WooCommerce, a plugin adds crypto as one more payment method next to cards. The customer sees it at the usual checkout, pays, and the plugin marks the order paid in your admin panel. Order emails, stock levels and reports keep working as they do for card orders, because to the store this is just another payment method.

    You need admin access to the store and a processor that has a plugin for your platform. Keep the plugin updated along with the store, since it runs inside the store and handles your orders.

    Hosted store platforms such as Shopify decide for themselves which payment providers can appear at checkout, so a route that works on one platform may not exist on another. On WooCommerce the choice is wide, and the three ways to set it up, one of them without any plugin, are covered in how to accept crypto payments on WooCommerce.

    An API integration: full control, takes a developer

    With an API, your own server talks to the processor. When a customer places an order, the server asks the processor to create a payment for that exact amount, shows the customer the checkout and waits for the callback that says the order is paid.

    This route is for custom shops and apps, where the payment has to fit into your own order logic. It gives you the most control over what the customer sees and what happens after payment, and it takes a developer to build and maintain.

    CryptumPay offers three of these routes:

    • Payment links. The merchant creates them in the CryptumPay console, and nothing is installed on the site.
    • A checkout widget. It is a single script loaded from a CDN (a network of servers that delivers files to web pages), so there is nothing to build; the merchant account gives a Project ID, and the widget runs only on domains added to the project. With a free amount the customer types the sum, which suits donations and pay-what-you-want; a fixed order amount is created from the server with the Node.js SDK, and a callback tells the site that the payment is complete.
    • An API. The merchant's server works with CryptumPay directly, as described in the API route above.

    What if you already take cards through PayPal or Stripe?

    Then check whether that provider can add crypto before you sign up anywhere new.

    PayPal's crypto checkout, Pay with Crypto, lets US merchants take crypto from buyers anywhere in the world, with these limits:

    • A verified US business account. It also has to be approved for PayPal's Expanded Checkout.
    • Not in New York. Merchants in New York can't use Pay with Crypto for now.
    • Extra checks for gambling and gaming. Merchants in those sectors first have to pass PayPal's due diligence.

    Stripe's crypto options also depend on the country your account is in. Before you look elsewhere, check whether Stripe can accept crypto payments for your business and what to do if it can't.

    What happens between "Pay" and "paid"

    Whichever route you choose, a payment goes through the same five stages:

    1. The payment is created. You make a link in the dashboard, or your site sends the order total through a widget, a plugin or the API; either way, the processor returns a checkout with an exact amount and a one-time address.
    2. The customer sends the coins. They pay from their own wallet or from an exchange account, on the network the checkout names, by scanning the QR code or copying the address.
    3. The network confirms the transfer. The transaction is written into the blockchain, which takes from a few seconds to tens of minutes depending on the network, and the processor waits for as many confirmations as it considers final.
    4. The processor reports the payment. With a link, you see it in the dashboard; with a widget, a plugin or an API, the processor sends a callback, also called a webhook, to an address on your server, and your site marks the order paid.
    5. The money lands on your balance with the processor. From there you withdraw it, convert it or keep it.

    Stage four is the one to get right. Your site should check that the message really came from the processor, and it should not ship twice if the same message arrives twice; both checks are part of handling crypto payment webhooks and confirmations safely.

    The path of one crypto payment: an order, a payment window with a QR code and USDT, a phone wallet sending USDT, a confirmed blockchain block, and the order marked paid in the shop's admin panel

    Which coins and networks to accept

    You don't need to accept every coin. Each one you switch on is one more price to watch and one more way for a customer to send the wrong thing.

    Stablecoins are the practical core for a shop. A stablecoin is a coin pegged to a currency, usually the US dollar, so 100 USDT at checkout is still about $100 when you withdraw it. USDT is the largest stablecoin, USDC comes second, and both live on several networks at once.

    Bitcoin is what many people mean by "crypto", and some customers will want to pay with it. Its price moves, sometimes by several percent in a day, and a new block comes roughly every ten minutes, so a Bitcoin payment takes longer to confirm than USDT on a fast network. If you accept Bitcoin, Ether or any other coin whose price moves, decide in advance whether to convert it on arrival, which is the core choice in protecting crypto revenue from market volatility.

    The same USDT lives on several networks

    USDT runs on many networks at once, Tron and Ethereum among them, and these networks don't talk to each other. A customer has to send on the network your checkout shows; a transfer on another network isn't seen as payment for the order, and getting it back takes manual work, if it can be done at all.

    Say the checkout shows an Ethereum address and the customer sends USDT on BNB Smart Chain. Both networks use the same address format, so the exchange lets the transfer through, but the processor watching Ethereum never sees it.

    Which networks to switch on depends on your customers as much as on fees. A network is only useful if your customers' wallets and exchanges can send on it, and offering two or three lets each customer use the one they already have without crowding the checkout. What a sender looks for in a network and what a merchant looks for are not the same, and that difference is the subject of choosing a USDT network for a business.

    What it costs

    Three costs stack up on every crypto payment:

    • The processor's fee. A percentage of each successful payment, sometimes with a fixed part on top. It pays for the matching, the callbacks and the checkout.
    • The network fee. The sender pays it to the network to move the coins. Some processors add their own charge for the deposit address on the chosen network.
    • The cost of cashing out. Withdrawal fees and, if you sell the crypto for local currency, the exchange's fee and its spread, the gap between its buying and selling price.

    The network fee depends almost entirely on the network. Between late August and late September 2026, the median cost of one USDT transfer was:

    • Tron: about $2.20, or about $4.40 if the receiving address had never held USDT. That is for a sender with no energy of their own (Tron's prepaid resource for transactions), so the network burns TRX, Tron's own coin, to cover the fee.
    • Ethereum: about 16 cents, or about 20 cents if the receiving address had never held USDT.
    • BNB Smart Chain, Polygon and TON: less than half a cent either way.
    • Solana: about a tenth of a cent, or 15 to 20 cents if the receiving address had never held USDT.

    A one-time payment address has never held USDT, so at checkout the higher figure is the one to expect. Exchanges and wallets add their own withdrawal fees on top, and the full picture, with transfer times, is in what a USDT transfer costs on each network and how long it takes.

    CryptumPay charges 1% per successful payment, down to 0.5% at higher volumes, plus a transfer fee: a fixed fee for servicing the one-time deposit address on the network the customer picked. Whether the customer covers these fees is the merchant's decision; if they do, the CryptumPay checkout shows the fee as a separate line before payment. Whatever coin the customer pays in is converted to USDT as soon as it arrives, and the balance can be withdrawn at any time, with no minimum, to any address the merchant gives.

    When you compare processors, add up all three layers for a typical order instead of comparing headline percentages. On a $20 order, a 1% fee is 20 cents, while a customer on Tron who has no energy of their own spends about $4.40 just to send USDT to a fresh payment address, which is a good reason to offer a cheaper network next to Tron. How each of the three layers is calculated is explained in how crypto payment fees work, from network fees to gateway fees.

    What to do when a payment arrives wrong

    A crypto payment can't be pulled back the way a card payment can, and it is easy to send slightly wrong. When something does go wrong, it is one of four cases:

    • Underpaid. The customer's exchange kept its withdrawal fee, and 99 USDT arrived instead of 100. To the checkout, that is a partial payment.
    • Wrong network. The customer sent USDT on a different network from the one the checkout showed, so the payment never shows up on the order.
    • Too late. A checkout holds its amount and address for a limited time, and a transfer sent after that lands on a closed invoice.
    • Overpaid. The customer sent more than the total, and the difference is theirs to ask back.

    Before going live, ask your processor which of these happens to an underpaid order:

    • The order stays open for a top-up. The customer sends the missing amount, and the order completes.
    • The order is marked as partly paid. The money is on your balance, and you decide whether to ship.
    • The decision is left to you. The payment waits until you accept it or refund it.

    A clear checkout heads off many of these mistakes before they happen, with one network named in large letters, an exact amount and a visible timer, which is the approach behind reducing failed crypto payments.

    How refunds work without chargebacks

    Crypto has no chargebacks: a refund is a new transfer that you send yourself. That protects you from a customer who pays and then disputes the charge, and it also means every refund is a manual job.

    Say a customer paid 100 USDT for a course and asks for a refund a week later. You send 100 USDT back from your balance, and this time you are the sender, so the network fee is yours.

    Get the customer's address and network in writing, and send exactly there. Don't simply return the money to the address it came from: if the customer paid from an exchange, that address belongs to the exchange, and the refund may never reach them.

    If the customer paid in a coin whose price has moved since, decide upfront whether you return the same number of coins or the same value in dollars. The cases of overpayment, underpayment and transfers sent by mistake are covered in how businesses should handle crypto payment refunds.

    What a processor checks before you take live payments

    Expect a processor to check two things before it lets live payments through:

    • Who you are. Identity verification, called KYC (know your customer): you show an identity document, and a company may be asked for its registration papers.
    • What you sell. A look at your website, to see that the business is real and that its goods or services are ones the processor can serve.

    At CryptumPay, identity verification (KYC) is mandatory for every merchant, and without it there are no withdrawals. Even with payment links only, where nothing is integrated into the site, the project review needs a website that shows what the merchant does or sells. A real invoice can be issued right after sign-up, and the payment is credited to the balance after the project review, usually within one business day.

    A processor may also screen the addresses that payments come from. Coins traced to theft or to sanctioned addresses can cause trouble for whoever receives them, up to a frozen account at an exchange. What that screening covers and which controls are yours to set is explained in securing crypto payments with AML checks, KYC and wallet screening.

    Setting it up, step by step

    Here is the whole path from sign-up to the first paid order:

    1. Choose coins and networks. Start with USDT on two or three networks your customers already use, and add Bitcoin if customers ask for it.
    2. Sign up with a processor and pass its checks. Have an identity document ready and a website that shows what you sell.
    3. Connect the checkout. Pick the route your site allows: a payment link, a widget, a plugin or an API.
    4. Set up the payment notification. For a widget, a plugin or an API, make sure the processor knows the address on your server that receives the callback, and let your site mark an order paid only after that message arrives.
    5. Decide who pays the fees and what happens to an underpaid order. Write both on the payment page, so the customer knows before paying.
    6. Make a test payment. Pay a small real order from a wallet and from an exchange account, and follow it through every stage to "paid" and onto your balance.
    7. Tell customers. Add crypto to your payment methods page and name the networks you accept.

    Is it legal to take crypto on your website?

    The rules depend on where your business is. Here is where things stand for a seller in the European Union and the United States, and what to do about tax:

    • European Union. The Markets in Crypto-Assets Regulation, MiCA (Regulation (EU) 2023/1114), has applied in full since 30 December 2024. It licenses issuers of crypto-assets and companies that provide crypto services to others; it places no obligations on a seller taking crypto as payment for its own goods.
    • United States. FinCEN guidance FIN-2013-G001 of 18 March 2013 says that a user who obtains virtual currency to buy goods or services is not a money services business. A merchant accepting crypto for its own goods is usually read the same way, since it transmits no money for anyone else, though the guidance does not spell that case out.
    • Tax. How a crypto payment is taxed is decided by your own country's rules, so it is a question for an accountant there.

    These two rules answer the question only for the EU and the US, and only for the seller's side. Before you switch crypto on in another country, check whether a business can legally accept crypto payments.

    The short version

    To accept crypto on your website, you need a processor and a way to put its checkout on your site, and that way follows from who can touch the site's code. Who covers the fees and what happens to a short payment are best settled before the first customer pays, not after a payment goes wrong. Make one small test payment before you announce anything.

    Frequently asked questions

    How do I accept crypto payments for my business?

    Beyond the website, the same processor covers sales that never touch the site. A payment link or a QR code works wherever the client can click or scan it, and the processor tracks that payment the same way as one made on the site. A processor may still ask for a website during its review, even if your sales happen elsewhere.

    What crypto payment service should I integrate into my website?

    No single service fits everyone, so start from how the money has to come out. Some services pay out in local currency straight to a bank account; others pay out in crypto, which you then sell on an exchange that serves your country, paying its fee and spread. If part of the money goes to suppliers or contractors abroad anyway, it may never need to touch a bank, which is the question of paying suppliers abroad with stablecoins.

    How do I accept Bitcoin payments on my website?

    Through the same processor and the same checkout as any other coin: you switch Bitcoin on in the processor's settings, and the customer picks it when paying. You don't need a Bitcoin wallet of your own to start, because the payment lands on your balance with the processor. A wallet address comes in only when you withdraw Bitcoin that you decided to keep.

    Can I accept crypto payments on my website if it isn't an online shop?

    Yes: any site that sells something can, and a donation button where the reader chooses the amount counts too. What matters to a processor is that the site shows a real business and goods or services the processor is willing to serve. Some kinds of business face stricter checks or are turned down, so read the processor's list of restricted activities before you build anything around it.

    This article is general information, not legal or tax advice.

    Start accepting crypto payments

    Create an account and connect the checkout yourself, or talk to sales and we will plan the integration with you.