A U.S. software company or blockchain business offering to pay a Canadian IT contractor in USDC or Bitcoin instead of a wire transfer is now a routine request, not an edge case. The tax treatment does not change because the currency is unusual. What changes is the invoicing workflow and the bookkeeping discipline needed to support the number that ends up on the return.
This guide covers the practical side of accepting crypto payments. For how the income is classified for tax purposes (business income versus capital gain, mining and staking, corporate holding risk), see Crypto, Tokens, and Digital Asset Income for Tech Consultants.
Which Crypto Shows Up in Practice
Stablecoins, primarily USDC and USDT, are the most common payment method because they are pegged to the U.S. dollar. A contractor invoicing USD 5,000 who is paid in USDC receives a number that barely moves between invoice date and payment date. Bitcoin and Ethereum appear with blockchain-native clients, DAOs, and crypto exchanges, and carry meaningfully more price movement between the invoice date and the date the payment clears.
Invoicing in Cryptocurrency
State the fee in a stable unit, typically USD or the stablecoin itself, on the invoice. Record the wallet address or payment rail used for that specific invoice. If the client pays in BTC or ETH against a USD-denominated invoice, note the exchange rate or token price used to calculate the crypto amount, since that becomes part of the support for the eventual Canadian-dollar figure in the books.
Keep the transaction ID (the on-chain hash) for every payment. Unlike a bank wire, a blockchain transaction has a permanent, verifiable record, but only if it is captured and filed with the invoice at the time.
Determining Income in Canadian Dollars
The income amount is the fair market value of the crypto received, in Canadian dollars, on the date it was received, not the invoice date and not the date it is eventually cashed out. For a stablecoin, this is close to a straightforward USD-to-CAD conversion. For BTC or ETH, the price at the moment the transaction was confirmed needs to be sourced from an exchange or a rate-tracking service and documented.
The Bank of Canada’s daily exchange rates cover the CAD leg of the conversion for stablecoins and other USD-referenced tokens. For the crypto-to-USD or crypto-to-CAD price itself, use the exchange or platform where the payment was received and keep a screenshot or export showing the price at the transaction time.
Holding Versus Immediately Converting
Converting to Canadian dollars on or near the date of receipt keeps the file simple: the income figure and the cash in the bank account are close to the same number, and there is no second asset to track. Holding the crypto is a legitimate choice, but it creates a separate disposition later. That later sale, spend, or conversion is valued independently, using its own fair market value at the time, and any difference between the value on the date received and the value on the date disposed of is a separate gain or loss, not part of the original service income. See the crypto income classification guide for how that later disposition is taxed.
Common Bookkeeping Mistakes
- Recording the cash-out value instead of the fair market value on the date the crypto was actually received as payment
- No transaction ID or wallet record kept alongside the invoice
- Mixing personal and business wallets, so a corporate invoice payment lands in a personal account with no clean audit trail
- Treating stablecoins as “basically cash” and skipping the CAD valuation step entirely
- No consistent source for exchange rates or token prices, so each entry uses a different reference point
- Losing the original transaction record when funds are moved between wallets or exchanges before conversion
Example: A U.S. Client Pays in USDC
A Canadian incorporated contractor invoices a U.S. blockchain company USD 8,000 for a month of development work. The client pays in USDC to the corporation’s wallet. On the payment date, USDC trades at approximately 1:1 with the U.S. dollar, and the Bank of Canada daily rate converts that to a Canadian-dollar figure for the books. The corporation records the CAD amount as revenue on that date, keeps the transaction hash and a rate screenshot with the invoice, and either converts the USDC to CAD through an exchange shortly after or holds it as a separate tracked asset. GST/HST treatment follows the same export-of-services analysis as a USD wire payment from the same client; see the U.S. client income guide for the zero-rating facts that apply.