Disclosure: Some links in this article are affiliate links. We may earn a commission at no extra cost to you.

Table of Contents

Five Ways to Accept Crypto Payments

There's no single "right" way to accept crypto on a website. The best method depends on your platform, technical skill level, transaction volume, and whether you want to settle in fiat or hold crypto. Here are your five options, ranked from easiest to most technical:

  1. Hosted payment gateway — Sign up, paste a button or link, done. (10 minutes)
  2. E-commerce plugin — Install a plugin on WooCommerce, Shopify, or similar. (30 minutes)
  3. Self-hosted gateway — Run BTCPay Server on your own infrastructure. (1–3 hours)
  4. Direct API integration — Build a custom checkout using a gateway's API. (1–5 days)
  5. QR code payments — Display a wallet address for manual transfers. (5 minutes)

Most businesses should start with Method 1 or 2. Graduate to Method 3 or 4 only when you need more control or want to eliminate transaction fees.

Method 1: Hosted Payment Gateway (Fastest Setup)

Hosted gateways handle everything — wallet management, payment detection, exchange rate conversion, and settlement. You sign up, configure your preferences, and embed a payment button or checkout link on your site.

Step-by-Step with NOWPayments

  1. Sign up at nowpayments.io with your email. No business registration required for crypto-to-crypto settlement.
  2. Add your payout wallet. Enter the wallet address (BTC, ETH, USDC, or any supported coin) where you want to receive funds.
  3. Create a payment. Use the dashboard to generate a payment link, payment button, or invoice. Set the price in USD (or any fiat currency) — NOWPayments handles the crypto conversion.
  4. Embed on your site. Copy the HTML for a payment button and paste it into your website. Or redirect customers to a hosted checkout page using the generated link.
  5. Receive payments. When a customer pays, NOWPayments converts the payment to your chosen cryptocurrency and sends it to your wallet. Processing time: 5–30 minutes depending on the blockchain.

NOWPayments charges 0.5% per transaction — the lowest fee among hosted gateways. They support 300+ cryptocurrencies, which means your customers can pay with almost anything.

Alternative: Coinbase Commerce

Coinbase Commerce offers a similar hosted experience with a cleaner UI but fewer coin options (10+ vs 300+) and a 1% fee. The advantage: Coinbase's brand recognition may increase buyer confidence. Setup is nearly identical — sign up, connect a wallet, embed a checkout button.

Alternative: BitPay

BitPay is the oldest crypto payment processor (founded 2011, $10B+ processed). They charge 1% and support 16 major cryptocurrencies. BitPay's differentiator: direct bank settlement in 40+ countries. You receive USD, EUR, or GBP in your bank account — no need to manage crypto wallets at all. Requires KYC verification and a registered business.

Method 2: E-Commerce Plugins

If you run an online store on a major platform, dedicated plugins handle crypto payment integration without touching code.

WooCommerce (WordPress)

WooCommerce has the widest selection of crypto payment plugins:

Installation for any of these takes about 15 minutes: install plugin → enter API key → configure settings → test with a small payment.

Shopify

Shopify's native crypto support is limited, but third-party apps fill the gap:

One Shopify-specific issue: Shopify doesn't allow external payment gateways to handle the checkout flow directly. Instead, customers select "pay with crypto" and are redirected to the gateway's hosted checkout page, then returned to your store after payment. This adds a step but works reliably.

WordPress (Non-WooCommerce)

If you run a WordPress site without WooCommerce (a blog accepting donations, a membership site), use payment button plugins or simple shortcodes. BTCPay Server's WordPress plugin supports standalone payment buttons without requiring WooCommerce.

Method 3: Self-Hosted Gateway (BTCPay Server)

BTCPay Server is a free, open-source payment processor that you run on your own server. It's the most privacy-respecting and cost-effective option — zero transaction fees, full control over your data, and no third-party dependencies.

For detailed setup instructions, see our no-KYC gateway guide, which includes a 30-minute BTCPay Server deployment walkthrough.

When BTCPay Server Makes Sense

When It Doesn't

Method 4: Direct API Integration

For developers building custom checkout experiences, payment gateway APIs provide full control over the payment flow. This is how large platforms (SaaS products, marketplaces, ticketing systems) integrate crypto payments.

Typical API Flow

  1. Create a payment session. Your backend calls the gateway API with the amount (in fiat), accepted currencies, and a callback URL.
  2. Display payment details. The API returns a wallet address, QR code, and expected amount in crypto. Your frontend displays these to the customer.
  3. Monitor payment status. The gateway monitors the blockchain for incoming payments. It sends webhook notifications to your callback URL: pendingconfirmingconfirmedsettled.
  4. Fulfill the order. On receiving the confirmed webhook, your system marks the order as paid and triggers fulfillment.

API Comparison

Gateway APIDocumentation QualitySDKsWebhooksFee
NOWPaymentsGoodJS, Python, PHPYes0.5%
Coinbase CommerceExcellentJS, Python, RubyYes1%
BitPayGoodJS, Python, PHP, C#Yes1%
BTCPay (Greenfield)GoodJS, Python, C#Yes0%
CoinGateAdequatePHP, PythonYes1%

A basic API integration takes 1–2 days for an experienced developer. Adding features like partial payments, refunds, multi-currency pricing, and payment status pages extends that to 3–5 days.

If you're considering building a full gateway rather than integrating an existing one, read our cost to develop a crypto payment gateway analysis first.

Method 5: Simple QR Code Payments

The simplest possible approach: display a wallet address and QR code on your website. The customer scans the code with their wallet app and sends the payment manually.

How to Set It Up

  1. Generate a wallet address for the cryptocurrency you want to accept. Use any wallet app (Electrum, MetaMask, Trust Wallet).
  2. Generate a QR code for the address using any QR code tool (qr-code-generator.com or a command-line tool like qrencode).
  3. Add the QR code and address to your website's payment page.
  4. Manually check your wallet for incoming payments.

When This Works

Donations, tips, one-off payments where you can manually verify receipt. Content creators, open-source projects, and personal services use this approach. The Bitcoin Lightning network's LNURL standard makes this slightly more dynamic — you can generate unique invoices per request.

When It Doesn't

E-commerce with automated fulfillment. You can't reliably match payments to orders without a payment processor that generates unique addresses per transaction and monitors the blockchain automatically.

Platform-Specific Guides

Shopify

Recommended: Coinbase Commerce (easiest) or NOWPayments (most coins, lowest fees).

  1. Open your Shopify admin → Settings → Payments → Alternative payment methods.
  2. Search for "Coinbase Commerce" or "NOWPayments" in the Shopify App Store.
  3. Install and connect your account. Follow the in-app setup wizard.
  4. Test with a small purchase using Shopify's test mode.

WooCommerce

Recommended: BTCPay Server plugin (zero fees) or NOWPayments plugin (multi-coin).

  1. WordPress admin → Plugins → Add New → Search for your chosen gateway.
  2. Install and activate the plugin.
  3. Go to WooCommerce → Settings → Payments → Enable your crypto gateway.
  4. Enter API credentials (API key for NOWPayments, or BTCPay Server URL for BTCPay).
  5. Test checkout with a small order.

Custom Website (HTML/React/Next.js)

Recommended: Direct API integration with NOWPayments or Coinbase Commerce.

  1. Sign up for a gateway account and obtain API keys.
  2. Install the gateway's SDK (npm install @coinbase-commerce/node or use REST API directly).
  3. Create a checkout endpoint on your backend that generates a payment session.
  4. Redirect the customer to the hosted checkout or display the payment details in a custom UI.
  5. Set up a webhook endpoint to receive payment confirmations.

Squarespace / Wix / Other Website Builders

Recommended: Payment link from NOWPayments or Coinbase Commerce.

Most website builders don't support crypto payment plugins natively. The workaround: generate a payment link through your gateway's dashboard and add it as a button or hyperlink on your checkout or pricing page. Customers click the link, complete payment on the gateway's hosted page, and you receive a confirmation email.

Method Comparison Table

MethodSetup TimeTechnical SkillFeesAutomationBest For
Hosted Gateway10 minNone0.5%–1%FullMost businesses
E-Commerce Plugin30 minLow0%–1%FullOnline stores
Self-Hosted (BTCPay)1–3 hrsMedium0%FullPrivacy, cost savings
API Integration1–5 daysHigh0%–1%FullCustom platforms
QR Code5 minNone0%NoneDonations, tips

Security Best Practices

Regardless of which method you choose, follow these security fundamentals:

1. Use Unique Addresses Per Transaction

Never reuse a single wallet address for all payments. Reusing addresses makes it impossible to match payments to orders and exposes your total revenue on-chain. Every gateway listed above generates unique addresses automatically. If using the QR code method, at minimum generate a new address for each customer.

2. Verify Payments Server-Side

Don't rely on client-side JavaScript to confirm payment. A malicious buyer can fake a "payment confirmed" event in their browser. Always verify payment status through your gateway's API or by checking the blockchain directly on your backend server.

3. Wait for Sufficient Confirmations

One confirmation is generally safe for small amounts (under $1,000). For larger transactions, wait for 3–6 confirmations on Bitcoin (30–60 minutes) or 12–20 confirmations on Ethereum (3–5 minutes). Your gateway handles this automatically, but configure the confirmation threshold appropriately for your risk tolerance.

4. Secure Your API Keys

Store API keys in environment variables, not in client-side code or public repositories. Rotate keys periodically. Use IP whitelisting if your gateway supports it (BitPay and Coinbase Commerce both do).

5. Enable Webhook Signature Verification

Gateways sign webhook payloads with a secret key. Always verify the signature before processing a webhook — otherwise an attacker can send fake payment confirmations to your endpoint.

6. Cold Storage for Large Balances

If you hold crypto rather than converting to fiat, move accumulated funds to cold storage (hardware wallet like Ledger or Trezor) regularly. Don't keep large balances in hot wallets connected to your gateway.

Next Steps

Pick the method that matches your technical comfort level and start with a test transaction. Every gateway listed here supports test/sandbox modes. Once you've confirmed payments flow correctly, switch to production and announce crypto payments to your customers.

For B2B operations, our guide on the benefits of accepting crypto payments for B2B companies covers the business case in detail. And check our stablecoin payments news to stay current on which payment platforms are adding crypto support.

Our Top Picks

Based on our research, these gateways offer the best combination of features, fees, and reliability:

NOWPayments → CoinGate → BitPay →