How to Accept Crypto Payments as a Business (Step by Step)
You want customers to pay you in crypto, but you do not want to watch wallets, check transactions by hand or guess when an order is paid. The answer is a crypto payment gateway: it shows the customer what to send, detects the payment on-chain and tells your system the order is paid.
This guide shows how to accept crypto payments as a business, step by step: which coins to accept, which checkout to use, how to test without real money and how to go live. The examples use OrcaRail, but the steps are the same for any gateway.
Can a business accept crypto payments
Yes. A business can accept crypto the same way it accepts any other payment method: the customer pays, and the business records the sale. Two things are different:
- There is no card network. The customer sends coins from their own wallet to an address. A gateway creates that address or contract for each payment and matches the transfer to your order.
- Prices move, except for stablecoins. Bitcoin and most other coins change in value. Stablecoins such as USDC and USDT track the US dollar, so a 100 USD order stays worth about 100 USD.
Crypto rules (tax, accounting, licensing) depend on your country. Ask your accountant how to record crypto income before you go live.
What you need before you start
| You need | Why | With OrcaRail |
|---|---|---|
| A wallet you control | Where your money ends up | Any EVM, Solana or Bitcoin address |
| A crypto payment gateway | Builds the checkout and detects payments | Create an account |
| A way to show a checkout | Where the customer pays | Payment link, widget, plugin or API |
| A test environment | Try everything without real funds | Free sandbox organization |
Step 1: choose which coins and networks to accept
Start with what your customers already hold. For most businesses that means stablecoins:
- USDC and USDT for dollar-priced products and subscriptions.
- Bitcoin if your customers ask for it.
- Low-fee networks such as Base, Solana, Polygon or Arbitrum, so a small payment does not cost the customer a large network fee.
OrcaRail supports more than 70 mainnets, including EVM chains, Solana and Bitcoin. Tron is not supported yet. See Networks and tokens for the full list. Customers can also pay in another token or network: the quote adds a bridge fee that the payer pays, and you still receive the full amount (Fees).
Step 2: choose how customers pay
| Checkout | Code needed | Best for |
|---|---|---|
| Payment link | None | Invoices, freelancers, one-off sales, chat or email |
| Pricing widget | Copy one iframe | Landing pages, SaaS plans |
| WooCommerce plugin | None, upload a ZIP | WordPress stores |
| API or SDK | A few backend calls | Custom sites and apps |
Every option opens the same hosted pay page. The customer connects a wallet or scans a QR code, and you never build a payment form yourself. To bill the same customer every month, use subscriptions instead of one-off links.
Step 3: test for free in a sandbox
Before you take real money, make a test payment:
- In the dashboard, click Go to sandbox. You get a testnet-only copy of your organization with
ak_test_keys. - Create a payment link or a payment intent in the sandbox.
- Open the pay page and click Simulate payment in the test banner, or pay with free test USDC from a testnet faucet.
- Check that your order changes to paid and that your webhook arrives.
Simulated payments never hold real funds and are never withdrawable. See Simulate payments.
Step 4: go live
- Switch to your live organization and create live API keys (
ak_live_). - Add your withdrawal addresses, one per chain type you accept.
- Point your webhook URL at your live server.
- Recreate your products, links and widgets in the live organization; sandbox data stays in the sandbox.
The Going live checklist covers each step.
Step 5: get paid and track every payment
When a customer pays, OrcaRail detects the transfer on-chain, updates the payment in your dashboard and sends a signed webhook to your server. Payments are forwarded automatically to the withdrawal addresses you control; OrcaRail does not hold a balance for you.
How to accept crypto payments on your website with code
If you build your own checkout, the flow is: create a payment intent on your server, send the customer to the hosted pay page, then mark the order paid when the webhook arrives.
const OrcaRail = require('@orcarail/node').default
const orcarail = new OrcaRail(
process.env.ORCARAIL_API_KEY,
process.env.ORCARAIL_API_SECRET
)
const intent = await orcarail.paymentIntents.create({
amount: '49.00',
currency: 'usd',
payment_method_types: ['crypto'],
tokenId: process.env.USDC_TOKEN_ID,
networkId: process.env.BASE_NETWORK_ID,
return_url: 'https://yourshop.com/thanks',
})
The Payment Intents overview explains the full create, confirm and complete flow. The Node.js SDK and PHP SDK guides show webhook verification.
What it costs to accept crypto payments
Every gateway prices differently, so compare the fee you pay per payment and who pays the network fee. OrcaRail charges 0.5% per completed transaction, and the first 100 transactions are free. A 100 USD payment costs 0.50 USD. See pricing. Our list of crypto payment gateways compares other providers' published fees.
FAQ
Do I need a business wallet to accept crypto payments?
You need a wallet address you control for each chain type you accept (EVM, Solana or Bitcoin). It can be a hardware wallet, a self-custody app or a company multisig.
Can customers pay with a coin I do not want to receive?
Yes. A customer can pay in another supported token or network. The quote includes a bridge fee that the payer pays, so you still receive the amount you asked for.
Is it safe to accept crypto payments?
Stablecoin payments are final once confirmed on-chain, so there are no card chargebacks. Keep your API secret on your server, verify every webhook signature, and test in the sandbox first.
Can I accept crypto payments without a website?
Yes. Create a payment link in the dashboard and send it by email, chat or a QR code. See how to send a crypto invoice.
How long does it take to set up?
A payment link takes a few minutes. The WooCommerce plugin takes under an hour. A custom API integration usually takes an afternoon, including sandbox tests.
