Generate a structured rent receipt for a rental payment
A rent receipt gives both sides a concise record of a rental payment. Enter the landlord, tenant, property address, covered period, and amount paid to assemble a consistent document that is ready to review, save, print, or send.
Run — free
The generator keeps the supplied facts visible in a structured summary and acknowledgement statement. It does not invent a payment date, payment method, receipt number, or legal terms that you did not provide.
Enter the parties and property exactly as they should appear
Start with the landlord and tenant names, then provide the complete address of the rented property. These details identify who received the money, who made the payment, and which tenancy the receipt concerns. Use the legal or business name normally used for rental records, especially when a property manager collects rent on an owner's behalf. Include the unit or apartment number in the property address when the building contains more than one rental. The generator trims unnecessary surrounding space and normalizes repeated whitespace, but it does not guess spelling, expand abbreviations, or determine whether a person is authorized to issue the receipt. Review every name and address before distributing the document. A clear identity trail matters when tenants submit receipts for reimbursement, landlords reconcile ledgers, or either party later needs to match the payment with a lease. If several tenants share a lease, enter the tenant wording you want recorded; do not assume the generated receipt changes anyone's contractual responsibilities.
Describe the rental period and payment amount precisely
Write the period in a form that is unambiguous to the recipient, such as “July 1–31, 2026” or “August 2026 monthly rent.” The period is displayed exactly as meaningful text rather than interpreted as a calendar calculation, so it can also describe a partial month or another lease-specific interval. Enter the amount as a number greater than zero. Zero, negative, infinite, missing, and nonnumeric amounts are rejected because none can represent a valid payment received for this document. The optional currency field defaults to USD and accepts a three-letter code, such as EUR, GBP, or CAD. The result preserves the numeric amount and also creates a display value with the currency code and two decimal places. Confirm that the amount reflects money actually received, not merely rent invoiced or still due. If a payment covers rent plus utilities, fees, or a deposit, create separate documentation or ensure your own records explain the allocation; this receipt describes the supplied amount as rent for the supplied period.
Review, issue, and retain the finished receipt
The result includes structured fields for software workflows and a readable Markdown receipt for people. The document presents a details table, a plain acknowledgement sentence, and a signature line for a landlord or authorized representative. Review it against the payment record before signing or sending it. In particular, check the tenant, property, period, amount, and currency, since the generator validates form and positivity but cannot verify a bank transfer, cash exchange, lease, or accounting ledger. Add any information required by your local rules or business process outside this generator, such as the actual payment date, payment method, receipt sequence, tax identifier, balance remaining, or handwritten signature. Keep a copy in a secure place and give the tenant a copy through an agreed channel. For automated workflows, the API costs $0.002 per generated item and returns the same deterministic structure for identical input. This tool assists with document assembly and record consistency; it is not legal or tax advice and does not establish that payment occurred.
What you can do with it
Acknowledge a monthly rent payment
Create a consistent receipt after confirming that a tenant's monthly payment has been received.
Document a cash rent payment
Prepare a readable record that the landlord and tenant can review and retain after a cash exchange.
Standardize property management records
Generate receipts with predictable fields so payment acknowledgements can be filed or passed into another workflow.
FAQ
What does it cost?
It is free to run in your browser. API generation costs $0.002 per item.
Why must the amount be positive?
A receipt acknowledges money received. Zero or a negative value cannot represent the paid amount for this document, so the generator returns an input error.
Does the receipt prove that payment occurred?
No. It assembles a document from the details you provide but cannot verify a transfer, cash exchange, lease, or ledger entry.
Can I use a currency other than USD?
Yes. Supply a three-letter currency code such as EUR, GBP, or CAD. If you omit it, the generator uses USD.
Does it add a payment date or receipt number?
No. The generator does not invent facts. Add any payment date, payment method, receipt number, or locally required information during your review process.
For developers — API access
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.
API endpoint
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.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/doc/rent-receipt-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"landlord":"Morgan Ellis","tenant":"Taylor Reed","property_address":"42 Cedar Lane, Apartment 3B, Portland, OR 97205","period":"July 1–31, 2026","amount_paid":1850}'const res = await fetch("https://api.kit.forhosting.com/doc/rent-receipt-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"landlord": "Morgan Ellis",
"tenant": "Taylor Reed",
"property_address": "42 Cedar Lane, Apartment 3B, Portland, OR 97205",
"period": "July 1–31, 2026",
"amount_paid": 1850
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/doc/rent-receipt-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"landlord": "Morgan Ellis",
"tenant": "Taylor Reed",
"property_address": "42 Cedar Lane, Apartment 3B, Portland, OR 97205",
"period": "July 1–31, 2026",
"amount_paid": 1850
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/doc/rent-receipt-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"landlord":"Morgan Ellis","tenant":"Taylor Reed","property_address":"42 Cedar Lane, Apartment 3B, Portland, OR 97205","period":"July 1–31, 2026","amount_paid":1850}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"landlord":"Morgan Ellis","tenant":"Taylor Reed","property_address":"42 Cedar Lane, Apartment 3B, Portland, OR 97205","period":"July 1–31, 2026","amount_paid":1850}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/doc/rent-receipt-generate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"landlord": "Morgan Ellis",
"tenant": "Taylor Reed",
"property_address": "42 Cedar Lane, Apartment 3B, Portland, OR 97205",
"period": "July 1–31, 2026",
"amount_paid": 1850
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "doc.rent_receipt_generate",
"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.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Limits
max_mb | 25 |
max_pages | 200 |
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |