Skip to content
Odoo ERP.ca, independent Canadian guide

Reference

Odoo in Canada

Every ERP vendor says it supports Canada. This page says exactly what Odoo Canada actually means: which modules install, which provincial positions exist, how place of supply is handled, and the one gap that reshapes most Canadian implementations.

Start with the gap: Canadian payroll

Odoo ships no Canadian payroll localization

Odoo’s documented list of countries with a payroll localization module covers Australia, Belgium, Bangladesh, Egypt, Hong Kong, India, Indonesia, Jordan, Kenya, Lithuania, Luxembourg, Malaysia, Mexico, Morocco, the Netherlands, Pakistan, Poland, Romania, Saudi Arabia, Slovakia, Switzerland, Türkiye, the United Arab Emirates, and the United States.

Canada is absent from that list. The United States is on it, which is why this catches people: buyers reasonably assume North American coverage means both.

Odoo documentation 19.4content/applications/hr/payroll/payroll_localizations.rst

In practice this means no CRA source-deduction calculation, no T4 or T4A generation, no Record of Employment, and no provincial remittance handling out of the box. The standard Canadian approach is to run payroll in a dedicated provider and post the summarized result into Odoo Accounting as a journal entry, which keeps the general ledger complete while leaving compliance with the payroll specialist.

Anyone proposing Canadian payroll inside Odoo is proposing a custom build. That can be legitimate. It should be priced, scoped, and risk-assessed as custom work rather than presented as configuration.

What installs with the localization

These three install automatically with the Canadian localization.
ModuleTechnical nameWhat it does
Canada - Accountingl10n_caBase accounting for the Canadian localization
Canada - Accounting Reportsl10n_ca_reportsAdds the Canadian accounting reports
Canadian Checks Layoutl10n_ca_check_printingCheque printing in the three common formats

Odoo documentation 19.4content/applications/finance/fiscal_localizations/canada.rst:26-52

CPA005 is not in that set

Electronic funds transfer through the CPA005 bank file needs l10n_ca_payment_cpa005, which is installed separately. If paying vendors by EFT is a requirement, put it on the implementation checklist explicitly.

Provincial fiscal positions

Installing Accounting creates a default fiscal position for each province and territory, plus an International position. The fiscal position is the mechanism that swaps one tax for another based on who you are transacting with.

  • Alberta (AB)
  • British Columbia (BC)
  • Manitoba (MB)
  • New Brunswick (NB)
  • Newfoundland and Labrador (NL)
  • Nova Scotia (NS)
  • Northwest Territories (NT)
  • Nunavut (NU)
  • Ontario (ON)
  • Prince Edward Islands (PE)
  • Quebec (QC)
  • Saskatchewan (SK)
  • Yukon (YT)
  • International (INTL)

Odoo documentation 19.4content/applications/finance/fiscal_localizations/canada.rst:159-174

Place of supply, as Odoo states it

“When considering what taxes to be applied, it is the province where the delivery occurs that matters. Therefore, delivery is the responsibility of the vendor and is accounted for at the customer location.”

Odoo documentation 19.4content/applications/finance/fiscal_localizations/canada.rst:180-182

The documentation works four cases, and they are worth reading literally because the third and fourth are where setups go wrong.

SituationFiscal position to set
Delivery to a customer in another provinceThe customer's province, on the customer record
Customer from another province picks up in personNone, on the customer record
International vendor charges no tax, broker charges itInternational, on the vendor record
International vendor charges provincial taxYour own position, on the vendor record

Odoo documentation 19.4content/applications/finance/fiscal_localizations/canada.rst:184-192

This is mechanics, and not tax advice

What is documented above is how Odoo decides which tax to apply once you have told it the fiscal position. Whether a particular supply is taxable, zero-rated, or exempt, and which rate is correct for it, is a question for a CPA who knows your business. Configuring the mechanism correctly and reaching the correct answer are two different exercises.

Paying vendors: EFT and cheques

CPA005 is the standardized file format Canadian banks use for batched electronic funds transfers. Odoo generates the file and you import it into your banking system.

Setting it up needs specific values from your bank, so gather them before configuration rather than during it.

FieldWhere it comes fromConstraint
Short Name used in Canadian EFTYou choose it, on the company recordMaximum 15 characters. Most banks require all uppercase.
Destination Data CenterYour bank5-digit ID
Originator IDYour bank10-digit code
Next File Creation NumberYou set the starting sequenceBetween 1 and 9,999

Odoo documentation 19.4content/applications/finance/fiscal_localizations/canada.rst:353-381

The generated CPA005 text file appears in the chatter on the batch payment, ready to download and import. Odoo’s documentation notes that after importing the file into your banking system, processing may take up to 48 hours, which is worth knowing before you promise a supplier same-day payment.

For cheques, the localization provides three layouts: Print Check (Top) - CA, (Middle) - CA, and (Bottom) - CA. Some formats need pre-printed stock.

Odoo documentation 19.4content/applications/finance/fiscal_localizations/canada.rst:288-322, 409-410

Canadian reporting

The localization adds Canadian variants of the core statements. Selecting them is a filter choice inside the report rather than a separate menu, which is a common source of “the numbers look wrong” confusion in the first month.

ReportCanadian variant
Balance SheetSelect Balance sheet (CA) in the Report filter
Profit and LossSelect Profit and loss (CA) in the Report filter
Cash Flow StatementStandard
Executive SummaryStandard
Tax ReportPeriods: monthly, bi-monthly, quarterly, every 4 months, semi-annual, annual

Odoo documentation 19.4content/applications/finance/fiscal_localizations/canada.rst:234-266

The Canadian readiness summary

AreaStatusDetail
Chart of accountsShipsCanada-specific, seven account categories
Provincial tax positionsShipsAll 13 provinces and territories, plus International
Financial statementsShipsCanadian balance sheet and P&L variants
Cheque printingShipsThree CA layouts, may need pre-printed stock
EFT to vendorsExtra moduleCPA005, requires l10n_ca_payment_cpa005 and bank-issued IDs
Sales tax determinationConfigurationMechanism ships; correct treatment is a CPA question
PayrollNot includedNo Canadian localization. Use a payroll provider.
Bilingual (French) interfaceShipsOdoo ships French; Quebec obligations extend past the UI

Common questions

Does Odoo handle Canadian payroll?

No. Odoo publishes payroll localizations for a specific list of countries, and Canada is not on it. There are no CRA source-deduction rules, no T4 or T4A generation, and no Record of Employment. Canadian companies run payroll in a dedicated provider and post the result into Odoo Accounting as a journal entry.

Does Odoo handle GST, HST, PST and QST?

The Canadian localization creates default sales and purchase taxes and a fiscal position for each province and territory plus an International position. Which tax applies to a given supply is driven by the fiscal position on the customer or vendor record, and Odoo's documentation states that the province where delivery occurs is what matters.

Can Odoo pay Canadian vendors by EFT?

Yes, through the CPA005 file format used by Canadian banks for batched electronic funds transfers. It requires the separate l10n_ca_payment_cpa005 module, a company short name of at most 15 characters, and a destination data centre ID and originator ID issued by your bank.

Which modules install with the Canadian localization?

Three install automatically: l10n_ca (Canada - Accounting), l10n_ca_reports (Canada - Accounting Reports), and l10n_ca_check_printing (Canadian Checks Layout). The CPA005 EFT module is not among them and must be installed separately.