From 6e67fc5ce318fb86749d0c99fa62229664925c29 Mon Sep 17 00:00:00 2001 From: gsinghpal Date: Tue, 12 May 2026 13:08:40 -0400 Subject: [PATCH] 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) --- .../specs/2026-05-12-nexa-coa-design.md | 517 ++++++++++++++++++ 1 file changed, 517 insertions(+) create mode 100644 docs/superpowers/specs/2026-05-12-nexa-coa-design.md diff --git a/docs/superpowers/specs/2026-05-12-nexa-coa-design.md b/docs/superpowers/specs/2026-05-12-nexa-coa-design.md new file mode 100644 index 00000000..c154ce9f --- /dev/null +++ b/docs/superpowers/specs/2026-05-12-nexa-coa-design.md @@ -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