Changelog for tax-ato-2025.1
Version 2025.1
Features and enhancements
-
Overhauled payment summaries. More comprehensive data types and optics are provided in module
Data.Tax.ATO.PaymentSummary
.The old
PaymentSummary
constructor persists as a (deprecated) pattern synonym, for backwards compatibility. It will be removed in a future release. -
Implemented reportable fringe benefits. . Use the
fringeBenefitsEmployerNotExempt
orfringeBenefitsEmployerExempt
constructors, along with thereportableFringeBenefits
lens to add it to the payment summary. The amount is properly included in the surcharge and student loan repayment income calculations. -
Implemented allowances. A list of allowances can be added to a payment summary via the
allowances
lens. Construct allowance values withallowance :: String -> Money a -> Allowance a
. -
Implemented non-super lump sum A, B, D and E payments.
-
Implemented additional payment summary types:
- Foreign Employment
- Business and personal services income
- Withholding where ABN not quoted
-
New module
Data.Tax.ATO.Depreciation
provides types and functions for calculating decline in value (for deductions). Use theDepreciatingAsset
data type to define depreciating assets, and thedeclineInValue
function for calculating the decline in value in a given financial year. -
Added the "cents-per-kilometre" method for car expense deductions. Usage:
applyCentsPerKilometreMethod @FY kms
. (#13) -
Added home office expense deduction methods (#7). Usage
applyFixedRateMethod @FY hours applyShortcutMethod @FY hours applyFixedRateMethodPre2023 @FY hours
-
Implement Medicare levy low income family thresholds, including increase based on number of dependents. Senior and pensioners individual and family thresholds remain unimplemented.
-
CGT assessment types were overhauled and now contain more information about total capital gain and applied / unapplied losses. This is step toward a more complete CGT implementation. Remaining gaps include foreign withholding credits and separate treatment of collectables.
-
Multiple ESS statements can now be added to a tax return. Also, the
essEmployeeDetails
field has been added, andnewESSStatement
was updated to take aPayerDetails
. This is a breaking change. (#16) -
Added
division293Income
which calculates the income component of Division 293 tax calculations. Some elements are not included because the relevant feature is not yet implemented (e.g. rental losses or FHSS releases). (#12) -
Added
paygInstalmentIncome
, which calculates the PAYG instalment income. Some elements are not included because the relevant features are not yet implement (e.g. rent, partnership and trust income, PSI). -
Added the
Data.Tax.ATO.ABN
andData.Tax.ATO.TFN
modules, which have more representative data types, conversion functions, and proper validation.IsString
instances are provided for compatibility with existing code. -
TaxReturnInfo
pretty printing now includes more detailed ESS and CGT data, to help with preparation of tax returns. -
TaxAssessment
pretty printing now separately reports Medicare levy, Medicare levy surcharge, and the various non-refundable and refundable tax offsets. The formatting closely resembles the ATO notice of assessment layout. -
Add
FY2025
module. All rates and thresholds are up to date. -
Added some new helper functions to the
Data.Tax.ATO.FY
module:fromProxy :: (FinancialYear y) => Proxy y -> Year
daysInYear :: Year -> Integer
daysInYearFromProxy :: FinancialYear y => Proxy y -> Integer
Bug fixes
-
Non-refundable offsets now cannot reduce liability below $0, and the order of application of the various liabilities, offsets and credits has been fixed.
-
Employee share scheme TFN amounts withheld are now included in assessment calculations (#8).
-
Fix FY2024 private health insurance rebate tier thresholds.
Version 2024.1
-
The minimum supported version of GHC is now 9.2, due to a dependency on more recent versions of the time library.
-
Update the
Dividend
type to use store gross payment amount and tax withheld, rather than net amount, franking portion and (other) tax withheld. Add new helper functions for construction:dividendFromGross
takes gross amount and tax withhelddividendFromNet
takes net amount and tax withhelddividendFromNetFranked
takes net amount, franked proportion and applicable corporate tax rate for working out the franking credit.dividendFromNetFranked30
is a shortcut that uses the standard corporate tax rate of 30%.
-
Change the type of
dividendDate
field fromString
toData.Time.Day
. -
Rename the
HasIncome
class toHasTaxableIncome
, and its member functionincome
totaxableIncome
. -
Add functions for getting the
Day
range of a financial year, and a function for getting the financial year of a given day. -
Move the
Data.Tax.ATO.Days
module toData.Tax.ATO.FY
and rename theDaysInYear
type synonym toFinancialYear
, to reflect the additional behaviour. -
Each
FY.<YYYY>
module now exports anFY
type synonym for its type-levelNat
representing the financial year, and thefyProxy :: Proxy FY
value. -
Add
Functor
instance forCGTEvent
. -
Add
FY2024
module. -
Add
Data.Tax.ATO.Pretty
module, which provides pretty printers forTaxReturnInfo
,TaxAssessment
, and other data types.
Version 2023.2
-
Add support for PAYG Instalments, which are specified in aggregate as a refundable tax offset via the
paygInstalments
field. -
Add the
Deductions
type, which expresses the various deduction types, as well as the (aggregate) amount of deductions related to foreign income. -
Implement the Foreign Income Tax Offset Limit. The limit will be calculated and the
foreignTaxOffset
field in theTaxReturnInfo
will be clamped to it.
Older versions
See Git commit history