Pre-launch

The policy

Example consumer lending policy, in the shape of a published Australian credit guideline (illustrative only)

An example. Every figure in it is invented.

Every figure in this example is invented. There is no borrower, no bank statement and no lender: the transactions below were generated from the numbers in the form so that the policy engine has a statement to read, which is what it reads.

The credit policy replayed here is the one that says this at the top of itself. models/policies/example-guideline-au.txt is an example. It is a set of figures OF THE KIND Australian lenders publish, written to show the mechanism. It is not any lender’s policy, it names no lender, it reproduces nobody’s wording, and no lender has seen it, endorsed it, licensed it or is associated with it in any way. A real policy is written by a lender's credit risk function against their own book and signed off by people whose names go on it.

Reading in the shape of a published guideline — models/policies/example-guideline-au.txt. Written in the shape those documents have — a servicing buffer, a floor rate, a debt-to-income ceiling with a referral band under it, a minimum servicing surplus and the condition that waives it, and a separate line for each kind of income — so that somebody who reads credit guidelines for a living can see in one glance what a replay would do with theirs. Or run the same application against Round numbers.

A policy here is a text file, not code. The person who knows that the servicing buffer moved in June is a credit risk officer and not a programmer, so the source is one rule a line, in words, and every parse error names its line and says what to do about it. scripts/build-policy.js checks it, hashes each version and writes the module beside it; the module is committed because a Cloudflare Worker has no filesystem, and a test fails if the two have drifted.

Each version carries its dates and its hash. That is what a replay rests on: the rules that ran on a given day can be shown to be the bytes that were hashed on that day, rather than the rules somebody remembers having had.

There is no word for an approval. approve, decline, score and recommend are parse errors in this format, whose message says that the decision and the responsibility for it stay with the licensee.

The debt-to-income lines in this policy are the lender's own, not APRA's

From February 2026 APRA limits an authorised deposit-taking institution to writing no more than 20 per cent of its new residential mortgage lending, measured each quarter and counted separately for owner-occupier and investor lending, at a debt-to-income ratio of six or more. That caps the mix of a lender’s own book. It does not prohibit a borrower: it does not say that a person at a ratio of six may not be lent to, and no threshold on this surface is APRA’s rule. What a lender does about a portfolio limit — a ceiling, a referral band, a delegation level, or nothing at all — is that lender’s own credit policy, which is the thing versioned and hashed here.

The policy on this page is an invented consumer lending policy, which APRA's mortgage measure does not reach at all. models/policies/example-guideline-au.txt is an example. It is a set of figures OF THE KIND Australian lenders publish, written to show the mechanism. It is not any lender’s policy, it names no lender, it reproduces nobody’s wording, and no lender has seen it, endorsed it, licensed it or is associated with it in any way.

In force today

On 26 September 2026 the version in force is 10.1, effective 7 September 2026.

3 versions

9.3

In force from 2 February 2026 up to and including 14 June 2026; retired on 15 June 2026, which is the day its replacement took effect.

The rules in this version hash to b0eb74968b63ea3801c56bfb6056c22099c0542f2a1a450768aaa90d118bcde7. That is what makes “we ran 9.3” checkable rather than claimed.

The earliest version kept here. It assesses at a 2.50 per cent buffer over a 5.25 per cent floor, holds debt at nine times gross income, and counts income of any kind other than wages at a level that makes a household relying on it a referral rather than a refusal.

RuleKindThe condition, as the policy wrote it
buffer must be met assessment buffer at least 2.50%Every loan is assessed at the rate offered plus a servicing buffer, so that the file shows what the applicant could carry if the rate moved against them rather than what they can carry today. This states the buffer as a condition on an assessment already performed, which is the form the question takes when a file is read back: not "assess at this buffer" but "was this file assessed at it".
floor must be met assessment rate at least 5.25%And never below a floor, whatever the rate on offer. A very low advertised rate assessed at the rate plus a buffer alone would let a discount decide how much somebody can borrow, which is the opposite of what a buffer is for.
surplus-positive must be met monthly surplus at least $0The assessment has to balance before anything else in this policy is worth reading. A surplus below nothing means the arithmetic did not close: assessed income did not meet living expenses, existing commitments and the proposed repayment at the assessed rate. This line is never waived, and the line below it does not waive it.
surplus-floor must be met annual surplus at least $500 or declared expenses over benchmark at least 120%A minimum servicing surplus of $500 a year at the assessed rate, waived where the applicant has declared living expenses at or above 120 per cent of the household expenditure benchmark. The waiver is the part worth reading twice: an applicant who has declared expenses well above the benchmark has already been assessed on their own conservative figure rather than on a table, and requiring a surplus on top of that would count the same caution twice. What is waived is the $500. What is not waived is the line above: an assessment that does not balance is not rescued by the applicant having declared a large number.
debt-service must be met debt service ratio at most 50%Every repayment, existing and proposed, measured against assessed income.
dti-ceiling must be met debt to income at most 9Every debt this policy counts, including the loan applied for, as a multiple of gross annual income. This is this example's own ceiling. It is not APRA's cap, which limits the share of a lender's new mortgage book written above a ratio and says nothing about whether any one borrower may be lent to.
history must be met statement days at least 90Three months is the shortest period in which a fortnightly rhythm can be seen at all.
coverage must be met categorised share at least 80%Below this, too much of the statement is unread for the expense picture to mean anything. The reading lists the payees it could not identify.
income must be met income streams at least 1An assessment with no identified regular income is an assessment of nothing.
dti-band sends it to a person debt to income not between 7 and 9A ratio in the band beneath this policy's ceiling goes to a person rather than through. Read the polarity carefully: a refer states the condition under which the application does NOT go to a person, so the band a person looks at is the one written as "not between".
salary-share sends it to a person share of income from salary at least 40%Where less than two fifths of the income relied on is wages, a person looks at the file. The rest is income this policy counts at less than its face value, and a household carried mostly by shaded income is a different question from one carried by a wage.
other-income sends it to a person share of income from other at most 30%Rental, dividends and side work are counted at four fifths of what the statement shows, because they are irregular by nature. Where more than three tenths of the income relied on is of that kind, the shading is doing too much of the work for an assessment to go through on its own.
government-share sends it to a person share of income from government at most 60%Government benefits are counted in full where they are ongoing. They are referred where the household depends on them for more than three fifths of its income, because eligibility can end on a date nobody on this side of the file knows.
inferred-income sends it to a person inferred income share at most 50%Income counted because it repeats, from credits whose description does not name a payer, should be confirmed with the applicant before it carries an application.
gambling sends it to a person spend on gambling at most $100Not a reason in itself. It is a fact a person should see beside the rest of the file.
small-credit sends it to a person signal small_amount_credit is absentPayments to businesses whose products are commonly small amount credit contracts. The rebuttable presumptions of unsuitability that used to attach to this were repealed in 2022, so this referral is this lender's own judgement and not a requirement of the Act.
dishonours sends it to a person signal dishonours is absentDishonour and overdrawn fees say something about the month to month that a monthly average does not.

10.0

In force from 15 June 2026 up to and including 6 September 2026; retired on 7 September 2026, which is the day its replacement took effect.

The rules in this version hash to 73a2d5327b4755f18d984b9f3696e915c63ea48413f98d45341929e276cac926. That is what makes “we ran 10.0” checkable rather than claimed.

June, and the change of the year: the servicing buffer moved from 2.50 to 3.00 per cent and the debt-to-income ceiling from nine times to eight, with the referral band beneath it moved from 7.0-9.0 to 6.0-8.0. The share of income that may come from sources other than wages was tightened from three tenths to a fifth. An application assessed in May is still judged against 9.3, which is what the dates on these versions are for.

RuleKindThe condition, as the policy wrote it
buffer must be met assessment buffer at least 3.00%Every loan is assessed at the rate offered plus a servicing buffer, so that the file shows what the applicant could carry if the rate moved against them rather than what they can carry today. Widened from 2.50 per cent in June. This states the buffer as a condition on an assessment already performed, which is the form the question takes when a file is read back: not "assess at this buffer" but "was this file assessed at it".
floor must be met assessment rate at least 5.25%And never below a floor, whatever the rate on offer. A very low advertised rate assessed at the rate plus a buffer alone would let a discount decide how much somebody can borrow, which is the opposite of what a buffer is for.
surplus-positive must be met monthly surplus at least $0The assessment has to balance before anything else in this policy is worth reading. A surplus below nothing means the arithmetic did not close: assessed income did not meet living expenses, existing commitments and the proposed repayment at the assessed rate. This line is never waived, and the line below it does not waive it.
surplus-floor must be met annual surplus at least $500 or declared expenses over benchmark at least 120%A minimum servicing surplus of $500 a year at the assessed rate, waived where the applicant has declared living expenses at or above 120 per cent of the household expenditure benchmark. The waiver is the part worth reading twice: an applicant who has declared expenses well above the benchmark has already been assessed on their own conservative figure rather than on a table, and requiring a surplus on top of that would count the same caution twice. What is waived is the $500. What is not waived is the line above: an assessment that does not balance is not rescued by the applicant having declared a large number.
debt-service must be met debt service ratio at most 50%Every repayment, existing and proposed, measured against assessed income.
dti-ceiling must be met debt to income at most 8Every debt this policy counts, including the loan applied for, as a multiple of gross annual income. Lowered from nine times in June. This is this example's own ceiling. It is not APRA's cap, which limits the share of a lender's new mortgage book written above a ratio and says nothing about whether any one borrower may be lent to.
history must be met statement days at least 90Three months is the shortest period in which a fortnightly rhythm can be seen at all.
coverage must be met categorised share at least 80%Below this, too much of the statement is unread for the expense picture to mean anything. The reading lists the payees it could not identify.
income must be met income streams at least 1An assessment with no identified regular income is an assessment of nothing.
dti-band sends it to a person debt to income not between 6 and 8A ratio in the band beneath this policy's ceiling goes to a person rather than through. The band was 7.0 to 9.0 and was lowered with the ceiling in June. Read the polarity carefully: a refer states the condition under which the application does NOT go to a person, so the band a person looks at is the one written as "not between".
salary-share sends it to a person share of income from salary at least 40%Where less than two fifths of the income relied on is wages, a person looks at the file. The rest is income this policy counts at less than its face value, and a household carried mostly by shaded income is a different question from one carried by a wage.
other-income sends it to a person share of income from other at most 20%Rental, dividends and side work are counted at four fifths of what the statement shows, because they are irregular by nature. Tightened from three tenths to a fifth in June. Where more than that share of the income relied on is of that kind, the shading is doing too much of the work for an assessment to go through on its own.
government-share sends it to a person share of income from government at most 60%Government benefits are counted in full where they are ongoing. They are referred where the household depends on them for more than three fifths of its income, because eligibility can end on a date nobody on this side of the file knows.
inferred-income sends it to a person inferred income share at most 50%Income counted because it repeats, from credits whose description does not name a payer, should be confirmed with the applicant before it carries an application.
gambling sends it to a person spend on gambling at most $100Not a reason in itself. It is a fact a person should see beside the rest of the file.
small-credit sends it to a person signal small_amount_credit is absentPayments to businesses whose products are commonly small amount credit contracts. The rebuttable presumptions of unsuitability that used to attach to this were repealed in 2022, so this referral is this lender's own judgement and not a requirement of the Act.
dishonours sends it to a person signal dishonours is absentDishonour and overdrawn fees say something about the month to month that a monthly average does not.

10.1

In force from 7 September 2026, and not retired.

The rules in this version hash to 993c34f30166b505a2569380d464b5d76c1e90454e55f4b16af13899e3bc36ae. That is what makes “we ran 10.1” checkable rather than claimed.

September, a minor revision in the way a guideline numbers one: the floor rate moved from 5.25 to 5.30 per cent, and the referral band beneath the debt-to-income ceiling was narrowed from 6.0-8.0 to 7.0-8.0, returning to a person only the files sitting within one times of the ceiling. The ceiling itself did not move. Two small changes with very different consequences — the floor is invisible on any ordinary application and decides the low-rate ones outright, and the band changes nothing about whether a file meets the policy and everything about who reads it.

RuleKindThe condition, as the policy wrote it
buffer must be met assessment buffer at least 3.00%Every loan is assessed at the rate offered plus a servicing buffer, so that the file shows what the applicant could carry if the rate moved against them rather than what they can carry today. This states the buffer as a condition on an assessment already performed, which is the form the question takes when a file is read back: not "assess at this buffer" but "was this file assessed at it".
floor must be met assessment rate at least 5.30%And never below a floor, whatever the rate on offer. Raised from 5.25 per cent in September. A very low advertised rate assessed at the rate plus a buffer alone would let a discount decide how much somebody can borrow, which is the opposite of what a buffer is for.
surplus-positive must be met monthly surplus at least $0The assessment has to balance before anything else in this policy is worth reading. A surplus below nothing means the arithmetic did not close: assessed income did not meet living expenses, existing commitments and the proposed repayment at the assessed rate. This line is never waived, and the line below it does not waive it.
surplus-floor must be met annual surplus at least $500 or declared expenses over benchmark at least 120%A minimum servicing surplus of $500 a year at the assessed rate, waived where the applicant has declared living expenses at or above 120 per cent of the household expenditure benchmark. The waiver is the part worth reading twice: an applicant who has declared expenses well above the benchmark has already been assessed on their own conservative figure rather than on a table, and requiring a surplus on top of that would count the same caution twice. What is waived is the $500. What is not waived is the line above: an assessment that does not balance is not rescued by the applicant having declared a large number.
debt-service must be met debt service ratio at most 50%Every repayment, existing and proposed, measured against assessed income.
dti-ceiling must be met debt to income at most 8Every debt this policy counts, including the loan applied for, as a multiple of gross annual income. This is this example's own ceiling. It is not APRA's cap, which limits the share of a lender's new mortgage book written above a ratio and says nothing about whether any one borrower may be lent to.
history must be met statement days at least 90Three months is the shortest period in which a fortnightly rhythm can be seen at all.
coverage must be met categorised share at least 80%Below this, too much of the statement is unread for the expense picture to mean anything. The reading lists the payees it could not identify.
income must be met income streams at least 1An assessment with no identified regular income is an assessment of nothing.
dti-band sends it to a person debt to income not between 7 and 8A ratio in the band beneath this policy's ceiling goes to a person rather than through. Narrowed from 6.0-8.0 in September, so a file at six and a half times no longer waits for a person. Read the polarity carefully: a refer states the condition under which the application does NOT go to a person, so the band a person looks at is the one written as "not between".
salary-share sends it to a person share of income from salary at least 40%Where less than two fifths of the income relied on is wages, a person looks at the file. The rest is income this policy counts at less than its face value, and a household carried mostly by shaded income is a different question from one carried by a wage.
other-income sends it to a person share of income from other at most 20%Rental, dividends and side work are counted at four fifths of what the statement shows, because they are irregular by nature. Where more than a fifth of the income relied on is of that kind, the shading is doing too much of the work for an assessment to go through on its own.
government-share sends it to a person share of income from government at most 60%Government benefits are counted in full where they are ongoing. They are referred where the household depends on them for more than three fifths of its income, because eligibility can end on a date nobody on this side of the file knows.
inferred-income sends it to a person inferred income share at most 50%Income counted because it repeats, from credits whose description does not name a payer, should be confirmed with the applicant before it carries an application.
gambling sends it to a person spend on gambling at most $100Not a reason in itself. It is a fact a person should see beside the rest of the file.
small-credit sends it to a person signal small_amount_credit is absentPayments to businesses whose products are commonly small amount credit contracts. The rebuttable presumptions of unsuitability that used to attach to this were repealed in 2022, so this referral is this lender's own judgement and not a requirement of the Act.
dishonours sends it to a person signal dishonours is absentDishonour and overdrawn fees say something about the month to month that a monthly average does not.

What changed, read from the rules themselves

Not from the notes. A note is the author's account of a change; this is the change.

9.3 → 10.0. Between 9.3 and 10.0: 4 changed, 13 unchanged.

"buffer" went from "assessment buffer at least 2.50%" to "assessment buffer at least 3.00%".

"dti-ceiling" went from "debt to income at most 9" to "debt to income at most 8".

"dti-band" went from "debt to income not between 7 and 9" to "debt to income not between 6 and 8".

"other-income" went from "share of income from other at most 30%" to "share of income from other at most 20%".

June, and the change of the year: the servicing buffer moved from 2.50 to 3.00 per cent and the debt-to-income ceiling from nine times to eight, with the referral band beneath it moved from 7.0-9.0 to 6.0-8.0. The share of income that may come from sources other than wages was tightened from three tenths to a fifth. An application assessed in May is still judged against 9.3, which is what the dates on these versions are for.

10.0 → 10.1. Between 10.0 and 10.1: 5 changed, 12 unchanged.

"buffer" kept its condition and changed the sentence explaining it.

"floor" went from "assessment rate at least 5.25%" to "assessment rate at least 5.30%".

"dti-ceiling" kept its condition and changed the sentence explaining it.

"dti-band" went from "debt to income not between 6 and 8" to "debt to income not between 7 and 8".

"other-income" kept its condition and changed the sentence explaining it.

September, a minor revision in the way a guideline numbers one: the floor rate moved from 5.25 to 5.30 per cent, and the referral band beneath the debt-to-income ceiling was narrowed from 6.0-8.0 to 7.0-8.0, returning to a person only the files sitting within one times of the ceiling. The ceiling itself did not move. Two small changes with very different consequences — the floor is invisible on any ordinary application and decides the low-rate ones outright, and the band changes nothing about whether a file meets the policy and everything about who reads it.

The figures a rule may read

A condition is a figure, a comparison and a value. The figures are the ones the statement reading and the serviceability assessment already produce, so there is one route to each number rather than two that can come to disagree.

monthly surplus
What is left each month once assessed income has met living expenses, commitments and the proposed repayment
annual surplus
The monthly surplus multiplied by twelve, because a published credit guideline states its minimum servicing surplus as an amount a year
net surplus ratio
The monthly surplus as a share of assessed income
debt service ratio
All repayments, existing and proposed, as a share of assessed income
assessed income
Verified income after the lender’s shading
living expenses
The living expense figure used, being the highest of declared, benchmark and observed
declared expenses over benchmark
What the applicant declared they spend each month, as a share of the lender’s own household expenditure benchmark — both supplied, because this repository holds no benchmark table
assessed commitments
Existing commitments counted in the assessment, including card limits
proposed repayment
The repayment on the proposed loan at the buffered assessment rate
assessment rate
The rate the loan was assessed at: the offered rate plus the buffer, floored
assessment buffer
The margin between the rate the loan was assessed at and the rate offered, which is the servicing buffer as the assessment applied it
assessment complete
Whether every input a complete serviceability assessment needs was actually supplied
statement days
How many days the statement covers, first transaction to last
statement months
How many months the statement covers
transactions
How many transactions were read
categorised share
The share of transactions this software could identify
enough history
Whether the statement covers at least 90 days, the minimum a fortnightly rhythm can be seen in
verified monthly income
Regular income found on the statement, before any policy shading
income streams
How many separate regular income streams were identified
inferred income share
The share of verified income that comes from credits whose description does not say they are income
monthly commitments
Repayments and rent found on the statement, monthly
monthly housing
Rent or mortgage found on the statement, monthly
monthly outgoings
Everything that left the account except transfers, monthly
loan amount
The principal applied for
loan term years
The term applied for, in years
loan rate
The rate offered, before the assessment buffer
loan purpose
What the money is for, as the application states it
loan to income
The principal as a multiple of assessed annual income
debt to income
Every debt the lender counts, including the loan applied for, as a multiple of gross annual income — supplied, because gross income is not on a bank statement and what counts as debt is the lender’s own definition
contract kind
Whether the contract is a small amount credit contract, a medium amount one, or neither — as the definitions in s 5(1) of the Act and s 204(1) of the Code decide it
adjusted credit amount
The first amount of credit provided, with any fee capitalised into it disregarded — the base of both fee caps (National Credit Code s 204(1) and (3))
cost of credit
Everything the borrower pays beyond the credit itself, in dollars over the whole term
cost of credit share
What the borrower pays beyond the credit, as a share of the amount borrowed over the whole term — not annualised, and not an interest rate
annual cost rate
The annual cost rate under s 32B of the National Credit Code, which s 32A caps at 48% — for a medium amount credit contract, because s 32A(4)(b) puts small amount credit contracts outside that cap entirely
protected earnings share
The largest share of a repayment period’s available income that the repayments take, across every repayment period — the figure reg 28LCA(2) caps at 10%
protected earnings headroom
How much less than the 10% cap the repayments take in the tightest repayment period
protected earnings met
Whether every repayment is at or under 10% of the available income expected in its own repayment period (National Credit Act s 133CC(1), reg 28LCA(2))
equal repayments met
Whether the repayments and the intervals between them satisfy s 133CD of the National Credit Act
within the code caps
Whether the contract imposes anything the Code does not permit — a fee above its cap, an interest charge on a small amount credit contract, or an annual cost rate above 48% on a medium amount one
small amount evidence complete
Whether every input the small amount credit contract tests need was actually supplied
capacity headroom
How much less than the maximum this lender would lend the applicant is asking for
gambling in the last 30 days
Money spent on gambling in the thirty days to the end of the statement
gambling in the last 90 days
Money spent on gambling in the ninety days to the end of the statement
gambling share of income in the last 30 days
Gambling in the last thirty days as a share of income credited in the same thirty days
dishonours in the last 30 days
Dishonour and overdrawn fees in the thirty days to the end of the statement
dishonours in the last 90 days
Dishonour and overdrawn fees in the ninety days to the end of the statement
overdrawn days in the last 90 days
Days in the last ninety on which the running balance was below nought
income credits in the last 90 days
Credits identified as income in the last ninety days
statement age days
Days between the last transaction on the statement and the day this policy was run — how stale the evidence is
declared income difference
How far the declared income is from the income the statement verified, either way, as a share of the verified figure
applicant age
The applicant’s age in whole years, as the lender’s identity check established it
identity verified
Whether the lender’s identity check verified the applicant
contact verified
Whether the applicant proved control of a mobile number or email address, by a one-time code or otherwise
account name matches
Whether the name on the income account matches the applicant
all income accounts included
Whether every account income is paid into is in the statement reading — ss 117(1A) and 130(1A) speak of the consumer’s account, and income paid somewhere unread is income the assessment cannot see
residency criteria met
Whether the applicant meets the residency criteria of the lender’s own product
requirements and objectives met
Whether the lender’s own record of the consumer’s requirements and objectives says this contract meets them. Recorded by a person under ss 130 and 131; this software reads the record and does not make the judgement
prior contracts
Contracts this applicant has had with this lender before
prior contracts paid late
Earlier contracts with a repayment missed, paid late, or days past due at any point
prior dishonours
Payments dishonoured under earlier contracts with this lender
prior most days past due
The most days past due any earlier contract with this lender reached
prior hardship arrangements
Hardship arrangements under earlier contracts with this lender
prior history complete
Whether every earlier contract’s servicing history was available to read
spending reduction shortfall
How far short of a committed reduction in discretionary spending the applicant fell, in percentage points: the reduction promised under an earlier contract, less the reduction the statement now shows

A threshold may be a band as well as a number. debt to income between 5.5 and 6.5 and debt to income not between 5.5 and 6.5 both read, and both ends are included, which is what “between 5.5 and 6.5” means when a person says it out loud; a half-open band is written as two comparisons joined with “and”, which says where the edge sits. The second form is the one a referral line needs, and the polarity catches everybody once: a refer states the condition under which the application does not go to a person, so a band a human should look at is written as the requirement to be outside it. A band with its ends the wrong way round is refused when the file is read, with both readings spelled out.

Three of them take a parameter: spend on <category>, signal <code> and share of income from <kind>, where the kinds are salary, government, other. A guideline does not have one income rule — it has a table with a line for each kind of income and a different figure against each — so the format has to be able to write one rule per line of that table. The signal codes are written out in the engine rather than left open, because an open list turns a misspelling — dishonors for dishonours — into a rule that reads as absent on every statement ever written and looks exactly like a control that is working.

What the parser refuses

A rule that could never fail, and a rule that could never be met. monthly surplus at least $300 or monthly surplus less than $300 is refused when the file is read, because a control that cannot fail is indistinguishable from a control that works until the day somebody looks.

A version with no rules at all, because a run of it would report that all nil of its conditions were met.

A version made only of referral tests, for the same reason: it states nothing that must be met, so there is nothing in it to report as met.

A rule with no reason. The reason is what is read back when the condition is not met, and a condition that cannot say why it exists cannot be defended by the person who has to defend it.