E-Commerce Revenue Recognition: When Does a Sale Actually Count?

A customer clicks buy. Payment hits your account days later. In between there are refunds, cancellations, and chargebacks. Knowing when a sale actually counts is the difference between accurate books and fiction — and CRA cares about the answer.

Bookkeeping
e-commerce-revenue-recognition-when-sale-counts

Does this sound like you?

Revenue recognition sounds like an accounting textbook topic. But it affects your numbers every single day. See if any of these ring true.

  • You record a sale the second someone clicks 'Buy Now' even though the order might get cancelled before it ships.
  • A customer returned a $200 item three weeks after purchase and you have no idea how to adjust your books.
  • Your revenue this month includes orders you have not even shipped yet.
  • Your bank deposits never match your sales reports and you have stopped trying to figure out why.
  • You sell pre-orders and count that money as revenue even though you have not delivered anything.
  • You have international sales in USD and recorded them at whatever exchange rate you felt like that day.
  • Your accountant asked when you recognize revenue and you said 'when the money hits my bank account.'

If you spotted yourself in that list, your revenue numbers might not be as accurate as you think. This is one of the most common mistakes we fix for e-commerce sellers — and it is easier to get right than you would expect.

 

The Question That Trips Up Most Online Sellers

When do you record a sale? Seems obvious, right? When a customer buys, it's a sale. But accounting isn't that simple. A customer places an order on Monday. They pay immediately. But they request delivery on Friday. Have you made a sale? What if they change their mind and request a refund on Wednesday before the product ships? You never delivered.

Is it still a sale? What if the order is placed on Monday, payment goes through on Tuesday, and it arrives on Friday? Which day is the sale? This matters because revenue recognition is governed by accounting standards. In Canada, there's ASC 606 (the revenue recognition standard).

It says a sale is a sale when you've delivered the product or service to the customer and they've paid you. Until then, it's conditional. This is more important than it sounds. If you recognize revenue too early, your taxes might be wrong. If you recognize revenue too late, your financial statements don't match reality.

 

The Five Steps of Revenue Recognition Under ASC 606

Step one: identify the contract. A customer buys a product. There's a contract (the sale).

Step two: identify the performance obligation. You have to deliver the product.

Step three: determine the transaction price. The customer pays $75.

Step four: allocate the transaction price. This matters if you're selling a bundle.

A customer buys a hoodie and free shipping. You allocate $70 to the hoodie and $5 to the shipping.

Step five: recognize revenue when the performance obligation is satisfied. For most e-commerce sellers, this is when the product ships (not when it's ordered). This is the key. You don't record revenue when a customer clicks buy.

You record it when you've actually given them the product. For most online sellers, that's when the item ships. For digital products, it's when the customer gets access. This is why accurate shipping dates are crucial. Your bookkeeping needs to track when items shipped. That's when revenue is recognized.

 

The Impact on Your Numbers: Orders vs. Shipped Revenue

This difference becomes obvious when you look at numbers. Say you get 100 orders on Monday totaling $7,500. Your Shopify dashboard shows $7,500 in revenue. But by Tuesday afternoon, only 60 orders have shipped. The other 40 are still being packed. Under revenue recognition rules, you've only recognized $4,500 in revenue (the 60 orders shipped).

The other 40 orders aren't revenue yet. They're pending. This throws off your bookkeeping if you record orders as revenue instead of shipments. Your profit and loss statement will be wrong. Your tax return could be overstated. Many sellers make this mistake. They export their daily revenue from Shopify and record it. That's wrong.

They should export shipments and record those. The good news: accounting software like QuickBooks can handle this automatically if you set it up right. When you record a shipment in Shopify, QBO recognizes revenue. When you record an order, you create a pending invoice. Revenue appears only when the shipment happens.

 

Handling Returns and Refunds: The Revenue Clawback

Revenue recognition gets messier with returns. You shipped a product on Monday and recognized $50 in revenue. The customer hates it and requests a refund on Wednesday. You accept the return. What happens? The sale is no longer a sale. You need to reverse the revenue. This is called a "clawback." You reduce revenue by $50.

Many sellers don't do this properly. They just refund the customer and forget about the revenue. But your books still show the sale. Your profit is overstated. The right approach: when you accept a return, create a credit memo. This reverses the original sale. It reduces revenue. It puts the product back in inventory.

It shows you actually didn't profit from that transaction. Handling this properly is crucial for accurate accounting. It's especially important if you have high return rates. If 15% of your sales come back, that's $1,500 on every $10,000 in sales. That's material. You need to see that in your books. It changes whether your business is profitable.

 

Timing Differences: When Payment Arrives vs. When You Recognize Revenue

With e-commerce, there's often a timing gap. You ship a product on Monday. That's when you recognize revenue. But the payment might not hit your bank account until Wednesday. Sometimes it's weeks. This creates a timing difference on your books. Your profit and loss statement shows revenue on Monday (correct for revenue recognition).

Your bank account shows nothing on Monday (correct for cash accounting). These don't match. This is normal and correct. Your accountant will understand. But if you're not tracking this carefully, you'll think something is wrong. You'll see revenue on the books and wonder why it's not in the bank.

This is where separating "accrual revenue" (what you've earned) from "cash revenue" (what you've received) matters. Many seller use cash basis accounting (you record revenue when cash arrives) because it's simpler. That's okay, but you lose visibility into revenue that's been earned but not yet received.

Understanding this distinction prevents confusion and helps you manage cash flow.

 

Shipping and Delivery: The Critical Moment

For e-commerce sellers, revenue recognition usually happens at shipment. But there's nuance. If you ship via Canada Post, FedEx, or UPS, revenue is recognized when you hand off the package. The carrier now has responsibility. If you hand off on Monday, that's the revenue date.

If you're shipping yourself (locally or to nearby customers), revenue is recognized when the customer receives the package. Signed delivery confirmation is your proof. If you use a 3PL, revenue is recognized when the 3PL ships on your behalf. Your 3PL should provide proof of shipment (a packing slip or shipping notification).

This is where automation helps. When you ship an order in Shopify or your e-commerce platform, the system should automatically trigger revenue recognition in QuickBooks. The shipping date becomes the revenue date. This happens automatically if you set it up correctly. No manual entry needed.

The key: ensure your shipping dates are accurate in your platform. If your platform shows a ship date of Monday but you actually shipped Tuesday, revenue gets recognized on the wrong date.

 

Multicurrency and International Sales: The Complexity Multiplier

International sales add another layer. A US customer buys a product for $100 USD. You recognize revenue immediately at the exchange rate on the transaction date. The exchange rate is 1.36 (US dollar to CAD). So you recognize $136 CAD in revenue. But the customer pays you through Stripe on Wednesday. By then, the rate is 1.35.

Stripe deposits $135 CAD instead of $136. You have a foreign exchange loss of $1. This needs to be recorded separately. It's not a refund. It's an exchange loss. Most sellers ignore this on small amounts. If you're doing significant US sales, it matters. You need accounting software that handles multicurrency properly. QuickBooks can do this.

When you set up your system, enable multicurrency. When you record a transaction in USD, QBO tracks both the USD amount and the CAD equivalent. If the exchange rate moves before payment, QBO shows the loss. This becomes especially important at tax time. These small losses add up.

A seller doing $500,000 in US sales might have $5,000-10,000 in exchange differences. You need to track them.

 

The Practical Setup in Your Accounting Software

Here's how to implement this correctly in QuickBooks. First, create revenue accounts by sales channel and sales type. Track e-commerce revenue separately from other revenue. Second, connect your e-commerce platform to QBO. Shopify integration exists. WooCommerce plugins exist. These automatically pull shipment data.

When you ship an order in your platform, QBO records revenue immediately. Third, create a process for returns. When a customer initieves a return request, you create a credit memo in QBO. This reverses the original invoice. It removes the revenue. Fourth, reconcile monthly. Run a revenue report. Check it against your sales dashboard.

They should roughly match (after returns and refunds). Small differences are normal (timing). Large differences mean something is wrong. Fifth, talk to your accountant about revenue recognition policy. Document your policy in writing. When does revenue get recognized? (Shipment? Delivery? Payment?) Be consistent.

This documentation becomes important if you're ever audited.

 

Frequently asked questions

When should I record revenue for an online sale?

Generally when the product is shipped or delivered, not when the customer places the order. The sale is not complete until you have fulfilled your obligation to deliver. Recording revenue at order time overstates your income.

How do I handle refunds in my accounting?

Record a revenue reversal for the refund amount and adjust your COGS if the item is returned to inventory. Do not just subtract it from next month's sales — it needs to be recorded in the period it relates to.

Should pre-orders count as revenue?

No. Pre-order payments are a liability, not revenue. You owe the customer a product. Record the payment as deferred revenue and move it to revenue when you ship the item.

What is the difference between cash basis and accrual basis for e-commerce?

Cash basis records revenue when money arrives in your account. Accrual basis records revenue when you earn it, regardless of payment timing. Accrual gives a more accurate picture for e-commerce because of the gap between orders and payouts.

How do I account for chargebacks?

Reverse the original revenue, remove the item from COGS if applicable, and record the chargeback fee as a separate expense. This gives you an accurate picture of both lost revenue and the cost of disputes.

Do I need to worry about revenue recognition if I am a small seller?

Yes. CRA does not care how big you are. If you overstate revenue one month and understate it the next, your tax filings could be inaccurate. Consistent revenue recognition protects you during audits.

How do gift cards affect revenue recognition?

Gift card sales are not revenue. They are a liability — you owe the cardholder a product or service. Revenue is recognized when the gift card is redeemed and the order is fulfilled.

When to talk to us

Revenue recognition is one of those things that seems simple until you realize you have been doing it wrong for a year.

• You are not sure when to record a sale — at order, at payment, or at shipment.

• Your refund process is a mess and you know your revenue numbers are off.

• You sell pre-orders or subscriptions and do not know how to handle deferred revenue.

• You have international sales and the exchange rate timing is confusing your books.

• You got a CRA notice and need to clean up your revenue records.

• Your cash flow and your revenue report tell completely different stories.

Book a free 30-minute call at fluentbook.ca and we will help you set up revenue recognition that CRA will not question.

Need help with your books?

Book a free 30-minute call with Fluent Books. We will review your situation and recommend the right plan — no pressure, no obligation.

Book a Free Call

Disclaimer: This article is for informational purposes only and does not constitute professional tax or legal advice. Consult a CPA or tax professional for guidance specific to your situation.

Related guides

Ready for a financial partner who
actually explains things?

Free 30-minute call. No obligation. We serve businesses across Canada and the US remotely.