Open data
Security deposit rules by US state and city
Download the security deposit rules for all 50 states, DC and 9 cities as one CSV or JSON file. You can reuse and republish them under the CC BY 4.0 license, as long as you credit Tektolo.
Version sd-2026.11.20, sources last checked 2026-10-15. Free, no sign-in. How to credit Tektolo.
- Jurisdictions
- 60
- Fields
- 69
License
The data is published under the Creative Commons Attribution 4.0 International license (CC BY 4.0). You can copy it, share it and build on it for any purpose, including commercial use. In return, credit Tektolo, link to the license, and say if you changed the data.
The statutes and ordinances themselves are public law. The license covers how Tektolo collected, summarized and structured them.
How to credit Tektolo
To cite the data, copy this:
Tektolo. Security deposit rules by US state and city, version sd-2026.11.20. https://tektolo.com/data/deposit-rules/. Licensed under CC BY 4.0.
For a short credit in an app or on a web page:
Security deposit rules from Tektolo (tektolo.com), CC BY 4.0.
Download
| File | Latest | Version sd-2026.11.20 |
|---|---|---|
| CSV, one row per state and city | deposit-rules.csv | sd-2026.11.20/deposit-rules.csv |
| JSON, the same rows with every citation | deposit-rules.json | sd-2026.11.20/deposit-rules.json |
| Frictionless data package: the fields, license and version of the files beside it | datapackage.json | sd-2026.11.20/datapackage.json |
The latest files always match the rules the tool uses today. A version's address keeps that version: the current one while it is current, and an archived one for good. Every file states its ruleset version and hash, and the hash changes whenever any rule changes.
What each version changed, with feeds by state, is in the rules changelog. To check a Tektolo summary or statement, open its verify link or paste the code at /verify.
What is in the data
- One row for each of the 50 states and the District of Columbia, and one for each city whose own ordinance changes the state rule.
- The deadline to return the deposit, what starts it, and the other deadlines the statute sets in some cases.
- Whether an itemized statement is required and when, and the receipts, photo and move-in checklist duties.
- The deductions the statute allows, whether normal wear is excluded, and whether the statute prorates by age.
- Interest on the deposit, the penalty for a late or wrongful refund, and what the landlord forfeits by missing a deadline.
- The deposit cap, recent amendments and notes for landlords and tenants.
- For every row, the statute or ordinance, the quoted text, the official source's address and the day it was last read.
What is not in it
- The engine that applies these rules to a move-out: counting the days with weekends and holidays, testing each condition, judging each deduction and working out the refund, interest and penalty.
- Depreciation tables (useful lives of carpet, paint and so on) and research notes.
- Legal advice. The rules are summarized for planning, and the statute governs.
Work out your own case
The data gives the rule. To apply it to a real case, with your own dates and amounts, use the free Deposit settlement tool. It runs on the same rules and shows its work.
See whether your landlord returned your deposit on time and which deductions your state's rule allows. Open the security deposit check.
How the data is made
The files are built from the same ruleset the tool runs on, so the data and the tool's answers agree. A test checks the published files against the tool's own rules lookup. Each rule was read at its official source on the date given in the row.
Found a rule that looks wrong? Tell us.
Fields
Each row is one of the 60 jurisdictions. The CSV and the JSON have the same fields. A list is an array in the JSON and is joined with | in the CSV. The JSON also gives every citation for each row.
All 69 fields
| Field | Type | Description |
|---|---|---|
id | string | Two-letter state code (TX), or the city's id (chicago) for a city row. |
jurisdiction_type | string | state (the 50 states and DC) or city (a city ordinance layered on the state rule). |
state | string | Two-letter state code. |
state_name | string | State name. |
city | string | City name on a city row; empty on a state row. |
summary | string | The rule in one paragraph, as the Tektolo rules operation states it: deadline, other deadlines, interest, penalty and forfeiture, with the statute. |
statute | string | The state statute the rule comes from. |
city_ordinance | string | The city ordinance layered on the state rule (city rows). |
deadline_citation | string | The section that sets the return deadline. |
deadline_quote | string | That section's text, quoted or summarized (see deadline_quote_verbatim). |
deadline_quote_verbatim | boolean | true: deadline_quote is the statute's own words; false: it is a summary. |
source_title | string | The official source the deadline section was read at. |
source_url | string | Address of that official source. |
source_checked_on | date | The day the source was last read. |
city_ordinance_url | string | Address of the city ordinance's official source (city rows). |
verified | boolean | true: the main rule text was read word for word at the official source; false: read at a secondary copy or summarized. |
return_days | integer | Days to return the deposit (or send the itemized statement and any balance). Empty when the period is in months or there is no deadline. |
return_months | integer | Months to return the deposit, where the statute counts months. |
return_counting | string | calendar or business days. |
return_starts | string | The event the period runs from (a key: vacate, termination, forwarding_address, demand, ...). |
return_starts_text | string | The same event in words. |
no_statutory_deadline | boolean | true: the statute sets no deadline to return the deposit. |
needs_forwarding_address | boolean | true: the duty starts only once the tenant gives a written forwarding address. |
last_day_rolls_forward | boolean | true: a last day on a weekend or legal holiday moves to the next business day under the state's time-computation statute. |
deadline_text | string | The return deadline in one sentence. |
other_deadlines | list | Other deadlines the statute sets in some cases, each with its condition in words. A list in JSON; joined with ' | ' in the CSV. |
statement_required | boolean | true: an itemized statement of deductions is required. |
statement_with_refund | boolean | true: the statement goes with the refund, by the same deadline; false: it has its own deadline (statement_days or statement_months). |
statement_days | integer | Days to send the itemized statement, when it has its own deadline. |
statement_months | integer | Months to send the itemized statement, when it has its own deadline in months. |
receipts_required | boolean | true: receipts or invoices must back the deductions. |
receipts_over_usd | number | The receipts duty applies above this repair and cleaning total (US dollars). |
photos_required | boolean | true: dated photos must back the deductions. |
photos_required_from | date | The photo duty applies to move-outs on or after this day. |
move_in_checklist_section | string | The section that ties deductions to a written move-in condition statement, where there is one. |
allowed_deductions | list | What the statute lets the landlord deduct (keys: unpaid_rent, damage_beyond_wear, ...). A list in JSON; joined with ' | ' in the CSV. |
allowed_deductions_text | string | The same list in words. |
normal_wear_excluded | boolean | true: normal wear and tear cannot be deducted. |
depreciation | string | required (the statute prorates by age), guidance (an official guide does) or silent (no formula in the statute). |
interest_required | string | yes, no or conditional: whether the landlord must pay interest on the deposit. |
interest_condition | string | When interest is owed, for a conditional rule. |
interest_rate_percent | number | The interest rate in percent a year (the current rate when it is published yearly). |
interest_rate_kind | string | fixed_percent, statutory_index (published each year) or bank_rate (what the account earns). |
interest_rate_year | integer | The year interest_rate_percent is for, for a published rate. |
interest_payable | string | annually or at_end (with the deposit). |
interest_note | string | The interest rule in words. |
penalty_kind | string | multiple (a multiple of an amount), fixed (a set amount), forfeiture_only or actual_only (actual damages). |
penalty_multiple | number | The multiple, for a multiple penalty. |
penalty_basis | string | What the multiple is taken of: deposit, amount_withheld or monthly_rent. |
penalty_fixed_usd | number | A set amount (US dollars): the penalty itself, or added to the multiple. |
penalty_minimum_usd | number | The penalty is at least this (US dollars). |
penalty_condition | string | When the penalty applies (a key: bad_faith, any_late, willful, ...). |
penalty_applies_if | string | The same condition in words. |
penalty_text | string | The penalty in words. |
penalty_attorney_fees | boolean | true: the statute also awards attorney fees. |
penalty_discretionary | boolean | true: a court may award the penalty but need not. |
penalty_note | string | The penalty rule in words, from the statute. |
city_additional_penalty | string | A city penalty in addition to the state's (city rows). |
forfeiture | list | What the landlord loses by missing a deadline, in words. A list in JSON; joined with ' | ' in the CSV. |
deposit_cap_months_rent | number | The most the deposit may be, in months of rent. Empty when the statute sets no cap. |
deposit_cap_text | string | The deposit cap in words. |
deposit_cap_note | string | Details and exceptions of the cap. |
applicability | string | Who the rule covers, where the statute limits it. |
recent_changes | list | Recent amendments, each with its effective date. A list in JSON; joined with ' | ' in the CSV. |
notes | list | Notes on the rule for landlords and tenants. A list in JSON; joined with ' | ' in the CSV. |
official_guides | list | Official plain-language guides (government publishers). A list of addresses in JSON; joined with ' | ' in the CSV. |
page_url | string | The rule's page on tektolo.com, with a worked example and the tool. |
ruleset_version | string | The Tektolo ruleset version this row is from. |
ruleset_hash | string | SHA-256 of the whole ruleset: it changes whenever any rule changes. |
This data summarizes the law for planning. It is not legal advice, and the statute or ordinance governs. Disclaimer.