Does Bill 96 Apply to Your Online Store?
The short answer: if Quebec consumers can buy from you and you ship to Quebec, the law applies. The legislation uses the concept of "enterprises" offering goods or services to Quebec consumers. There is no province-of-registration carve-out.
Three scenarios where it clearly applies:
- You're an Ontario-based Shopify merchant and you ship to Quebec addresses
- You're a BC-based WooCommerce store with Quebec customers
- You run Google Ads targeting Quebec users and Quebec customers convert on your site
One scenario where it likely does not apply: your store has no French-language option, you don't ship to Quebec, and you've never marketed to Quebec consumers. But if you do accept Quebec orders, "I didn't know" is not a compliance defence.
What Bill 96 Actually Requires for Online Stores
The Charter of the French Language (as amended by Bill 96) requires that commercial activities offered to Quebec consumers be available in French. For an e-commerce store, this touches more of your stack than most merchants expect.
The Checkout Interface
Every element of the purchase flow must be in French β or at minimum available in French. This means:
- Product pages, descriptions, and pricing shown in French
- Cart and checkout buttons in French ("Ajouter au panier", "Passer la commande", "ProcΓ©der au paiement")
- Form field labels in French ("Adresse de livraison", "Code postal", "NumΓ©ro de tΓ©lΓ©phone")
- Error messages in French ("Ce champ est obligatoire", "Adresse courriel invalide")
- Order confirmation pages in French
- Payment method labels and descriptions in French
The biggest trip wire for most stores: the checkout button still says "Checkout." It must say "Passer la commande" or an equivalent French phrase. This is also the most visible element a Quebec customer will screenshot when filing an OQLF complaint.
Transactional Emails
Order confirmations, shipping notifications, and return authorizations are considered part of the commercial transaction. They must be sent in French β or, if your system allows it, in the customer's preferred language, with French as the default for Quebec addresses.
Sending automated emails only in English to Quebec customers is a clear violation. Every major platform supports French email templates, but they don't enable them by default.
Legal and Policy Documents
The following documents must be available in French for Quebec consumers:
- Terms of service / terms and conditions
- Return and refund policy
- Privacy policy
- Shipping policy
- Any contracts or agreements presented during checkout (e.g., subscription terms)
Bilingual versions are acceptable β English and French side-by-side β as long as French is not subordinated. French must be no less prominent than English.
Customer Support
Quebec consumers have the right to communicate with your business in French. You don't need to have French-speaking staff available 24/7, but you must be able to handle inquiries in French. For most small merchants, a French-language contact email or a chatbot with French capability satisfies this requirement. A phone line that only operates in English does not.
Privacy Notices
Quebec already has its own provincial privacy law (Law 25 / Bill 64), which requires privacy notices and consent mechanisms in French. Bill 96 reinforces this: privacy notices must be available in French, and any cookie consent banners or data collection disclosures must operate in French for Quebec users.
Platform-Specific Compliance: Shopify
Shopify has built-in translation support through the Markets feature. The path to Bill 96 compliance on Shopify has several steps merchants often miss:
Enabling French on Shopify
- In your Shopify admin, go to Settings β Languages and add French (Canada)
- Translate your store content β product descriptions, collections, pages, and policies β either manually or using a translation app (Langify, Weglot, or Shopify's built-in translate-and-adapt app)
- In Settings β Markets, create a Canada market with French as the default language for Quebec (or set French as a customer-selectable option)
- Verify that your theme's checkout strings are translated β this is separate from product content. Go to Online Store β Themes β Edit default theme content and check all checkout-related strings
Third-Party Apps Are Your Problem, Not Shopify's
This is where most Shopify stores fail. Your store may be fully translated, but if you're running:
- A review widget (Loox, Judge.me, Okendo) that only shows English prompts
- A subscription app (ReCharge, Bold Subscriptions) with English-only checkout flows
- An upsell popup (CartHook, AfterSell) that fires in English after checkout
- A loyalty program (Smile.io, Yotpo Loyalty) with English-only emails
β¦then those elements are non-compliant for Quebec users, regardless of your main store language. You need to verify French support in every app that Quebec customers interact with.
Shopify Email Notifications
Shopify's automated notification emails (order confirmation, shipping update, delivery, etc.) are configurable per language. Under Settings β Notifications, ensure you've created French versions of every customer-facing notification. Shopify supports this natively β it just isn't set up by default.
Platform-Specific Compliance: WooCommerce / WordPress
WooCommerce doesn't come with multilingual support built in. You'll need a translation plugin, and the checkout flow needs explicit verification after setup.
Translation Plugins
WPML (WP Multilingual): The most robust option. Handles WooCommerce checkout strings, product descriptions, checkout pages, and emails. It integrates with most major WooCommerce extensions. License starts around $99/year. Required if you have a complex store with multiple plugins.
Polylang: Free version handles core WordPress content well. The WooCommerce integration requires Polylang for WooCommerce (paid add-on, ~$50/year). Lighter footprint than WPML but less coverage for third-party extensions.
After installing either plugin, the checkout flow requires manual verification. Walk through a test purchase as a French-language visitor and check every screen, every error, and every email.
Checkout Strings in WooCommerce
WooCommerce checkout strings ("Proceed to Checkout", "Place Order", form labels, error messages) are stored in translation files. If WPML or Polylang isn't catching them, you may need to override them using a custom plugin or by adding po/mo translation files. The string "Place Order" β "Passer la commande" is the most commonly cited failure point.
WooCommerce Emails
WooCommerce sends emails using PHP templates. With WPML, emails are translated automatically based on the customer's language. With Polylang + WooCommerce add-on, the same applies. But verify it works β send test orders in French and confirm the email arrives in French.
The Stripe Problem
Stripe is used by a large share of Canadian e-commerce stores, either through Stripe Checkout (hosted payment page) or Stripe Elements (embedded). Both have language settings that merchants frequently ignore.
Stripe Checkout and Elements default to detecting the browser language, which works correctly for many users. But if you've hardcoded the locale in your Stripe initialization (common in custom integrations), it may be locked to English.
To set Stripe Checkout to French:
- In Stripe Checkout sessions, pass
"locale": "fr-CA"in the session creation API call, or use"locale": "auto"to let Stripe detect the browser language - In Stripe Elements, initialize with
locale: 'fr-CA'orlocale: 'auto'
The bigger issue: if you're using Stripe's hosted checkout (the stripe.com payment page), the Stripe-branded interface is in whatever language the browser requests. Your integration can't force French. The customer's browser locale will determine what they see. For Quebec compliance, locale: 'auto' is your best option.
Note that Helcim and Moneris β both Canadian processors β have built-in French support in their hosted checkout pages. If serving Quebec customers is a significant part of your business, this is worth factoring into processor selection.
Common Compliance Mistakes
These are the patterns that generate OQLF complaints:
- Checkout button says "Checkout" or "Buy Now" β Must be "Passer la commande" or equivalent French text. This is the most visible violation.
- Stripe checkout rendered in English β Default Stripe integrations don't set
locale: 'auto'. Quebec customers see an English payment page. - Order confirmation email in English only β Automated emails to Quebec addresses must be in French. Platform defaults are English.
- Google Ads landing pages in English for Quebec traffic β If you run Google Ads targeting Quebec (by region or language), the landing page must be in French or bilingual. Running French-language ads to an English-only landing page is a compliance failure.
- Return policy in English only β A return policy link at the bottom of checkout that goes to an English-only page is a violation. Translate it.
- Privacy policy not in French β This is doubly required: by Bill 96 and by Quebec's Law 25 on data privacy.
- Third-party apps not translated β Review requests, subscription emails, loyalty points notifications β if it reaches a Quebec customer, it needs to be in French.
- Cookie consent banners in English β Cookie consent popups shown to Quebec visitors must operate in French.
How OQLF Enforcement Works
The Office quΓ©bΓ©cois de la langue franΓ§aise (OQLF) is the enforcement body. It does not conduct mass audits of Canadian e-commerce sites. Enforcement is primarily complaint-driven.
A Quebec consumer who encounters an English-only checkout can file a complaint at the OQLF website (oqlf.gouv.qc.ca). The OQLF will contact the business, request an explanation, and give an opportunity to correct the issue. If the business doesn't comply, or if violations are repeated, penalties are assessed.
Penalties under the updated Charter (post-Bill 96):
- First violation, individual: $3,000β$7,000
- Subsequent violations, individual: $6,000β$14,000
- First violation, corporation: $10,000β$30,000
- Subsequent violations, corporation: $20,000β$60,000
A "violation" is per infraction, not per customer. But a store with multiple English-only elements could face multiple separate violations from a single complaint.
Practical Compliance Checklist
Work through this checklist for every online store shipping to Quebec:
- β All checkout buttons translated to French ("Passer la commande", "Ajouter au panier", "ProcΓ©der au paiement")
- β Form labels translated (address fields, name, phone, email)
- β Error messages translated ("Ce champ est obligatoire", etc.)
- β Order confirmation page in French
- β Payment method names and descriptions in French
- β Cart summary, subtotal, shipping, and tax labels in French
- β Stripe locale set to
autoorfr-CAin integration code - β Payment gateway hosted page verified in French for Quebec users
- β PayPal / Apple Pay / Google Pay text and prompts verified
- β Order confirmation email translated to French
- β Shipping notification email translated to French
- β Delivery confirmation email translated to French
- β Return/refund authorization emails translated to French
- β Abandoned cart recovery emails translated to French
- β Review request emails translated to French
- β Terms of service available in French
- β Return and refund policy available in French
- β Privacy policy available in French
- β Shipping policy available in French
- β Subscription terms (if applicable) in French
- β Cookie consent banner operates in French for Quebec users
- β Product titles translated to French
- β Product descriptions translated to French
- β Collection/category names translated to French
- β Image alt text includes French context where relevant
- β French-language contact option available (email, chat, or phone)
- β Support team able to respond in French, or French-language help docs available
- β FAQ/help centre accessible in French
- β Review app (Loox, Judge.me, etc.) French support verified
- β Subscription app checkout strings verified in French
- β Loyalty/rewards program emails in French
- β Upsell/cross-sell popups translated
- β Live chat widget configured with French option
- β Google Ads targeting Quebec geography or French-language keywords β landing pages in French
- β Meta Ads targeting Quebec β destination pages in French
Does Bill 96 Apply to Businesses Outside Quebec?
Yes, if you're actively serving Quebec consumers. The Charter of the French Language applies to enterprises operating in Quebec β and courts have interpreted "operating in Quebec" to include businesses that actively solicit Quebec customers, even remotely.
The practical test: are Quebec consumers completing transactions on your site? If yes, compliance is expected.
Disabling shipping to Quebec entirely is a valid opt-out, though an obviously drastic one. Most businesses are better served by getting compliant β it's a one-time setup cost, not an ongoing burden, once the translations are in place.
Federal Crown corporations and federally regulated businesses (banks, telecoms, airlines under federal jurisdiction) operate under different rules, primarily the federal Official Languages Act. This article covers provincial retail and e-commerce, which falls under the Charter of the French Language.
What This Means for Payment Processor Selection
Bill 96 is a meaningful differentiator when choosing a payment processor for a Quebec-serving store:
- Helcim: Canadian processor with full French interface support on hosted checkout. No locale configuration required.
- Moneris: Canadian processor, French checkout support built in. Historically the default processor for Quebec merchants.
- Stripe: Works, but requires explicit locale configuration (
fr-CAorauto). Custom integrations may need code review. - Shopify Payments: Follows your Shopify language settings. If your Shopify store is properly set up for French, Shopify Payments checkout will match.
- Square: French POS interface available. Online store French support depends on Square Online setup.
- PayPal: Detects browser locale and renders in French automatically for French-browser users. Reliable for Quebec.
If Shopify Payments or Helcim is available for your store type, they are the lowest-friction path to Bill 96 compliant checkout β French is treated as a first-class option, not an afterthought.
Getting It Done
For most Shopify merchants, the full compliance work takes 8β16 hours: setting up French translations, configuring email templates, translating policy pages, and verifying third-party apps. Hiring a Shopify developer familiar with Langify or Weglot cuts the time significantly.
For WooCommerce, budget more time. WPML setup and checkout verification is more manual, and plugin coverage varies. A French-bilingual WooCommerce developer or a translation agency familiar with Quebec regulatory requirements is worth the investment.
The OQLF is not trying to shut down businesses. The process typically begins with a compliance request, not a penalty β but that assumes you act on it. A business that ignores an OQLF notice escalates to enforcement.