Skip to content

Australian localisation pack: AU calendar, payroll, GST/BAS #14

Open

Description

@ryanduguid

Hi, Ryan from Australia (public-practice accountant). I have been working on a fork turning openfpa into an Australian FP&A toolkit, following the "data-access recipes / industry packs" path in CONTRIBUTING. Before I go further, wanted to check the approach suits you, and whether any of this belongs upstream versus in a long-lived fork.

Built so far on ryanduguid/openfpa (branch feat/au-pack, ~1,200 lines, 36 tests, suite green):

  • pyfpa.au.calendar - 30 June fiscal years, FY2027 / Q1 FY2027 / 1H FY2027 labels, dd/mm/yyyy, monthly PeriodIndex helpers matching the kernel convention
  • Effective-dated statutory rate tables as YAML data files with source URLs: super guarantee schedule, payroll tax for all 8 jurisdictions (verified at revenue offices 2026-08-20, including the ACT and NT changes that went live 1 July 2026), GST/BAS rules
  • pyfpa.au.payroll - monthly cost + cash frames from effective-dated roles: SG, state payroll tax, workers comp, leave provisions, bonuses, contractors
  • pyfpa.au.gst - net GST position from GST-exclusive series, quarterly and monthly BAS settlement schedules, exported into cash13 WeeklyFlows
  • Two skills: fpa-au-payroll, fpa-au-gst-bas

Documented simplifications (grouping provisions, QLD taper, WA diminishing threshold, surcharge tiers) live in module docstrings and skill docs, not silently approximated.

Side fix worth pulling regardless: branch fix/windows-path-separators - one line, memory index emits backslash paths on Windows and fails test_memory_retrieval. CI is ubuntu-only so it never showed.

Questions:

  1. Do you want the AU pack upstream (PR against pyfpa/au/ + skills), or should I keep it as a fork-side pack?
  2. Any appetite for a shared "fiscal calendar" abstraction in the kernel (periods.py) so UK/US/July-year entities all ride the same code? AU currently sits in its own module and touches nothing.
  3. For an ASX public-company worked example (like the FOXF one): happy for me to build that downstream and show it to you, or would you want to shape it?

No rush, I know this is side-of-the-desk. I will keep building on the fork meanwhile: Xero Australia data recipe next, then the ASX proof.

Activity

  1. ryanduguid commented on Aug 20, 2026

    @ryanduguid
    Author

    Update from the fork (now named FireFalcon, still a fork of this repo):

    Done on the fork

    • Xero Australia parser + recipe (pyfpa.io.xero_au, docs/recipes/xero-au.md)
    • RBA/ABS driver snapshots (pyfpa.au.drivers)
    • Synthetic example: Harbour Light (VIC, FY2027, Xero + payroll + quarterly BAS into 13-week cash, verified Excel)
    • Public example: ARB Corporation (ASX: ARB) from the FY2025 Appendix 4E — reproduction, holdout, forecast, labeled THB/tariff sensitivity. Not James Hardie (USD / 31 March / AZEK).

    Small PR, this repo

    • Windows memory-index path fix: will open against fix/windows-path-separators (one line, as_posix()). Worth pulling regardless of the AU pack.

    AU pack PR

    • Still waiting on your call from the questions above. I am not opening a large pyfpa/au PR until that is clearer.
  2. ryanduguid commented on Aug 31, 2026

    @ryanduguid
    Author

    Windows path follow-up from this thread: opened #17 with the as_posix() change plus a Linux-visible test that stubs Path.relative_to to PureWindowsPath, so Ubuntu CI can actually see the bug. Still holding the AU pack until you say whether it belongs upstream.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions