---
title: "Security Deposit Recovery Packet: API schema and JSON request"
description: Prepare a tenant-authored, principal-only security deposit recovery packet for an ended private residential tenancy in California, Texas, New York, Florida, or Illinois. Require surrendered possession, no active case or deadline, no physical enclosure, verified recipients, and review acknowledgements. Accept PDFs and images as evidence. Do not claim penalties, multiplied damages, interest, fees, legal entitlement, deadline compliance, court filing, or guaranteed recovery.
seotitle: Security Deposit Recovery Packet API schema | PostalForm
seo-description: "Automate Security Deposit Recovery Packet with PostalForm: field identifiers, recipient routing, attachments, a JSON request template and the guided browser workflow."
group: resources
indexable: true
llms: true
nav: false
schema: webpage
published: 2026-08-22
updated: 2026-08-22
path: /developers/forms/security-deposit-demand-packets
---
# Security Deposit Recovery Packet: API schema and JSON request

Prepare a tenant-authored, principal-only security deposit recovery packet for an ended private residential tenancy in California, Texas, New York, Florida, or Illinois. Require surrendered possession, no active case or deadline, no physical enclosure, verified recipients, and review acknowledgements. Accept PDFs and images as evidence. Do not claim penalties, multiplied damages, interest, fees, legal entitlement, deadline compliance, court filing, or guaranteed recovery.

## How does an agent prepare this form?
PostalForm uses the same workflow definition for this API reference and its guided browser form. Fetch the live schema, collect the active required fields and attachments, and validate the completed request. Review the generated PDF, resolved recipient, mailing service and price with the owner before authorizing payment.

## Submission and recipient rules
| Setting | Current workflow value |
| --- | --- |
| Form slug | `security-deposit-demand-packets` |
| Recipient mode | `user` |
| Certified Mail | required |
| Base U.S. mail service | USPS First-Class Mail (`mail_class="standard"` in the API); not USPS Marketing Mail |
| Attachment total limit | 12 MB |
| Validate without payment | `POST /api/machine/orders/validate` or `POST /api/machine/mpp/orders/validate` |
| Machine order | `POST /api/machine/orders` (x402) or `POST /api/machine/mpp/orders` (MPP) |

Send a top-level `form` instead of `pdf` or `letter`; those three document sources are mutually exclusive. Workflow forms are letters, not postcards. The machine envelope requires buyer, sender and recipient fields. For predefined or computed recipients, the server binds the final recipient to the workflow rules. Inspect the resolved recipient returned by validation; do not substitute a convenient office address.

The template below is structural, not ready to submit: replace every placeholder, complete the active fields, omit unused optional attachments, and use the field options and visibility rules in the schema. Empty strings and unchecked checkboxes are not user answers. Never infer a signature, legal eligibility, factual declaration or consent from a default value.

## JSON request template
```json
{
  "request_id": "<new UUID; preserve on retry>",
  "buyer_name": "<buyer name>",
  "buyer_email": "<buyer email>",
  "sender_name": "<sender name>",
  "sender_address_type": "Manual",
  "sender_address_manual": {
    "line1": "<street address>",
    "city": "<city>",
    "state": "<state or region>",
    "zip": "<postal code>",
    "countryCode": "US"
  },
  "recipient_name": "<confirmed recipient name>",
  "recipient_address_type": "Manual",
  "recipient_address_manual": {
    "line1": "<street address>",
    "city": "<city>",
    "state": "<state or region>",
    "zip": "<postal code>",
    "countryCode": "US"
  },
  "mail_class": "standard",
  "double_sided": true,
  "color": false,
  "certified": true,
  "form": {
    "slug": "security-deposit-demand-packets",
    "fields": {
      "relationship_to_tenancy": "",
      "rental_scope": "",
      "tenancy_ended": "",
      "possession_surrendered": "",
      "active_case_or_deadline": "",
      "physical_item_enclosure": "",
      "rental_state": "",
      "reason_no_deposit_returned": false,
      "reason_partial_return": false,
      "reason_late_return": false,
      "reason_no_itemized_statement": false,
      "reason_excessive_deductions": false,
      "reason_normal_wear": false,
      "reason_preexisting_damage": false,
      "reason_other": false,
      "tenant_name": "",
      "sender_email": "",
      "tenant_phone": "",
      "tenant_address": "",
      "co_tenants": "",
      "rental_address_line1": "",
      "rental_address_line2": "",
      "rental_city_state_zip": {
        "city": "",
        "state": "",
        "zip": ""
      },
      "lease_start_date": "",
      "lease_end_date": "",
      "move_out_date": "",
      "keys_returned_date": "",
      "forwarding_address_previously_provided": false,
      "forwarding_address_provided_date": "",
      "landlord_name": "",
      "landlord_company_name": "",
      "landlord_address_line1": "",
      "landlord_address_line2": "",
      "landlord_city_state_zip": {
        "city": "",
        "state": "",
        "zip": ""
      },
      "deposit_amount": "",
      "amount_returned": "",
      "date_returned": "",
      "itemized_statement_status": "",
      "itemized_statement_received_date": "",
      "deductions_summary": "",
      "requested_amount": "",
      "custom_facts": "",
      "return_instructions": "",
      "tenant_signature": "",
      "include_property_manager_copy": false,
      "include_registered_agent_copy": false,
      "property_manager_name": "",
      "property_manager_company_name": "",
      "property_manager_address_line1": "",
      "property_manager_address_line2": "",
      "property_manager_city_state_zip": {
        "city": "",
        "state": "",
        "zip": ""
      },
      "registered_agent_name": "",
      "registered_agent_company_name": "",
      "registered_agent_address_line1": "",
      "registered_agent_address_line2": "",
      "registered_agent_city_state_zip": {
        "city": "",
        "state": "",
        "zip": ""
      },
      "review_before_mailing_acknowledged": false,
      "not_legal_advice_acknowledged": false,
      "recipient_details_acknowledged": false,
      "principal_only_acknowledged": false,
      "state_rule_limits_acknowledged": false
    },
    "attachments": [
      {
        "id": "lease_or_agreement",
        "file_name": "<filename>",
        "base64": "<base64 file content>"
      }
    ]
  }
}
```

## Field reference
| Field ID | Label | Type | Required when active | Choices |
| --- | --- | --- | --- | --- |
| `relationship_to_tenancy` | Your relationship to the tenancy | select | Yes | Tenant or co-tenant, Landlord or property manager, Another person or unsure |
| `rental_scope` | Rental type | select | Yes | Private residential rental, Commercial rental, Public, subsidized, regulated, or cooperative housing, Transient lodging, Deposit-replacement product, Another type or unsure |
| `tenancy_ended` | Has the tenancy ended? | select | Yes | Yes, No, Unsure |
| `possession_surrendered` | Was possession surrendered, including keys where applicable? | select | Yes | Yes, No, Unsure |
| `active_case_or_deadline` | Is there an active lawsuit, eviction, bankruptcy, arbitration, attorney-managed matter, or court deadline? | select | Yes | No, Yes, Unsure |
| `physical_item_enclosure` | Does the mailing need keys, a check, cash, a money order, or another physical item enclosed? | select | Yes | No, Yes, Unsure |
| `rental_state` | Rental state | select | Yes | California, Texas, New York, Florida, Illinois |
| `reason_no_deposit_returned` | No deposit has been returned | checkbox | No | See schema |
| `reason_partial_return` | Only part of the deposit was returned | checkbox | No | See schema |
| `reason_late_return` | The deposit or accounting appears late | checkbox | No | See schema |
| `reason_no_itemized_statement` | No itemized deduction statement was provided | checkbox | No | See schema |
| `reason_excessive_deductions` | Deductions appear excessive or unsupported | checkbox | No | See schema |
| `reason_normal_wear` | Charges appear to include normal wear and tear | checkbox | No | See schema |
| `reason_preexisting_damage` | Charges appear to include pre-existing damage | checkbox | No | See schema |
| `reason_other` | Other deposit dispute facts | checkbox | No | See schema |
| `tenant_name` | Tenant full name | text | Yes | See schema |
| `sender_email` | Tenant email | text | Yes | See schema |
| `tenant_phone` | Tenant phone (optional) | text | No | See schema |
| `tenant_address` | Forwarding address | address | Yes | See schema |
| `co_tenants` | Other tenant names (optional) | text | No | See schema |
| `rental_address_line1` | Rental address line 1 | text | Yes | See schema |
| `rental_address_line2` | Rental address line 2 (optional) | text | No | See schema |
| `rental_city_state_zip` | Rental city, state, ZIP | compound | Yes | See schema |
| `lease_start_date` | Lease start date (optional) | date | No | See schema |
| `lease_end_date` | Lease end date (optional) | date | No | See schema |
| `move_out_date` | Move-out or surrender date | date | Yes | See schema |
| `keys_returned_date` | Keys returned date (optional) | date | No | See schema |
| `forwarding_address_previously_provided` | I previously gave the landlord my forwarding address | checkbox | No | See schema |
| `forwarding_address_provided_date` | Date forwarding address was provided (optional) | date | No | See schema |
| `landlord_name` | Landlord or owner name | text | Yes | See schema |
| `landlord_company_name` | Landlord company (optional) | text | No | See schema |
| `landlord_address_line1` | Landlord address line 1 | text | Yes | See schema |
| `landlord_address_line2` | Landlord address line 2 (optional) | text | No | See schema |
| `landlord_city_state_zip` | Landlord city, state, ZIP | compound | Yes | See schema |
| `deposit_amount` | Security deposit paid | text | Yes | See schema |
| `amount_returned` | Amount returned so far | text | Yes | See schema |
| `date_returned` | Date any deposit was returned (optional) | date | No | See schema |
| `itemized_statement_status` | Itemized statement status | select | Yes | No itemized statement received, Itemized statement received, Only a partial or unclear explanation received, Not sure |
| `itemized_statement_received_date` | Date itemized statement was received (optional) | date | No | See schema |
| `deductions_summary` | What deductions or itemization did you receive? (optional) | textarea | No | See schema |
| `requested_amount` | Amount demanded | text | Yes | See schema |
| `custom_facts` | Short factual explanation | textarea | Yes | See schema |
| `return_instructions` | Payment or response instructions (optional) | textarea | No | See schema |
| `tenant_signature` | Signature | signature | No | See schema |
| `include_property_manager_copy` | Send a separate copy to the property manager | checkbox | No | See schema |
| `include_registered_agent_copy` | Send a separate copy to a registered agent | checkbox | No | See schema |
| `property_manager_name` | Property manager name | text | Yes | See schema |
| `property_manager_company_name` | Property management company (optional) | text | No | See schema |
| `property_manager_address_line1` | Property manager address line 1 | text | Yes | See schema |
| `property_manager_address_line2` | Property manager address line 2 (optional) | text | No | See schema |
| `property_manager_city_state_zip` | Property manager city, state, ZIP | compound | Yes | See schema |
| `registered_agent_name` | Registered agent name | text | Yes | See schema |
| `registered_agent_company_name` | Registered agent company (optional) | text | No | See schema |
| `registered_agent_address_line1` | Registered agent address line 1 | text | Yes | See schema |
| `registered_agent_address_line2` | Registered agent address line 2 (optional) | text | No | See schema |
| `registered_agent_city_state_zip` | Registered agent city, state, ZIP | compound | Yes | See schema |
| `review_before_mailing_acknowledged` | I will review the generated packet and attachments before mailing. | checkbox | Yes | See schema |
| `not_legal_advice_acknowledged` | I understand PostalForm is not a law firm and does not provide legal advice. | checkbox | Yes | See schema |
| `recipient_details_acknowledged` | I confirmed the mailing recipients and addresses are the ones I want to use. | checkbox | Yes | See schema |
| `principal_only_acknowledged` | I limited the requested amount to security deposit principal still withheld, without penalties, multiplied damages, interest, fees, or unrelated amounts. | checkbox | Yes | See schema |
| `state_rule_limits_acknowledged` | I understand the cited state summary is a starting point and local, lease, housing-program, and case-specific rules may differ. | checkbox | Yes | See schema |

Compound fields use nested objects keyed by subfield ID. Evaluate group and field visibility before deciding which fields are active. Conditional requirements, validation rules, recipient rules, attachment formats and compliance policies are preserved in the complete schema below.

## Complete workflow schema
```json
{
  "schema_version": 1,
  "workflow_version": 3,
  "slug": "security-deposit-demand-packets",
  "name": "Security Deposit Recovery Packet",
  "description": "Prepare a state-aware residential security deposit recovery demand, organize supporting evidence, review the complete packet, and mail separate copies by Certified Mail.",
  "agent_summary": "Prepare a tenant-authored, principal-only security deposit recovery packet for an ended private residential tenancy in California, Texas, New York, Florida, or Illinois. Require surrendered possession, no active case or deadline, no physical enclosure, verified recipients, and review acknowledgements. Accept PDFs and images as evidence. Do not claim penalties, multiplied damages, interest, fees, legal entitlement, deadline compliance, court filing, or guaranteed recovery.",
  "form_summary": "Use this workflow after an ordinary private residential tenancy has ended and possession has been surrendered. PostalForm checks the supported scope and principal-only amount, generates a cited demand letter, facts and timing summary, and exhibit index, appends your evidence, and prepares one or more reviewed Certified Mail pieces.",
  "data_collected": [
    "Tenant contact details and forwarding address",
    "Rental property address, move-out date, and deposit facts",
    "Landlord, property manager, or registered agent mailing details",
    "Deposit amount, amount returned, disputed deductions, demand amount, and response instructions",
    "Optional lease, photos, move-out records, correspondence, itemized statements, receipts, and other evidence"
  ],
  "topics": [
    "renters",
    "housing",
    "security deposits",
    "demand letters",
    "consumer"
  ],
  "category": "security_deposit_demand_packets",
  "publish_state": "published",
  "aliases": [
    "security-deposit-demand-letter",
    "security-deposit-letter",
    "get-security-deposit-back",
    "landlord-kept-my-deposit",
    "security-deposit-demand-letter-certified-mail"
  ],
  "llms": true,
  "indexable": true,
  "certified_mail": "required",
  "recipient": {
    "mode": "user"
  },
  "multi_recipient": {
    "enabled": true,
    "mode": "field_mappings",
    "minimum": 1,
    "recipients": [
      {
        "id": "landlord",
        "role": "landlord",
        "label": "Landlord / owner",
        "nameFieldId": "landlord_name",
        "companyNameFieldId": "landlord_company_name",
        "address": {
          "line1FieldId": "landlord_address_line1",
          "line2FieldId": "landlord_address_line2",
          "cityStateZipFieldId": "landlord_city_state_zip"
        }
      },
      {
        "id": "property_manager",
        "role": "property_manager",
        "label": "Property manager",
        "visibility": {
          "fieldId": "include_property_manager_copy",
          "operator": "truthy"
        },
        "nameFieldId": "property_manager_name",
        "companyNameFieldId": "property_manager_company_name",
        "address": {
          "line1FieldId": "property_manager_address_line1",
          "line2FieldId": "property_manager_address_line2",
          "cityStateZipFieldId": "property_manager_city_state_zip"
        }
      },
      {
        "id": "registered_agent",
        "role": "registered_agent",
        "label": "Registered agent",
        "visibility": {
          "fieldId": "include_registered_agent_copy",
          "operator": "truthy"
        },
        "nameFieldId": "registered_agent_name",
        "companyNameFieldId": "registered_agent_company_name",
        "address": {
          "line1FieldId": "registered_agent_address_line1",
          "line2FieldId": "registered_agent_address_line2",
          "cityStateZipFieldId": "registered_agent_city_state_zip"
        }
      }
    ]
  },
  "compliance_policy": {
    "id": "security_deposit_recovery_packet",
    "version": 1,
    "recheckStages": [
      "preview",
      "approval",
      "checkout",
      "payment",
      "fulfillment",
      "machine"
    ]
  },
  "checkout_flow": "forms_order",
  "published_at": "2026-08-22",
  "updated_at": "2026-08-22",
  "groups": [
    {
      "id": "eligibility",
      "label": "Supported recovery scope",
      "description": "Confirm this is your own ended private residential tenancy, possession was surrendered, and no urgent legal proceeding or physical enclosure is involved.",
      "depends_on": []
    },
    {
      "id": "state_and_issue",
      "label": "State and issue",
      "description": "Choose the rental state and what happened with the security deposit.",
      "depends_on": []
    },
    {
      "id": "tenant",
      "label": "Tenant details",
      "description": "Provide the tenant information and forwarding address that should appear in the demand packet.",
      "depends_on": []
    },
    {
      "id": "rental",
      "label": "Rental property",
      "description": "Identify the rental property and move-out timing.",
      "depends_on": []
    },
    {
      "id": "landlord",
      "label": "Landlord recipient",
      "description": "Enter the landlord or owner mailing address for the packet.",
      "depends_on": []
    },
    {
      "id": "deposit",
      "label": "Deposit facts",
      "description": "Summarize the deposit, any amount returned, and the deduction or itemization details.",
      "depends_on": []
    },
    {
      "id": "demand",
      "label": "Demand details",
      "description": "Add the amount demanded, factual summary, response instructions, and signature.",
      "depends_on": []
    },
    {
      "id": "property_manager",
      "label": "Property manager copy",
      "description": "Add a separate Certified Mail piece to the property manager if you have a reliable mailing address.",
      "visibility": {
        "fieldId": "include_property_manager_copy",
        "operator": "truthy"
      },
      "depends_on": [
        "include_property_manager_copy"
      ]
    },
    {
      "id": "registered_agent",
      "label": "Registered agent copy",
      "description": "Add a separate Certified Mail piece to a registered agent if your records call for it.",
      "visibility": {
        "fieldId": "include_registered_agent_copy",
        "operator": "truthy"
      },
      "depends_on": [
        "include_registered_agent_copy"
      ]
    },
    {
      "id": "acknowledgements",
      "label": "Review acknowledgements",
      "description": "Confirm the packet is ready for review and mailing.",
      "depends_on": []
    }
  ],
  "fields": [
    {
      "id": "relationship_to_tenancy",
      "label": "Your relationship to the tenancy",
      "type": "select",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "eligibility",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "options": [
        "Tenant or co-tenant",
        "Landlord or property manager",
        "Another person or unsure"
      ],
      "compound": null
    },
    {
      "id": "rental_scope",
      "label": "Rental type",
      "type": "select",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "eligibility",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "options": [
        "Private residential rental",
        "Commercial rental",
        "Public, subsidized, regulated, or cooperative housing",
        "Transient lodging",
        "Deposit-replacement product",
        "Another type or unsure"
      ],
      "compound": null
    },
    {
      "id": "tenancy_ended",
      "label": "Has the tenancy ended?",
      "type": "select",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "eligibility",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "options": [
        "Yes",
        "No",
        "Unsure"
      ],
      "compound": null
    },
    {
      "id": "possession_surrendered",
      "label": "Was possession surrendered, including keys where applicable?",
      "type": "select",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "eligibility",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "options": [
        "Yes",
        "No",
        "Unsure"
      ],
      "compound": null
    },
    {
      "id": "active_case_or_deadline",
      "label": "Is there an active lawsuit, eviction, bankruptcy, arbitration, attorney-managed matter, or court deadline?",
      "type": "select",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "eligibility",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "options": [
        "No",
        "Yes",
        "Unsure"
      ],
      "compound": null
    },
    {
      "id": "physical_item_enclosure",
      "label": "Does the mailing need keys, a check, cash, a money order, or another physical item enclosed?",
      "type": "select",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "eligibility",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "options": [
        "No",
        "Yes",
        "Unsure"
      ],
      "compound": null
    },
    {
      "id": "rental_state",
      "label": "Rental state",
      "type": "select",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "state_and_issue",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "options": [
        "California",
        "Texas",
        "New York",
        "Florida",
        "Illinois"
      ],
      "compound": null
    },
    {
      "id": "reason_no_deposit_returned",
      "label": "No deposit has been returned",
      "type": "checkbox",
      "required": false,
      "meta_class": "multi_select",
      "ui_width": null,
      "group_id": "state_and_issue",
      "choice_group": "demand_reasons",
      "choice_label": "What went wrong with your deposit? Select all that apply.",
      "depends_on": [],
      "compound": null
    },
    {
      "id": "reason_partial_return",
      "label": "Only part of the deposit was returned",
      "type": "checkbox",
      "required": false,
      "meta_class": "multi_select",
      "ui_width": null,
      "group_id": "state_and_issue",
      "choice_group": "demand_reasons",
      "choice_label": "What went wrong with your deposit? Select all that apply.",
      "depends_on": [],
      "compound": null
    },
    {
      "id": "reason_late_return",
      "label": "The deposit or accounting appears late",
      "type": "checkbox",
      "required": false,
      "meta_class": "multi_select",
      "ui_width": null,
      "group_id": "state_and_issue",
      "choice_group": "demand_reasons",
      "choice_label": "What went wrong with your deposit? Select all that apply.",
      "depends_on": [],
      "compound": null
    },
    {
      "id": "reason_no_itemized_statement",
      "label": "No itemized deduction statement was provided",
      "type": "checkbox",
      "required": false,
      "meta_class": "multi_select",
      "ui_width": null,
      "group_id": "state_and_issue",
      "choice_group": "demand_reasons",
      "choice_label": "What went wrong with your deposit? Select all that apply.",
      "depends_on": [],
      "compound": null
    },
    {
      "id": "reason_excessive_deductions",
      "label": "Deductions appear excessive or unsupported",
      "type": "checkbox",
      "required": false,
      "meta_class": "multi_select",
      "ui_width": null,
      "group_id": "state_and_issue",
      "choice_group": "demand_reasons",
      "choice_label": "What went wrong with your deposit? Select all that apply.",
      "depends_on": [],
      "compound": null
    },
    {
      "id": "reason_normal_wear",
      "label": "Charges appear to include normal wear and tear",
      "type": "checkbox",
      "required": false,
      "meta_class": "multi_select",
      "ui_width": null,
      "group_id": "state_and_issue",
      "choice_group": "demand_reasons",
      "choice_label": "What went wrong with your deposit? Select all that apply.",
      "depends_on": [],
      "compound": null
    },
    {
      "id": "reason_preexisting_damage",
      "label": "Charges appear to include pre-existing damage",
      "type": "checkbox",
      "required": false,
      "meta_class": "multi_select",
      "ui_width": null,
      "group_id": "state_and_issue",
      "choice_group": "demand_reasons",
      "choice_label": "What went wrong with your deposit? Select all that apply.",
      "depends_on": [],
      "compound": null
    },
    {
      "id": "reason_other",
      "label": "Other deposit dispute facts",
      "type": "checkbox",
      "required": false,
      "meta_class": "multi_select",
      "ui_width": null,
      "group_id": "state_and_issue",
      "choice_group": "demand_reasons",
      "choice_label": "What went wrong with your deposit? Select all that apply.",
      "depends_on": [],
      "compound": null
    },
    {
      "id": "tenant_name",
      "label": "Tenant full name",
      "type": "text",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "tenant",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "sender_email",
      "label": "Tenant email",
      "type": "text",
      "required": true,
      "meta_class": "email",
      "ui_width": "half",
      "group_id": "tenant",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "tenant_phone",
      "label": "Tenant phone (optional)",
      "type": "text",
      "required": false,
      "meta_class": "phone",
      "ui_width": "half",
      "group_id": "tenant",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "tenant_address",
      "label": "Forwarding address",
      "type": "address",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "tenant",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "co_tenants",
      "label": "Other tenant names (optional)",
      "type": "text",
      "required": false,
      "meta_class": null,
      "ui_width": null,
      "group_id": "tenant",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "rental_address_line1",
      "label": "Rental address line 1",
      "type": "text",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "rental",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "rental_address_line2",
      "label": "Rental address line 2 (optional)",
      "type": "text",
      "required": false,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "rental",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "rental_city_state_zip",
      "label": "Rental city, state, ZIP",
      "type": "compound",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "rental",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": {
        "join_with": null,
        "subfields": [
          {
            "id": "city",
            "label": "City",
            "meta_class": "city",
            "required": true
          },
          {
            "id": "state",
            "label": "State",
            "meta_class": "state",
            "required": true
          },
          {
            "id": "zip",
            "label": "ZIP",
            "meta_class": "zip",
            "required": true
          }
        ]
      }
    },
    {
      "id": "lease_start_date",
      "label": "Lease start date (optional)",
      "type": "date",
      "required": false,
      "meta_class": "date",
      "ui_width": "half",
      "group_id": "rental",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "lease_end_date",
      "label": "Lease end date (optional)",
      "type": "date",
      "required": false,
      "meta_class": "date",
      "ui_width": "half",
      "group_id": "rental",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "move_out_date",
      "label": "Move-out or surrender date",
      "type": "date",
      "required": true,
      "meta_class": "date",
      "ui_width": "half",
      "group_id": "rental",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "keys_returned_date",
      "label": "Keys returned date (optional)",
      "type": "date",
      "required": false,
      "meta_class": "date",
      "ui_width": "half",
      "group_id": "rental",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "forwarding_address_previously_provided",
      "label": "I previously gave the landlord my forwarding address",
      "type": "checkbox",
      "required": false,
      "meta_class": "yes_no",
      "ui_width": null,
      "group_id": "rental",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "forwarding_address_provided_date",
      "label": "Date forwarding address was provided (optional)",
      "type": "date",
      "required": false,
      "meta_class": "date",
      "ui_width": "half",
      "group_id": "rental",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "forwarding_address_previously_provided",
        "operator": "truthy"
      },
      "depends_on": [
        "forwarding_address_previously_provided"
      ],
      "compound": null
    },
    {
      "id": "landlord_name",
      "label": "Landlord or owner name",
      "type": "text",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "landlord",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "landlord_company_name",
      "label": "Landlord company (optional)",
      "type": "text",
      "required": false,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "landlord",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "landlord_address_line1",
      "label": "Landlord address line 1",
      "type": "text",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "landlord",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "landlord_address_line2",
      "label": "Landlord address line 2 (optional)",
      "type": "text",
      "required": false,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "landlord",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "landlord_city_state_zip",
      "label": "Landlord city, state, ZIP",
      "type": "compound",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "landlord",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": {
        "join_with": null,
        "subfields": [
          {
            "id": "city",
            "label": "City",
            "meta_class": "city",
            "required": true
          },
          {
            "id": "state",
            "label": "State",
            "meta_class": "state",
            "required": true
          },
          {
            "id": "zip",
            "label": "ZIP",
            "meta_class": "zip",
            "required": true
          }
        ]
      }
    },
    {
      "id": "deposit_amount",
      "label": "Security deposit paid",
      "type": "text",
      "required": true,
      "meta_class": "currency",
      "ui_width": "half",
      "group_id": "deposit",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "amount_returned",
      "label": "Amount returned so far",
      "type": "text",
      "required": true,
      "meta_class": "currency",
      "ui_width": "half",
      "group_id": "deposit",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "date_returned",
      "label": "Date any deposit was returned (optional)",
      "type": "date",
      "required": false,
      "meta_class": "date",
      "ui_width": "half",
      "group_id": "deposit",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "reason_partial_return",
        "operator": "truthy"
      },
      "depends_on": [
        "reason_partial_return"
      ],
      "compound": null
    },
    {
      "id": "itemized_statement_status",
      "label": "Itemized statement status",
      "type": "select",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "deposit",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "options": [
        "No itemized statement received",
        "Itemized statement received",
        "Only a partial or unclear explanation received",
        "Not sure"
      ],
      "compound": null
    },
    {
      "id": "itemized_statement_received_date",
      "label": "Date itemized statement was received (optional)",
      "type": "date",
      "required": false,
      "meta_class": "date",
      "ui_width": "half",
      "group_id": "deposit",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "itemized_statement_status",
        "operator": "not_equals",
        "value": "No itemized statement received"
      },
      "depends_on": [
        "itemized_statement_status"
      ],
      "compound": null
    },
    {
      "id": "deductions_summary",
      "label": "What deductions or itemization did you receive? (optional)",
      "type": "textarea",
      "required": false,
      "meta_class": null,
      "ui_width": null,
      "group_id": "deposit",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "itemized_statement_status",
        "operator": "not_equals",
        "value": "No itemized statement received"
      },
      "depends_on": [
        "itemized_statement_status"
      ],
      "compound": null
    },
    {
      "id": "requested_amount",
      "label": "Amount demanded",
      "type": "text",
      "required": true,
      "meta_class": "currency",
      "ui_width": "half",
      "group_id": "demand",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "custom_facts",
      "label": "Short factual explanation",
      "type": "textarea",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "demand",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "return_instructions",
      "label": "Payment or response instructions (optional)",
      "type": "textarea",
      "required": false,
      "meta_class": null,
      "ui_width": null,
      "group_id": "demand",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "tenant_signature",
      "label": "Signature",
      "type": "signature",
      "required": false,
      "meta_class": null,
      "ui_width": null,
      "group_id": "demand",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "include_property_manager_copy",
      "label": "Send a separate copy to the property manager",
      "type": "checkbox",
      "required": false,
      "meta_class": "yes_no",
      "ui_width": null,
      "group_id": "demand",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "include_registered_agent_copy",
      "label": "Send a separate copy to a registered agent",
      "type": "checkbox",
      "required": false,
      "meta_class": "yes_no",
      "ui_width": null,
      "group_id": "demand",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "property_manager_name",
      "label": "Property manager name",
      "type": "text",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "property_manager",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "include_property_manager_copy",
        "operator": "truthy"
      },
      "depends_on": [
        "include_property_manager_copy"
      ],
      "compound": null
    },
    {
      "id": "property_manager_company_name",
      "label": "Property management company (optional)",
      "type": "text",
      "required": false,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "property_manager",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "include_property_manager_copy",
        "operator": "truthy"
      },
      "depends_on": [
        "include_property_manager_copy"
      ],
      "compound": null
    },
    {
      "id": "property_manager_address_line1",
      "label": "Property manager address line 1",
      "type": "text",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "property_manager",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "include_property_manager_copy",
        "operator": "truthy"
      },
      "depends_on": [
        "include_property_manager_copy"
      ],
      "compound": null
    },
    {
      "id": "property_manager_address_line2",
      "label": "Property manager address line 2 (optional)",
      "type": "text",
      "required": false,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "property_manager",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "include_property_manager_copy",
        "operator": "truthy"
      },
      "depends_on": [
        "include_property_manager_copy"
      ],
      "compound": null
    },
    {
      "id": "property_manager_city_state_zip",
      "label": "Property manager city, state, ZIP",
      "type": "compound",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "property_manager",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "include_property_manager_copy",
        "operator": "truthy"
      },
      "depends_on": [
        "include_property_manager_copy"
      ],
      "compound": {
        "join_with": null,
        "subfields": [
          {
            "id": "city",
            "label": "City",
            "meta_class": "city",
            "required": true
          },
          {
            "id": "state",
            "label": "State",
            "meta_class": "state",
            "required": true
          },
          {
            "id": "zip",
            "label": "ZIP",
            "meta_class": "zip",
            "required": true
          }
        ]
      }
    },
    {
      "id": "registered_agent_name",
      "label": "Registered agent name",
      "type": "text",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "registered_agent",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "include_registered_agent_copy",
        "operator": "truthy"
      },
      "depends_on": [
        "include_registered_agent_copy"
      ],
      "compound": null
    },
    {
      "id": "registered_agent_company_name",
      "label": "Registered agent company (optional)",
      "type": "text",
      "required": false,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "registered_agent",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "include_registered_agent_copy",
        "operator": "truthy"
      },
      "depends_on": [
        "include_registered_agent_copy"
      ],
      "compound": null
    },
    {
      "id": "registered_agent_address_line1",
      "label": "Registered agent address line 1",
      "type": "text",
      "required": true,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "registered_agent",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "include_registered_agent_copy",
        "operator": "truthy"
      },
      "depends_on": [
        "include_registered_agent_copy"
      ],
      "compound": null
    },
    {
      "id": "registered_agent_address_line2",
      "label": "Registered agent address line 2 (optional)",
      "type": "text",
      "required": false,
      "meta_class": null,
      "ui_width": "half",
      "group_id": "registered_agent",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "include_registered_agent_copy",
        "operator": "truthy"
      },
      "depends_on": [
        "include_registered_agent_copy"
      ],
      "compound": null
    },
    {
      "id": "registered_agent_city_state_zip",
      "label": "Registered agent city, state, ZIP",
      "type": "compound",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "registered_agent",
      "choice_group": null,
      "choice_label": null,
      "visibility": {
        "fieldId": "include_registered_agent_copy",
        "operator": "truthy"
      },
      "depends_on": [
        "include_registered_agent_copy"
      ],
      "compound": {
        "join_with": null,
        "subfields": [
          {
            "id": "city",
            "label": "City",
            "meta_class": "city",
            "required": true
          },
          {
            "id": "state",
            "label": "State",
            "meta_class": "state",
            "required": true
          },
          {
            "id": "zip",
            "label": "ZIP",
            "meta_class": "zip",
            "required": true
          }
        ]
      }
    },
    {
      "id": "review_before_mailing_acknowledged",
      "label": "I will review the generated packet and attachments before mailing.",
      "type": "checkbox",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "acknowledgements",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "not_legal_advice_acknowledged",
      "label": "I understand PostalForm is not a law firm and does not provide legal advice.",
      "type": "checkbox",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "acknowledgements",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "recipient_details_acknowledged",
      "label": "I confirmed the mailing recipients and addresses are the ones I want to use.",
      "type": "checkbox",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "acknowledgements",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "principal_only_acknowledged",
      "label": "I limited the requested amount to security deposit principal still withheld, without penalties, multiplied damages, interest, fees, or unrelated amounts.",
      "type": "checkbox",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "acknowledgements",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    },
    {
      "id": "state_rule_limits_acknowledged",
      "label": "I understand the cited state summary is a starting point and local, lease, housing-program, and case-specific rules may differ.",
      "type": "checkbox",
      "required": true,
      "meta_class": null,
      "ui_width": null,
      "group_id": "acknowledgements",
      "choice_group": null,
      "choice_label": null,
      "depends_on": [],
      "compound": null
    }
  ],
  "attachments": [
    {
      "id": "lease_or_agreement",
      "label": "Lease, move-out records, photos, correspondence, or deduction evidence",
      "required": false,
      "instructions": "Upload supporting PDFs or images you want appended behind the generated security deposit demand packet.",
      "allowed_types": [
        "pdf",
        "png",
        "jpg",
        "jpeg"
      ],
      "max_files": 12,
      "max_size_mb": 12
    }
  ],
  "attachments_max_total_size_mb": 12,
  "machine_submission": {
    "payload_property": "form",
    "create_paths": {
      "x402": "/api/machine/orders",
      "mpp": "/api/machine/mpp/orders"
    }
  }
}
```

## Preview, payment and retries
Validation does not mail the document. For a human checkout, use MCP `postalform.create_form_order_draft` and present the returned preview, total and checkout URL. Machine API clients must handle the returned MPP or x402 challenge only within owner-approved spending authority. Preserve `request_id` and the exact payload for retries; changing the content requires a new request ID. After an uncertain payment, retrieve order status before creating another order. Provider handoff is not USPS delivery.


## Resources
- [All machine form schemas](/developers/forms)
- [Guided form](/forms/security-deposit-demand-packets)
- [Current JSON schema](/api/machine/forms/security-deposit-demand-packets/schema)
- [Machine order guide](/agents)
- [Pricing](/pricing)


## Ready to send it?
[Open guided form](/forms/security-deposit-demand-packets)
