SPB Git

spb/air Public MIT

AIR — The Language of Accounting.

Python 100%
4.2 KB · 101 lines yaml
Raw Blame History
1# Projet : AIR — Accounting Intermediate Representation2# Auteur : Simon-Pierre Boucher3# Contact : contact@spboucher.ai4#5# ALSL v0.1 policy set — Canada / Quebec, verified 2026-08-05.6# Every rate below is cited; see docs/research/canada-gst-qst.md for sources7# (Revenu Québec rate tables, CRA canada.ca, Excise Tax Act s. 165.2).8# Rates are YAML strings on purpose: bare floats are rejected by the loader.910alsl_version: "0.1"11policy_set: ca-qc12version: "2026.08"13description: >14  Canadian sales taxes (Quebec focus) + baseline classification policies.15  GST 5% (since 2008-01-01); QST 9.975% on the pre-GST price (since16  2013-01-01); HST for participating provinces; GST-only for AB/NT/NU/YT.17functional_currency: CAD1819# Excise Tax Act s. 165.2(2): fractions < $0.005 disregarded, >= $0.005 deemed20# one cent => round-half-up to the cent. Same rule for QST (RQ IN-203-V).21# NOT banker's rounding — this is a legal requirement, hence a policy value.22rounding:23  mode: half_up24  source: docs/research/canada-gst-qst.md2526accounts:27  cash:                 {code: "1000", name: "Cash",                          type: asset}28  accounts_receivable:  {code: "1100", name: "Accounts receivable",           type: asset}29  gst_receivable:       {code: "1210", name: "GST recoverable (ITC)",         type: asset}30  qst_receivable:       {code: "1220", name: "QST recoverable (ITR)",         type: asset}31  hst_receivable:       {code: "1230", name: "HST recoverable (ITC)",         type: asset}32  equipment:            {code: "1500", name: "Equipment",                     type: asset}33  accounts_payable:     {code: "2000", name: "Accounts payable",              type: liability}34  gst_payable:          {code: "2310", name: "GST payable",                   type: liability}35  qst_payable:          {code: "2320", name: "QST payable",                   type: liability}36  hst_payable:          {code: "2330", name: "HST payable",                   type: liability}37  loan_payable:         {code: "2500", name: "Loans payable",                 type: liability}38  owner_capital:        {code: "3000", name: "Owner capital",                 type: equity}39  revenue:              {code: "4000", name: "Sales revenue",                 type: revenue}40  fx_gain:              {code: "4500", name: "Realized FX gain",              type: revenue}41  expense_default:      {code: "5000", name: "Operating expenses",            type: expense}42  fx_loss:              {code: "5500", name: "Realized FX loss",              type: expense}4344policies:45  # GST 5% — applies across Canada outside HST provinces (here: QC + AB).46  # Source: CRA GST/HST rate table; Revenu Québec "Basic Rules"; verified 2026-08-05.47  - name: gst_canada48    kind: tax49    when:50      jurisdiction_in: [CA-QC, CA-AB]51    apply:52      - code: GST53        rate: "0.05"54        base: subtotal55        payable_role: gst_payable56        receivable_role: gst_receivable57        recoverable_on_purchase: true58    source: docs/research/canada-gst-qst.md5960  # QST 9.975% — calculated on the selling price NOT including GST (since 2013).61  # Combined effective rate with GST: 14.975%. Verified 2026-08-05.62  - name: qst_quebec63    kind: tax64    when:65      jurisdiction: CA-QC66    apply:67      - code: QST68        rate: "0.09975"69        base: subtotal70        payable_role: qst_payable71        receivable_role: qst_receivable72        recoverable_on_purchase: true73    source: docs/research/canada-gst-qst.md7475  # HST Ontario 13% — single harmonized tax. Verified 2026-08-05.76  - name: hst_ontario77    kind: tax78    when:79      jurisdiction: CA-ON80    apply:81      - code: HST82        rate: "0.13"83        base: subtotal84        payable_role: hst_payable85        receivable_role: hst_receivable86        recoverable_on_purchase: true87    source: docs/research/canada-gst-qst.md8889  # Illustrative capitalization threshold: purchases >= 5000 CAD are capitalized90  # as equipment. This is an entity accounting POLICY (not law) — tune per entity.91  - name: capitalization_equipment92    kind: classification93    when:94      event_type: Purchase95      min_amount: "5000"96      currency: CAD97    then:98      classify: asset99      account_role: equipment100    source: "entity accounting policy (example); materiality thresholds are entity-specific"101