Legal

Rental / lease agreement generator

A residential lease with parties, premises, rent, deposit and numbered clauses, plus signature blocks.

Put a rental arrangement in writing in minutes. This lease template sets out the landlord and tenant, the property, the lease term, the monthly rent and due date, the security deposit and the core clauses: use of the premises, utilities, maintenance, pets, late payment and termination.

Ask the AI to add or change clauses for your situation, then download a PDF with signature blocks for both parties. Property managers can generate a lease per unit from their records through the API.

Generate a Rental / Lease Agreement PDF via the API

POST your data to /api/v1/generate and get a PDF back. Copy-paste an example, swap in your API key, and loop over a list to render thousands — one rental / lease agreement per record.

curl -X POST https://pdfgen.com/api/v1/generate \
-H "Authorization: Bearer pdfg_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"data": {
"agreementDate": "2026-10-20",
"landlord": {
"name": "Maplewood Properties LLC",
"address": "1420 Birchwood Avenue, Suite 200\nSpringfield, IL 62704"
},
"tenant": {
"name": "Jordan Avery",
"email": "jordan.avery@email.com"
},
"property": {
"address": "88 Cedar Grove Lane, Apt 3B, Springfield, IL 62702"
},
"startDate": "2026-11-01",
"endDate": "2027-10-31",
"currency": "USD",
"rent": 1650,
"rentDueDay": 1,
"deposit": 1650,
"clauses": [
{
"title": "Use of premises",
"text": "The premises shall be used only as a private residence for the Tenant and immediate family."
},
{
"title": "Utilities",
"text": "The Tenant pays electricity, internet and gas. The Landlord pays water, sewer and trash collection."
},
{
"title": "Maintenance",
"text": "The Tenant keeps the premises clean and reports needed repairs promptly; the Landlord makes repairs within a reasonable time."
},
{
"title": "Pets",
"text": "No pets are allowed without the Landlord’s prior written consent."
},
{
"title": "Late payment",
"text": "Rent received more than 5 days after the due date incurs a late fee of $50."
},
{
"title": "Termination",
"text": "Either party may end the lease at the end of the term with 30 days’ written notice."
}
]
},
"format": "A4",
"engine": "handlebars",
"html": "<div style=\"max-width:740px;margin:0 auto;padding:56px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:#111827;line-height:1.65;\">\n <h1 style=\"font-size:22px;font-weight:800;text-align:center;margin:0;letter-spacing:1px;\">RESIDENTIAL LEASE AGREEMENT</h1>\n <p style=\"text-align:center;color:#6b7280;font-size:13px;margin:6px 0 28px;\">Made on {{formatDate agreementDate}}</p>\n <table style=\"width:100%;border-collapse:collapse;font-size:13px;margin-bottom:20px;\">\n <tr>\n <td style=\"width:50%;vertical-align:top;padding:14px;border:1px solid #e5e7eb;\">\n <p style=\"font-size:11px;text-transform:uppercase;letter-spacing:1.5px;color:#9ca3af;font-weight:700;margin:0 0 8px;\">Landlord</p>\n <p style=\"margin:0;font-weight:700;\">{{landlord.name}}</p>\n <p style=\"margin:2px 0 0;color:#6b7280;white-space:pre-line;\">{{landlord.address}}</p>\n </td>\n <td style=\"width:50%;vertical-align:top;padding:14px;border:1px solid #e5e7eb;\">\n <p style=\"font-size:11px;text-transform:uppercase;letter-spacing:1.5px;color:#9ca3af;font-weight:700;margin:0 0 8px;\">Tenant</p>\n <p style=\"margin:0;font-weight:700;\">{{tenant.name}}</p>\n <p style=\"margin:2px 0 0;color:#6b7280;\">{{tenant.email}}</p>\n </td>\n </tr>\n </table>\n <p style=\"font-size:14px;margin:0 0 14px;\"><strong>Premises:</strong> {{property.address}}</p>\n <table style=\"width:100%;border-collapse:collapse;font-size:13px;margin-bottom:24px;\">\n <tr style=\"background:#f9fafb;\"><td style=\"padding:9px 12px;color:#6b7280;width:38%;\">Lease term</td><td style=\"padding:9px 12px;font-weight:600;\">{{formatDate startDate}} – {{formatDate endDate}}</td></tr>\n <tr><td style=\"padding:9px 12px;color:#6b7280;\">Monthly rent</td><td style=\"padding:9px 12px;font-weight:600;\">{{formatCurrency rent currency}}, due on day {{rentDueDay}} of each month</td></tr>\n <tr style=\"background:#f9fafb;\"><td style=\"padding:9px 12px;color:#6b7280;\">Security deposit</td><td style=\"padding:9px 12px;font-weight:600;\">{{formatCurrency deposit currency}}</td></tr>\n </table>\n <ol style=\"font-size:13.5px;padding-left:20px;margin:0;list-style:decimal;\">\n {{#each clauses}}<li style=\"margin-bottom:10px;\"><strong>{{title}}.</strong> {{text}}</li>{{/each}}\n </ol>\n <div style=\"display:flex;justify-content:space-between;margin-top:56px;\">\n <div style=\"width:44%;font-size:12px;color:#6b7280;\"><div style=\"border-top:1px solid #9ca3af;padding-top:6px;\"><strong style=\"color:#111827;\">{{landlord.name}}</strong><br>Landlord &middot; Date: ____________</div></div>\n <div style=\"width:44%;font-size:12px;color:#6b7280;\"><div style=\"border-top:1px solid #9ca3af;padding-top:6px;\"><strong style=\"color:#111827;\">{{tenant.name}}</strong><br>Tenant &middot; Date: ____________</div></div>\n </div>\n</div>"
}' --output lease-agreement.pdf

Working in another language? Follow a full guide for your stack:

What you can build

  • Landlords putting a new tenancy in writing
  • Room or flat rentals between individuals
  • Property managers generating a lease per unit
  • Renewing a lease with updated dates and rent

Frequently asked questions

Is this lease legally binding?
It is a starting template, not legal advice. Rental law differs by country and state, so have the final agreement checked for your location, especially notice periods and deposit rules.
Can I add my own clauses?
Yes — clauses are a simple list. Ask the AI to add one (for example parking or subletting) or edit the text directly.
Can both parties sign it?
The PDF includes signature and date lines for the landlord and the tenant, so you can print and sign it or send it through an e-signature tool.

Related templates

Ship your rental / lease agreement PDF endpoint today

Generate this template with AI, tweak it to match your brand, then render at scale with a single API call — no headless browsers to babysit.