The Rate Ledger

Methodology

The Rate Ledger is a historical archive of the product data Australian lenders publish under the Consumer Data Right. Lenders with CDR obligations must publish their advertised rates, fees and product terms through public, standardised APIs. We collect those payloads every day, keep every version, and show how they change over time. Nothing on this site is a recommendation. It is a record.

Sources and coverage

Rates come from each lender's own Product Reference Data endpoints (Get Products and Get Product Detail, as defined in the Consumer Data Standards). Our collector has archived every banking and non-bank-lending data holder daily since 17 July 2026. Earlier history is incorporated from two archived open-source projects, with provenance recorded payload by payload: the open-banking-tracker archive (25 May 2022 to 27 October 2024) and the ratecheck-au archive (29 March to 19 May 2026, six-hourly, mortgages only). Both are MIT licensed. The cash rate series is taken from the RBA's published cash rate target decisions, at effective-date precision.

The record has holes, and we show them rather than paper over them. Two windows have no product-level data from any source: 28 October 2024 to 28 March 2026, and 20 May to 16 July 2026. They appear as grey bands on every timeline. Between March and October 2023 the open-banking-tracker collector requested a retired API version, so a growing share of product detail was lost in that window, peaking around a third of products in August and September 2023. Changes first observed after such windows are marked as spanning a data gap rather than dated to a day on which nobody saw them. We never interpolate across missing data.

How rates are read

Every payload is canonicalised (volatile timestamp fields are separated from content) and stored once, addressed by the SHA-256 hash of its content. The rate shown for any date is the most recently observed value at that date. Comparison tables show standalone advertised rate types only: variable, fixed, introductory, floating and market-linked, plus purchase, cash advance and balance transfer for cards. Discount, penalty and package-discount entries are adjustments relative to a reference rate, and lenders encode them inconsistently; some publish negative numbers, some positive discount sizes, some absolute package rates. We exclude them from comparison tables rather than guess. Rates implausibly below the RBA cash rate of the selected day are greyed and flagged as likely adjustments-published-as-rates. Loan-to-valuation bands are normalised to percentages; a few lenders publish ratios while declaring percentages, which we detect by value.

The data quality score

Each lender's A to E badge scores the quality of what that lender publishes. It is computed only from observed, countable behaviour, never from reputation, size or our opinion of the lender. Every metric can be traced to specific payloads on specific dates in the archive. Where a metric cannot be measured for a lender it is shown as not measurable and carries no penalty. When lenders merge, quality history stays with the brand that published the data; a merger never launders a scorecard.

MetricWhat it measuresPenaltyCap
Fetch errorsShare of collection attempts returning errors (version rejections, blocks, invalid payloads)0.5 × error %20
Stale lastUpdatedContent changed but the lender's lastUpdated timestamp did not, measured against content hashes0.3 × %25
Noisy lastUpdatedlastUpdated bumped with no content change, making the freshness signal meaningless0.1 × %10
Missing lastUpdatedlastUpdated never published at all (a conformance gap, scored separately from dishonesty)0.1 × %5
Missing descriptionsProducts published without a description0.1 × %5
Blank loan purposeMortgage rates published without an owner-occupier or investment purpose0.15 × %15
Rate encoding violationsRates published outside the standard's decimal encoding, such as percent-as-fraction confusion or negative ratesflat 10 if any10
Fixed without a termFixed rates whose term cannot be parsed from the standard duration field0.1 × %10
LVR in free textLVR bands published only as prose instead of structured tiers0.05 × %5

The composite starts at 100, subtracts the capped penalties, and maps to grades: 90 or above is an A, 75 a B, 60 a C, 45 a D, and below that an E.

Why these weights

The weights implement one principle: penalties are ordered by the harm the behaviour does to anyone relying on the data. Dishonest freshness signals rank worst. When content changes without a lastUpdated bump, every consumer, comparison service and researcher relying on that timestamp is silently misled, and nothing in the payload reveals it; only an archive that hashes content day after day can detect it. It therefore carries the largest weight and the largest cap. Reliability failures rank next, because an endpoint that cannot be fetched deprives everyone equally and visibly. Conformance gaps such as missing descriptions or blank loan purposes rank lower because a reader can at least see that the information is absent. Encoding violations attract a flat penalty because their presence, not their volume, indicates the defect: a lender either validates its rate encodings or it does not. Caps exist so that no single dimension can dominate the grade, and so a lender weak in one respect is not painted as weak in all.

Three facts constrain any suspicion that the scale is tilted. The weights were fixed on 18 July 2026, before any lender's results had been computed, and have not been changed since; any future change will be dated and recorded in the published rule history. The letter grade is the only place judgement enters: every underlying percentage is displayed ungraded on each lender's scorecard, so a reader who disagrees with our weighting can discard it and apply their own. And the counts beneath those percentages are not a matter of judgement at all; they resolve to content-addressed payloads on dated observations that either exist in the archive or do not.

Classifications

Tags such as SMSF, non-conforming, bridging and first-home are assigned by dated, published pattern rules over each product's own name, description and eligibility text, scoped to the product categories where they make sense; a mortgage advertising "help your kids buy their first home" is not a youth product. Every match records the exact text that triggered it. Products matching no rule stay unclassified. Most products are unclassified, and that is honest. Prime is only ever tagged on an explicit marker; the absence of non-conforming markers never implies prime.

Pass-through timing

Where a rate change is observed within 60 days after an RBA cash rate decision, we report the lag in days between the decision's effective date and the first observation of the changed rate. Collection is daily, so a lag is precise to about a day during continuously observed periods. Changes first seen after a data gap are flagged and excluded from lag statistics.

Limitations

We archive what lenders publish, which is not always what they charge; advertised rates exclude negotiated discounts. Observation grain is daily (six-hourly in parts of 2026), so same-day repricing sequences collapse to one change. Roughly nine per cent of recorded changes span a data gap and carry that flag. A small cohort of lenders blocks our collector's infrastructure; we collect them via an alternative route and disclose per-lender coverage on their scorecards. Product identity across lender rebrands, mergers and identifier churn is resolved by published, dated mapping rules; unresolved cases remain split rather than being force-merged.

Corrections

If you are a lender and believe a score or record is wrong, email admin@therateledger.com with the product and date. The archive is content-addressed, so any dispute resolves to specific payloads. Collector details for endpoint operators are at /bot.