Last updated June 2026. Figures cite the CRA, CBSA, and Alberta sources noted in each section. This is operational guidance for evaluating software. It is not tax advice.
One company, two businesses
Picture a mid-sized Alberta vape company. It imports and distributes e-liquid and devices to about 60 retail accounts across Western Canada, and it runs four of its own stores plus an online shop. That is two business models inside one legal entity: B2B wholesale and B2C retail.
This representative scenario starts with separate wholesale, retail, and finance tools. The evaluation tests whether those systems share governed stock, cost, margin, and excise data or require reconciliation. The case study asks whether one system can support both business models and what must be validated for Canada.
Can one Odoo system run both B2B wholesale and B2C retail?
Yes, when the workflows are configured and validated in one Odoo database. Wholesale and retail can share governed product and stock records, which removes the need for a separate nightly channel-to-channel synchronization layer inside that design.
The wholesale side uses Odoo Sales with customer and volume pricelists, payment terms for accounts on credit, and a Customer Portal where store buyers reorder and pull their invoices. The retail side uses Odoo POS in each store and Odoo eCommerce online. Because every channel reads the same catalog and the same warehouse, a case of pods sold to a wholesale account and a single pod sold at the counter both draw down one stock figure and land in one margin report. That shared spine is the reason to put vape wholesale and retail on one ERP instead of two.
Seven operational problems a vape business throws at software
A vape ERP evaluation should test seven operational requirements across wholesale, retail, inventory, finance, and compliance.
| Operational requirement | What the software evaluation must demonstrate |
|---|---|
| Federal plus provincial excise duty | Model the applicable duty by container volume and approved cost treatment |
| Province-specific excise stamps | Link the required stamp or lot reference to controlled inventory |
| Different provincial stamp, flavour, and tax rules | Map destination rules and show how they are tested and maintained |
| Wholesale (B2B) and retail (B2C) in one entity | Demonstrate both channels sharing governed product, stock, customer, and finance data |
| Age verification in store and online | Confirm the in-store and online age-verification scope, controls, and ownership |
| Lot traceability for recalls and packaging compliance | Demonstrate upstream and downstream lot traceability with retained evidence |
| Margin analysis with excise duty in cost | Show the approved landed-cost treatment and its effect on product margin |
The Odoo build, module by module
The table maps operational needs to the Odoo apps used in a proposed design. Age verification, excise, reporting, and province-specific controls may require configuration, extensions, third-party services, and adviser validation.
| Operational need | Odoo app |
|---|---|
| Wholesale pricing, volume discounts, credit terms | Sales + Pricelists |
| B2B self-serve reorder and invoices | Customer Portal |
| In-store age-confirmation workflow | Point of Sale + validated control |
| Online age-verification workflow | eCommerce + validated control |
| One catalog with flavour, nicotine, size variants | Products + Variants |
| Approved excise-stamp reference tied to controlled stock | Inventory (lots / serials) + approved design |
| Approved excise-duty treatment in landed cost | Purchase + Landed Costs + accounting validation |
| Excise-liability inputs and reporting support | Accounting + approved treatment and reporting process |
| Province-specific destination, product, and tax controls | Multi-warehouse + Fiscal Positions + validated rules |
Sales and pricelists (the wholesale engine)
Wholesale accounts get their own pricelists, so buyers in different provinces see their agreed prices and volume breaks apply on their own. Credit limits and payment terms sit on the customer record.
Customer Portal (B2B self-serve)
Store accounts can use the portal to reorder, download invoices, and track deliveries. A pilot should measure adoption, exceptions, and any reduction in manual order entry before that outcome is used in a business case.
Inventory with lots and excise stamps
Vape stock can be configured with lot or serial tracking and an approved reference for the applicable excise stamp. In a scripted recall or audit scenario, the team should demonstrate upstream and downstream trace queries, retained evidence, and the agreed packaging and traceability controls. Regulatory sufficiency still requires validation by the business and its advisers.
Purchase and landed costs (true cost with duty)
Subject to accounting and tax validation, excise duty can be modeled in the landed cost of the goods instead of a sales-time tax line. The implementation should prove the approved accounting treatment and its effect on product-cost and margin reports with representative transactions.
Accounting (excise liability and CRA returns)
Accounting can be configured to track an approved excise-liability treatment and support the inputs used in an importer or licensee's reporting. GST and applicable provincial sales taxes should be mapped with the current Odoo Canadian localization, then reviewed and tested with the business's accounting or tax adviser.
Can Odoo handle Canadian vaping excise and excise stamps?
Odoo can be evaluated for this requirement by demonstrating lot or serial tracking for the applicable stamp reference and an approved landed-cost treatment for duty. The federal vaping excise duty is $1.12 per 2 mL (or fraction) for the first 10 mL in a container, then $1.12 per 10 mL above that, with a vaping excise stamp required on every package (CRA; CBSA Memorandum D18-3-2). On January 1, 2025, Alberta, Manitoba, New Brunswick, Prince Edward Island, and Yukon joined the coordinated vaping duty system that Ontario, Quebec, the Northwest Territories, and Nunavut were already in (Canada.ca, EDN95). In a participating province a provincial duty equal to the federal duty is added, so the total roughly doubles and the package needs that province's own stamp. Current rates, rules, configuration, and reporting treatment must be validated before go-live.
For Alberta the combined duty works out like this:
| Bottle size | Federal duty | Total in Alberta (federal + provincial) |
|---|---|---|
| 10 mL | $5.60 | $11.20 |
| 30 mL | $7.84 | $15.68 |
| 60 mL | $11.20 | $22.40 |
Alberta set two hard dates: from January 1, 2025 packaged products entering the Alberta market need an Alberta-specific stamp, and from April 1, 2025 Alberta retailers may only sell products that carry that stamp (Alberta.ca). A proposed Odoo design can use a lot or serial attribute for the approved stamp reference and an approved landed-cost treatment for duty. Before go-live, the implementation must demonstrate destination controls, stamp traceability, accounting treatment, exceptions, and retained test evidence.
Does Odoo verify age at the point of sale and online?
Potentially, but the implementation must demonstrate the required in-store and online controls. Alberta requires buyers to be 18 and retailers to card anyone who looks under 25 (Alberta.ca, Tobacco, Smoking and Vaping Reduction Act). An age-confirmation workflow may require native configuration, an extension, or a validated third-party service, depending on the channel and evidence requirements. Software controls support the operating procedure; staff training, identity checks, legal review, and control ownership remain necessary.
Selling across provinces: different stamps, different flavour rules
Odoo can support a multi-province design using warehouses, fiscal positions, and product-availability controls after the current rules are mapped and validated. A wholesaler shipping to several provinces may need province-specific excise stamps and must account for product restrictions that differ by destination. The implementation should demonstrate inventory segregation, stamp references, tax treatment, product restrictions, exceptions, and retained test evidence for each in-scope province. The business must assign an owner to keep those rules current.
What ERP should a vape wholesaler or retailer in Canada use?
For an operator evaluating wholesale and retail in one system, Odoo can be tested because Sales, POS, eCommerce, Inventory, and Accounting share one data model and stock position. The evaluation should demonstrate B2B pricelists and portal workflows, B2C POS and eCommerce, traceability, excise and landed-cost treatment, and multi-province tax and product rules. Dedicated tobacco-distribution systems should be tested against the same retail, eCommerce, Canadian compliance, integration, implementation, and total-cost requirements. The deciding factors are the demonstrated workflows, regulatory validation, operating model, and ownership responsibilities.
A representative outcome and timeline
The intended operational outcomes are one governed stock position across wholesale and retail, approved excise-duty treatment in product cost, retained stamp and lot history, and a portal-supported B2B reorder workflow. These are illustrative design outcomes. No client result is being reported. A delivery plan can phase finance, inventory, and purchasing first; wholesale sales and the portal next; and POS and eCommerce after the excise and multi-province rules are validated. The duration depends on discovery, data readiness, integrations, compliance review, testing, and client decisions.
Is this your operation?
If you run a Canadian vape wholesale and retail business on two disconnected systems, and excise reconciliation eats your month end, this is the build worth scoping. Book an Odoo Fit Audit and we will map your wholesale, retail, and excise reality to a phased Odoo plan.
FAQ
Can one Odoo system really run both wholesale and retail?
Yes, when the workflows are configured and validated in one database. Wholesale can use Sales, Pricelists, and the Customer Portal while retail uses POS and eCommerce. The implementation should demonstrate shared product, stock, reservation, accounting, and exception behavior without relying on a separate channel-to-channel synchronization layer.
How does Odoo track vaping excise stamps?
A proposed design can use lot or serial tracking with an approved province-specific stamp reference. The implementation should demonstrate destination controls, upstream and downstream trace queries, exceptions, and retained evidence. The business and its advisers must validate whether the design satisfies the applicable audit, recall, and regulatory requirements.
How much is the vaping excise duty in Canada in 2025?
The federal duty is $1.12 per 2 mL for the first 10 mL, then $1.12 per 10 mL above that. In participating provinces, including Alberta as of January 1, 2025, a provincial duty equal to the federal duty is added, so the total roughly doubles (CRA; Canada.ca EDN95).
How long does an Odoo implementation for a vape business take?
There is no universal duration. Scope it after discovery based on data readiness, integrations, compliance review, testing, and client decisions. A plan may phase finance and inventory first, wholesale and the portal next, and POS and eCommerce after the governing rules are validated.
Odoo® is a registered trademark of Odoo S.A. Excise figures are based on publicly available CRA, CBSA, and Government of Alberta information as of June 2026 and may change. This article is operational guidance for evaluating software. It is not tax advice, and it is not sponsored by or affiliated with Odoo S.A. The vape operation described is a representative build. No named client is described.
