How to Accept Crypto Payments as a Business
Taking crypto from customers is not hard anymore, but the part that trips up most businesses is not the checkout. It is settlement, record-keeping, and tax. This guide walks through the three ways you can accept crypto, which one fits your volume, and the boring steps that keep you out of trouble later.
The three ways to accept crypto
There are really only three models, and most decisions come down to picking one of them.
- A hosted gateway such as BitPay or CoinGate. The provider gives you a checkout, takes the payment, and can hand you fiat in your bank account the next business day. You pay a percentage fee and you trust them to hold funds in transit.
- Direct wallet, where the customer sends coins straight to an address you control. No middleman, no percentage fee beyond the network charge. You handle the wallet, the rates, and the bookkeeping yourself.
- Self-hosted software, the main example being BTCPay Server. It gives you a real checkout and invoicing like a gateway, but it runs on a server you control and charges no processing fee. You only pay the normal blockchain network fee.
None of these is the right answer for everyone. The honest version is below.
Low volume: keep it simple
If you take the odd payment, a few a month, do not build infrastructure. A direct wallet address or a gateway free tier is plenty.
The trap with a plain direct wallet is volatility. If a customer pays you 0.004 BTC for a 300 dollar invoice and Bitcoin drops 8 percent before you sell, you are short. That is why most small sellers who go direct ask for a stablecoin instead. A stablecoin like USDC or USDT is built to sit at one US dollar, so 300 USDC stays close to 300 dollars whether you cash out today or Friday. You still owe tax, but you are not gambling on price between the sale and the conversion.
If you would rather not touch a wallet at all, a gateway free tier lets the provider take the coin and pay you in your local currency. CoinGate settles to EUR or USD the next business day at a flat 1 percent. That 1 percent is the cost of never holding the asset.
Higher volume: gateway or your own server
Once crypto is a regular line in your revenue, two things start to matter: cost and control.
A gateway is the path of least effort. BitPay has run since 2011, supports Bitcoin, several major coins, and stablecoins like USDC, and pays out daily in USD, EUR, GBP and more. Its pricing starts around 2 percent plus a small per-transaction charge, which is on the higher side for a small shop but works out cheaper at large scale where tiered pricing kicks in. CoinGate sits at a flat 1 percent, supports a much wider coin list, and is EU-licensed under MiCA, which matters if you are based in or selling into Europe. Note that BitPay bans gambling-related use in its acceptable use policy, so check the rules for your sector before you commit.
If you are moving real money and want to keep the fee and the custody, BTCPay Server is the self-hosted answer. It charges zero processing fee, runs Bitcoin on-chain and over the Lightning Network, and gives you invoicing, a point-of-sale app, and payment links out of the box. The cost is that you run it. That means a small server, sometimes called a VPS, from around eight dollars a month, plus the time to set it up and keep it patched. If your wallet backup or your server goes, there is no support desk to call. The recent 2.x releases added native subscriptions and more language packs, and the project is open source and donation-funded, so it is not going to surprise you with a pricing change.
One note on Coinbase: the old Coinbase Commerce self-custody product is being folded into Coinbase Business, and Commerce wallet funds had to be withdrawn before 31 March 2026. If you were relying on the old self-custody Commerce flow, that route has changed, so plan around the current Coinbase Business product instead.
How to actually invoice a customer
The mechanics are the same whether you use a gateway, your own server, or a plain wallet. The difference is how much the tool does for you.
The cleanest setup is to bill in a stablecoin. You put the amount, say 1,250 USDC, and a receiving address or payment link on the invoice. The customer sends from their wallet, you watch for the confirmation, and the amount that lands is the amount you expected because the coin holds its peg. If you bill in Bitcoin or another volatile coin instead, the dollar figure on the invoice is only good for a short window, so a gateway will lock a rate for a few minutes and the customer has to pay inside that window.
A detail people miss with stablecoins is the network. The same USDC exists on several chains, like Ethereum, Solana, Base, Polygon and Tron. The address and the fee differ by chain, and sending USDC on the wrong network can lose the funds. Tell the customer exactly which network to use, and only publish an address for a network your wallet actually supports.
Whatever model you pick, settle the volatility question up front. Either bill in a stablecoin, or use a gateway that converts to fiat on receipt, so the price swing between payment and payout is not your problem.
Record the rate, every time
This is the step that saves you at tax time, and it takes seconds. For every crypto payment, write down what you received, the date and time, the coin and network, and the fair market value in your home currency at that moment.
If you take 0.012 BTC and Bitcoin is at 64,000 dollars when it lands, you book 768 dollars of revenue. That dollar figure is also the cost basis you carry on those coins. A gateway records this for you and can export it. A self-hosted server like BTCPay logs invoices with the rate at payment time. A plain wallet records nothing useful on its own, so if you go fully direct you have to capture the rate yourself, ideally from the same price source each time so your books are consistent.
Do not skip this thinking you will reconstruct it later. Reconstructing months of crypto rates after the fact is painful and error-prone, and it is exactly what an auditor will ask you to show.
Run a test payment before you go live
Before you put an address on a real invoice, pay yourself. Send a small amount, even a couple of dollars, from a separate wallet to your receiving setup, and watch it arrive.
You are checking a few things at once. That the address or payment link is correct. That the right network is selected. That your gateway or server marks the invoice paid and, if you use auto-conversion, that the fiat lands in your account as expected. With a self-hosted setup, a test payment also confirms your wallet is connected to the right node and that confirmations are tracking. Two dollars now is cheaper than discovering a typo on a 5,000 dollar invoice.
The tax reality, in plain terms
Here is the part businesses underestimate. In the US, the IRS treats crypto as property, and there are usually two taxable moments, not one.
First, when you receive crypto for goods or services, that is ordinary business income at the coin's fair market value on the day you receive it. Same as if a customer paid you in cash. Second, when you later sell or convert that crypto to dollars, that is a separate event. If the coin moved in value between receiving it and selling it, you have a capital gain or loss on the difference from your recorded basis.
A worked example. You receive 0.012 BTC worth 768 dollars. That 768 is income now. Three weeks later you sell it and it is worth 740. You have a 28 dollar capital loss to book. If it had risen to 820, that is an 80 dollar gain. Stablecoins move very little, so the second event is usually tiny, which is another reason they are easier to run a business on. As of 2026, US centralized exchanges issue Form 1099-DA reporting your disposals to the IRS, so what you report needs to match what they report.
This is general information, not tax advice. Rules differ by country and change, so confirm the specifics with an accountant who has handled crypto. The principle that receiving and converting are two separate events to book holds in most places.
Picking your model in one pass
If you take a handful of payments and want zero setup, use a gateway free tier or ask for stablecoin to a wallet you already trust. If crypto is a steady part of revenue and you value low effort over the fee, a gateway like CoinGate or BitPay handles settlement and records for you. If you have the volume and the technical comfort to want zero fees and full custody, run BTCPay Server. In every case: bill in stablecoin or auto-convert to dodge volatility, record the rate at receipt, and test before you go live.
Frequently asked questions
What is the cheapest way to accept crypto?
Self-hosting BTCPay Server has no processing fee, only the blockchain network fee, which is fractions of a cent over the Lightning Network. The catch is that you run and maintain the server yourself. A direct wallet is also fee-light but gives you no checkout or record-keeping. Gateways charge a percentage, roughly 1 to 2 percent, in exchange for doing the work and converting to fiat for you.
How do I avoid losing money to price swings?
Two clean options. Bill the customer in a stablecoin such as USDC or USDT, which holds close to one US dollar, so the amount you receive stays near the amount you invoiced. Or use a gateway that converts the crypto to fiat the moment it is received and pays you in your local currency. Either way the price swing between payment and payout stops being your risk.
Do I owe tax just for receiving crypto?
In the US, yes. Crypto received for goods or services is ordinary business income at its fair market value on the day you receive it, the same as cash revenue. Then a second taxable event happens when you later sell or convert it, based on how the value changed since you received it. Confirm the details for your country with an accountant.
Which stablecoin should I accept, USDC or USDT?
Both hold a dollar peg and both are widely supported. USDC, issued by Circle, is often preferred by businesses that want a US-regulated issuer and clearer reporting. USDT has the deepest liquidity and broadest exchange support. The bigger practical decision is the network: the same stablecoin exists on Ethereum, Solana, Base, Polygon and Tron, with different fees, so pick networks your wallet supports and tell customers exactly which one to use.
What happens if a customer sends on the wrong network?
Funds sent on a network your wallet does not control can be very hard or impossible to recover. This is the most common way people lose stablecoin payments. State the network clearly on the invoice, only publish addresses for networks you support, and run a small test payment yourself before sharing an address for a large invoice.
Is BTCPay Server worth running for a small business?
It depends on your volume and your comfort with servers. If you take a few payments a month, the time to set up and maintain a server is not worth saving a 1 percent gateway fee. If crypto is a steady revenue stream and you want zero processing fees plus full custody of funds, the math and the control favor BTCPay. Be honest about the tradeoff: there is no support desk if your wallet backup or server fails.
Last updated: 2026-06-24.