The first page of the document DocMake makes from the sample values on this page.
Legal
Commercial Lease Agreement
A commercial lease sets the terms on which one business rents space from another: which premises, for how long, at what rent, and who pays for what while the tenant is in there. Almost every number in it is negotiated rather than standard, which is exactly why those numbers belong in fields.
The maintenance and utilities split is where most disagreements start. Naming the responsible party per category, instead of leaving everything to a general repair clause, gives both sides something specific to point at.
The fixtures schedule is the other one. Recording each item and its condition at handover, then rendering the same list again at the end of the term, settles deposit questions that otherwise come down to memory.
Mandatory clauses and notice rules differ by jurisdiction, so the fixed wording is worth having reviewed once by a lawyer who knows the local rules. After that only the tenant, the premises, and the figures change from lease to lease.
Blanks to fill
| agreement_date | Date of the lease |
| landlord_name | Landlord |
| landlord_address | Where the landlord is |
| tenant_name | Tenant |
| tenant_company_number | Tenant company number |
| tenant_address | Where the tenant is registered |
| premises_address | Where the premises are |
| premises_description | What the premises are |
| floor_area | Floor area |
| permitted_use | What it may be used for |
| lease_start | Term starts |
| lease_end | Term ends |
| base_rent_monthly | Monthly rent |
| rent_due_day | Day the rent is due |
| rent_rise | How the rent rises |
| service_charge_monthly | Monthly service charge |
| security_deposit | Deposit |
| insurance_required | Insurance the tenant carries |
| renewal_option | Renewal |
| termination_notice | Ending it early |
| governing_law | Governing law |
| special_conditions | Anything else agreed |
| lease_reference | Lease number |
| responsibilities[] | One per item, so a row is added for every item in the list |
| fixtures[] | One per item, so a row is added for every item in the list |
The data behind the preview
This is the exact JSON that produced the document above. Change the values, POST them to the API, and you get your version back as DOCX or PDF. Lists grow and shrink with your data; the layout adapts.
- 01 Sign up free and duplicate this template into your workspace.
- 02 Adjust the wording and branding in the visual editor.
- 03 Fill it in the app, share it as a form link, or call the API.
{
"lease_reference": "LSE-2026-0088",
"agreement_date": "September 10, 2026",
"landlord_name": "Wrenfield Property Holdings LLC",
"landlord_address": "18 Pier Road, Seattle, WA 98104",
"tenant_name": "Ostara Software Inc",
"tenant_company_number": "WA-6612094",
"tenant_address": "1200 Harbor Way, Seattle, WA 98101",
"premises_address": "Unit 4B, 77 Cascade Street, Seattle, WA 98109",
"premises_description": "Second floor office suite with shared reception and two parking bays.",
"floor_area": "3,400 square feet",
"permitted_use": "Offices for software development and administration, and nothing else without written consent.",
"lease_start": "November 1, 2026",
"lease_end": "October 31, 2031",
"base_rent_monthly": "$11,900.00",
"rent_due_day": "first day of each month",
"rent_rise": "3 per cent on each anniversary of the first day of the term",
"service_charge_monthly": "$1,360.00",
"security_deposit": "$23,800.00, equal to two months rent",
"responsibilities": [
{
"category": "Structure, roof and outside walls",
"looked_after_by": "Landlord"
},
{
"category": "Decoration and partitions inside",
"looked_after_by": "Tenant"
},
{
"category": "Heating and air conditioning servicing",
"looked_after_by": "Landlord, in the service charge"
},
{
"category": "Electricity, water and internet",
"looked_after_by": "Tenant, metered separately"
},
{
"category": "Cleaning of the common areas",
"looked_after_by": "Landlord, in the service charge"
},
{
"category": "Waste collection for the unit",
"looked_after_by": "Tenant"
}
],
"fixtures": [
{
"fixture": "Ceiling light panels",
"quantity": "42",
"condition": "New, fitted August 2026"
},
{
"fixture": "Glass partition meeting rooms",
"quantity": "3",
"condition": "Good, scratched on room 2"
},
{
"fixture": "Kitchen units with sink and tap",
"quantity": "1",
"condition": "Good"
},
{
"fixture": "Server room air conditioning unit",
"quantity": "1",
"condition": "Serviced July 2026"
}
],
"insurance_required": "Public liability of at least $2,000,000 and cover for the tenant's own contents, with the landlord noted as an interested party.",
"renewal_option": "One option to renew for a further five years, taken by written notice between twelve and six months before the end of the term.",
"termination_notice": "Either party may end the lease on 180 days written notice given after the third anniversary of the first day of the term.",
"governing_law": "the laws of the State of Washington",
"special_conditions": "The tenant pays no rent for the first two months of the term. The service charge is payable from the first day."
} Generate this document via the API
One template plus changing data is the whole point. The list of blanks above is the contract, and every new set of values comes back in the same layout: fill it in the app, hand someone a form link, or POST the JSON and get the file straight back.
The request below carries this page's own values, so it runs as soon as the template exists in your workspace. Swap the values for yours and the response is your document.
curl -X POST https://app.docmake.io/api/v1/render \
-H "Authorization: Bearer $DOCMAKE_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
--output commercial-lease-agreement.pdf \
--data-binary @- <<'JSON'
{
"template_id": "tmpl_your_template_id",
"format": "pdf",
"data": {
"lease_reference": "LSE-2026-0088",
"agreement_date": "September 10, 2026",
"landlord_name": "Wrenfield Property Holdings LLC",
"landlord_address": "18 Pier Road, Seattle, WA 98104",
"tenant_name": "Ostara Software Inc",
"tenant_company_number": "WA-6612094",
"tenant_address": "1200 Harbor Way, Seattle, WA 98101",
"premises_address": "Unit 4B, 77 Cascade Street, Seattle, WA 98109",
"premises_description": "Second floor office suite with shared reception and two parking bays.",
"floor_area": "3,400 square feet",
"permitted_use": "Offices for software development and administration, and nothing else without written consent.",
"lease_start": "November 1, 2026",
"lease_end": "October 31, 2031",
"base_rent_monthly": "$11,900.00",
"rent_due_day": "first day of each month",
"rent_rise": "3 per cent on each anniversary of the first day of the term",
"service_charge_monthly": "$1,360.00",
"security_deposit": "$23,800.00, equal to two months rent",
"responsibilities": [
{
"category": "Structure, roof and outside walls",
"looked_after_by": "Landlord"
},
{
"category": "Decoration and partitions inside",
"looked_after_by": "Tenant"
},
{
"category": "Heating and air conditioning servicing",
"looked_after_by": "Landlord, in the service charge"
},
{
"category": "Electricity, water and internet",
"looked_after_by": "Tenant, metered separately"
},
{
"category": "Cleaning of the common areas",
"looked_after_by": "Landlord, in the service charge"
},
{
"category": "Waste collection for the unit",
"looked_after_by": "Tenant"
}
],
"fixtures": [
{
"fixture": "Ceiling light panels",
"quantity": "42",
"condition": "New, fitted August 2026"
},
{
"fixture": "Glass partition meeting rooms",
"quantity": "3",
"condition": "Good, scratched on room 2"
},
{
"fixture": "Kitchen units with sink and tap",
"quantity": "1",
"condition": "Good"
},
{
"fixture": "Server room air conditioning unit",
"quantity": "1",
"condition": "Serviced July 2026"
}
],
"insurance_required": "Public liability of at least $2,000,000 and cover for the tenant's own contents, with the landlord noted as an interested party.",
"renewal_option": "One option to renew for a further five years, taken by written notice between twelve and six months before the end of the term.",
"termination_notice": "Either party may end the lease on 180 days written notice given after the third anniversary of the first day of the term.",
"governing_law": "the laws of the State of Washington",
"special_conditions": "The tenant pays no rent for the first two months of the term. The service charge is payable from the first day."
}
}
JSON tmpl_your_template_id is
a stand-in: build this template in the visual editor and copy the id it shows, or create one with POST /api/v1/templates. Keys, formats, strict mode and batches are in the API reference.
Or let an AI assistant do it
The DocMake MCP server lets Claude and other assistants make this document the same way. Install it once:
claude mcp add docmake \
--env DOCMAKE_API_KEY=dm_your_api_key \
-- npx -y @docmake/mcp@latest Then ask for the document in plain words:
Make a PDF from my Commercial Lease Agreement template with date of the lease "September 10, 2026" and landlord "Wrenfield Property Holdings LLC".
More legal templates
Bill of Sale
A record of goods sold from one party to another, with a table of the items, the price paid, and the day they are collected.
View template →Data Processing Agreement
An Article 28 agreement with the eight processor duties, and annexes for what is processed, how it is kept safe, and who else touches it.
View template →Employment Contract
A contract for a new hire with the role, the pay, the hours, the time off, and the notice each side has to give.
View template →