Payment Tools
How to add a bitcoin payment button to your website
A practical guide for Canadian businesses adding bitcoin checkout to their website, covering processor options, setup steps, and CRA reporting basics.

Adding a bitcoin payment button to your website is less complicated than most guides make it sound. You pick a payment processor, drop a snippet of code or install a plugin, and your checkout page can accept BTC within the same afternoon. What takes longer is deciding how you want the money to flow once it arrives.
What a bitcoin payment button actually does
When a customer clicks "Pay with Bitcoin," one of two things happens depending on your setup.
In the simpler case, the processor generates a unique bitcoin address (and usually a QR code) for that transaction, waits for the customer to send the right amount, confirms the payment on-chain, and then notifies your site. You receive an email or webhook saying the order is paid.
In the more sophisticated case, the processor also handles conversion to CAD automatically, depositing Canadian dollars to your bank account rather than holding bitcoin on your behalf. This is what most Canadian small businesses choose, because it sidesteps the question of what to do with the BTC.
The two approaches have different tax implications under CRA guidance. If you receive CAD through a processor that converts instantly, the transaction looks more like a foreign-currency sale. If you hold the bitcoin yourself, every subsequent disposal is a separate taxable event. Neither approach is right or wrong, but they're meaningfully different to track. Confirm the current rules with a tax professional before you start, because CRA's crypto guidance has been updated repeatedly.
Choosing a payment processor for a Canadian site
Canadian merchants have a few realistic options. They're not all equal, and the right choice depends on your volume, your technical comfort, and whether you want to hold BTC or cash out immediately.
The main categories:
- Hosted checkout pages (like BTCPay Cloud or similar services): you don't run any server yourself. Good for getting started fast. The processor handles the wallet infrastructure.
- Self-hosted BTCPay Server: open-source, no fees per transaction, but you do need a server or a cloud instance. More setup, more control. Some Canadian hosting providers offer one-click deploys.
- Custodial plugins (WooCommerce, Shopify apps, etc.): installed directly into your store platform. Usually the fastest path if you're already on one of those platforms. You're trusting the plugin provider with some of the key management.
For custodial vs. self-custodial trade-offs in more depth, see custodial vs self-custodial bitcoin payment tools. The short version: custodial is easier; self-custodial means you're not dependent on a third party staying solvent.
If you're comparing processors more broadly, the best bitcoin payment processors for Canada guide covers fees, conversion options, and which ones support CAD bank transfers directly.
Adding the button: the actual steps
The process varies by platform, but the general shape is the same:
- Create an account with your chosen processor and complete any KYC they require. Canadian processors accepting certain transaction volumes fall under FINTRAC's money services business rules, so expect identity verification.
- Generate a payment button or get your API credentials from the processor dashboard.
- Install the integration on your site. For WordPress/WooCommerce this is usually a plugin. For a custom site it's a JavaScript embed or a server-side API call that creates an invoice and redirects the customer.
- Set your pricing currency to CAD. Most processors let you price in CAD and accept BTC at the current exchange rate, so your customers pay the BTC equivalent of whatever your CAD price is at that moment.
- Test with a small transaction before going live. Send a few thousand satoshis through the test environment if the processor has one, or just do a real $1 purchase yourself.
One thing that catches people: some processors require you to whitelist your domain in their dashboard before embeds will load. If your button appears broken on the live site but works in dev, that's usually why.
Displaying bitcoin pricing to Canadian customers
Customers in Canada tend to think in CAD. If your site shows a BTC price directly (say, 0.00034 BTC), many customers won't know what that is without converting it themselves. The better approach is to show the CAD price as the primary figure and let the processor display the BTC equivalent at checkout.
Some merchants also post both: "$42 CAD (≈ 0.00039 BTC at current rate)." This is fine, just be aware that the BTC figure will be stale the moment you hard-code it. Always pull the rate dynamically.
A few things to state clearly on your checkout page:
- Payments are final once confirmed on-chain (no chargebacks)
- The BTC amount is calculated at the time the invoice is created
- You accept bitcoin for payment but you're not offering investment or financial advice
That last one sounds obvious, but it's good to have it written somewhere on your site.
Recording sales for CRA purposes
Every bitcoin payment you receive is business income, reported in CAD at the fair market value on the date of receipt. If your processor converts to CAD automatically, you'll have a clear record of the CAD amount. If you hold bitcoin, you need to record the BTC amount received and the CAD value at that time.
When you later sell or spend that bitcoin, the difference between what you received it for and what you disposed of it for is a capital gain or loss (or business income, depending on your trading pattern, and CRA distinguishes between the two). This is worth getting right from day one, because reconstructing records later is painful.
Keep your processor's transaction exports. Most will give you a CSV with dates, amounts in both BTC and CAD, and exchange rates used. That CSV is your primary record for tax time.
This article isn't tax or legal advice, and CRA guidance on digital assets changes. Check CRA's current publications and talk to an accountant familiar with crypto before filing.
FAQ
Do I need to register with FINTRAC to accept bitcoin on my website?
Businesses that receive bitcoin payments for goods or services they sell are generally not considered money services businesses (MSBs) by FINTRAC solely because they accept crypto. The MSB rules typically apply to businesses that exchange or transfer crypto as their primary activity. That said, the rules are fact-specific. If you're also converting crypto for customers or running a payment facilitation service, the analysis changes. Confirm your situation with a legal advisor.
Can I add a bitcoin button to a Shopify store?
Yes. Shopify's payment settings allow third-party payment providers, and several bitcoin payment processors offer Shopify apps. You won't be able to use Shopify Payments simultaneously for those transactions, but you can run both side by side, with Shopify Payments for card transactions and a crypto plugin for bitcoin.
What happens if a customer underpays or pays late?
This depends on the processor. Most will either mark the invoice as underpaid and require additional action, or cancel it after the invoice expires (typically 15-60 minutes). You set expiry times in your processor settings. It's worth communicating this to customers before they start the payment flow, because bitcoin transactions can take time to confirm and exchange rates fluctuate.
Will adding bitcoin payments affect my existing checkout flow?
Usually not. Bitcoin is added as an additional payment option alongside credit cards, not as a replacement. Customers who don't want to use bitcoin never see anything different. On most platforms the integration is a separate plugin or gateway, so it's isolated from your other payment methods.
Do I need a separate business bank account for bitcoin receipts?
Not necessarily, but it helps with bookkeeping. If your processor converts to CAD and deposits to your bank, it arrives like any other bank transfer. If you're holding bitcoin, it stays in a wallet rather than a bank account. Either way, keeping clear records is more important than the account structure.