@classytic/ledger-au
v0.2.1
Published
Australia country pack for @classytic/ledger — AASB-aligned chart of accounts, GST/PAYG/Super accounts, ATO BAS return template
Readme
@classytic/ledger-au
Australia country pack for @classytic/ledger — AASB-aligned chart of accounts, ATO-friendly tax sub-accounts, and a full BAS return template.
Install
npm install @classytic/ledger @classytic/ledger-auUsage
import { createAccountingEngine } from '@classytic/ledger';
import { australiaPack } from '@classytic/ledger-au';
const accounting = createAccountingEngine({
mongoose: mongoose.connection,
country: australiaPack,
currency: 'AUD',
multiTenant: { tenantField: 'organizationId', ref: 'organization' },
fiscalYearStartMonth: 7, // AU fiscal year is 1-Jul to 30-Jun
});
await accounting.repositories.accounts.seedAccounts(orgId);
await accounting.repositories.journals.seedDefaults(orgId);What's in the box
Chart of accounts (AU_ACCOUNT_TYPES)
AASB-aligned, mirrors what Xero / MYOB / QuickBooks AU converge on for SME files:
| Range | Category |
|---|---|
| 1000-1099 | Cash & cash equivalents (incl FX bank, merchant clearing) |
| 1100-1199 | Trade receivables + ECL provision (AASB 9) |
| 1200-1299 | Inventories (AASB 102) |
| 1300-1399 | Prepayments, deposits, ATO refund clearing |
| 1600-1699 | PPE at cost (AASB 116) |
| 1700-1799 | Accumulated depreciation |
| 1800-1899 | Intangibles + amortisation (AASB 138) |
| 1900-1999 | Right-of-use assets (AASB 16), DTA, security deposits |
| 2000-2099 | Trade creditors + accruals + contract liabilities (AASB 15) |
| 2110.GST.* | GST control sub-accounts (collected / input / instalment / adjustments) |
| 2200.PAYGW.* | PAYG-W sub-accounts (salary / no-ABN / non-resident) |
| 2400.SUPER.* | Superannuation (SG / salary-sacrifice / additional) |
| 2500-2510 | Fringe Benefits Tax (FBT) |
| 2600-2620 | State payroll tax / workers comp / stamp duty |
| 2700-2730 | Annual leave / LSL / personal leave / wages payable |
| 2800-2899 | Current borrowings (overdraft, loans, AASB 16 lease, hire purchase) |
| 2900-2998 | Non-current borrowings + DTL + make-good provisions (AASB 137) |
| 3000-3399 | Equity (issued capital, reserves, retained earnings, dividends) |
| 4000-4999 | Revenue (taxable / GST-free / input-taxed / commission) |
| 5000-5999 | Cost of sales (purchases, direct labour, freight, customs duty) |
| 6000-6999 | Operating expenses |
| 7000-7099 | Other income (interest, dividend, FX gain, gain on disposal, grants) |
| 7500-7599 | Finance + non-operating expense |
| 8000-8010 | Income tax expense (current + deferred — AASB 112) |
Tax codes (TAX_CODES)
Mirrors Xero / MYOB AU codes so consumer migrations don't need a translation layer:
| Code | Rate | BAS fields | Description |
|---|---|---|---|
| GST | 10% | G1, 1A | Standard GST on sales |
| GST-INPUT | 10% | G11, 1B | GST on non-capital purchases |
| GST-CAPITAL | 10% | G10, 1B | GST on capital purchases ≥ $1k |
| GST_FREE | 0 | G1, G3 | Domestic GST-free (food / health / education) |
| EXPORT | 0 | G1, G2 | Export sales (60-day rule) |
| INPUT_TAXED | 0 | G1, G4 | Residential rent / financial supplies |
| IMPORT | 10% | G11, 1B, 7A | Imported goods (deferred GST scheme) |
| WET | 29% | 1C | Wine Equalisation Tax |
| LCT | 33% | 1E | Luxury Car Tax |
| FUEL_TAX_CREDIT | varies | 7 | Fuel Tax Credit (eligible business fuel) |
| PAYGW-SALARY | tables | W1, W2 | Employee withholding |
| PAYGW-NO-ABN | 47% | W4 | No-ABN withholding (top marginal rate) |
| PAYGW-NON-RESIDENT | varies | W3 | Non-resident withholding |
| PAYGI-RATE / -AMOUNT | varies | T1-T11 | PAYG instalment options |
| FBT-INSTALMENT | varies | F1 | Quarterly FBT instalment |
| ADJ_INC / ADJ_DEC | 10% | G7 / G18 | GST increasing / decreasing adjustments |
BAS return template (basReturnTemplate)
Full-form quarterly BAS calculator. Pass field-coded inputs (G1, G11, W2, etc.); get back calculated lines (1A, 1B, W5, T11, 8A, 8B, 9):
import { basReturnTemplate } from '@classytic/ledger-au';
const result = basReturnTemplate.calculate({
G1: 110_000, // total sales incl GST
G11: 22_000, // non-capital purchases incl GST
W1: 100_000, W2: 25_000, // wages / PAYG-W
T7: 1_500, // PAYG instalment (amount method)
});
result['1A']; // 10_000 — GST on sales
result['1B']; // 2_000 — GST input credits
result.W5; // 25_000 — total PAYG-W
result.T11; // 1_500 — instalment payable
result['8A']; // 36_500 — total payable to ATO
result['8B']; // 2_000 — total credits
result['9']; // 34_500 — net amount payable
basReturnTemplate.summarize(result);
// {
// gstOnSales: 10_000, gstOnPurchases: 2_000,
// paygWithholding: 25_000, paygInstalment: 1_500, ...
// netAmount: 34_500, isRefund: false
// }Per-state payroll tax thresholds (STATE_PAYROLL_TAX_THRESHOLDS)
Annual tax-free thresholds (FY 2024-25). Each state administers its own payroll tax — register and lodge monthly when wages exceed the threshold:
| State | Threshold (AUD) | |---|---| | NSW | 1,200,000 | | VIC | 900,000 | | QLD | 1,300,000 | | WA | 1,000,000 | | SA | 1,500,000 | | TAS | 1,250,000 | | ACT | 2,000,000 | | NT | 1,500,000 |
What this package does NOT cover
- BAS lodgement / SBR submission → future
@classytic/au-tax - STP (Single Touch Payroll) Phase 2 reporting → future
@classytic/au-payroll - SuperStream / SBR clearing-house integration → future
@classytic/au-payroll - ABA / NPP bank file generation → future
@classytic/au-payments - R&D Tax Incentive workflows
- Income tax return preparation
The chart of accounts + BAS calc template are the foundation — tax engines hook into them via taxMetadata on accounts and basFields on tax codes.
License
MIT — see LICENSE.
