Skip to main content

Contract

First-time workspace setup

Complete Getting Started — Recommended Setup Sequence step 8 (this tab — contract templates) after steps 5–7 Payments, Invoicing & Utilities and before step 9 Categories — full tab map: Recommended setup order. Finish steps 13–15 in Listings, Bookings, and Tenants, then Onboarding a New Property — Step 7. Guided steps 4–12: Onboarding a New Property. Lockout catch-up: Getting Started. Workflow pairing after go-live: Account Settings — Setup sequence after go-live.

Use the Contract tab under Account Settings to upload and manage the account default Word template, optional property or unit overrides, and the in-app variable reference operators use when authoring .docx files.

Direct access

Open Account Settings > Property > Contract at platform.vivin.app/settings/contract. See Deep Links for neighbouring settings routes.

Pair with other Account Settings tabs

Upload templates after General Information branding (logo on PDF headers) and seed Categories Lease Purpose options if contracts reference lease-type variables. Contract-generation volume does not appear on this tab — poll AI usage API only for landlord_chat / utility_bill_extraction during month-end review, not template uploads. Section-to-doc pairing: Contract section cross-reference. Hub tab matrix: Account Settings — Tab cross-reference.

How to open the Contract tab

Pair with other Contract sections

Navigation here pairs with Deep Links — Account Settings (/settings/contract) and General Information branding before you upload the account default. Full pairing matrix: Contract section cross-reference.

  1. Sign in to the management frontend and open Account Settings (gear / company entry in the user area, or go to /settings).
  2. In the settings left sidebar, under Property, choose Contract.
  3. Follow the three numbered steps on the page (prepare variables → check the full list → upload), then use Upload Contract Template for the account default or manage overrides in the Properties / Units sections below.

The capture below shows the full Contract workspace: step-by-step guidance, the current account template card (preview / download), and collapsible property and unit override groups.

Account Settings — Contract tab with default template, upload control, and property/unit override sections

Uploading a template

Pair with other Contract sections

Upload the account default before first Processing a New Booking — property/unit overrides inherit the fallback chain documented in Listings — Contract tab. Full pairing matrix: Contract section cross-reference.

Vivin uses a Word document (.docx) as the contract template. When a contract is generated for a booking, Vivin replaces placeholders in the document with booking data and produces a ready-to-sign PDF.

To upload or replace the account default:

  1. Prepare your contract in Microsoft Word or Google Docs (exported as .docx).
  2. Insert variable placeholders (see Using dynamic variables) where booking-specific information should appear.
  3. On the Contract tab, click Upload Contract Template, choose Account scope (unless you are replacing a property- or unit-specific file), and select your .docx.

Upload Contract Template modal — scope selector and .docx drop zone

The modal also supports Property and Unit scopes when you need an override instead of changing the account default. Use Replace on an existing override card to open the same dialog with scope locked to that entity.

Using dynamic variables

Pair with other Contract sections

Financial tokens reference Invoicing & Payments — Dual pricing and Categories — Lease Purpose — overlap with Emails — Dynamic variables for tenant-facing copy. Full pairing matrix: Contract section cross-reference.

Insert placeholders in your .docx using single braces around the token name, for example {TenantName} and {StartDate}. Vivin replaces them when generating the contract. Use the exact names shown below (PascalCase inside the braces).

On the Contract tab, open Check the list of available variables here to see the same catalogue in a scrollable modal (useful when authoring offline).

Contract variables modal — full token list from the Contract settings tab

Tenant variables

VariableOutput
{TenantName}Tenant's full name
{TenantEmail}Tenant's email address
{TenantPhone}Tenant's phone number
{Nationality}Tenant's nationality
{FiscalId}Tenant's tax/fiscal ID number
{IdentificationId}Tenant's passport or ID number
{TenantIdDocumentType}Tenant's ID document type (e.g. Passport, ID Card)
{TenantIdDocumentCountry}Country of the tenant's ID document
{TenantIdDocumentExpiryDate}Tenant's ID document expiry date (DD/MM/YYYY)
{TenantFiscalAddress}Tenant's home address (billing address if empty)
{%TenantSignature}Tenant's signature image — filled when the tenant signs
{%LandlordSignature}Landlord's signature image — filled automatically when the tenant signs (see Landlord signature)

Owner variables

These come from the property's owner record in Settings → Owners. A property that has no owner assigned renders all of them empty.

VariableOutput
{OwnerName}Owner's name
{OwnerFiscalId}Owner's tax/fiscal ID number (NIF / CIF)
{OwnerFiscalAddress}Owner's fiscal address
{OwnerEmail}Owner's email address
{OwnerPhone}Owner's phone number
{OwnerIdDocumentType}Owner's ID document type (e.g. Passport, ID Card) — set it on the owner's record

Property and unit variables

VariableOutput
{PropertyAddress}Full property address
{ListingInternalName}Unit/listing internal name
{Floor}Floor number
{RoomNumber}Room number
{PropertyTotalRooms}Number of units in the property (see Property rooms)
{PropertyRoomRange}The property's unit names as a range or list (see Property rooms)

Booking and financial variables

VariableOutput
{StartDate}Contract start date (DD/MM/YYYY)
{EndDate}Contract end date (DD/MM/YYYY)
{ContractDurationMonths}Contract duration in whole months, as a number (see Contract duration)
{ContractDurationInTextEn|Pt|Es|It}The same duration spelled out, e.g. seis [6] meses (see Contract duration)
{CheckInDate}Tenant's physical move-in date (DD/MM/YYYY)
{CheckOutDate}Tenant's physical move-out date (DD/MM/YYYY)
{CheckInTime}Check-in time
{CheckOutTime}Check-out time
{RentValue}Monthly rent amount
{SecurityDeposit}Security deposit amount
{AdministrativeFee}Administrative fee amount
{CleaningFee}Cleaning fee amount
{RentJan}{RentDec}Monthly rent for each month (Jan–Dec)
{ContractSignDate}Contract signing date (DD/MM/YYYY)
{TotalValuePending}Total value pending
{ContractTotalValue}Total rent payable across the whole contract (distinct from Total value pending)
{Debt}Outstanding debt amount
{BillsIncludedMaxValue}Maximum bills-included value
{vIBAN}Tenant's virtual IBAN (bank transfer reference for this booking — not the tenant's personal IBAN)
{DueDate}Payment due date where applicable
{LocalRentCap} / {RentCapDifference}Populated when the booking uses dual pricing / local rent cap: LocalRentCap is the frozen cap in euros; RentCapDifference is rent − cap (the services slice). Empty when dual pricing does not apply.

The in-app modal may list additional tokens (for example {LeasePurpose}). Treat the modal as the authoritative catalogue for your workspace.

Landlord signature

The {%LandlordSignature} placeholder lets Vivin apply your signature to a contract as an image — the same way {%TenantSignature} works for the tenant. This replaces the old practice of baking a signature picture into the Word template, which made every generated draft look pre-signed before anyone had actually signed.

How it works

  • On a draft, the placeholder is empty. A generated contract (manual or from an OTA booking) never shows your signature until the tenant signs — so a draft is never a pre-signed document.
  • When the tenant e-signs in the tenant portal, your signature is applied automatically in the same document, so the signed PDF is the finished, both-party contract. There is no extra step for you — the operator flow is exactly as before.
  • If you have no signature on file, or the template does not contain {%LandlordSignature}, the tenant can still sign normally — the contract is simply signed by the tenant only. Applying your signature never blocks or delays the tenant's signature.

Set up your signature

  1. Open Settings ▸ Contract.
  2. In the Landlord signature card, either upload a PNG (transparent background recommended) or draw it with your mouse/finger.
  3. Vivin trims and resizes the image automatically, and clamps it to a sensible size when rendering, so it always fits the signature block — you don't need to worry about the source image's dimensions.
  4. Add the {%LandlordSignature} placeholder to your template wherever the landlord signature should appear (typically the signature block at the end), and remove any signature image that was previously baked into the document.
  5. Use Preview to check the placement — the preview renders your real signature so you can confirm exactly where it lands.
Migrating an existing template

If your current template has a signature baked in as a picture, replace that picture with the {%LandlordSignature} placeholder and re-upload the template. Until you do, generated drafts will keep showing the baked-in signature. Vivin warns you on upload when a template still contains an embedded image that might be a baked signature.

Amount-in-text variables

Pair with other Contract sections

Amount-in-text tokens build on the euro figures in Using dynamic variables and pair with Invoicing & Payments — Dual pricing when rent changes month to month. Full pairing matrix: Contract section cross-reference.

Some legal templates must spell an amount out in words next to the figure (for example 1.500 € (mil e quinhentos euros)). Vivin provides amount-in-text tokens that render an amount as euro words, including the currency. Like every other placeholder, they use single braces and are case-sensitive — write them exactly as shown.

Each token names its own language with a suffix — …En (English), …Pt (Portuguese), …Es (Spanish), …It (Italian). Because the language lives in the token, you can mix languages in a single .docx: put a Portuguese clause and an English clause side by side and choose the language per token occurrence. This is what makes bilingual templates possible.

Open available variables on the Contract tab and scroll past {RentValue} — the catalogue lists every language-suffixed rent, deposit, and contract-total token with a one-line description and a copy control (#2254):

Contract Template Variables modal — amount-in-text tokens for monthly rent and security deposit (En/Pt/Es/It)

Walkthrough: open available variables, then scroll from monthly rent through rent-in-words, deposit-in-words, and full-contract-total-in-words tokens.

Available tokens

Monthly rent in words

VariableRenders in
{RentValueInTextEn}English (always)
{RentValueInTextPt}Portuguese (always)
{RentValueInTextEs}Spanish (always)
{RentValueInTextIt}Italian (always)

Security deposit in words

VariableRenders in
{SecurityDepositInTextEn}English (always)
{SecurityDepositInTextPt}Portuguese (always)
{SecurityDepositInTextEs}Spanish (always)
{SecurityDepositInTextIt}Italian (always)

Full contract total

VariableOutput
{ContractTotalValue}Full-contract total as a number
{ContractTotalValueInTextEn}Full-contract total in words — English (always)
{ContractTotalValueInTextPt}Full-contract total in words — Portuguese (always)
{ContractTotalValueInTextEs}Full-contract total in words — Spanish (always)
{ContractTotalValueInTextIt}Full-contract total in words — Italian (always)

What the contract total means

{ContractTotalValue} (and its in-text variants) is the total rent payable across the whole contract duration — the contractual obligation. Vivin sums it from the booking's payment plan: the rent for every month of the stay, including proration, first/last-month splits, and dual-pricing rent.

Contract total is not Total value pending

{ContractTotalValue} is the total the tenant is contracted to pay and does not change as payments come in. {TotalValuePending} is the outstanding balance (debt) and shrinks as the tenant pays. Use {ContractTotalValue} for the contractual sum, and reach for {TotalValuePending} only when you specifically mean the amount still owed.

Contract total is not the "Contract Value" in the booking header

{ContractTotalValue} is total rent only. It is not the same figure as the Contract Value shown in the booking-details header, which also includes cleaning, admin and exit fees (everything except the deposit) — so the two normally differ. This token deliberately renders the total rent payable; the rent-plus-fees figure is not currently exposed as a contract variable.

How amounts are rendered

Amounts render as euro words including the currency:

  • {RentValueInTextEs}ochocientos cincuenta euros
  • {RentValueInTextPt}mil e quinhentos euros
  • {RentValueInTextEn}eight hundred and fifty euros

Cents are spelled out after the euros:

  • Spanish → … euros con cincuenta céntimos
  • Portuguese → … euros e cinquenta cêntimos
  • English → … euros and fifty cents
  • Italian → … euro e cinquanta centesimi

Whole amounts omit the cents clause, and a zero amount renders as zero euros (localised).

When rent varies month to month, the token renders a localised range between the lowest and highest monthly rent:

  • {RentValueInTextEs}novecientos a mil cien euros
  • {RentValueInTextPt}novecentos a mil e cem euros
  • {RentValueInTextEn}nine hundred to one thousand one hundred euros

Bilingual template examples

Because language-suffixed tokens always render in their named language, you can write one clause per language in the same .docx.

Portuguese + English

A renda mensal é de {RentValue} € ({RentValueInTextPt}).
The monthly rent is €{RentValue} ({RentValueInTextEn}).

Spanish + English

La renta mensual es de {RentValue} € ({RentValueInTextEs}).
The monthly rent is €{RentValue} ({RentValueInTextEn}).

Rent range — when the monthly rent changes across the stay:

Renda mensal: {RentValueInTextPt}.
→ Renda mensal: novecentos a mil e cem euros.

Cents — when an amount includes céntimos/cents:

Caução: {SecurityDepositInTextEn}.
→ Caução: eight hundred and fifty euros and fifty cents.
tip

Always use the language-suffixed token (…En, …Pt, …Es, …It) that matches the language of the surrounding clause. A single-language template uses one suffix throughout; a bilingual template uses two suffixes in their respective clauses.

Contract duration

{ContractDurationMonths} prints the length of the lease in whole months, as a plain number — no "months" word, so you can phrase the clause however you like. {ContractDurationInTextEn} / …Pt / …Es / …It print the same value spelled out, in the mixed words-and-figures format contracts usually require:

Duración: {ContractDurationInTextEs}
→ Duración: seis [6] meses
TokenOutput for a 6-month lease
{ContractDurationMonths}6
{ContractDurationInTextEn}six [6] months
{ContractDurationInTextPt}seis [6] meses
{ContractDurationInTextEs}seis [6] meses
{ContractDurationInTextIt}sei [6] mesi

The language suffixes work exactly like the amount-in-text variables — pick the one that matches the surrounding clause.

How the duration is counted

  • It is measured between the same two dates the contract prints as {StartDate} and {EndDate}. If the booking is set to use the check-in/check-out dates on the contract, the duration follows those instead — the three tokens can never disagree with each other.
  • The end date is inclusive (it is the last day of the lease), so 01/01/2026 → 30/06/2026 is 6 months, not 5.
  • Partial months are dropped, never rounded up: 01/01/2026 → 15/07/2026 is 6 months. This matches how the minimum/maximum stay period is checked when a booking is created.
  • A stay shorter than a month prints 0 (cero [0] meses), which is a real answer — not a missing one.
  • If a date is missing, or the end date falls before the start date, all five tokens render empty rather than printing a wrong or negative number.

Property rooms

{PropertyTotalRooms} prints how many units the property has — the same "rooms" figure the app shows everywhere else (every non-deleted unit, whatever its type; a whole-apartment property counts as 1). A property with no units prints 0; the token is only blank when the count is genuinely unavailable.

{PropertyRoomRange} prints the property's unit names. It only collapses them into a range when the names prove that is safe:

The property's units{PropertyRoomRange}
H.1 … H.6 (all present)H.1 a H.6
H.1, H.3, H.6H.1, H.3, H.6
H.1 onlyH.1
H.1, A.2A.2, H.1
Suite Azul, ÁticoÁtico, Suite Azul
H.1, H.1, H.2H.1, H.1, H.2
Why gaps are listed instead of ranged

A contract is a legal document, so H.1 a H.6 must never be printed for a property that does not actually have H.2, H.4 and H.5. Whenever the unit names have gaps, mix prefixes, or are not numbered, Vivin lists them instead — sorted naturally, so H.2 comes before H.10.

Two units may share a name (unit names are not forced to be unique). Both are listed, because both are real, separately-bookable units — a repeated name switches the token to the list form rather than being hidden inside a range.

Unit names come from each unit's internal name. Keep them consistently numbered (H.1, H.2, H.3, …) if you want the compact range form.

Property and unit overrides

Pair with other Contract sections

Resolution order is unit → property → account — per-building files pair with Listings — Contract tab and mixed-inventory onboarding in Onboarding a New Property. Full pairing matrix: Contract section cross-reference.

Below the account default card, the Contract tab lists:

  • Properties with custom contract — a .docx that applies to all units on that property unless a unit override exists.
  • Units with custom contract — a template for a single listing only.

Use Search to filter by property or unit name. On a property row, follow overrides links to scope the unit list to that building. Each card offers Preview, Replace, and Remove (remove restores the next fallback: unit → property → account default).

Unit-specific contract templates

Pair with other Contract sections

Unit overrides pair with Processing a New Booking — Step 4 (generate PDF per unit), Listings — Contract tab (resolution chain), Preferences — Mandatory for contract signing (portal gates after PDF exists), and Tenant Portal — Digital contract signing (portal signing after generation). When tenants report a missing Sign contract button, confirm a PDF was generated — FAQ — Tenant contract signing blocked. Full pairing matrix: Contract section cross-reference.

When only some units need a different legal agreement (for example accommodation services vs long-term lease), assign a unit override:

Add Contract Template modal — Unit scope with property and unit selectors

  1. Click Upload Contract Template (or Replace on a unit card).
  2. Choose scope Unit, pick the property and unit, and upload the alternative .docx.
  3. When a contract is generated for that unit, the unit template wins over the property and account defaults.

You can also set a property-level template so every unit on that building shares one file without uploading per unit.

Walkthrough: open the variables catalogue modal, close it, then open Upload Contract Template and Cancel without changing files.

Contract section cross-reference

Use this table when one Contract topic naturally leads into another Account Settings tab, operator module, workflow, or concept — each row links to the docs you should read before or after uploading or replacing templates.

| Contract topic / section | Pair with these docs | | ------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | How to open the Contract tab | Deep Links — Account Settings, General Information | | Uploading a template | Users and roles, Onboarding a New Property | | Using dynamic variables | Categories — Lease Purpose, Owners, Invoicing & Payments — Dual pricing | | Amount-in-text variables | Using dynamic variables, Invoicing & Payments — Dual pricing (settings-contract-variables-amount-in-text.png, settings-contract-amount-in-text-flow.mp4) | | Property and unit overrides | Listings — Contract tab, Listings module | | Unit-specific contract templates | Processing a New Booking, Booking engine details | | Preferences — Mandatory fields before contract signing | Handling a Late Payment — Step 1, Notifications — Payment overdue alerts | | Lockout catch-up after password recovery | Resetting a Management User Password, Getting Started — Lockout catch-up after password recovery, Common Workflows — Lockout catch-up | | Pending manual receipt approval | Processing a New Booking, Users and roles — Role permissions (Approve payments), Finance — Pending manual payments | | Reject/revert mistaken receipts | Payment Allocation — Correcting mistaken receipts, Finance — Row actions on in-payment rows, Invoicing & Payments | | Notification row-click navigation | /notifications row-click after template publish | Account Settings — Notification row-click navigation, Common Workflows — Notification row-click navigation, Notifications module — Notification row-click navigation | | Payment alert to receivables triage | payment overdue unrelated to contract PDF updates | Account Settings — Payment alert to receivables triage, Common Workflows — Payment alert to receivables triage, Handling a Late Payment — Step 1 | | Confirmation alert triage | Upcoming alerts after contract template go-live | Account Settings — Confirmation alert triage, Common Workflows — Confirmation alert triage, Processing a New Booking — Step 5b | | Finance debt receivables triage | Portfolio Top debtors / Debt Aging after settings on this tab | Account Settings — Finance debt receivables triage, Common Workflows — Finance debt receivables triage, Finance module — Finance debt receivables triage | | Finance Income status drill-down | Income → In debt vs Debt Aging after settings on this tab | Account Settings — Finance Income status drill-down, Common Workflows — Finance Income status drill-down, FAQ — Finance Income status drill-down hub | | Cash flow forecast drill-down | Cash flow forecast month bars vs Income segments | Account Settings — Cash flow forecast drill-down, Common Workflows — Cash flow forecast drill-down, FAQ — Cash flow forecast drill-down hub | | Portfolio segmentation by tenant category | Tenant categories, Common Workflows — Portfolio segmentation by tenant category, Bookings — Other filters |


Pair with other Contract guide sections

Related below links this Account Settings tab to modules, workflows, concepts, and escalation paths. Pair Documentation map & escalation with Account Settings hub — Documentation map & escalation; pair Upstream & downstream workflows with Account Settings — Tab cross-reference. Topic-to-section pairing in sections above: Contract section cross-reference. Full hub matrix: Account Settings — Section cross-reference.

Documentation map & escalation

Upstream & downstream workflows

Pair with other Contract guide sections

Workflow bullets pair with Common Workflows — Workflow cross-reference for inter-guide step pairing. Full pairing matrix: Contract section cross-reference · Account Settings — Section cross-reference.

Deeper workflow reads

Pair with other Contract guide sections

Workflow reads pair with Common Workflows hub subsection index and Workflow cross-reference. Each workflow sub-guide reciprocates with [Deeper workflow reads](./contract-templates.md#deeper-workflow-reads) anchors on Account Settings bullets — hub parity: Account Settings hub — Deeper workflow reads. Full pairing matrix: Contract section cross-reference · Account Settings — Section cross-reference.

Pair with other Contract guide sections

Operator modules

Pair with other Contract guide sections

Deeper concept reads

Pair with other Contract guide sections

Companion API guides

Pair with other Contract guide sections

Module documentation hubs

Pair with other Contract guide sections
  • Bookings — Operator UI for contract generation and portal signing gates
  • Listings — Property wizard and per-property contract overrides
  • Finance — Portfolio ledgers and deposit refund workflow tied to contract end dates
  • Booking engine details — Marketing copy separate from contract .docx templates
  • Tenants — Tenant profile fields referenced by contract variables
  • Operations — Check-in/out coordination when unsigned contracts block access
  • API Reference hub — Partner HTTP contracts and partial vs full feeds

Lockout catch-up after password recovery

Pair with other Contract guide sections

Operational backlog after sign-in recovery pairs with Resetting a Management User Password — Step 3 before you resume template uploads on this tab. Hub parity: Common Workflows — Lockout catch-up after password recovery. Full pairing matrix: Contract section cross-reference · Account Settings — Section cross-reference.

Pending manual receipt approval

Pair with other Contract guide sections

Receipt approval pairs with Processing a New Booking contract-send timing and Users and roles (Approve payments permission). Hub parity: Common Workflows — Pending manual receipt approval. Full pairing matrix: Contract section cross-reference · Account Settings — Section cross-reference.

Reject/revert mistaken receipts

Pair with other Contract guide sections

Receipt cleanup pairs with Payment Allocation contract-linked schedules and Invoicing & Payments export providers. Hub parity: Common Workflows — Reject/revert mistaken receipts. Full pairing matrix: Contract section cross-reference · Account Settings — Section cross-reference.

Portfolio segmentation by tenant category

Pair with other Contract guide sections

Notification row-click navigation

Pair with other Contract templates guide sections

Template uploads do not change /notifications routing — row-click alerts into Bookings before re-testing contract PDF generation. Hub parity: Account Settings — Notification row-click navigation. Full pairing matrix: Contract templates section cross-reference · Account Settings — Section cross-reference.

Payment alert to receivables triage

Pair with other Contract templates guide sections

Contract wording does not clear receivables — payment overdue row-clicks still need Finance debt receivables triage after template saves. Hub parity: Account Settings — Payment alert to receivables triage. Full pairing matrix: Contract templates section cross-reference · Account Settings — Section cross-reference.

Confirmation alert triage

Pair with other Contract templates guide sections

Upcoming Booking created alerts after template go-live still need confirmation receipt approval — new PDF templates do not auto-approve Payment received rows. Hub parity: Account Settings — Confirmation alert triage. Full pairing matrix: Contract templates section cross-reference · Account Settings — Section cross-reference.

Finance debt receivables triage

Pair with other Contract guide sections

Contract PDFs do not replace Debt Aging triage — unpaid confirmation charges still surface on Finance → Overview Top debtors. Hub parity: Account Settings — Finance debt receivables triage. Full pairing matrix: Contract section cross-reference · Account Settings — Section cross-reference.

Handling a Late Payment collections

Pair with other Contract guide sections

Contract PDFs do not replace Debt Aging triage — unpaid confirmation charges still surface on Finance → Overview Top debtors Hub parity: Account Settings — Handling a Late Payment collections. Full pairing matrix: Contract section cross-reference · Account Settings — Section cross-reference.

Finance Income status drill-down

Pair with other Contract guide sections

Template variables like {ContractTotalValue} do not open Income → In debt modals — use Finance → Overview segment drill-down for payment-line detail. Hub parity: Account Settings — Finance Income status drill-down. Full pairing matrix: Contract section cross-reference · Account Settings — Section cross-reference.

Cash flow forecast drill-down

Pair with other Contract guide sections

Signed contracts do not confirm bank settlement — open Cash flow forecast on Finance → Overview when you need collections history. Hub parity: Account Settings — Cash flow forecast drill-down. Full pairing matrix: Contract section cross-reference · Account Settings — Section cross-reference.

Key glossary terms

Pair with other Contract guide sections