How to Accept Bitcoin on Shopify

So you run a Shopify store and you want to accept Bitcoin. Good news: it's absolutely doable. Bad news: Shopify doesn't make it obvious. There's no "turn on Bitcoin" toggle hiding in your settings. But with the right setup, you can accept Bitcoin on Shopify with zero processing fees and keep full control of your funds.

This guide covers everything from why you'd want to do this in the first place, to a working checkout flow that your customers can actually use. No fluff, just the practical steps.

Why Accept Bitcoin on Shopify?

You already pay Shopify a monthly fee. On top of that, every credit card sale costs you 2.4% to 2.9% in processing fees. That adds up fast. If you do $10,000/month in sales, you're handing over $240 to $290 just to get paid.

Bitcoin changes that equation:

  • Zero processing fees — when you use BTCPay Server, there's no middleman taking a cut of every sale
  • No chargebacks — Bitcoin payments are irreversible, which means no more fraudulent disputes eating into your margin
  • Global reach — a customer in Lagos can pay you just as easily as someone in London, no currency conversion or bank approval needed
  • Non-custodial — the Bitcoin goes straight to your wallet, not to some company that might freeze your account
  • Lightning Network — payments confirm in seconds (not minutes) and cost your customers fractions of a cent in network fees

There's also a growing crowd of Bitcoin holders who actively look for merchants that accept it. Adding Bitcoin as a payment option can bring in customers you'd never reach otherwise.

Shopify's Built-in Crypto Options (and Why They Fall Short)

Shopify does offer some crypto payment integrations through its third-party payment providers list. You'll find options like BitPay and Coinbase Commerce. They work, technically. But they come with trade-offs that matter.

BitPay requires full KYC (identity verification), charges processing fees (1% per transaction), and has a history of restricting certain merchant categories. They hold your funds and convert to fiat on their schedule, not yours. You're trusting them with your money.

Coinbase Commerce is custodial too. Coinbase holds the crypto until you withdraw it. They can freeze your account, require additional verification, or change their terms whenever they want. You're essentially adding another party between you and your money.

Both of these options defeat one of the main reasons to accept Bitcoin in the first place: cutting out the middlemen.

The Better Way: BTCPay Server + Shopify

BTCPay Server is free, open-source payment processing software for Bitcoin. It's completely non-custodial. When a customer pays, the Bitcoin goes directly to your wallet. No company sits in the middle. No one can freeze your funds or charge you fees.

Here's the thing though: Shopify doesn't natively support BTCPay Server. There's no BTCPay app in the Shopify App Store. Instead, the BTCPay community built a dedicated integration that works through Shopify's manual payment method system.

It's a workaround, but it works well. Thousands of Shopify merchants use this exact setup to accept Bitcoin on Shopify every day.

How It Actually Works

The flow looks like this: a customer adds items to their cart, goes to checkout, and selects "Bitcoin" as their payment method. Shopify creates the order and marks it as pending. The customer gets redirected to a BTCPay Server checkout page where they see a Bitcoin address (or Lightning invoice) and a QR code. Once they pay, BTCPay notifies Shopify through a webhook, and the order gets marked as paid.

From your customer's perspective, it feels like any other payment method. From your perspective, you get Bitcoin directly in your wallet with zero fees.

What You Need Before You Start

Make sure you have these ready:

  1. A Shopify store on any paid plan (the basic $39/month plan works fine)
  2. A Bitcoin wallet — a hardware wallet like Ledger, Trezor, or ColdCard is strongly recommended for any real business
  3. A BTCPay Server instance — either self-hosted on your own VPS, or through a managed hosting provider like Wootoshi
  4. About 30-60 minutes for the initial setup (less if someone handles it for you)

Step-by-Step: Accept Bitcoin on Shopify with BTCPay Server

Step 1: Set Up Your BTCPay Server Instance

If you're self-hosting, you'll need a VPS with at least 2GB of RAM, Docker installed, and a domain name. The official docs at docs.btcpayserver.org walk you through it. Expect to spend a few hours if you're comfortable with Linux command-line work.

If that sounds like a headache, a managed service like Wootoshi handles the entire server setup for you. You get a fully configured BTCPay Server instance without touching a terminal.

Step 2: Create a BTCPay Store and Connect Your Wallet

Once your BTCPay Server is running, log in and create a new store. Name it whatever you want — something that matches your Shopify store name makes sense.

Next, connect your Bitcoin wallet. Go to Wallets → Bitcoin → Setup and provide your wallet's extended public key (xpub). This is what lets BTCPay generate unique receiving addresses for every order without ever having access to your private keys. Your keys stay on your hardware wallet where they belong.

If you want Lightning Network support (and you should — it's faster and cheaper for customers), you'll also need to set up a Lightning node or connect to an existing one. BTCPay supports LND, Core Lightning, and Eclair.

Step 3: Install the BTCPay Shopify Integration

In your BTCPay Server dashboard, go to Plugins and find the Shopify integration plugin. Install and enable it.

Once installed, go to your BTCPay store's settings and look for the Shopify section. You'll see fields for your Shopify store URL and API credentials.

On the Shopify side, you need to set up a custom payment method. Go to Settings → Payments in your Shopify admin. Scroll down to Manual payment methods and add a new one. Name it "Bitcoin" or "Bitcoin / Lightning Network" — whatever you want your customers to see at checkout.

Step 4: Configure the Webhook

This is the part that makes the whole thing automatic. BTCPay needs to tell Shopify when a payment has been received so the order status updates without you doing anything manually.

In your BTCPay Shopify plugin settings, you'll get a webhook URL. Copy it. Then in your Shopify admin, go to Settings → Notifications and add this webhook URL. Set it to trigger on order creation events.

The BTCPay plugin page will also give you a small JavaScript snippet. You need to add this to your Shopify checkout. Go to Settings → Checkout and paste the script in the Additional scripts section. This script is what redirects customers from Shopify's "order confirmed" page to the BTCPay payment page.

Step 5: Test a Payment

Don't skip this. Place a real test order on your store. Select the Bitcoin payment method, go through the checkout, and verify that:

  1. You get redirected to the BTCPay payment page after placing the order
  2. A Bitcoin address and QR code appear on the payment page
  3. After sending a payment (even a tiny amount), the order status in Shopify updates to "paid"
  4. The Bitcoin arrives in your connected wallet

If you have Lightning set up, test a Lightning payment too. It should show a Lightning invoice alongside the on-chain Bitcoin address.

Troubleshooting Common Issues

Most problems fall into a few categories:

  • Customers aren't getting redirected to BTCPay — double-check that the JavaScript snippet is correctly added to your Shopify checkout's additional scripts section. Even a missing character can break it.
  • Orders stay "pending" after payment — this is usually a webhook problem. Make sure the webhook URL in Shopify matches exactly what BTCPay generated. Also check that your BTCPay Server is reachable from the internet (firewall/port issues).
  • SSL certificate errors — your BTCPay Server must have a valid SSL certificate. If you're self-hosting, Let's Encrypt handles this for free, but it can break if your domain DNS isn't configured correctly.
  • Lightning payments failing — the most common cause is insufficient inbound liquidity on your Lightning node. You need other nodes to open channels to you, or you can use a service like Lightning Loop to get inbound capacity.
  • "Wallet not configured" errors — go back to your BTCPay store settings and make sure your xpub is entered correctly. If you copy-pasted it, check for extra spaces at the beginning or end.

BTCPay Server vs. Coinbase Commerce vs. BitPay

Let's put these side by side so you can see the differences clearly:

  • Processing fees: BTCPay charges 0%. Coinbase Commerce takes 1%. BitPay takes 1%.
  • Custody: BTCPay is non-custodial — you hold your own keys. Both Coinbase Commerce and BitPay are custodial — they hold your funds until you withdraw.
  • KYC requirements: BTCPay requires none. BitPay requires full identity verification. Coinbase Commerce requires a Coinbase account (which means KYC).
  • Lightning Network: BTCPay supports it natively. Neither Coinbase Commerce nor BitPay offer Lightning support for merchants.
  • Account freezing: BTCPay can't freeze anything because there's no account — you run the software. Both Coinbase and BitPay can suspend your account at their discretion.
  • Open source: BTCPay is fully open source. Coinbase Commerce and BitPay are proprietary, closed-source platforms.

The trade-off is setup complexity. Coinbase Commerce and BitPay are quicker to get running because you just create an account and install an app. BTCPay takes more work upfront, but once it's running, you have complete control and pay nothing in fees. That's where a managed service can save you time.

Self-Hosting vs. Managed BTCPay Hosting

Self-hosting BTCPay is free (minus server costs, which run $10-20/month for a decent VPS). But you're responsible for everything: updates, security patches, backups, Lightning channel management, and fixing things when they break at 2 AM.

If you're a developer or sysadmin, this might sound fun. If you're a store owner who just wants to sell products, it's a distraction.

Managed hosting gives you the same non-custodial BTCPay setup, but someone else keeps the server running. You still hold your own keys. You still pay zero processing fees. You just don't have to babysit a Linux server.

Keeping Your Setup Running Smoothly

Once everything is working, there are a few things to keep in mind:

  • Keep BTCPay Server updated. New versions fix bugs and security issues. If you're self-hosting, this means running update commands periodically. Managed hosts handle this for you.
  • Monitor your Lightning channels. If you're accepting Lightning payments, check your channel balances occasionally. Channels that run out of inbound capacity can't receive payments.
  • Backup your wallet. This should go without saying, but make sure your Bitcoin wallet seed phrase is stored securely offline. If you lose it, you lose access to your funds — no one can help you recover them.
  • Check your webhook regularly. Shopify occasionally updates its API, which can break integrations. If orders stop updating automatically, the webhook is the first thing to check.

Want to skip the server setup entirely?

Wootoshi provides fully managed BTCPay Server hosting built for Shopify merchants. We handle the server, the Shopify integration, webhook configuration, wallet connection, and Lightning setup. You just sell your products and collect Bitcoin. One-time setup fee of $49, then $29/month on the Small Business tier.

Get Started with Wootoshi
← Back to Wootoshi · View Pricing · FAQ