docs: nexa systems CoA + accounting setup design spec
Comprehensive chart-of-accounts redesign for odoo-nexa nexamain DB: hybrid approach over l10n_ca, three analytic plans (Project/Department/SR&ED Tag), fiscal positions for auto tax handling, cleanup plan for the ~370 unused accounts and 49 messy taxes, automation hooks via product categories and bank reconciliation rules. Goals: CRA compliance, SR&ED claim infrastructure, zero-rated export handling, one-click invoicing. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
517
docs/superpowers/specs/2026-05-12-nexa-coa-design.md
Normal file
517
docs/superpowers/specs/2026-05-12-nexa-coa-design.md
Normal file
@@ -0,0 +1,517 @@
|
|||||||
|
# Nexa Systems Inc — Chart of Accounts & Accounting Setup Design
|
||||||
|
|
||||||
|
**Date**: 2026-05-12
|
||||||
|
**Target**: odoo-nexa production instance, database `nexamain`
|
||||||
|
**Status**: Design — pending implementation plan
|
||||||
|
|
||||||
|
## 1. Context
|
||||||
|
|
||||||
|
Nexa Systems Inc is a Canadian CCPC providing IT services: custom software development, custom ERP, business apps, hosting, custom websites, and custom web apps. Operations are Canada-wide with planned global expansion. Workforce: solo founder today (Gurpreet, Canadian), hiring plan favours Canadian T4/T4A with occasional India contractors for burst capacity. Nexa will pursue SR&ED tax credits.
|
||||||
|
|
||||||
|
**Current state (as of 2026-05-12)**:
|
||||||
|
- Odoo 19 Enterprise, l10n_ca localization loaded
|
||||||
|
- 426 GL accounts (most unused — generic Canadian template bloat)
|
||||||
|
- 49 active taxes with duplicates
|
||||||
|
- 14 journals incl. 7 bank accounts (overprovisioned)
|
||||||
|
- 776 journal entries, 125 invoices, data 2020-01-01 to 2026-05-04
|
||||||
|
- **Historical Odoo data is NOT authoritative** — accountant has filed externally on Excel-based records. Past will be reconciled later.
|
||||||
|
- All prior years filed with CRA. Fiscal year-end Dec 31.
|
||||||
|
|
||||||
|
**Goals**:
|
||||||
|
1. **CRA compliance** — clean tax handling, T2 Schedule 125 alignment, audit-ready
|
||||||
|
2. **Tax savings** — SR&ED claim infrastructure from day 1, zero-rated export handling, CCA structure
|
||||||
|
3. **Automation** — fiscal positions, default accounts, bank feeds, subscription billing
|
||||||
|
4. **Ease of use** — invoicing is one-click after customer/product selection
|
||||||
|
|
||||||
|
**Scope**: Chart of accounts structure + tax/fiscal-position setup + analytic plans + automation hooks. **Out of scope**: bank feed onboarding (separate sub-project), CCA custom module (defer until volume warrants), historical data reconciliation (separate sub-project when accountant records arrive).
|
||||||
|
|
||||||
|
## 2. Approach
|
||||||
|
|
||||||
|
**Approach #2 — Hybrid**: keep l10n_ca's 6-digit code scheme (Canadian accountants recognize it), aggressively curate (~370 unused accounts archived, ~20 renamed, ~70 added), supplement with three analytic plans for finer reporting without GL proliferation.
|
||||||
|
|
||||||
|
**Rejected alternatives**:
|
||||||
|
- *Surgical* — keep all 426 accounts unchanged. Rejected: bookkeeping burden, no IT-services shape.
|
||||||
|
- *Clean slate (custom 4-digit)* — toss l10n_ca. Rejected: accountants would have to learn it; loses pre-mapped CRA tax structure.
|
||||||
|
|
||||||
|
## 3. Code Skeleton
|
||||||
|
|
||||||
|
```
|
||||||
|
1xxxxx ASSETS
|
||||||
|
111xxx Cash & cash equivalents
|
||||||
|
112xxx Accounts receivable
|
||||||
|
113xxx Prepaid expenses
|
||||||
|
114xxx Other current assets
|
||||||
|
115xxx Due from shareholder / related parties
|
||||||
|
118xxx Tax assets (HST ITC, instalments)
|
||||||
|
151xxx Capital assets — cost
|
||||||
|
154xxx Accumulated depreciation (contra)
|
||||||
|
|
||||||
|
2xxxxx LIABILITIES
|
||||||
|
211xxx Accounts payable
|
||||||
|
213xxx HST/GST/QST collected
|
||||||
|
214xxx Net tax payable
|
||||||
|
215xxx Source deductions payable
|
||||||
|
216xxx Corporate income tax payable
|
||||||
|
221xxx Due to shareholder
|
||||||
|
222xxx Due to related parties
|
||||||
|
251xxx Long-term debt
|
||||||
|
|
||||||
|
3xxxxx EQUITY
|
||||||
|
311xxx Share capital + contributed surplus
|
||||||
|
321xxx Retained earnings + dividends
|
||||||
|
|
||||||
|
4xxxxx REVENUE (by service line — jurisdiction handled by tax codes, not by account)
|
||||||
|
411xxx Recurring revenue (SaaS, hosting, support)
|
||||||
|
412xxx Project revenue (custom dev, web app, website, ERP)
|
||||||
|
413xxx Services (consulting, training, support hourly)
|
||||||
|
414xxx Reseller revenue (third-party software/hardware)
|
||||||
|
419xxx Sales adjustments (discounts, returns, bad debt recovery)
|
||||||
|
|
||||||
|
5xxxxx DIRECT COSTS (COGS)
|
||||||
|
511xxx Infrastructure & hosting costs
|
||||||
|
512xxx Project direct costs (subcontractors, project software, project travel)
|
||||||
|
513xxx Cost of resold goods
|
||||||
|
519xxx COGS adjustments
|
||||||
|
|
||||||
|
6xxxxx OPERATING EXPENSES
|
||||||
|
611xxx Personnel — internal staff (T4)
|
||||||
|
612xxx Personnel — contract (T4A non-project)
|
||||||
|
621xxx Office & facilities
|
||||||
|
631xxx Technology — operating (internal SaaS subs)
|
||||||
|
641xxx Marketing & sales
|
||||||
|
651xxx Professional fees
|
||||||
|
661xxx Insurance
|
||||||
|
671xxx Travel & entertainment
|
||||||
|
681xxx Training & development
|
||||||
|
691xxx Banking & finance charges
|
||||||
|
699xxx Other (bad debt, donations, fines, FX losses, depreciation)
|
||||||
|
|
||||||
|
7xxxxx Other income (interest, FX gains)
|
||||||
|
8xxxxx Other expenses (rare; mostly absorbed in 691/699)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Three analytic plans** (orthogonal tagging, applied per journal line):
|
||||||
|
|
||||||
|
| Plan | Required On | Purpose |
|
||||||
|
|---|---|---|
|
||||||
|
| **Project** | revenue, COGS, project costs | Project P&L, customer profitability, WIP, billable-hour realization |
|
||||||
|
| **Department** | payroll, OpEx | Departmental P&L, overhead allocation |
|
||||||
|
| **SR&ED Tag** | labour, contractors, materials (R&D) | T661 SR&ED claim — eligibility classification |
|
||||||
|
|
||||||
|
## 4. Revenue Accounts (4xxxxx)
|
||||||
|
|
||||||
|
```
|
||||||
|
Recurring Revenue
|
||||||
|
411100 SaaS Subscription Revenue
|
||||||
|
411200 Hosting & Infrastructure Revenue
|
||||||
|
411300 Support & Maintenance Contracts
|
||||||
|
411400 Domain/SSL/Renewal Pass-through Revenue
|
||||||
|
411500 Setup / Onboarding Fees
|
||||||
|
|
||||||
|
Project Revenue (one-time, milestone-billed)
|
||||||
|
412100 Custom Software Development
|
||||||
|
412200 Custom Web Application Development
|
||||||
|
412300 Custom Website Development
|
||||||
|
412400 ERP Implementation & Customization
|
||||||
|
412500 Mobile App Development ← reserved for future
|
||||||
|
412600 Business App / Integration Work
|
||||||
|
|
||||||
|
Services (hourly, retainer)
|
||||||
|
413100 Consulting & Advisory
|
||||||
|
413200 Training & Workshops
|
||||||
|
413300 Technical Support — Per-incident / Hourly
|
||||||
|
|
||||||
|
Reseller / Pass-through
|
||||||
|
414100 Third-party Software Resale (M365, Adobe)
|
||||||
|
414200 Hardware Resale
|
||||||
|
|
||||||
|
Adjustments (contra-revenue)
|
||||||
|
419100 Sales Discounts
|
||||||
|
419200 Sales Returns & Refunds
|
||||||
|
419300 Bad Debt Recovery
|
||||||
|
```
|
||||||
|
|
||||||
|
**Design rule**: one revenue account per service line. Jurisdiction (ON/Atlantic/QC/export/etc.) tracked entirely through tax codes and fiscal positions, NOT duplicate accounts.
|
||||||
|
|
||||||
|
## 5. Direct Costs / COGS (5xxxxx)
|
||||||
|
|
||||||
|
```
|
||||||
|
Infrastructure & Hosting
|
||||||
|
511100 Cloud Infrastructure (AWS, Hetzner, OVH, DigitalOcean, Linode)
|
||||||
|
511110 CDN & Edge Services (Cloudflare, Fastly)
|
||||||
|
511120 Backup & Storage Services
|
||||||
|
511130 Database & Backend Services (Supabase, hosted Postgres, Redis)
|
||||||
|
511140 Monitoring & Observability (customer-facing only)
|
||||||
|
511150 SSL Certificates & Domains (wholesale for resale)
|
||||||
|
511160 DNS & Email Hosting (wholesale)
|
||||||
|
|
||||||
|
Third-party APIs & Per-transaction Costs
|
||||||
|
511200 Third-party API Costs (Twilio, SendGrid, OpenAI)
|
||||||
|
511210 Per-customer Licensing & Royalties
|
||||||
|
|
||||||
|
Note: 511100–511160 are shared between SaaS revenue (411100) and Hosting revenue (411200).
|
||||||
|
Allocation to specific revenue line happens via the Project analytic plan, not separate accounts.
|
||||||
|
|
||||||
|
Project Direct Costs
|
||||||
|
512100 Subcontracted Labour — Canadian (T4A) ← SR&ED-eligible
|
||||||
|
512110 Subcontracted Labour — Foreign ← NOT SR&ED-eligible
|
||||||
|
512200 Project-specific Software & Licenses
|
||||||
|
512300 Project Travel & Onsite (rebilled)
|
||||||
|
512400 Project Hardware (passed through)
|
||||||
|
|
||||||
|
Resold Goods & Services
|
||||||
|
513100 Cost of Software Resold
|
||||||
|
513200 Cost of Hardware Resold
|
||||||
|
|
||||||
|
Adjustments
|
||||||
|
519100 COGS Adjustments / Write-offs
|
||||||
|
```
|
||||||
|
|
||||||
|
**Design choices**:
|
||||||
|
- **Salaries in OpEx, not COGS** — keeps SR&ED tracking clean; allocation to projects via Project analytic plan.
|
||||||
|
- **Stripe/merchant fees in OpEx (691200)** — re-class to COGS later if SaaS revenue dominates.
|
||||||
|
- **Canadian vs Foreign subcontractor split** — critical for SR&ED (80% × 35% = 28% credit on CA arm's length; 0% on foreign).
|
||||||
|
|
||||||
|
## 6. Operating Expenses (6xxxxx)
|
||||||
|
|
||||||
|
```
|
||||||
|
Personnel — Internal Staff (T4)
|
||||||
|
611100 Salaries & Wages — Development ← SR&ED-eligible base
|
||||||
|
611200 Salaries & Wages — Sales & Marketing
|
||||||
|
611300 Salaries & Wages — Admin & Operations
|
||||||
|
611400 Salary — Shareholder/Officer (Gurpreet) ← 75% SR&ED cap (specified employee)
|
||||||
|
611500 Employer CPP / QPP Contributions
|
||||||
|
611600 Employer EI Premiums
|
||||||
|
611700 Employer Health Tax (EHT/QHST)
|
||||||
|
611800 WCB / WSIB Premiums
|
||||||
|
611900 Employee Benefits (health, dental, group)
|
||||||
|
611950 Bonuses & Incentives
|
||||||
|
611960 Vacation Pay Accrual
|
||||||
|
|
||||||
|
Personnel — Contract (non-project)
|
||||||
|
612100 Contract Labour — Canadian (admin/marketing/freelance)
|
||||||
|
612200 Contract Labour — Foreign
|
||||||
|
|
||||||
|
Office & Facilities
|
||||||
|
621100 Rent — Commercial Office
|
||||||
|
621200 Home Office — Business Portion ← own account; allocated %
|
||||||
|
621300 Utilities — Commercial
|
||||||
|
621400 Internet & Phone — Business
|
||||||
|
621500 Office Supplies & Consumables
|
||||||
|
621600 Cleaning & Maintenance
|
||||||
|
621700 Office Snacks & Refreshments
|
||||||
|
|
||||||
|
Technology — Operating
|
||||||
|
631100 Software — Productivity (M365, Slack, Notion, Linear, GitHub)
|
||||||
|
631200 Software — Development Tools (Cursor, Figma, IDEs)
|
||||||
|
631300 Software — Internal Infrastructure
|
||||||
|
631400 Software — Security & IT
|
||||||
|
631500 Software — Sales & Marketing
|
||||||
|
|
||||||
|
Marketing & Sales
|
||||||
|
641100 Advertising — Digital Ads
|
||||||
|
641200 Advertising — Content / SEO
|
||||||
|
641300 Trade Shows & Conferences
|
||||||
|
641400 Promotional Items / Branded Swag
|
||||||
|
641500 Website — Own (nexasystems.ca)
|
||||||
|
|
||||||
|
Professional Fees
|
||||||
|
651100 Legal Fees — General
|
||||||
|
651200 Accounting & Bookkeeping
|
||||||
|
651300 Tax Preparation (T2, T1, GST/HST)
|
||||||
|
651400 Business Consulting
|
||||||
|
|
||||||
|
Insurance
|
||||||
|
661100 Commercial General Liability
|
||||||
|
661200 Professional Liability / E&O
|
||||||
|
661300 Cyber Liability
|
||||||
|
661400 Property Insurance
|
||||||
|
661500 Directors & Officers Insurance
|
||||||
|
|
||||||
|
Travel & Entertainment
|
||||||
|
671100 Travel — Flights, Hotels, Ground Transport
|
||||||
|
671200 Meals & Entertainment — 50% Deductible ← own account; 50% adjustment at year-end
|
||||||
|
671300 Vehicle — Operating
|
||||||
|
671400 Mileage Reimbursement — Personal Vehicle
|
||||||
|
|
||||||
|
Training & Development
|
||||||
|
681100 Conferences & Seminars
|
||||||
|
681200 Courses & Certifications
|
||||||
|
681300 Books & Publications
|
||||||
|
681400 Professional Memberships & Dues
|
||||||
|
|
||||||
|
Banking & Finance
|
||||||
|
691100 Bank Service Charges
|
||||||
|
691200 Merchant Processing Fees (Stripe, PayPal, Square)
|
||||||
|
691300 Wire Transfer & FX Fees
|
||||||
|
691400 Interest Expense — Bank Loans / LOC
|
||||||
|
691500 Interest Expense — Credit Cards
|
||||||
|
691600 Late Payment Penalties — Non-deductible
|
||||||
|
|
||||||
|
Other
|
||||||
|
699100 Bad Debt Expense
|
||||||
|
699200 Donations & Sponsorships
|
||||||
|
699300 Penalties & Fines — Non-deductible
|
||||||
|
699400 Realized FX Losses
|
||||||
|
699500 Depreciation / CCA Expense
|
||||||
|
```
|
||||||
|
|
||||||
|
**Notable design decisions**:
|
||||||
|
- Salaries split by function (dev/sales/admin) — so SR&ED proxy applies cleanly to dev only.
|
||||||
|
- Owner/Shareholder salary isolated (611400) — for T2 Schedule 11 (Compensation of Officers) and CRA reasonableness defence.
|
||||||
|
- Non-deductible items isolated (691600, 699300) — prevents accidental deduction.
|
||||||
|
- Meals & Entertainment own account (671200) — accountant applies the 50% adjustment cleanly.
|
||||||
|
- Home office own account (621200) — business-use % applied to the whole account.
|
||||||
|
|
||||||
|
## 7. Capital Assets & CCA (1xxxxx + asset module)
|
||||||
|
|
||||||
|
```
|
||||||
|
Capital Assets — Cost
|
||||||
|
151100 Computer Hardware & Equipment (CCA Class 50, 55% DB)
|
||||||
|
151200 Office Furniture & Equipment (CCA Class 8, 20% DB)
|
||||||
|
151300 Vehicles (CCA Class 10 / 10.1)
|
||||||
|
151400 Leasehold Improvements (CCA Class 13, SL)
|
||||||
|
151500 Acquired Software/Intangibles (CCA Class 14.1, 5% DB)
|
||||||
|
151600 Tools & Small Equipment <$500 (CCA Class 12, 100% Y1)
|
||||||
|
|
||||||
|
Accumulated Depreciation (contra)
|
||||||
|
154100 Acc. Dep — Computer Hardware
|
||||||
|
154200 Acc. Dep — Office Furniture
|
||||||
|
154300 Acc. Dep — Vehicles
|
||||||
|
154400 Acc. Dep — Leasehold Improvements
|
||||||
|
154500 Acc. Dep — Acquired Software
|
||||||
|
```
|
||||||
|
|
||||||
|
**Asset model approach**: book straight-line depreciation in Odoo for financial reporting (clean monthly journal); maintain CCA schedule separately for T2 filing. CCA rates: Class 50 effective 82.5% Y1 (with AccII through 2027); Class 14.1 software 100% Y1; Class 12 small tools 100% Y1.
|
||||||
|
|
||||||
|
## 8. Tax Accounts (1xxxxx + 2xxxxx)
|
||||||
|
|
||||||
|
```
|
||||||
|
Tax Assets
|
||||||
|
118100 HST/GST Input Tax Credit (ITC) Receivable
|
||||||
|
118200 HST/GST Instalments Paid
|
||||||
|
118300 QST Input Tax Refund Receivable
|
||||||
|
|
||||||
|
Tax Liabilities
|
||||||
|
213100 HST/GST Collected on Sales ← single bucket; tax report breaks down by code
|
||||||
|
213500 QST Collected
|
||||||
|
214100 Net HST/GST Payable
|
||||||
|
215100 Source Deductions Payable — Federal Tax
|
||||||
|
215200 Source Deductions Payable — CPP
|
||||||
|
215300 Source Deductions Payable — EI
|
||||||
|
216100 Corporate Income Tax — Federal Payable
|
||||||
|
216200 Corporate Income Tax — Provincial Payable
|
||||||
|
216300 Corporate Tax Instalments Paid (contra)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 9. Shareholder & Related Party (1xxxxx + 2xxxxx + 3xxxxx)
|
||||||
|
|
||||||
|
```
|
||||||
|
Due From — Assets
|
||||||
|
115100 Due From Shareholder — Gurpreet
|
||||||
|
115200 Due From Related Party — Westin Healthcare
|
||||||
|
115900 Due From Related Parties — Other
|
||||||
|
|
||||||
|
Due To — Liabilities
|
||||||
|
221100 Due To Shareholder — Gurpreet (short-term)
|
||||||
|
221200 Shareholder Loan — Gurpreet (long-term)
|
||||||
|
222100 Due To Related Party — Westin Healthcare
|
||||||
|
222900 Due To Related Parties — Other
|
||||||
|
|
||||||
|
Equity
|
||||||
|
311100 Share Capital — Common Shares
|
||||||
|
311200 Share Capital — Preferred Shares (placeholder)
|
||||||
|
311300 Contributed Surplus
|
||||||
|
321100 Retained Earnings — Current Year
|
||||||
|
321200 Retained Earnings — Prior Years
|
||||||
|
321900 Dividends Declared (contra)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Compliance flags**:
|
||||||
|
- Subsection 15(2): shareholder loans >1 year past fiscal year-end → taxable to shareholder.
|
||||||
|
- Related-party transactions must be at arm's length pricing (transfer-pricing rules).
|
||||||
|
- T2 Schedule 50 lists all >10% shareholders.
|
||||||
|
|
||||||
|
## 10. Analytic Plans
|
||||||
|
|
||||||
|
### 10.1 Project Plan
|
||||||
|
- One analytic account per customer engagement
|
||||||
|
- Naming: `PRJ-{YYYY}-{CUST}-{SHORTNAME}` (e.g., `PRJ-2026-WESTIN-ERP`)
|
||||||
|
- Required on revenue, COGS, project costs
|
||||||
|
- Linked to Odoo Project module for time tracking → automatic GL posting
|
||||||
|
|
||||||
|
### 10.2 Department Plan
|
||||||
|
- `DEPT-DEV` — Development
|
||||||
|
- `DEPT-SALES` — Sales & Marketing
|
||||||
|
- `DEPT-ADMIN` — Admin & Operations
|
||||||
|
- `DEPT-HOSTING` — Hosting Operations (optional future split)
|
||||||
|
- Required on payroll, OpEx
|
||||||
|
|
||||||
|
### 10.3 SR&ED Tag Plan
|
||||||
|
- `SRED-T4-DEV-SALARY` — T4 dev employees on R&D (full proxy 55%)
|
||||||
|
- `SRED-SPECIFIED-EMPLOYEE` — Gurpreet/officers (75% basic salary cap)
|
||||||
|
- `SRED-CONTRACTOR-CA-ARM-LENGTH` — Canadian arm's length (80% eligible)
|
||||||
|
- `SRED-CONTRACTOR-CA-NON-ARM-LENGTH` — affiliated CA contractors
|
||||||
|
- `SRED-MATERIALS-CONSUMED` — R&D materials
|
||||||
|
- `SRED-OVERHEAD-PROXY-BASIS` — direct labour basis
|
||||||
|
- `NOT-ELIGIBLE` — default
|
||||||
|
|
||||||
|
**T661 generation at year-end**: filter analytic report on SR&ED tag → eligible salaries + 55% proxy + 80% contractor + materials = total qualified expenditures × 35% refundable ITC.
|
||||||
|
|
||||||
|
## 11. Tax Setup & Fiscal Positions
|
||||||
|
|
||||||
|
**Consolidated active taxes** (~14, down from 49):
|
||||||
|
|
||||||
|
| Tax | Rate | Sale / Purchase | Applies |
|
||||||
|
|---|---|---|---|
|
||||||
|
| HST 13% Ontario | 13% | Both | ON |
|
||||||
|
| HST 15% Atlantic | 15% | Both | NB, NS, PE, NL |
|
||||||
|
| GST 5% | 5% | Both | AB, MB, SK, BC, YT, NT, NU |
|
||||||
|
| GST 5% + PST 7% BC | 12% group | Both | BC (goods, rare for services) |
|
||||||
|
| GST 5% + PST 7% MB | 12% group | Both | MB |
|
||||||
|
| GST 5% + PST 6% SK | 11% group | Both | SK |
|
||||||
|
| GST 5% + QST 9.975% QC | 14.975% group | Both | QC |
|
||||||
|
| Zero-rated Export | 0% | Sale | US, EU, ROW |
|
||||||
|
| Tax Exempt | 0% | Sale | Cert-holders |
|
||||||
|
|
||||||
|
**Fiscal Positions** (auto-applied based on customer billing address):
|
||||||
|
|
||||||
|
| Position | Customer Location | Auto-Substitute Default Tax |
|
||||||
|
|---|---|---|
|
||||||
|
| CA — Ontario (default) | ON | HST 13% |
|
||||||
|
| CA — Atlantic | NB/NS/PE/NL | HST 15% |
|
||||||
|
| CA — Quebec | QC | GST 5% + QST 9.975% |
|
||||||
|
| CA — BC | BC | GST 5% (PST per-product) |
|
||||||
|
| CA — Prairies / Territories | AB/MB/SK/YT/NT/NU | GST 5% |
|
||||||
|
| Export — US | United States | 0% Zero-rated |
|
||||||
|
| Export — International | Outside CA/US | 0% Zero-rated |
|
||||||
|
| Tax Exempt | Tagged customers | 0% |
|
||||||
|
|
||||||
|
**Invoice flow**: customer → fiscal position auto-applies → product picks default tax → fiscal position substitutes → no manual tax decisions.
|
||||||
|
|
||||||
|
**Export advantage**: zero-rated sales charge no HST but retain ITC claims on all related inputs. For a small shop with 30% US revenue, this is ~$5–15k/year in recovered HST.
|
||||||
|
|
||||||
|
## 12. Cleanup Plan
|
||||||
|
|
||||||
|
### Phase 1 — Archive (~370 accounts)
|
||||||
|
- Every l10n_ca account NOT in the keep-list (built from Sections 4–9).
|
||||||
|
- Constraint: Odoo blocks archiving accounts with postings. Archive zero-history only.
|
||||||
|
- Accounts with history we no longer want: stop posting; they go to $0 going forward.
|
||||||
|
|
||||||
|
### Phase 2 — Rename (~20 accounts)
|
||||||
|
|
||||||
|
| Old | New |
|
||||||
|
|---|---|
|
||||||
|
| 1400 Transferred to Gurpreet | 221100 Due To Shareholder — Gurpreet |
|
||||||
|
| 1505 Sent to India | 612200 Contract Labour — Foreign |
|
||||||
|
| 1580 Transferred to Westin | 222100 Due To Related Party — Westin Healthcare |
|
||||||
|
| 1590 Transferred to Divine | If shareholder: 221xxx Due To Shareholder — Divine; if related party: 222xxx (requires Gurpreet to confirm relationship before cleanup) |
|
||||||
|
| 1600 Transferred to Manpreet | If shareholder: 221xxx Due To Shareholder — Manpreet; if related party: 222xxx (requires Gurpreet to confirm relationship before cleanup) |
|
||||||
|
| 1500 Food & Entertainment | 671200 Meals & Entertainment — 50% Deductible |
|
||||||
|
| 1501 Office Expenses | 621500 Office Supplies & Consumables |
|
||||||
|
| 411000 Inside Sales | ARCHIVE (replaced by 412xxx) |
|
||||||
|
| 412000 Harmonized Provinces Sales | ARCHIVE (jurisdiction = tax codes) |
|
||||||
|
| 413000 Non-Harmonized Provinces Sales | ARCHIVE |
|
||||||
|
| 414000 International Sales | ARCHIVE |
|
||||||
|
| 12000 Abdul & Future Mobility | ARCHIVE (use partner subledger) |
|
||||||
|
| 12001 MSI Account | ARCHIVE |
|
||||||
|
| 110010 Bank Fee | 691100 Bank Service Charges |
|
||||||
|
| 511100 Inside Purchases | ARCHIVE |
|
||||||
|
|
||||||
|
### Phase 3 — Add (~70 new accounts)
|
||||||
|
All per Sections 4–9.
|
||||||
|
|
||||||
|
### Phase 4 — Bank Consolidation
|
||||||
|
Current 8 bank journals (BMO, RBC, RBC VISA, Scotia ×3, Bank, Cash). Audit; archive inactive. Target: ≤5 active (primary operating, USD for future global, LOC, 1–2 credit cards).
|
||||||
|
|
||||||
|
### Phase 5 — Lock Prior Periods
|
||||||
|
Set `fiscalyear_lock_date = 2025-12-31`. Blocks postings to closed periods. Forces all 2026 work into new structure.
|
||||||
|
|
||||||
|
## 13. Automation Hooks
|
||||||
|
|
||||||
|
### Product Categories with Default Accounts
|
||||||
|
|
||||||
|
| Product Category | Default Income | Default COGS | Default Tax |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Services / SaaS Subscription | 411100 | — | per fiscal position |
|
||||||
|
| Services / Hosting | 411200 | — | per fiscal position |
|
||||||
|
| Services / Support Contract | 411300 | — | per fiscal position |
|
||||||
|
| Services / Custom Software Dev | 412100 | — | per fiscal position |
|
||||||
|
| Services / Web App Dev | 412200 | — | per fiscal position |
|
||||||
|
| Services / Website Dev | 412300 | — | per fiscal position |
|
||||||
|
| Services / ERP Implementation | 412400 | — | per fiscal position |
|
||||||
|
| Services / Consulting | 413100 | — | per fiscal position |
|
||||||
|
| Services / Training | 413200 | — | per fiscal position |
|
||||||
|
| Services / Setup Fee | 411500 | — | per fiscal position |
|
||||||
|
| Resale / Software | 414100 | 513100 | per fiscal position |
|
||||||
|
| Resale / Hardware | 414200 | 513200 | per fiscal position |
|
||||||
|
|
||||||
|
### Bank Reconciliation Rules
|
||||||
|
|
||||||
|
| Pattern (description contains) | Auto-categorize To | Tax |
|
||||||
|
|---|---|---|
|
||||||
|
| `AMAZON WEB SERVICES`, `AWS` | 511100 Cloud Infrastructure | HST 13% ITC |
|
||||||
|
| `HETZNER`, `OVH`, `DIGITALOCEAN`, `LINODE` | 511100 | 0% foreign |
|
||||||
|
| `CLOUDFLARE`, `FASTLY` | 511110 CDN | mixed |
|
||||||
|
| `GITHUB`, `JETBRAINS`, `CURSOR` | 631200 Software — Dev Tools | HST 13% ITC |
|
||||||
|
| `MICROSOFT`, `SLACK`, `NOTION`, `LINEAR` | 631100 Software — Productivity | HST 13% ITC |
|
||||||
|
| `STRIPE PAYOUT` | AR receipts journal | — |
|
||||||
|
| `STRIPE FEE` | 691200 Merchant Processing | exempt |
|
||||||
|
| `GOOGLE ADS`, `LINKEDIN ADS` | 641100 Advertising | HST 13% ITC |
|
||||||
|
|
||||||
|
### Bank Feeds (Plaid via Odoo Enterprise)
|
||||||
|
Daily auto-import → bank reconciliation rules → ~70% of transactions auto-categorized.
|
||||||
|
|
||||||
|
### Subscription Module
|
||||||
|
Already installed. Use for SaaS/Hosting/Support contracts: recurring invoices, Stripe auto-charge, MRR/ARR/churn dashboards.
|
||||||
|
|
||||||
|
### Default Journals
|
||||||
|
- Customer Invoices → `INV`
|
||||||
|
- Vendor Bills → `BILL`
|
||||||
|
- Bank feeds → respective bank journals
|
||||||
|
- HR Expenses → `EXP` (add if missing)
|
||||||
|
- Misc → `MISC`
|
||||||
|
- Exchange Difference → `EXCH`
|
||||||
|
|
||||||
|
## 14. Out-of-Scope (Future Sub-Projects)
|
||||||
|
|
||||||
|
- **Historical reconciliation** — load accountant's Excel records into new structure (requires accountant docs).
|
||||||
|
- **Custom CCA module** — only if asset count grows; until then, accountant maintains CCA schedule separately.
|
||||||
|
- **Multi-currency setup** — add USD bank + currency-rate-live config when first US client signs.
|
||||||
|
- **Payroll system** — when first T4 employee is hired; integrate with Wagepoint/Payworks/ADP or Odoo Payroll.
|
||||||
|
- **Approval workflows** — purchase approval, expense approval limits.
|
||||||
|
- **Inventory** — N/A unless reselling hardware regularly.
|
||||||
|
|
||||||
|
## 15. Tax-Saving Opportunities Enabled
|
||||||
|
|
||||||
|
| Opportunity | Mechanism | Estimated Annual Value |
|
||||||
|
|---|---|---|
|
||||||
|
| SR&ED ITC | Analytic SR&ED tag + T661 filing | $30k–$100k (refundable, depends on dev spend) |
|
||||||
|
| Zero-rated exports | Fiscal position for US/international | $5–15k recovered HST on inputs |
|
||||||
|
| Small Business Deduction (SBD) | Federal 9% on first $500k taxable income | ~$30k/yr if hitting threshold |
|
||||||
|
| CCA Class 50 + AccII | 82.5% Y1 deduction on computers/servers | Time-value, but front-loads deductions |
|
||||||
|
| Quick Method GST/HST | If <$400k sales, simpler method | $500–2k/yr cash if eligible |
|
||||||
|
| OIDMTC (Ontario Interactive Digital Media) | If building interactive media products | 35–40% of eligible labour |
|
||||||
|
|
||||||
|
## 16. Risks & Open Questions
|
||||||
|
|
||||||
|
1. **The "Transferred to Divine/Manpreet" accounts** — relationship unconfirmed. Need user input before final mapping.
|
||||||
|
2. **Westin Healthcare relationship** — common-ownership? Same shareholder? Drives transfer-pricing compliance.
|
||||||
|
3. **Past data backposting** — once accountant records arrive, mapping old transactions into new structure requires care to avoid breaking the post-2025-12-31 lock.
|
||||||
|
4. **BC PST on software services** — BC PST exempts custom software developed for a specific customer; off-the-shelf software and certain SaaS subscriptions ARE taxable. For Nexa's mix (most work is custom dev = exempt; SaaS sold off-the-shelf to BC customers = taxable at 7%), each BC customer/product combo needs review. Default to "GST only" for custom dev; flag SaaS-to-BC for review at first sale.
|
||||||
|
5. **Quebec QST registration** — required if Nexa has QC customers and revenue >$30k. Confirm registration status.
|
||||||
|
6. **Specified employee SR&ED math** — Gurpreet's salary cap is 75%, no bonus inclusion. Accountant must apply at T661 time.
|
||||||
|
|
||||||
|
## 17. Acceptance Criteria
|
||||||
|
|
||||||
|
- [ ] All 11 sections of CoA approved and present in odoo-nexa nexamain DB
|
||||||
|
- [ ] ≥370 unused accounts archived
|
||||||
|
- [ ] 14 active taxes (down from 49)
|
||||||
|
- [ ] 8 fiscal positions configured with auto-detection
|
||||||
|
- [ ] 3 analytic plans created (Project, Department, SR&ED Tag) with seed analytic accounts
|
||||||
|
- [ ] Product categories created with default accounts
|
||||||
|
- [ ] Bank reconciliation rules created
|
||||||
|
- [ ] Fiscal year locked at 2025-12-31
|
||||||
|
- [ ] Test invoice flows through correctly for: ON customer (HST 13%), US customer (Zero-rated), QC customer (GST+QST)
|
||||||
|
- [ ] Test vendor bill creates correct ITC for: Canadian vendor (HST ITC), foreign vendor (no ITC)
|
||||||
|
- [ ] Bank consolidation complete; ≤5 active bank journals
|
||||||
Reference in New Issue
Block a user