Fixed-Term Tenancy Renewal Wizard
Fixed-Term Tenancy Renewal Wizard
The Fixed-Term Renewal Wizard provides a guided, 3-stage flow for renewing an active or expiring fixed-term tenancy. It auto-populates all fields from the current term so that straightforward renewals require minimal input.
When It Appears
The wizard is available on any tenancy with a status of active or expiring. Click the Action Renewal button on the tenancy overview page to open it.
Wizard Stages
Stage 1 — Term Length
| Field | Description |
|---|---|
| Term Length | Choose a preset (6, 12, 24, or 36 months) or enter a custom number of months. |
| Service Type | One of: Fully Managed, Let Only, Rent Collection, Tenant Find. |
| Term Start Date | Defaults to the current term's end date. Edit if needed. |
A computed end date is displayed in real time based on the start date and term length.
Skip & Create Term — If none of the pre-populated values need changing, click this button on Stage 1 to create the renewal immediately without proceeding to Stages 2 or 3.
Stage 2 — Rent
| Field | Description |
|---|---|
| Monthly Rent | Carried over from the current term. Update if the rent is changing. |
| Advance Rent Balance | Any advance rent balance to carry forward into the new term. |
Stage 3 — Tenants
| Field | Description |
|---|---|
| Tenant Name / Email | Pre-filled from the current term or tenancy record. |
| Landlord Name / Email | Pre-filled if available; update as needed. |
| Linked Applicants / Guarantors | Read-only reference to existing linked records. |
| Notes | Free-text notes to attach to the renewal. |
Navigation
- Use the stage indicator at the top of the wizard to jump back to any completed stage.
- Use the Back button within a stage to return to the previous step.
- Closing the wizard (✕ button) discards any unsaved changes.
What Happens on Completion
- A new
tenancy_termrecord is created with the submitted values. - The previous term is marked as expired.
- The parent tenancy record is updated to reflect the new term.
- A renewal audit record is written.
- The wizard closes and you are redirected to the tenancy overview.
Error Handling
If the submission fails, an inline error banner is displayed at the top of the wizard. The form remains editable so you can correct any issues and resubmit.
Service Type Reference
| Value | Label |
|---|---|
fully_managed | Fully Managed |
let_only | Let Only |
rent_collection | Rent Collection |
tenant_find | Tenant Find |
Related API
The wizard communicates with the backend through two tRPC procedures on the renewals router:
renewals.getFixedTermRenewalData
Loads all data needed to pre-populate the wizard.
Input
{ tenancyId: string }
Returns
{
currentTerm: TenancyTerm,
tenancy: Tenancy,
tenants: Tenant[],
guarantors: Guarantor[]
}
renewals.createFixedTermRenewal
Creates the new term and expires the old one.
Input
{
tenancyId: string;
termLengthMonths: number;
serviceType: "fully_managed" | "let_only" | "rent_collection" | "tenant_find";
termStartDate: string; // ISO date string, e.g. "2026-06-01"
monthlyRent: number;
advanceRentBalance: number;
tenantName?: string;
tenantEmail?: string;
landlordName?: string;
landlordEmail?: string;
notes?: string;
}
Returns
{ tenancyId: string }
All mutations include full audit logging via
logAudit().