Functional Weave
Code in Rust

property.deposit-cap@1.0.2

README.md

4,187 bytes · view raw

# property.deposit-cap

The most a landlord or letting agent in England may take as a tenancy
deposit: five weeks' rent when the annual rent is under £50,000, six weeks'
rent when it is £50,000 or more. Anything above the cap is a prohibited
payment.

`depositCap(money(100000, "GBP"), "monthly", "england", "2026-09-01")` is a
maximum of £1,153.84: £1,000 × 12 = £12,000 a year, under £50,000, so five
weeks, and £12,000 × 5 ÷ 52 = £1,153.846…

## How it is calculated

The Act defines a week's rent as the annual rent divided by 52, and the
government guidance gives the formulae: annual rent is monthly rent × 12 or
weekly rent × 52, and weekly rent is (monthly rent × 12) ÷ 52.

- The threshold test is made on the exact annual rent, so £4,166.66 a month
  (£49,999.92 a year) is five weeks and £4,166.67 (£50,000.04) is six.
- The maximum is annual rent × weeks ÷ 52, computed exactly and **rounded
  down** to the penny once. Rounding the weekly rent first and multiplying by
  five can land a penny or more away; rounding up would put the deposit a
  fraction of a penny over the statutory cap. The Act and guidance do not
  state a rounding rule, so down is the one that can never breach it.
- `weeklyRent` is shown for reference, rounded down too.

Pass the total rent for the property: for a joint tenancy the cap applies to
the rent all the tenants are jointly liable for, not to each tenant.

## Dates and jurisdictions

The rule is a dated row in `data/deposit-caps.json`. England's cap applies to
tenancies granted, renewed or continued on or after 1 June 2019; an earlier
date is refused rather than answered. The Renters' Rights Act 2025 amended
the Tenant Fees Act but left the deposit cap unchanged (statutory guidance
updated 1 May 2026). Wales and Scotland have different regimes and no data
here yet; asking for them is an error, not a guess.

## Sources

- Tenant Fees Act 2019, Schedule 1 paragraph 2 (tenancy deposit; "one
  week's rent" is the annual rent divided by 52):
  https://www.legislation.gov.uk/ukpga/2019/4/schedule/1
- Ministry of Housing, Communities and Local Government, "Tenant Fees Act
  2019: Guidance for landlords and agents" (tenancy deposits: the annual and
  weekly rent formulae; the cap applies from 1 June 2019):
  https://assets.publishing.service.gov.uk/media/5f745d308fa8f5189a93d141/Tenant_Fees_Act_2019_-_Guidance_for_landlords_and_agents.pdf
- "Tenant Fees Act 2019: statutory guidance for enforcement authorities" (as
  amended by the Renters' Rights Act 2025):
  https://www.gov.uk/government/publications/tenant-fees-act-amended-by-the-renters-rights-act-2025/tenant-fees-act-2019-statutory-guidance-for-enforcement-authorities

1.0.1 fixes Python accepting a trailing newline or non-ASCII digits in onDate; adds tests.

## Before you rely on this

**Not professional advice.** This capability calculates property figures from published rules. It is a software component for developers, not legal or financial advice. Rules change and every rate here has an effective date. Check that the dates cover your case. Verify results against the official sources listed above, and have a conveyancer or tax adviser review how you use it, before anyone relies on the output. Provided "as is" under its licence, without warranty.

**Unreviewed.** This capability's implementations agree in every language and pass its published test vectors, which were worked out from the official sources cited. But no qualified conveyancer or tax adviser has yet checked those vectors, or confirmed that the capability covers the cases it claims. Treat it as a draft. Do not use it for real people, money or decisions without your own expert review. Once a qualified reviewer signs off, this notice is replaced with their name, qualification and the date. Each new version needs fresh sign-off.

## Notices

Contains public sector information licensed under the Open Government
Licence v3.0 (https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/).

Legislation: Crown copyright and database right.

1.0.2 marks it unreviewed and adds its attribution notices (NOTICE). The code and the tests are unchanged.