ForHosting KIT · Developer Utilities

Generate a demand letter structure template

A useful demand letter is easier to review when its purpose and supporting facts are separated clearly.

● BetaFree · in your browser
Use it from WebAPIEmailTelegramApp soon

This generator organizes the information you provide into a neutral template for an unpaid invoice, a security deposit dispute, or a breach of contract. It places the facts first, states the requested resolution, gives a response deadline, and explains the proposed next step. The result is an editable starting point, not legal advice or a determination that any claim, deadline, or remedy is valid.

Start with specific, verifiable facts

A demand letter becomes more useful when another person can follow its history without guessing. Enter each key fact as a separate, concise statement and place events in chronological order when possible. Include exact dates, invoice or agreement references, amounts paid or owed, property addresses, notice dates, and the obligation you believe was not performed. Describe communications accurately without adding motives you cannot prove. For an unpaid invoice, identify the invoice, due date, balance, and prior reminders. For a security deposit, identify the tenancy, move-out date, deposit amount, deductions or missing statement, and communications with the landlord. For a contract dispute, identify the agreement, the relevant promise, your own performance, and the conduct you consider a breach. The generator preserves your facts rather than investigating them, so check spelling, arithmetic, names, and supporting records before sending. Avoid including sensitive identifiers that are unnecessary. Attachments can be listed or provided separately when appropriate, but the letter itself should remain readable and focused on the facts that support the demand.

State one concrete demand and a workable deadline

After the factual background, say exactly what would resolve the dispute. A clear demand might request payment of a stated balance, return of a stated deposit, delivery of promised work, correction of defective performance, or another specific cure. If you leave the requested resolution blank, the generator supplies a broad placeholder suited to the selected dispute type; replace it with accurate details before sending. The deadline is expressed as a number of calendar days after receipt, which avoids pretending the tool knows when delivery will occur. Choose a period that is lawful and reasonable for the circumstances, and verify whether a contract, statute, court rule, or required pre-suit notice imposes different timing. Do not use the deadline to overstate urgency or threaten action you cannot take. The assembled section is deliberately direct, but it does not calculate interest, damages, fees, or statutory penalties. If those items matter, verify the basis and calculation independently and describe them transparently. A recipient should be able to understand both the requested action and the time allowed without interpreting vague language.

Describe the next step without making improper threats

The consequence section explains what you intend to consider if the recipient does not comply. Keep it accurate, lawful, and proportionate. Examples may include using a contractually required dispute process, filing an appropriate claim, referring the matter to counsel, or pursuing another remedy that is genuinely available. The default language is intentionally neutral because available remedies vary by jurisdiction, contract terms, amount, and dispute type. Avoid threats of criminal exposure, public embarrassment, harassment, or unrelated harm as leverage in a private dispute. Before sending, review the complete template for tone and internal consistency, confirm that the named parties are correct, and make sure the demand matches the facts. Check any notice address, delivery method, signature, attachment, or service requirement that may apply. Keep a copy of the final letter and reliable delivery records. This tool only structures the information supplied; it does not decide whether you have a valid claim, establish that the recipient is liable, or replace advice from a qualified professional familiar with the facts and governing law.

Request payment of an overdue invoice

Turn invoice dates, the unpaid balance, and reminder history into a direct payment demand with a response period.

Request return of a security deposit

Organize tenancy, move-out, deposit, deduction, and notice facts before asking for return or an itemized statement.

Seek a cure for breach of contract

Set out the agreement, promised performance, alleged breach, requested cure, deadline, and intended lawful next step.

Is this legal advice?

No. It is a deterministic writing aid that structures facts you provide. It does not assess liability, select a legal remedy, or determine local notice requirements.

What happens if I provide no key facts?

The request returns an invalid-input error because at least one non-empty fact is required.

How is the deadline calculated?

The template states the number of calendar days after receipt that you provide. It does not calculate a calendar date or verify whether that period is legally sufficient.

Can the template include my preferred next step?

Yes. Supply a consequence that accurately describes a lawful option you genuinely intend to consider, or use the neutral default wording.

What does an API request cost?

Each API request costs $0.002. The browser version can run the same deterministic assembly locally.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/legal2/demand-letter-structure

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/legal2/demand-letter-structure \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"dispute_type":"unpaid_invoice","key_facts":["Invoice INV-104 for $1,250 was issued on June 2, 2026.","Payment was due on July 2, 2026 and remains unpaid."]}'
{
  "dispute_type": "unpaid_invoice",
  "key_facts": [
    "Invoice INV-104 for $1,250 was issued on June 2, 2026.",
    "Payment was due on July 2, 2026 and remains unpaid."
  ]
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "legal2.demand_letter_structure",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

Read the full KIT documentation →