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# Golden cases — purchases: recoverable taxes (ITC/ITR) and the ALSL6# capitalization policy (>= 5000 CAD -> equipment asset).7# Rates & rounding per docs/research/canada-gst-qst.md (verified 2026-08-05).89cases:10 - name: purchase_expense_qc11 description: "400.00 supplies on account: ITC 20.00, ITR 39.90 both recoverable (debited as receivables)"12 air:13 events:14 - id: evt_purch_supplies15 type: Purchase16 date: 2026-07-1017 parties: {buyer: "company:acme", vendor: "vendor:papco"}18 amount: {amount: "400.00", currency: CAD}19 tax: {jurisdiction: CA-QC}20 expected_entries:21 - id: je_evt_purch_supplies22 lines:23 - ["5000", debit, "400.00", CAD]24 - ["1210", debit, "20.00", CAD]25 - ["1220", debit, "39.90", CAD]26 - ["2000", credit, "459.90", CAD]2728 - name: purchase_capitalized_qc29 description: "6000.00 machine: >= 5000 threshold -> capitalized to equipment (ALSL classification policy)"30 air:31 events:32 - id: evt_purch_machine33 type: Purchase34 date: 2026-07-1135 amount: {amount: "6000.00", currency: CAD}36 tax: {jurisdiction: CA-QC}37 expected_entries:38 - id: je_evt_purch_machine39 lines:40 - ["1500", debit, "6000.00", CAD]41 - ["1210", debit, "300.00", CAD]42 - ["1220", debit, "598.50", CAD]43 - ["2000", credit, "6898.50", CAD]4445 - name: purchase_below_threshold_qc46 description: "4999.99: one cent below the threshold -> stays an expense; QST 498.749 rounds to 498.75"47 air:48 events:49 - id: evt_purch_below50 type: Purchase51 date: 2026-07-1252 amount: {amount: "4999.99", currency: CAD}53 tax: {jurisdiction: CA-QC}54 expected_entries:55 - id: je_evt_purch_below56 lines:57 - ["5000", debit, "4999.99", CAD]58 - ["1210", debit, "250.00", CAD]59 - ["1220", debit, "498.75", CAD]60 - ["2000", credit, "5748.74", CAD]6162 - name: purchase_cash_qc63 description: "100.00 paid cash immediately: QST 9.975 rounds to 9.98; credit cash not AP"64 air:65 events:66 - id: evt_purch_cash67 type: Purchase68 date: 2026-07-1369 amount: {amount: "100.00", currency: CAD}70 payment: {method: cash, immediate: true}71 tax: {jurisdiction: CA-QC}72 expected_entries:73 - id: je_evt_purch_cash74 lines:75 - ["5000", debit, "100.00", CAD]76 - ["1210", debit, "5.00", CAD]77 - ["1220", debit, "9.98", CAD]78 - ["1000", credit, "114.98", CAD]79