Invoicing
EMS generates invoices automatically when production orders are verified. Each invoice calculates excise duty using the Canadian tiered formula (rate applied per 2 mL of liquid), adds GST/HST based on the consignee's province, and applies any custom fee presets you've configured. The result is a complete, audit-ready invoice that flows straight to the customer portal.
Auto-generation
You don't create invoices manually in EMS — they are generated automatically at a specific point in the production workflow. When a production order passes verification (meaning all stamps have been applied, batch IDs are in "Applied" status, and the PO is marked complete), EMS creates an invoice with:
- Per-region excise duty — calculated from the PO's line items and their target regions
- Line items — one line per flavour variant in the PO, with quantity, mL, and the applicable duty rate
- Tax calculations — GST/HST applied based on the consignee's registered province
No manual action is needed. The invoice appears in the Invoicing module in Draft status, ready for your review.
EMS creates exactly one invoice per production order. If a consignee has multiple POs verified on the same day, each gets its own invoice. This keeps the audit trail clean — every invoice traces back to exactly one production run.
Excise duty calculation
Canadian excise duty on vaping products is calculated using a tiered formula based on liquid volume. The duty is applied per 2 mL increment — meaning a 15 mL product is charged at the rate for 8 increments (15 mL / 2 mL = 7.5, rounded up to 8).
EMS applies different duty rates depending on the target region:
- Federal — the base federal excise duty rate
- Ontario — federal rate plus Ontario's provincial duty
- Quebec — federal rate plus Quebec's provincial duty
- Alberta — federal rate plus Alberta's provincial duty
- Manitoba — federal rate plus Manitoba's provincial duty
For each line item, EMS divides the liquid volume by 2 mL and rounds up to get the number of increments. It then multiplies the number of increments by the rate per increment to get the duty per unit. The duty per unit is multiplied by the quantity to get the line duty. The total duty is the sum of all line duties on the invoice.
For 480 units at 15 mL each, destined for Ontario:
- 15 mL divided by 2, rounded up = 8 increments per unit
- 8 increments multiplied by the Ontario rate = duty per unit
- 480 units multiplied by the duty per unit = total line duty
Rates are configured in Settings → Invoicing → Duty Rate. When the CRA updates duty rates, you update them in Settings and all future invoices use the new rates. Existing invoices are not retroactively recalculated — they preserve the rate that was in effect at generation time.
EMS does not automatically update duty rates when the CRA announces changes. It is your responsibility to update the rates in Settings before the effective date. Set a calendar reminder whenever a rate change is announced to avoid generating invoices at the wrong rate.
Invoice lifecycle
Draft → Issued → Paid → Archived
Every invoice moves through these four stages:
- Draft — the invoice has been auto-generated and is ready for your review. Draft invoices are fully editable: you can add or remove line items, adjust quantities, attach fee presets, and modify notes. Draft invoices are not visible to customers on the portal.
- Issued — you've reviewed the invoice and sent it to the customer. Issued invoices are locked — no further edits are allowed. The invoice becomes visible on the customer portal, where the consignee can view and download it.
- Paid — the customer has settled the invoice. You mark it as Paid manually when payment is confirmed. Paid invoices remain visible on the portal for the customer's records.
- Archived — the invoice is moved to historical records. Archived invoices are still visible on the portal but are separated from active invoices. Use archiving to keep the active invoice list clean after a quarter or fiscal year closes.
You cannot move an invoice backward in the lifecycle. An Issued invoice cannot return to Draft, and a Paid invoice cannot return to Issued. If you need to correct an issued invoice, the standard practice is to issue a credit note or create an adjustment invoice.
Fee presets
In addition to excise duty and taxes, you may need to charge handling fees, processing fees, or other service charges. EMS supports reusable fee presets so you don't have to manually add the same charges to every invoice.
To create a fee preset:
- Navigate to Settings → Invoicing → Fee Presets.
- Click + New Preset.
- Enter a name (e.g. "Standard handling" or "Expedited processing").
- Choose the fee type:
- Per unit — a fixed amount multiplied by the number of units on the invoice (e.g. $0.15 per unit)
- Flat — a fixed dollar amount regardless of quantity (e.g. $250.00 flat fee)
- Enter the amount.
- Click Save.
To apply a fee preset to an invoice:
- Open the invoice (must be in Draft status).
- Click Add Fee in the fees section.
- Select the preset from the dropdown. The fee is calculated and added as a line item.
- You can attach multiple presets to the same invoice — for example, both a per-unit handling fee and a flat expedited processing fee.
Create your standard fee presets before your first production order is verified. That way, when the first auto-generated invoice appears in Draft status, you can attach the right presets and issue it immediately rather than scrambling to configure fees on the fly.
Tax configuration
EMS applies GST/HST on top of the invoice subtotal (excise duty + fees). Tax rates are configured per province:
- Navigate to Settings → Invoicing → Tax Rates.
- You'll see a table with one row per province/territory.
- Enter the applicable GST/HST rate for each province (e.g. 13% for Ontario, 5% for Alberta).
- Click Save.
When an invoice is generated, EMS looks up the consignee's primary address to determine which province they're in, then applies that province's tax rate. The tax line appears on the invoice as a separate line item below the subtotal.
If a consignee changes their registered address to a different province, future invoices will use the new province's rate. Existing invoices are not retroactively updated — they preserve the rate that applied at generation time.
The tax rate applied to an invoice is determined entirely by the consignee's primary address on file. If a consignee's address is missing or set to the wrong province, their invoices will be taxed at the wrong rate. Review consignee profiles during onboarding to ensure addresses are accurate.
Portal visibility
The customer portal gives your consignees self-service access to their invoices. Visibility depends on invoice status:
- Draft — hidden from the portal entirely. Customers cannot see that an invoice exists until you issue it. This gives you time to review, adjust fees, and correct any issues before the customer sees the charges.
- Issued — visible on the portal. Customers can view the full invoice detail (line items, duty, fees, taxes, and total) and download it as a PDF.
- Paid — visible on the portal with a "Paid" badge. The payment date is shown for the customer's records.
- Archived — visible on the portal in a separate "Historical" section. Customers can still view and download archived invoices for their accounting records.
Portal updates happen in real time. When you change an invoice's status from Draft to Issued, it appears on the customer's portal within seconds — no manual sync or notification step required.
EMS does not send email notifications when an invoice is issued. If you want to notify customers, do so through your normal communication channels. The portal is the source of truth — customers who check it regularly will see new invoices as soon as they're issued.
Editing invoices
Only invoices in Draft status can be edited. Once an invoice is issued, it is permanently locked. Here is what you can change on a draft invoice:
- Add line items — insert additional product lines or miscellaneous charges that weren't part of the auto-generated invoice.
- Remove line items — delete lines that shouldn't be charged (e.g. if a portion of the PO was rejected during verification).
- Adjust quantities — change the unit count on any line item. The duty recalculates automatically based on the new quantity.
- Attach or remove fee presets — add handling fees, processing fees, or other presets. Remove presets that don't apply to this particular order.
- Edit notes — add free-text notes that appear on the invoice PDF (e.g. payment terms, special instructions, or reference numbers).
Every edit recalculates the invoice totals in real time. The duty subtotal, fee subtotal, tax, and grand total all update as you make changes, so you always see the current amount before issuing.
Once you click "Issue", the invoice is locked forever. There is no undo. If you discover an error after issuing, you'll need to handle it outside the invoice module (e.g. a manual credit note or a new corrective invoice). Take the extra minute to verify line items, quantities, and fees before clicking Issue.
Best practices
- Review every draft before issuing. Auto-generation gets you 95% of the way there, but edge cases exist — partial POs, rejected units, or special pricing agreements. Open each draft, verify the line items against the PO, and confirm the fees before issuing.
- Set up fee presets in advance. Don't wait until the first invoice arrives to configure your handling fees. Set them up during onboarding in Settings → Invoicing → Fee Presets so they're ready to attach with one click.
- Keep duty rates current when the CRA updates them. Rate changes are announced in advance. Update your rates in Settings before the effective date. If you forget and generate invoices at the old rate, those invoices will need manual correction before issuing.
- Use the Reports module for invoice summaries. The Invoicing page shows individual invoices. For aggregate views — total duty collected by region, total invoiced per consignee per quarter, or outstanding balances — use the Reports module, which can generate summaries across any time period.
- Archive quarterly. After each quarter closes and all invoices for the period are in Paid status, archive them. This keeps your active invoice list focused on current business and makes it easier to find what needs attention.
- Verify consignee addresses during onboarding. The GST/HST rate depends on the consignee's registered province. A wrong address means wrong tax on every invoice until someone catches it. Verify once, invoice correctly forever.
