---
title: "Settle a security deposit after move-out (rendered as tenant_pdf)"
method: POST
path: "/v1/deposit-settlement/settle/render/tenant_pdf"
tags: ["deposit-settlement"]
---

# Settle a security deposit after move-out (rendered as tenant_pdf)

`POST /v1/deposit-settlement/settle/render/tenant_pdf`

## Request

- Base URL: `https://tektolo.com` (the document declares no server; this is the origin it was published from)
- URL: `https://tektolo.com/v1/deposit-settlement/settle/render/tenant_pdf`
- Auth: none declared

Same body as the operation. Runs it, then renders the result as application/pdf. The artifact itself is not stored. Rate limited more tightly than the JSON endpoint.

## Headers

- `Tektolo-Ruleset` string, nullable: Optional. The ruleset version you built against, as results carry it in provenance.ruleset_version (e.g. 'sd-2026.11.14'), or its sha256: hash. If the rules have changed since, the call fails (nothing computed, nothing charged) and says what is in force now, so you upgrade on your own schedule. Leave it out to answer under the current rules.
- `Tektolo-Ruleset-Mode` string, nullable: Optional, with Tektolo-Ruleset. 'serve' asks us to answer under the ruleset version you named even when the rules have changed since, from that version's signed bundle. The answer says so (run.served_from_bundle and the Tektolo-Ruleset-Served header). We refuse (412, with a reason) a version older than 12 months, one a later correction or law change replaced for your state, or one we have no bundle for. Leave it out to be refused whenever the rules have changed.

## Request body

- SettleRequest
  - `client_refs` object, nullable: Your own reference ids (e.g. unit_id, job_id). Echoed back, never used.
  - `state` string, required: US state, 2-letter code (e.g. 'CA'); a state name also works.
  - `city` string, nullable: City, for a city overlay where covered (e.g. 'Chicago'). Optional.
  - `deposit_usd` union, required: Security deposit held, dollars.
    - number
    - string
  - `monthly_rent_usd` union: Monthly rent, for the deposit cap check.
    - number
    - string
  - `building_units` integer, nullable: Units in the building. Some interest rules depend on it (NY 6+, IL 25+).
  - `move_in_on` string, date, nullable: Tenancy start (YYYY-MM-DD). Used for interest and, when an item's age is unknown, for depreciation.
  - `tenancy_ended_on` string, date, nullable: When the tenancy actually ended (YYYY-MM-DD): the lease's end, or an earlier termination or accepted surrender. Deadlines that run from the end of the tenancy use it. For a tenant who left before the lease was due to end, send the scheduled end as lease_end_on (older callers sent it here, which still works: the deadline is then counted from it, with the move-out date as an earlier alternative where the facts point to one).
  - `lease_end_on` string, date, nullable: Day the lease was scheduled to end (YYYY-MM-DD), when it differs from when the tenancy actually ended (a broken lease). Lost rent and lease-break charges run to it; deadlines do not (they follow tenancy_ended_on, else the move-out, with the scheduled end as a later alternative).
  - `vacated_on` string, date, required: Day the tenant moved out and returned possession (YYYY-MM-DD).
  - `forwarding_address_received_on` string, date, nullable: Day you received the tenant's written forwarding address (YYYY-MM-DD). Several states start or hold the clock on it (Texas, Connecticut, Iowa, Minnesota).
  - `tenant_gave_forwarding_address` boolean, nullable: False when the tenant never gave a forwarding address in writing (not just 'not yet known'). Illinois, Pennsylvania, Ohio, Delaware, South Carolina and New Hampshire then relieve the landlord of the penalty. Implied true by forwarding_address_received_on.
  - `demand_received_on` string, date, nullable: Day you received the tenant's demand for the deposit (YYYY-MM-DD; written in Oklahoma, by first-class mail in Maryland 8-203(h)). Arizona, Kansas, Oklahoma, South Carolina and Mississippi start the clock on it.
  - `new_tenant_moved_in_on` string, date, nullable: Day a new tenant moved in, if the unit was re-rented (YYYY-MM-DD). West Virginia and Wisconsin can end the period earlier; rent claimed for days from it on is not recoverable (re-rent mitigation).
  - `new_tenant_rent_usd` union: Monthly rent the new tenant pays (with new_tenant_moved_in_on): the rent received for overlapping days is credited against rent claimed for them.
    - number
    - string
  - `statement_sent_on` string, date, nullable: Day you sent (or delivered) the itemized statement (YYYY-MM-DD). With it the statement is judged on time or late; documentation.itemized_statement alone cannot tell.
  - `claim_notice_sent_on` string, date, nullable: Day you sent the written notice of intent to impose a claim on the deposit (YYYY-MM-DD). Florida (due within 30 days of termination) and the District of Columbia (within 45 days): the balance is due 30 days after it; a late notice does not count.
  - `lease_return_days` integer, nullable: Return period the lease sets, in days, where the statute lets a lease set one (Colorado up to 60, Idaho up to 30, Maine shorter).
  - `tenant_gave_proper_notice` boolean, nullable: A termination notice that meets the statute was given (Alaska: 14 days instead of 30 when nothing is deducted for damage).
  - `interest_paid_through` string, date, nullable: Interest already paid or credited to the tenant up to this day (annual-payment rules: San Francisco, Los Angeles, Berkeley, Connecticut, Massachusetts, ...): interest is counted from it.
  - `nonstandard_provision_signed` boolean, nullable: Wisconsin: the tenant signed a separate NONSTANDARD RENTAL PROVISIONS document covering the charge (ATCP 134.06(3)(b)); false makes such charges 'no'.
  - `pet_deposit_usd` union: The part of deposit_usd that is a pet deposit (outside the cap in Missouri, Alabama, North Dakota and Saint Paul; allowed on top of it up to one month in Hawaii and Alaska, half a month in Kansas, a quarter in Nebraska).
    - number
    - string
  - `tenant_age_62_plus` boolean, nullable: The tenant is 62 or older (Connecticut: a one-month cap).
  - `tenant_age_60_plus` boolean, nullable: A person 60 or older occupies the unit (New Hampshire 540-A:5, I: the owner-occupied exemption does not reach the unit). tenant_age_62_plus true implies it.
  - `small_landlord` boolean, nullable: California AB 12 small landlord (a natural person or an LLC of natural persons owning at most two properties with at most four units; not for a service member): a two-month cap.
  - `owner_occupied` boolean, nullable: The landlord lives in the building (ME, NH, NJ and Chicago exempt small owner-occupied buildings; with building_units).
  - `landlord_units_owned` integer, nullable: Rental units the landlord owns in all (Arkansas 5 or fewer, Georgia 10 or fewer, with third_party_managed, may be exempt).
  - `third_party_managed` boolean, nullable: A third party manages the unit or collects rent for a fee.
  - `prepaid_rent_usd` union: Rent paid in advance beyond the first month, held besides deposit_usd. Counts toward the cap in AK, AZ, CA, CT, MD, MI and NY; earns interest in CT, MA (last month's rent), MD and Chicago; in Minneapolis it lowers the deposit cap to half a month.
    - number
    - string
  - `tenancy_type` 'written_lease' | 'at_will', nullable: written_lease or at_will (Maine 6033(2): a written agreement's period, at most 30 days, or 21 days for a tenancy at will; Massachusetts 15B(4): at will, 30 days after the move-out, a written lease, 30 days after its end). Left out with a move-out before tenancy_ended_on: the earlier (at-will) date leads and the other is listed.
  - `tenant_abandoned` boolean, nullable: The tenant abandoned the unit or was evicted (Maryland 8-203(h): the clock runs from the tenant's written demand; Washington 59.18.280: from when the landlord learns of it; Louisiana 9:3251(C): the one-month rule does not apply). Left out: inferred from tenant_gave_proper_notice: false; with a move-out before tenancy_ended_on the earlier abandonment clock leads and the other date is listed.
  - `contractor_needed` boolean, nullable: Damage exceeds the deposit and needs a third-party contractor, and you said so in writing in time (Virginia, West Virginia: 15 more days).
  - `deposit_collected_on` string, date, nullable: Day the deposit was collected (YYYY-MM-DD); defaults to move_in_on. California (AB 12, from 2024-07-01) and Colorado caps depend on it.
  - `lease_signed_or_renewed_on` string, date, nullable: Day the current lease was signed or last renewed (YYYY-MM-DD). Georgia (2024-07-01) and Maryland (2024-10-01) caps apply to leases from then; defaults to move_in_on, with a warning that a later renewal may bring the new cap.
  - `lease_term_months` integer, nullable: Term of the lease in months (0 for month-to-month). Delaware's cap applies to leases of a year or more, New Mexico's to shorter ones.
  - `furnished` boolean, nullable: The unit is rented furnished (California before AB 12: 3 months; Kansas: 1.5 months; Delaware: no cap).
  - `rent_ordinance_covered` boolean, nullable: The unit is covered by the city's rent ordinance (Los Angeles RSO, Berkeley Rent Ordinance). Their deposit interest is owed only then; unknown: the amount is shown beside the refund, not in it.
  - `interest_rate_percent` union: Annual rate the deposit account paid, where the law sets interest at the bank's rate (New Jersey, North Dakota, New Hampshire, New York, Pennsylvania, Portland), or caps it (Massachusetts: 5% or the bank's lesser rate). Without it bank-rate interest is unknown. Illinois 765 ILCS 715 uses IDFPR's published rate instead.
    - number
    - string
  - `deductions` Deduction[]: What you intend to deduct (or, for a tenant, what the landlord listed). An explicit empty list means nothing is deducted (it decides the shorter no-deduction periods, e.g. Montana 10 days, Alaska 14); leave it out when that is not known yet.
    - `category` 'unpaid_rent' | 'unpaid_utilities' | 'cleaning' | 'carpet' | 'flooring' | 'paint' | 'blinds_window_coverings' | 'appliance' | 'fixture_or_hardware' | 'wall_or_door_repair' | 'key_or_lock' | 'late_fees' | 'lease_break_fee' | 'moving_and_storage' | 'reletting_costs' | 'trash_and_abandoned_items' | 'other_damage' | 'other', required: One of: unpaid_rent, unpaid_utilities, cleaning, carpet, flooring, paint, blinds_window_coverings, appliance, fixture_or_hardware, wall_or_door_repair, key_or_lock, late_fees, lease_break_fee, moving_and_storage, reletting_costs (advertising or a broker to re-rent after an early move-out), trash_and_abandoned_items (removing trash or belongings left behind), other_damage, other. Carpet cleaning is cleaning (with cleaning_kind), not carpet.
    - `description` string, nullable: What was damaged or owed and the repair or charge (e.g. 'bedroom carpet: pet stains, two areas patched'). Printed under the line on the itemized statement you download (HTML or PDF); never stored, logged or hashed, and not in the result.
    - `amount_usd` union, required: Amount you intend to deduct, in dollars (rounded to cents).
      - number
      - string
    - `item_installed_on` string, date, nullable: When the item (carpet, paint, appliance...) was installed or last replaced (YYYY-MM-DD). Give this or item_age_years, not both.
    - `item_age_years` union: Age of the item in years at move-out (e.g. 4.5).
      - number
      - string
    - `useful_life_years` union: Override the useful life used for depreciation (years).
      - number
      - string
    - `caused_by_tenant` boolean, nullable: False when the condition is normal wear and tear (never deductible); null when it is disputed or unknown (a tenant checking a landlord's list): the line is then 'depends', with the amount the rule would allow if it is damage.
    - `has_receipt` boolean, nullable: You have a receipt, invoice or estimate for this line.
    - `has_photos` boolean, nullable: You have photos of this damage.
    - `good_faith_estimate` boolean, nullable: The amount is a good-faith estimate: the repair cannot reasonably be finished within the return period, or the vendor's bills have not arrived (California 1950.5(h)(3)). The receipts then follow within 14 days of the repair or the documents.
    - `utility_kind` 'water' | 'sewer' | 'electric' | 'gas' | 'heat' | 'trash' | 'internet' | 'other', nullable: unpaid_utilities only: which utility. Some states allow only some (Massachusetts: water); without it such a line is 'depends'.
    - `late_payments` integer, nullable: late_fees only: how many late payments (or months, where the cap is per month) the fee covers. A statutory cap is per late payment; without this, more than one cap is 'depends'.
    - `work_kind` 'repair' | 'replace' | 'cleaning', nullable: repair (restores the item: never depreciated), replace (a new item: prorated by the old one's remaining life where the rule does), or cleaning (e.g. carpet cleaning: judged as a cleaning line).
    - `rent_through` string, date, nullable: unpaid_rent only: the last day the rent charged covers. With new_tenant_moved_in_on it decides how much of the rent overlaps the new tenancy (not recoverable: the landlord cannot collect rent twice for the same days).
    - `cleaning_kind` 'beyond_wear' | 'routine' | 'unknown', nullable: cleaning only: beyond_wear (the unit was left dirtier than normal use; cleaning to restore its move-in condition), routine (ordinary cleaning after normal use, which most states treat as normal wear) or unknown. Where the statute does not name cleaning, an unknown kind is 'depends'.
  - `returned` Returned: What the landlord has returned so far: lets the result say whether the refund and the itemized statement came on time (``timeliness``).
    - `what` 'nothing' | 'full_refund' | 'partial_refund' | 'itemized_statement', required: nothing: nothing returned yet; full_refund: the whole deposit; partial_refund: part of it, with no itemized statement; itemized_statement: an itemized statement of deductions (with any refund the same day).
    - `on` string, date, nullable: Day it was sent or delivered (YYYY-MM-DD); required unless what is nothing. Statutes count the day the landlord mails or delivers it; a postmark is the best evidence.
    - `amount_usd` union: Amount refunded, dollars (partial_refund or itemized_statement).
      - number
      - string
    - `method` 'check' | 'electronic' | 'other', nullable: How the money went back: check, electronic (direct deposit or electronic transfer) or other. Some statutes key on it (Michigan 554.609(3): an electronic balance may follow the notice by 10 days; California 1950.5 as amended by AB 414: electronic return when the deposit or rent was paid electronically).
  - `documentation` Documentation
    - `itemized_statement` boolean, nullable: You will send (or sent) an itemized statement.
    - `receipts` boolean, nullable: You have receipts or invoices for the repairs and cleaning.
    - `photos_move_in` boolean, nullable: Dated move-in photos.
    - `photos_move_out` boolean, nullable: Dated move-out photos.
    - `photos_after_repair` boolean, nullable: Photos after repairs.
    - `cleaning_notice` boolean, nullable: You gave the tenant written notice of the cleaning needed and time to do it before charging for cleaning (Montana 70-25-201(3): 24 hours).
    - `move_in_condition_statement` boolean, nullable: You gave the tenant a written move-in condition statement or checklist (Montana 70-25-206, Washington 59.18.260; listed as a duty in Georgia 44-7-33(a), Kentucky 383.580(2), Michigan 554.608 and Virginia 55.1-1214).
    - `move_out_list` boolean, nullable: You inspected the unit and made the move-out damage list in time (Georgia 44-7-33(b): within 3 business days).
  - `as_of` string, date: Today's date (YYYY-MM-DD) for the deadline status. Defaults to today (UTC); send it for repeatable results.

## Response `200`

Successful Response

## Other responses

- `412`: The ruleset named in the Tektolo-Ruleset header is not the one in force, and the call did not ask to be answered under it (Tektolo-Ruleset-Mode: serve) or that version can't be served (the body's reason says why). Nothing was computed or charged; the body names both versions.
- `422`: Validation Error

---

[API](https://skmtc.dev/tektolo/apis/tektolo-capabilities-api.md) · [All operations](https://skmtc.dev/tektolo/apis/tektolo-capabilities-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tektolo/apis/tektolo-capabilities-api/revisions/6e667aa7b6f7?raw)
