spb/air Public MIT
AIR — The Language of Accounting.
Python 100%
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