> For the complete documentation index, see [llms.txt](https://dev.realpadsoftware.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dev.realpadsoftware.com/placeholders/document-templating/deal-documents.md).

# Deal documents

This document lists all available placeholders for default Deal Documents. Most specialized templating scenarios fall back to this one.

## Overview

This is the main Document templating providing comprehensive Deal information including Customers, Units, Payments, Discounts, and more.

## Simple Placeholders

### Deal Overview

#### `$dealId`

Unique identifier of the Deal (numeric ID).\
Type: String | UI: "Deal" (`business_case`)

#### `$tags`

Tags associated with the Deal, comma-separated.\
Type: String | UI: "Tags" (`customer_param_tags`)

#### `$type`

Type of the Deal. Possible values: `Standard`, `Investment`.\
Type: String | UI: "Type" (`type`)

#### `$status`

Current status of the Deal. Possible values: `Active`, `Lost`, `Won`, `Sleeping`.\
Type: String | UI: "Status" (`status`)

#### `$lifeCycle`

Lifecycle stage of the Deal. Possible values: `New`, `Negotiating`, `Preparing contract`, `Reservation contract signed`, `Reservation paid`, `Future purchase contract signed`, `Future purchase contract paid`, `Purchase contract paid`, `Purchase contract signed`, `PC entered cadastre`.\
Type: String | UI: "Lifecycle" (`business_case_lifecycle`)

#### `$createdOn`

Date when the Deal was created.\
Type: DateWrapper | UI: "Created" (`business_case_param_added`)

#### `$closedOn`

Date when the Deal was closed.\
Type: DateWrapper | UI: "Closed" (`business_case_param_closed`)

#### `$handoverDate`

Scheduled or actual handover date for the Deal.\
Type: DateWrapper | UI: "Handover" (`business_case_param_handover_label`)

#### `$closingReason`

Reason for closing the Deal (if closed).\
Type: String

#### `$closingComment`

Additional comment about closing the Deal.\
Type: String | UI: "Closing Comment" (`business_case_param_closing_comment_label`)

#### `$variableSymbol`

Variable symbol for the Deal.\
Type: String

#### `$inspectionDate`

Date of the Deal inspection.\
Type: DateWrapper | UI: "Inspection" (`business_case_param_inspection_label`)

#### `$corwin_authorization_date` / `$is_corwin_authorization_date`

Authorization date (Corwin-specific). The `is_*` variant is a Boolean for conditional checks.\
Type: DateWrapper / Boolean

#### `$homa_user_basis_of_representation` / `$is_homa_user_basis_of_representation`

User's basis of representation (Homa-specific). The `is_*` variant is a Boolean for conditional checks.\
Type: String / Boolean

### Project Identification

Dynamic boolean placeholders are created for each project in your system. These allow you to conditionally include content based on which project the Deal belongs to.

#### `$is<ProjectName>`

Boolean indicating if the Deal's main project matches this project. The placeholder name is created by normalizing the project name (removing spaces and special characters).

Type: Boolean

Examples:

* For a project named "River View Apartments", the placeholder would be: `$isRiverViewApartments`
* For a project named "City Center", the placeholder would be: `$isCityCenter`

Usage example:

```velocity
#if($isRiverViewApartments)
  This Deal is for River View Apartments project.
  Special terms apply for riverside units.
#end

#if($isCityCenter)
  City Center project - downtown location with premium pricing.
#end
```

### Current User Information

#### `$currentUser`

Name of the user generating the document.\
Type: String

#### `$currentUserEmail` / `$isCurrentUserEmail`

Email address of the user generating the document. The `is*` variant is a Boolean for conditional checks.\
Type: String / Boolean

#### `$currentUserPhone` / `$isCurrentUserPhone`

Phone number of the user generating the document. The `is*` variant is a Boolean for conditional checks.\
Type: String / Boolean

#### `$currentUserSupplier` / `$isCurrentUserSupplier`

Supplier associated with the user generating the document. The `is*` variant is a Boolean for conditional checks.\
Type: String / Boolean

### Date Utilities

#### `$now`

Current date and time when the document is generated.\
Type: DateWrapper

#### `$nowDMYdot`

Current date formatted as dd.MM.yyyy (e.g., 23.12.2025).\
Type: DateWrapper (formatted)

#### `$nowPlus14`

Current date plus 14 days.\
Type: DateWrapper

#### `$nowPlus30`

Current date plus 30 days.\
Type: DateWrapper

#### `$sentCallToPay`

Date when the call to pay was sent.\
Type: DateWrapper | UI: "Sent Call to Pay" (`business_case_param_sentcalltopay_label`)

#### `$taxOfficeSubmissionDeadline`

Deadline for submitting documents to the tax office.\
Type: DateWrapper | UI: "Tax office submission deadline" (`business_case_param_taxoffice_submission_deadline_label`)

#### `$taxOfficeSubmissionDate`

Date when documents were submitted to the tax office.\
Type: DateWrapper | UI: "Tax office submission date" (`business_case_param_taxoffice_submission_date_label`)

### Prices and Discounts

#### `$dealPriceVAT` / `$dealPriceVAT_sk` / `$dealPriceVAT_cz`

Total Deal price with VAT. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

#### `$dealPriceNoVAT` / `$dealPriceNoVAT_sk` / `$dealPriceNoVAT_cz`

Total Deal price without VAT. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

#### `$dealPriceVATAmount` / `$dealPriceVATAmount_sk` / `$dealPriceVATAmount_cz`

VAT amount on the Deal price. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

#### `$dealPriceVATRate` / `$dealPriceVATRate_sk` / `$dealPriceVATRate_cz`

VAT rate percentage for the Deal. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

#### `$dealDiscountVat`

Total Deal Discount with VAT.\
Type: NumberWrapper

#### `$dealDiscountNoVat`

Total Deal Discount without VAT.\
Type: NumberWrapper

#### `$dealPriceWithAdditionalProductsVat` / `$dealPriceWithAdditionalProductsVat_sk` / `$dealPriceWithAdditionalProductsVat_cz`

Deal price with VAT including all Additional Products. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

#### `$dealPriceWithAdditionalProductsNoVat` / `$dealPriceWithAdditionalProductsNoVat_sk` / `$dealPriceWithAdditionalProductsNoVat_cz`

Deal price without VAT including all Additional Products. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

#### `$dealPriceWithAdditionalProductsVatAmount` / `$dealPriceWithAdditionalProductsVatAmount_sk` / `$dealPriceWithAdditionalProductsVatAmount_cz`

VAT amount on the Deal price with Additional Products (calculated). Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

#### `$dealPriceWithAdditionalProductsVatRate` / `$dealPriceWithAdditionalProductsVatRate_sk` / `$dealPriceWithAdditionalProductsVatRate_cz`

VAT rate percentage on the Deal price with Additional Products (calculated). Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

#### `$dealPriceIgnoredProductsVat`

Price of ignored Additional Products with VAT.\
Type: NumberWrapper

#### `$dealPriceIgnoredProductsNoVat`

Price of ignored Additional Products without VAT.\
Type: NumberWrapper

### Deal Price Percentage Fractions

#### `$dealPriceTotal{X}Percent` / `$dealPriceTotal{X}Percent_sk` / `$dealPriceTotal{X}Percent_cz`

X% of the total Deal price with VAT, rounded to a whole number. Available for X ∈ {10, 15, 20, 30, 40, 80, 85}. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

#### `$dealPriceTotal{X}PercentCents` / `$dealPriceTotal{X}PercentCents_sk` / `$dealPriceTotal{X}PercentCents_cz`

X% of the total Deal price with VAT, with two decimal places. Available for X ∈ {10, 15, 20, 30, 40, 80, 85}. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

#### `$dealPriceTotal{X}PercentCustModImplSum` / `$dealPriceTotal{X}PercentCustModImplSum_sk` / `$dealPriceTotal{X}PercentCustModImplSum_cz`

X% of the total Deal price with VAT plus the Customer Modification Implementation price, rounded to a whole number. Available for X ∈ {10, 15, 20, 30, 40, 80, 85}. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

#### `$dealPriceTotal{X}ReservationFeePercent` / `$dealPriceTotal{X}ReservationFeePercent_sk` / `$dealPriceTotal{X}ReservationFeePercent_cz`

X% of the Deal price with VAT minus the Reservation Fee, rounded to a whole number. Available for X ∈ {10, 20, 50}. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

### Payment Sums and Balances

#### `$dealPaymentsIncomingSumVat` / `$dealPaymentsIncomingSumVat_sk` / `$dealPaymentsIncomingSumVat_cz`

Total sum of all Incoming Payments with VAT. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

#### `$dealPaymentsPrescribedSumVat` / `$dealPaymentsPrescribedSumVat_sk` / `$dealPaymentsPrescribedSumVat_cz`

Total sum of all Prescribed Payments with VAT. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

#### `$dealPaymentsPendingSumVat` / `$dealPaymentsPendingSumVat_sk` / `$dealPaymentsPendingSumVat_cz`

Pending payment amount (Prescribed minus Incoming), representing the Deal balance. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words) | UI: "Financial balance" (`business_case_balance_overall_label`)

#### `$dealPaymentsIncomingNoCustomChangesSumVat` / `$dealPaymentsIncomingNoCustomChangesSumVat_sk` / `$dealPaymentsIncomingNoCustomChangesSumVat_cz`

Sum of Incoming Payments excluding Custom Changes, with VAT. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

#### `$dealPaymentsIncomingNoCustomChangesSumNoVat` / `$dealPaymentsIncomingNoCustomChangesSumNoVat_sk` / `$dealPaymentsIncomingNoCustomChangesSumNoVat_cz`

Sum of Incoming Payments excluding Custom Changes, without VAT. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

#### `$dealPaymentsIncomingOnlyCustomChangesSumVat` / `$dealPaymentsIncomingOnlyCustomChangesSumVat_sk` / `$dealPaymentsIncomingOnlyCustomChangesSumVat_cz`

Sum of only Custom Changes Incoming Payments, with VAT. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

#### `$dealPaymentsIncomingOnlyCustomChangesSumNoVat` / `$dealPaymentsIncomingOnlyCustomChangesSumNoVat_sk` / `$dealPaymentsIncomingOnlyCustomChangesSumNoVat_cz`

Sum of only Custom Changes Incoming Payments, without VAT. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

#### `$dealBalanceOverall` / `$dealBalanceOverall_sk` / `$dealBalanceOverall_cz`

Overall Deal balance with VAT. Includes Slovak and Czech word variants. Boolean checks available: `$isDealBalanceOverallPositive`, `$isDealBalanceOverallNegative`, `$isDealBalanceOverallNonPositive`, `$isDealBalanceOverallNonNegative`.\
Type: NumberWrapper / String (words) / Boolean | UI: "Financial balance" (`business_case_balance_overall_label`)

#### `$dealBalanceToday` / `$dealBalanceToday_sk` / `$dealBalanceToday_cz`

Deal balance as of today with VAT. Includes Slovak and Czech word variants. Boolean checks available: `$isDealBalanceTodayPositive`, `$isDealBalanceTodayNegative`, `$isDealBalanceTodayNonPositive`, `$isDealBalanceTodayNonNegative`.\
Type: NumberWrapper / String (words) / Boolean | UI: "Balance today" (`business_case_balance_today_label`)

#### `$paymentReservationFeeDefault` / `$paymentReservationFeeDefault_sk` / `$paymentReservationFeeDefault_cz`

Default reservation fee amount. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

#### `$remainsToPayDirectly` / `$remainsToPayDirectly_sk` / `$remainsToPayDirectly_cz` / `$isDirectTransferBalancePositive`

Amount remaining to be paid via direct transfer (difference between prescribed and incoming direct transfer payments). Includes Slovak and Czech word variants. Boolean check `$isDirectTransferBalancePositive` indicates if the balance is positive.\
Type: NumberWrapper / String (words) / Boolean

#### `$currentAccountTotal` / `$currentAccountTotal_sk` / `$currentAccountTotal_cz`

Total amount to be paid to current account. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

### Payment Schedule (Per Payment Type)

Dynamic placeholders generated for each `DealPaymentPrescribedType` enum value. Replace `{TYPE}` with the enum constant name (e.g. `RESERVATION_FEE`, `FIRST_FPC_PAYMENT`, `FPC_PAYMENT`, `ADDITIONAL_PRODUCT_PAYMENT`, `ADDITIONAL_PAYMENT`).

#### `$payment{TYPE}Type`

Localized name of the payment type.\
Type: String

#### `$payment{TYPE}Amount` / `$payment{TYPE}AmountNoVAT` / `$payment{TYPE}AmountJustVAT`

Amount of the payment of this type: with VAT, without VAT, and VAT component only.\
Type: NumberWrapper

#### `$payment{TYPE}Deadline`

Due date of the payment of this type.\
Type: DateWrapper

#### `$payment{TYPE}AccountType`

Payment method for the payment of this type (localized text).\
Type: String

#### `$isPayment{TYPE}Paid`

Boolean indicating if the payment of this type has been fully paid.\
Type: Boolean

#### FPC Numbered Variants

For individual FPC (Final Payment Contribution) payments numbered 1–6:

#### `$paymentFpc{N}Amount` / `$paymentFpc{N}AmountNoVAT` / `$paymentFpc{N}AmountJustVAT`

Amount of the Nth FPC payment: with VAT, without VAT, and VAT component only. Available for N ∈ {1, …, 6}.\
Type: NumberWrapper

#### `$isPaymentFpc{N}Amount`

Boolean indicating if the Nth FPC payment amount (with VAT) is greater than zero. Available for N ∈ {1, …, 6}.\
Type: Boolean

#### `$isPaymentFpc{N}AmountNoVAT`

Boolean indicating if the Nth FPC payment no-VAT amount is greater than zero. Available for N ∈ {1, …, 6}.\
Type: Boolean

#### `$isPaymentFpc{N}AmountJustVAT`

Boolean indicating if the Nth FPC payment VAT-only amount is greater than zero. Available for N ∈ {1, …, 6}.\
Type: Boolean

#### Combination Placeholders

#### `$paymentReservationFeeAndFpc1Amount` / `$paymentReservationFeeAndFpc1AmountNoVAT` / `$paymentReservationFeeAndFpc1AmountJustVAT`

Sum of the Reservation Fee and first FPC payment: with VAT, without VAT, and VAT component only.\
Type: NumberWrapper

#### `$paymentFpc1MinusReservationAmount`

First FPC payment amount minus the Reservation Fee.\
Type: NumberWrapper

### Additional Products

#### `$electrometerPriceNoVat`

Price of the electrometer without VAT (JRD-specific feature).\
Type: NumberWrapper

#### `$electrometerPriceVat`

Price of the electrometer with VAT (JRD-specific feature).\
Type: NumberWrapper

#### `$dealPriceIncludingElectrometerNoVat`

Deal price including electrometer without VAT (JRD-specific feature).\
Type: NumberWrapper

#### `$dealPriceIncludingElectrometerVat`

Deal price including electrometer with VAT (JRD-specific feature).\
Type: NumberWrapper

#### `$customerModificationImplementationPriceVatAmount`

VAT amount on Customer Modification Implementation price.\
Type: NumberWrapper

#### `$customerModificationImplementationPriceNoVat` / `$customerModificationImplementationPriceNoVat_sk` / `$customerModificationImplementationPriceNoVat_cz`

Customer Modification Implementation price without VAT. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

#### `$customerModificationImplementationPriceVat` / `$customerModificationImplementationPriceVat_sk` / `$customerModificationImplementationPriceVat_cz`

Customer Modification Implementation price with VAT. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

### Mortgage Information

#### `$mortgageDeadline`

Deadline to present the mortgage contract.\
Type: DateWrapper | UI: "Deadline to present the mortgage contract" (`business_case_mortgage_agreement_deadline_label`)

#### `$mortgagePresented`

Date when the mortgage contract was presented.\
Type: DateWrapper | UI: "Date of presenting the mortgage contract" (`business_case_param_mortgage_agreement_label`)

#### `$mortgageAmount` / `$mortgageAmount_sk` / `$mortgageAmount_cz`

Mortgage amount. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words) | UI: "Mortgage amount" (`business_case_mortgage_amount_label`)

#### `$mortgageTotal` / `$mortgageTotal_sk` / `$mortgageTotal_cz` / `$isMortgage`

Total mortgage amount. Includes Slovak and Czech word variants. Boolean check `$isMortgage` indicates if mortgage is used.\
Type: NumberWrapper / String (words) / Boolean

#### `$mortgageBankName`

Name of the mortgage bank.\
Type: String | UI: "Mortgage bank" (`business_case_mortgage_bank_label`)

#### `$mortgageBankIn`

Identification number of the mortgage bank.\
Type: String

### Inspection

#### `$technicalInspectionDate`

Date of the Technical Inspection.\
Type: DateWrapper | UI: "Technical inspection" (`business_case_handover_inspection`)

### Notary and Escrow

#### `$notaryName`

Name of the notary.\
Type: String | UI: "Notary name" (`deal_paymentmethod_notaryescrow_name`)

#### `$notaryAddress`

Address of the notary.\
Type: String | UI: "Notary address" (`deal_paymentmethod_notaryescrow_address`)

#### `$notaryAccountNo`

Notary escrow account number.\
Type: String | UI: "Notary escrow account number" (`business_case_param_escrow_notary_account_no`)

#### `$notaryBankName`

Name of the notary's bank.\
Type: String | UI: "Notary bank" (`deal_paymentmethod_notaryescrow_bank`)

#### `$bankEscrowTotal` / `$bankEscrowTotal_sk` / `$bankEscrowTotal_cz` / `$isBankEscrow`

Total amount in bank escrow account. Includes Slovak and Czech word variants. Boolean check `$isBankEscrow` indicates if bank escrow is used.\
Type: NumberWrapper / String (words) / Boolean

#### `$escrowBankName`

Name of the escrow bank.\
Type: String

#### `$escrowBankIn`

Identification number of the escrow bank.\
Type: String

#### `$escrowBankAccountNo`

Escrow bank account number.\
Type: String

#### `$notaryEscrowTotal` / `$notaryEscrowTotal_sk` / `$notaryEscrowTotal_cz` / `$isNotaryEscrow`

Total amount in notary escrow account. Includes Slovak and Czech word variants. Boolean check `$isNotaryEscrow` indicates if notary escrow is used.\
Type: NumberWrapper / String (words) / Boolean | UI: "Notary escrow" (`deal_account_type_escrow_notary`)

#### `$isEscrow`

Boolean indicating whether any escrow account (bank or notary) is used.\
Type: Boolean | UI: "Escrow account" (`business_case_escrow`)

### Cadastre Information

#### `$pledgeCadastreSentDate`

Date of submitting the pledge contract to the cadastre.\
Type: DateWrapper | UI: "Date of submitting the pledge contract to the cadastre" (`business_case_param_pledgecontract_cadastre_sent_label`)

#### `$pledgeCadastreRegNumber`

Pledge contract cadastre registration number.\
Type: String | UI: "Pledge contract cadastre registration number" (`business_case_param_pledgecontract_cadastre_regno_label`)

#### `$pledgeCadastreEntryDate`

Pledge contract cadastre entry date.\
Type: DateWrapper | UI: "Pledge contract cadastre entry date" (`business_case_param_pledgecontract_cadastre_entry_label`)

#### `$cadastreSentDate`

Date of entering the purchase contract cadastre proposal.\
Type: DateWrapper | UI: "Date of entering the purchase contract cadastre proposal" (`business_case_param_cadastre_sent_label`)

#### `$cadastreRegNumber`

Purchase contract cadastre registration number.\
Type: String | UI: "Purchase contract cadastre registration number" (`business_case_param_cadastre_regno_label`)

#### `$cadastreEntryDeadline`

Purchase contract cadastre entry deadline.\
Type: DateWrapper | UI: "Purchase contract cadastre entry deadline" (`business_case_param_cadastre_entry_deadline_label`)

#### `$cadastreEntryDate`

Purchase contract cadastre entry date.\
Type: DateWrapper | UI: "Purchase contract cadastre entry date" (`business_case_param_cadastre_entry_date_label`)

### Salesman Information

#### `$salesman`

Name of the salesman/sales agent assigned to the Deal.\
Type: String

#### `$salesmanEmail`

Email address of the salesman/sales agent.\
Type: String

#### `$salesmanPhone`

Phone number of the salesman/sales agent.\
Type: String

### Customer Flags

#### `$isAdditionalCustomers`

Boolean indicating whether the Deal has additional Customers beyond the primary Customer.\
Type: Boolean

#### `$isOneCustomerOnly`

Boolean indicating whether the Deal has only one Customer (no additional Customers).\
Type: Boolean

#### `$isTwoOrMoreCustomers`

Boolean indicating whether the Deal has two or more Customers.\
Type: Boolean

#### `$isCustomerSharesUndivided`

Boolean indicating whether Customer shares are undivided (when multiple Customers exist).\
Type: Boolean

### Prereservation

#### `$isPrereservation`

Boolean indicating whether the Deal has any prereservations.\
Type: Boolean

### Meter Readings

#### `$metersTotalPriceNoVat` / `$metersTotalPriceNoVat_sk` / `$metersTotalPriceNoVat_cz`

Total price of all meter readings without VAT. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

#### `$metersTotalPriceVat` / `$metersTotalPriceVat_sk` / `$metersTotalPriceVat_cz`

Total price of all meter readings with VAT. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

#### `$metersTotalVat` / `$metersTotalVat_sk` / `$metersTotalVat_cz`

Total VAT amount on all meter readings. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

### Images

#### `$projectLogo`

Project logo image.\
Type: Image

#### `$projectLogoHeader`

Same project logo, provided as a separate placeholder for header positioning.\
Type: Image

#### `$reclamationTechnicianSignature`

Reclamation technician signature image (from the project defect configuration).\
Type: Image

### Aggregated Unit Prices

Dynamic placeholders that sum the discounted prices of all Units of a given type on the Deal. For each `UnitType` and each of its placeholder aliases, two placeholders are generated:

#### `$aggregated_{placeholder}_novat`

Sum of discounted prices (without VAT) for all Units of the given type.\
Type: NumberWrapper

#### `$aggregated_{placeholder}_vat`

Sum of discounted prices (with VAT) for all Units of the given type.\
Type: NumberWrapper

The `{placeholder}` part comes from `UnitType.getPlaceholders()`, which provides multiple naming variants per type. For example, the FLAT unit type generates: `$aggregated_FLAT_novat`, `$aggregated_flat_novat`, `$aggregated_flats_novat` (and corresponding `_vat` variants). Similarly for PARKING → `$aggregated_PARKING_novat`, `$aggregated_parking_novat`, `$aggregated_parkings_novat`, etc.

Examples:

```velocity
Flat total (excl. VAT): $aggregated_flat_novat
Parking total (incl. VAT): $aggregated_parkings_vat
Cellar total: $aggregated_cellar_novat
```

### Unit Type Presence Flags

Dynamic boolean placeholders — one per `UnitType` enum value — indicating whether at least one Unit of that type is present on the Deal.

#### `$is{UnitType}`

Boolean — `true` if the Deal contains at least one Unit of the given type.\
Type: Boolean

The placeholder names come from `UnitType.getIsPlaceholders()`. Representative examples include:

* `$isFlat`, `$isCondominium`, `$isFamilyHouse`, `$isAtelier`, `$isTownhouse`, `$isApartment`
* `$isAccommodationUnit` (plus legacy typo variant `$isAccomodationUnit`)
* `$isNonResidentialUnit`, `$isNonResidentialUnitOther`, `$isCommercialSpace`
* `$isCellar`, `$isParking`, `$isOutdoorParking`, `$isGarage`
* `$isLand`, `$isOffice`, `$isVilla`, `$isStorage`, `$isBikeStand`
* `$isArtWorkshop`, `$isMotorbikeParking`, `$isCreativeWorkshop`, `$isUtilityRoom`
* `$isBerth`, `$isCommunalArea`, `$isConstructionRight`, `$isTechnicalSpace`
* `$isMotorbikeParkingOutdoor`, `$isPropertyManagementUnit`, `$isAttic`, `$isBackyard`
* `$isTerraceUnit`, `$isCubicle`, `$isTenementHouse`, `$isPavedArea`, `$isGaragePosition`, `$isOther`

Usage example:

```velocity
#if($isParking)
  This Deal includes a parking spot.
#end
#if($isCellar)
  This Deal includes a cellar.
#end
```

### Area Accessory Lists

Repeating lists of individual area accessories across all Units on the Deal. Each list contains one entry per Unit that has a non-zero area of the given type.

#### `$balconies`, `$terraces`, `$loggias`, `$gardens`

Repeating lists with one property each:

* `$item.area` — Area in m². Type: NumberWrapper

Usage example:

```velocity
#foreach($item in $balconies)
  Balcony #$foreach.count: $item.area m²
#end

#foreach($item in $terraces)
  Terrace #$foreach.count: $item.area m²
#end
```

> Note: These differ from the scalar `$balconyArea` / `$terraceArea` / etc. in the Legacy Unit Placeholders section, which provide only the area of the *first* Unit. The lists here include areas from *all* Units on the Deal.

### Legacy Unit Placeholders

> Deprecated: These flat-level aliases mirror the first Unit of each type at the top level (outside any loop). They exist for backward compatibility with older templates. Prefer iterating `$units` instead.

#### Flat (primary unit)

* `$flatId`, `$flatDisposition`, `$flatCategory`, `$flatOrientation`, `$flatArea`, `$flatFloorNo`, `$flatFloorNoAbsolute`
* `$flatVAT` — VAT rate formatted as a percentage string (e.g., "15%"). Alias of `$flatPriceVatRate`.
* `$flatPriceVAT` / `$flatPriceNoVAT` / `$flatPriceVatRate` / `$flatPriceVatAmount` (with `_cz`/`_sk` word variants)
* `$flatFinalPriceNoVat` / `$flatFinalPriceVat` / `$flatFinalPriceOnDealNoVat` / `$flatFinalPriceOnDealVat` / `$flatFinalSQMPrice` / `$flatFinalSQMPriceVat` (with `_cz`/`_sk` word variants)

#### Other unit types

Same field pattern with unit-type prefix: `parking`, `cellar`, `garage`, `garageCellar`, `roofParking`, `outdoorParking` (e.g. `$parkingId`, `$parkingPriceVAT`, `$cellarFinalPriceNoVat`, …).

#### Area booleans

* `$isGross` / `$grossArea`
* `$isBalcony` / `$balconyArea`
* `$isTerrace` / `$terraceArea`
* `$isLoggia` / `$loggiaArea`
* `$isGarden` / `$gardenArea`

#### Plan images

* `$flatPlan`, `$parkingPlan`, `$cellarPlan`, `$garagePlan`, `$garageCellarPlan`, `$roofParkingPlan`, `$outdoorParkingPlan`\
  Type: Image — floor plan of the first Unit of each type. Removed from the document if no plan exists.

#### Other placeholders

* `$buildingName`, `$projectName`, `$parcelNumber`, `$unitsDescription`
* `$isPlaceForACar`, `$isGarageCellar`, `$isRoofParking`

***

## Prereservations (Repeating List)

The `$prereservations` list contains all prereservations associated with the Deal.

### How to Use

To iterate over prereservations in your template:

```velocity
#foreach($prereservation in $prereservations)
  Unit: $prereservation.internalId
  Expires: $prereservation.expirationDate
  Queue Position: $prereservation.queuePosition
#end
```

### Available Properties

Each `$prereservation` item has the following properties:

#### `$prereservation.internalId`

Internal ID of the Unit being prereserved.\
Type: String

#### `$prereservation.expirationDate`

Date when the prereservation expires (valid until date).\
Type: DateWrapper

#### `$prereservation.queuePosition`

Position in the prereservation queue.\
Type: NumberWrapper

### Related Placeholders

* `$isPrereservation` - Boolean indicating if any prereservations exist (see [Prereservation](#prereservation) section)

***

## Units (Repeating List)

The `$units` list contains all Units associated with the Deal (Flats, Parking spots, Cellars, Garages, etc.).

### How to Use

To iterate over Units in your template:

```velocity
#foreach($unit in $units)
  Unit: $unit.internalId ($unit.type)
  Building: $unit.building, Floor: $unit.floorNo
  Area: $unit.area, Price: $unit.finalPriceVat
#end
```

### Available Properties

Each `$unit` item has the following properties:

#### Basic Information

**`$unit.type`**

Type of the Unit (e.g., Flat, Parking, Cellar, Garage).\
Type: String

**`$unit.internalId`**

Unique identifier of the Unit within the Project.\
Type: String | UI: "Number in project" (`flat_param_internalid`)

**`$unit.tags`**

Tags associated with the Unit, comma-separated.\
Type: String

**`$unit.disposition`**

Room layout/disposition of the Unit (e.g., "2+kk", "3+1").\
Type: String | UI: "Rooms" (`flat_param_disposition`)

**`$unit.category`**

Category of the Unit (custom classification).\
Type: String

**`$unit.orientation`**

Orientation of the Unit (e.g., North, South, East, West).\
Type: String | UI: "Orientation" (`flat_param_orientation`)

#### Areas

**`$unit.area`**

Net area of the Unit.\
Type: NumberWrapper | UI: "Area" (`flat_param_area`)

**`$unit.areaGross`**

Gross area of the Unit.\
Type: NumberWrapper | UI: "Gross area" (`flat_param_area_gross`)

**`$unit.areaBalcony`**

Balcony area.\
Type: NumberWrapper | UI: "Balcony" (`flat_param_area_balcony`)

**`$unit.areaTerrace`**

Terrace area.\
Type: NumberWrapper | UI: "Terrace" (`flat_param_area_terrace`)

**`$unit.areaLoggia`**

Loggia area.\
Type: NumberWrapper | UI: "Loggia" (`flat_param_area_loggia`)

**`$unit.areaGarden`**

Garden area.\
Type: NumberWrapper | UI: "Garden" (`flat_param_area_garden`)

**`$unit.areaEquivalent`**

Equivalent area (weighted sum of all areas).\
Type: NumberWrapper | UI: "Equivalent area" (`flat_param_area_equivalent`)

#### Location

**`$unit.floorNo`**

Floor number (can be negative for basements).\
Type: String

**`$unit.floorNoAbsolute`**

Absolute value of the floor number.\
Type: String

**`$unit.building`**

Name of the Building containing this Unit.\
Type: String | UI: "Building" (`building`)

**`$unit.project`**

Name of the Project containing this Unit.\
Type: String | UI: "Project" (`project`)

#### Pricelist Prices

**`$unit.priceNoVAT` / `$unit.priceNoVAT_sk` / `$unit.priceNoVAT_cz`**

Original pricelist price without VAT. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words) | UI: "Price w/o VAT" (`flat_param_price`)

**`$unit.priceVAT` / `$unit.priceVAT_sk` / `$unit.priceVAT_cz`**

Original pricelist price with VAT. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words) | UI: "Price w/ VAT" (`flat_param_price_vat`)

**`$unit.priceVatRate`**

VAT rate percentage.\
Type: String

**`$unit.priceVatAmount` / `$unit.priceVatAmount_sk` / `$unit.priceVatAmount_cz`**

VAT amount from pricelist price. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

#### Discounted Prices (After Unit-Level Discounts)

**`$unit.finalPriceSQM` / `$unit.finalPriceSQM_sk` / `$unit.finalPriceSQM_cz`**

Final price per square meter after Unit-level discounts. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words) | UI: "Price per square meter" (`flat_param_price_sqm_novat`)

**`$unit.finalPriceNoVat` / `$unit.finalPriceNoVat_sk` / `$unit.finalPriceNoVat_cz`**

Final price without VAT after Unit-level discounts. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

**`$unit.finalPriceVat` / `$unit.finalPriceVat_sk` / `$unit.finalPriceVat_cz`**

Final price with VAT after Unit-level discounts. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

#### Deal-Level Prices (After Deal-Level Discounts)

**`$unit.finalPriceOnDealNoVat` / `$unit.finalPriceOnDealNoVat_sk` / `$unit.finalPriceOnDealNoVat_cz`**

Final price without VAT after all Deal-level discounts. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

**`$unit.finalPriceOnDealVat` / `$unit.finalPriceOnDealVat_sk` / `$unit.finalPriceOnDealVat_cz`**

Final price with VAT after all Deal-level discounts. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

#### Availability and Queue

**`$unit.availability`**

Current availability status of the Unit (e.g., Available, Reserved, Sold).\
Type: String | UI: "Availability" (`flat_param_availability`)

**`$unit.is_queue`**

Boolean indicating if the Unit has a prereservation queue.\
Type: Boolean

**`$unit.queuePosition`**

Position in the prereservation queue (if applicable).\
Type: NumberWrapper

#### Associated Units and Rooms

**`$unit.isAssociatedUnit`**

Boolean indicating if this Unit has associated Units (e.g., parking with a flat).\
Type: Boolean

**`$unit.associatedUnits` (Nested List)**

List of Units associated with this Unit. Each associated Unit has all the same properties as the main Unit.

Example usage:

```velocity
#foreach($associated in $unit.associatedUnits)
  Associated Unit: $associated.internalId ($associated.type)
#end
```

**`$unit.rooms` (Nested List)**

List of Rooms within this Unit. Each room has:

* `$room.typeName` - Type/name of the room
* `$room.internalId` - Internal identifier
* `$room.area` - Room area (NumberWrapper)
* `$room.note` - Notes about the room

Example usage:

```velocity
#foreach($room in $unit.rooms)
  Room: $room.typeName, Area: $room.area
#end
```

#### Images and Plans

**`$unit.plan`**

Floor plan image for this Unit.\
Type: Image

**`$unit.flr`**

Floor plans map with custom placeholder keys (building/floor level plans).\
Type: Map of Images

### Unit Type-Specific Lists

In addition to `$units`, the system provides type-specific lists:

* `$flats` - Only Flat-type Units
* `$parkings` / `$parking` / `$parkingSpaces` - Parking spot Units
* `$cellars` / `$cellar` - Cellar Units
* `$garages` / `$garage` - Garage Units
* `$outdoorParkings` / `$outdoorParking` - Outdoor parking Units
* `$garageCellar` - Special garage-cellar combined Units
* `$roofParking` - Rooftop parking Units
* `$parkingLikeUnits` - All parking-like Units combined

### Related Placeholders

* `$mainUnitRooms` - List of rooms in the main Unit (see [Meter Readings](#meter-readings) section)

***

## Customers (Repeating List)

The `$customers` list contains all Customers associated with the Deal (primary Customer and additional co-owners).

### How to Use

To iterate over Customers in your template:

```velocity
#foreach($customer in $customers)
  Customer: $customer.fullName
  #if($customer.isNatural)
    Natural Person - Birth Date: $customer.birthDate
  #end
  #if($customer.isLegal)
    Legal Entity - IN: $customer.in
  #end
  Share: $customer.share
#end
```

### Available Properties

Each `$customer` item has the following properties:

#### Customer Type Indicators

**`$customer.isNatural`**

Boolean indicating if this is a Natural Person (individual).\
Type: Boolean

**`$customer.isLegal`**

Boolean indicating if this is a Legal Person (company/organization).\
Type: Boolean

#### Ownership Information

**`$customer.share`**

Customer's ownership share (fraction of the property they own).\
Type: NumberWrapper

**`$customer.base`**

Base value for ownership calculation.\
Type: NumberWrapper

#### Common Properties (Both Natural and Legal Persons)

**`$customer.fullName`**

Full name of the Customer (formatted according to person type).\
Type: String | UI: "Name" (`customer_param_full_name`)

**`$customer.tags`**

Tags associated with the Customer, comma-separated.\
Type: String

**`$customer.isSomeoneAfter`**

Boolean indicating if there are more Customers after this one in the list (useful for comma separators).\
Type: Boolean

**`$customer.hasCurrentlyValidMarketingConsent`**

Boolean indicating whether the Customer currently holds a valid marketing consent — a consent of the developer's notification/marketing consent type that is permanent or whose validity date has not yet passed. Typically used to render a marketing-consent clause only for Customers who have not yet consented (`#if(!$customer.hasCurrentlyValidMarketingConsent) … #end`).\
Type: Boolean

#### Contact Information

**`$customer.isAddress` / `$customer.address`**

Contact address (formatted). Boolean indicates if address exists.\
Type: Boolean / String | UI: "Address" (`address`)

**`$customer.phone`**

Phone number.\
Type: String | UI: "Phone" (`contact_param_phone`)

**`$customer.email`**

Email address.\
Type: String | UI: "E-mail" (`contact_param_email`)

#### Billing Information

**`$customer.isBankConnection` / `$customer.bankConnection`**

Bank connection/name. Boolean indicates if bank connection exists.\
Type: Boolean / String | UI: "Bank connection" (`billing_param_bankconnection`)

**`$customer.accountNumber`**

Bank account number.\
Type: String | UI: "Account number" (`billing_param_accountno`)

**`$customer.iban`**

IBAN (International Bank Account Number).\
Type: String | UI: "IBAN" (`billing_param_iban`)

#### Natural Person-Specific Properties

These properties are only populated for Natural Persons. For Legal Persons, they contain placeholder text "\[Legal entity]".

**`$customer.title`**

Title/honorific (e.g., "Dr.", "Ing.").\
Type: String | UI: "Title" (`person_param_title`)

**`$customer.firstName`**

First name.\
Type: String | UI: "Name" (`person_param_name`)

**`$customer.surname`**

Surname/last name.\
Type: String | UI: "Surname" (`person_param_surname`)

**`$customer.maidenName`**

Maiden name (birth name).\
Type: String | UI: "Maiden name" (`person_param_maidenname`)

**`$customer.birthDate`**

Date of birth.\
Type: DateWrapper | UI: "Date of birth" (`person_param_birthdate`)

**`$customer.occupation`**

Occupation/profession.\
Type: String | UI: "Occupation" (`person_param_occupation`)

**`$customer.personalNumber`**

Personal identification number.\
Type: String | UI: "Personal number" (`person_param_personal_number`)

**`$customer.maritalStatus`**

Marital status.\
Type: String | UI: "Marital status" (`person_param_maritalstatus`)

**`$customer.nationality`**

Nationality.\
Type: String | UI: "Nationality" (`person_param_nationality`)

#### Permanent Address (Natural Persons)

**`$customer.isPermanentAddress` / `$customer.permanentAddress`**

Permanent address (formatted). Boolean indicates if address exists.\
Type: Boolean / String | UI: "Permanent address" (`address_permanent`)

**`$customer.isPermanentAddressStreet` / `$customer.permanentAddressStreet`**

Street and number. Boolean indicates if street exists.\
Type: Boolean / String | UI: "Street and No." (`address_param_street`)

**`$customer.isPermanentAddressCity` / `$customer.permanentAddressCity`**

City/town. Boolean indicates if city exists.\
Type: Boolean / String | UI: "City/Town" (`address_param_city`)

**`$customer.isPermanentAddressZip` / `$customer.permanentAddressZip`**

ZIP/postal code. Boolean indicates if ZIP exists.\
Type: Boolean / String | UI: "ZIP" (`address_param_zip`)

**`$customer.isPermanentAddressState` / `$customer.permanentAddressState`**

State/country. Boolean indicates if state exists.\
Type: Boolean / String | UI: "State/Country" (`address_param_state`)

**`$customer.isPermanentAddressNote` / `$customer.permanentAddressNote`**

Address note. Boolean indicates if note exists.\
Type: Boolean / String | UI: "Note" (`address_param_note`)

#### Legal Person-Specific Properties

These properties are only populated for Legal Persons. For Natural Persons, they contain placeholder text "\[Person]".

**`$customer.in`**

Identification Number (company registration number).\
Type: String | UI: "IN" (`person_param_in`)

**`$customer.tin`**

Tax Identification Number.\
Type: String | UI: "VAT ID" (`person_param_tin`)

**`$customer.vatid`**

VAT ID with country prefix (e.g., "SK" + TIN for Slovak companies).\
Type: String | UI: "VAT ID (SK)" (`person_param_vatid`)

**`$customer.executive`**

Executive/CEO name (with role if specified).\
Type: String | UI: "Executive" (`person_legal_executive`)

**`$customer.executivePersonalNumber`**

Executive's personal identification number.\
Type: String | UI: "Personal number" (`person_param_personal_number`)

**`$customer.executiveBirthDate`**

Executive's date of birth.\
Type: DateWrapper | UI: "Date of birth" (`person_param_birthdate`)

**`$customer.deputy`**

Deputy/Manager name (with role if specified).\
Type: String | UI: "Deputy" (`person_legal_deputy`)

**`$customer.deputyPersonalNumber`**

Deputy's personal identification number.\
Type: String | UI: "Personal number" (`person_param_personal_number`)

**`$customer.deputyBirthDate`**

Deputy's date of birth.\
Type: DateWrapper | UI: "Date of birth" (`person_param_birthdate`)

### Related Placeholders

* `$isOneCustomerOnly` - Boolean indicating only one Customer on the Deal (see [Customer Flags](#customer-flags) section)
* `$isTwoOrMoreCustomers` - Boolean indicating multiple Customers on the Deal
* `$isAdditionalCustomers` - Boolean indicating additional Customers exist beyond the primary
* `$isCustomerSharesUndivided` - Boolean indicating ownership shares are undivided
* `$customer1Name` through `$customer6Name` - Individual Customer names (supports up to 6 Customers)
* `$customer1Share` through `$customer6Share` - Individual Customer ownership shares
* `$customer1Base` through `$customer6Base` - Individual Customer base values

***

## Payments Prescribed (Repeating List)

The `$paymentsPrescribed` list contains all scheduled/prescribed Payments for the Deal (payment schedule).

### How to Use

To iterate over Payments Prescribed in your template:

```velocity
#foreach($payment in $paymentsPrescribed)
  Payment: $payment.type
  Amount: $payment.amountVat
  Deadline: $payment.deadline
  #if($payment.isPaid)
    Paid on: $payment.paidOn
  #end
#end
```

### Available Properties

Each `$payment` item has the following properties:

#### Payment Classification

**`$payment.type`**

Type of the prescribed Payment (localized text, e.g., "Reservation", "Down Payment", "Final Payment").\
Type: String | UI: "Type" (`type`)

**`$payment.typeId`**

Type identifier (enum label, technical name).\
Type: String

**`$payment.paymentMethod`**

Payment method (localized text, e.g., "Bank Transfer", "Cash", "Card").\
Type: String | UI: "Account type" (`incoming_payment_param_accounttype`)

**`$payment.paymentMethodId`**

Payment method identifier (enum label, technical name).\
Type: String

#### Payment Amounts

**`$payment.amountVat`**

Amount including VAT.\
Type: NumberWrapper | UI: "Amount including VAT" (`business_case_payment_amount`)

**`$payment.amountNoVat`**

Amount excluding VAT.\
Type: NumberWrapper

**`$payment.vatAmount`**

VAT amount.\
Type: NumberWrapper

**`$payment.vatRate`**

VAT rate percentage (formatted with "%" suffix).\
Type: String

#### Payment Timing

**`$payment.deadline`**

Due date for this Payment (calculated deadline).\
Type: DateWrapper | UI: "Due date" (`business_case_payment_deadline`)

**`$payment.substituteDeadline`**

Deprecated: Substitute deadline (always empty, not used in CRM anymore but may still exist in old templates).\
Type: DateWrapper

#### Payment Status

**`$payment.isPaid`**

Boolean indicating if the Payment has been fully paid.\
Type: Boolean | UI: "Paid?" (`business_case_payment_paid`)

**`$payment.paidOn`**

Date when the Payment was paid (if paid).\
Type: DateWrapper | UI: "Paid date" (`business_case_payment_paiddate`)

**`$payment.paidAmount`**

Amount already paid (with VAT).\
Type: NumberWrapper | UI: "Paid w/ VAT" (`business_case_payment_paid_amount`)

**`$payment.pendingAmount`**

Amount still pending/outstanding (with VAT).\
Type: NumberWrapper | UI: "Pending w/ VAT" (`business_case_payment_pending_amount`)

#### Additional Information

**`$payment.note`**

Notes or comments about the Payment.\
Type: String

### Related Placeholders

* See [Payment Sums and Balances](#payment-sums-and-balances) section for aggregate payment calculations
* See [Payment Methods](#payments-payment-methods-repeating-list) section for payment method breakdowns

***

## Payments Incoming (Repeating List)

The `$paymentsIncoming` list contains all received/incoming Payments for the Deal (actual payments received from Customers).

### How to Use

To iterate over Payments Incoming in your template:

```velocity
#foreach($payment in $paymentsIncoming)
  Payment received: $payment.amountVat
  Date: $payment.paidOn
  Method: $payment.paymentMethod
  #if($payment.isPrescribedPayment)
    Matched to: $payment.prescribedPayment.type
  #end
#end
```

### Available Properties

Each `$payment` item has the following properties:

#### Payment Date and Method

**`$payment.paidOn`**

Date when the Payment was received.\
Type: DateWrapper | UI: "Paid date" (`business_case_payment_paiddate`)

**`$payment.paymentMethod`**

Payment method used (localized text, e.g., "Bank Transfer", "Cash", "Card").\
Type: String | UI: "Account type" (`incoming_payment_param_accounttype`)

**`$payment.paymentMethodId`**

Payment method identifier (enum label, technical name).\
Type: String

#### Payment Amounts

**`$payment.amountVat`**

Amount including VAT.\
Type: NumberWrapper | UI: "Amount including VAT" (`business_case_payment_amount`)

**`$payment.amountNoVat`**

Amount excluding VAT.\
Type: NumberWrapper

**`$payment.vatAmount`**

VAT amount.\
Type: NumberWrapper

**`$payment.vatRate`**

VAT rate percentage (formatted with "%" suffix).\
Type: String

#### Bank Account Information

**`$payment.isBankAccount`**

Boolean indicating if a bank account is associated with this Payment.\
Type: Boolean

**`$payment.bankAccount` (Nested Object)**

Bank account details where the Payment was received. Has the following properties:

* `$payment.bankAccount.name` - Bank account name (String)
* `$payment.bankAccount.isAllPaymentsCustomChanges` - Boolean indicating if all payments to this account are Custom Changes
* `$payment.bankAccount.bankCode` - Bank code (String)
* `$payment.bankAccount.accountNumber` - Account number (String)

Example usage:

```velocity
#if($payment.isBankAccount)
  Received in account: $payment.bankAccount.name
  Account number: $payment.bankAccount.accountNumber
#end
```

#### Sender Information

**`$payment.senderAccountNumber`**

Sender's bank account number (from which the Payment was sent).\
Type: String

**`$payment.senderAccountHolder`**

Name of the account holder who sent the Payment.\
Type: String

#### Prescribed Payment Matching

**`$payment.isPrescribedPayment`**

Boolean indicating if this incoming Payment is matched to a prescribed Payment.\
Type: Boolean

**`$payment.prescribedPayment` (Nested Object)**

Details of the matched prescribed Payment (if applicable). Has the following properties:

* `$payment.prescribedPayment.type` - Type of the prescribed Payment (String)
* `$payment.prescribedPayment.typeId` - Type identifier (String)
* `$payment.prescribedPayment.amountVat` - Prescribed amount with VAT (NumberWrapper)

Example usage:

```velocity
#if($payment.isPrescribedPayment)
  This payment covers: $payment.prescribedPayment.type
  Expected amount: $payment.prescribedPayment.amountVat
#end
```

#### Payment Identification

**`$payment.externalId`**

External identifier for the Payment (from external system).\
Type: String

**`$payment.variableSymbol`**

Variable symbol / pairing symbol used to match the Payment.\
Type: String

#### Custom Change Classification

**`$payment.isCustomChangePayment`**

Boolean indicating if this is a Custom Change payment (payment for Custom Changes/modifications).\
Type: Boolean

#### Additional Information

**`$payment.note`**

Notes or comments about the Payment.\
Type: String

### Related Placeholders

* See [Payment Sums and Balances](#payment-sums-and-balances) section for aggregate payment calculations
* See [Payments Prescribed](#payments-prescribed-repeating-list) section for scheduled payments that these incoming payments may match to

***

## Payments (Payment Methods) (Repeating List)

The `$payments` list contains prescribed payments grouped by payment method with additional bank and escrow details for each payment.

### How to Use

To iterate over payments by method in your template:

```velocity
#foreach($payment in $payments)
  Payment: $payment.type
  Method: $payment.method
  Amount: $payment.amount

  #if($payment.isMortgage)
    Mortgage Bank: $payment.mortgageBankName
  #end

  #if($payment.isNotaryEscrow)
    Notary: $payment.notaryName
    Escrow Account: $payment.notaryAccountNo
  #end

  #if($payment.isBankEscrow)
    Escrow Bank: $payment.escrowBankName
    Account: $payment.escrowBankAccountNo
  #end
#end
```

### Available Properties

Each `$payment` item has the following properties:

#### Payment Classification

**`$payment.type`**

Type of the prescribed payment (localized text, e.g., "Reservation", "Down Payment", "Final Payment").\
Type: String

**`$payment.method`**

Payment method (localized text, e.g., "Direct Transfer", "Mortgage", "Notary Escrow", "Bank Escrow").\
Type: String

#### Payment Amount

**`$payment.amount` / `$payment.amount_sk` / `$payment.amount_cz`**

Payment amount with VAT. Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words)

#### Payment Method Flags

**`$payment.isEscrow`**

Boolean indicating if this payment uses any escrow method (bank or notary).\
Type: Boolean

**`$payment.isBankEscrow`**

Boolean indicating if this payment uses bank escrow.\
Type: Boolean

**`$payment.isNotaryEscrow`**

Boolean indicating if this payment uses notary escrow.\
Type: Boolean

**`$payment.isMortgage`**

Boolean indicating if this payment is paid via mortgage.\
Type: Boolean

#### Notary Information (for Notary Escrow payments)

**`$payment.notaryName`**

Name of the notary (empty string if not notary escrow).\
Type: String

**`$payment.notaryAddress`**

Address of the notary (empty string if not notary escrow).\
Type: String

**`$payment.notaryAccountNo`**

Notary escrow account number (empty string if not notary escrow).\
Type: String

**`$payment.notaryBankName`**

Name of the notary's bank (empty string if not notary escrow).\
Type: String

#### Bank Escrow Information (for Bank Escrow payments)

**`$payment.escrowBankName`**

Name of the escrow bank (empty string if not bank escrow).\
Type: String

**`$payment.escrowBankIn`**

Identification number of the escrow bank (empty string if not bank escrow).\
Type: String

**`$payment.escrowBankAccountNo`**

Escrow bank account number (empty string if not bank escrow).\
Type: String

#### Mortgage Information (for Mortgage payments)

**`$payment.mortgageBankName`**

Name of the mortgage bank (empty string if not mortgage).\
Type: String

**`$payment.mortgageBankIn`**

Identification number of the mortgage bank (empty string if not mortgage).\
Type: String

### Related Placeholders

* See [Payment Sums and Balances](#payment-sums-and-balances) section for totals by payment method
* See [Notary and Escrow](#notary-and-escrow) section for overall notary/escrow information
* See [Mortgage Information](#mortgage-information) section for overall mortgage details

***

## Additional Products (Repeating List)

The `$additional_products` list contains all Additional Products on the Deal (e.g., parking spots, cellars, electrometers, Custom Changes, stamps, etc.).

### How to Use

To iterate over Additional Products in your template:

```velocity
#foreach($product in $additional_products)
  Product: $product.type
  Number: $product.number
  Description: $product.description
  Cost: $product.cost_vat
  #if($product.deadline)
    Payment deadline: $product.deadline
  #end
#end
```

### Available Properties

Each `$product` item has the following properties:

#### Product Classification

**`$product.type`**

Type of the Additional Product (localized text, e.g., "Electrometer", "Customer modification - implementation", "Stamp").\
Type: String | UI: "Type" (`type`)

**`$product.known_type`**

Known product type identifier (enum label, e.g., "ELECTROMETER", "CUSTOMER\_MODIFICATION"). Empty for custom "Other" types.\
Type: String

**`$product.other_type`**

Custom type name (only populated when the product type is "Other").\
Type: String | UI: "Other type" (`bc_document_other_type`)

#### Product Identification

**`$product.number`**

Internal identifier/number for this Additional Product.\
Type: String | UI: "Number" (`flats_number`)

**`$product.description`**

Description of the Additional Product.\
Type: String | UI: "Description" (`poi_param_description`)

#### Cost (Internal Cost)

**`$product.cost_vat` / `$product.cost_vat_sk` / `$product.cost_vat_cz`**

Cost with VAT (internal cost to the developer). Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words) | UI: "Price w/ VAT" (`flat_param_price_vat`)

**`$product.cost_no_vat` / `$product.cost_no_vat_sk` / `$product.cost_no_vat_cz`**

Cost without VAT (internal cost to the developer). Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words) | UI: "Price w/o VAT" (`flat_param_price`)

#### Price (Customer-Facing Price)

**`$product.price_vat` / `$product.price_vat_sk` / `$product.price_vat_cz`**

Price with VAT charged to the Customer (from linked prescribed Payment). Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words) | UI: "Price w/ VAT" (`flat_param_price_vat`)

**`$product.price_no_vat` / `$product.price_no_vat_sk` / `$product.price_no_vat_cz`**

Price without VAT charged to the Customer (from linked prescribed Payment). Includes Slovak and Czech word variants.\
Type: NumberWrapper / String (words) | UI: "Price w/o VAT" (`flat_param_price`)

#### Payment and Document Information

**`$product.deadline`**

Payment deadline for this Additional Product (from linked prescribed Payment).\
Type: DateWrapper | UI: "Due date" (`business_case_payment_deadline`)

**`$product.signature_date`**

Signature date of the Additional Product contract (from linked document).\
Type: DateWrapper | UI: "Signature date" (`business_case_document_signeddate`)

### Related Placeholders

* See [Additional Products](#additional-products) section in Simple Placeholders for aggregate Additional Product information
* See [Payments Prescribed](#payments-prescribed-repeating-list) section for payment details that may be linked to Additional Products

***

## Discounts (Repeating List)

The `$discounts` list contains all Discounts applied to the Deal (Deal-level discounts that reduce the total price).

### How to Use

To iterate over Discounts in your template:

```velocity
#foreach($discount in $discounts)
  Discount #$discount.ordinal
  #if($discount.isPercentage)
    Percentage: $discount.percentage%
  #end
  #if($discount.isAmount)
    Amount: $discount.amountVat
  #end
  Deal price after discount: $discount.dealPriceVat
  #if($discount.isNote)
    Note: $discount.note
  #end
#end
```

### Available Properties

Each `$discount` item has the following properties:

#### Discount Identification

**`$discount.ordinal`**

Discount number/position in the sequence (1, 2, 3, etc.).\
Type: String

#### Discount Scope

**`$discount.isAllUnits`**

Boolean indicating if this Discount applies to all Units on the Deal.\
Type: Boolean

#### Discount Type

**`$discount.isPercentage`**

Boolean indicating if this is a percentage-based Discount.\
Type: Boolean

**`$discount.isAmount`**

Boolean indicating if this is a fixed amount Discount.\
Type: Boolean

#### Discount Values

**`$discount.percentage`**

Percentage value (if this is a percentage-based Discount).\
Type: NumberWrapper | UI: "Percentage" (`percentage`)

**`$discount.amountNoVat`**

Discount amount without VAT (if this is a fixed amount Discount).\
Type: NumberWrapper | UI: "Amount" (`amount`)

**`$discount.amountVat`**

Discount amount with VAT (if this is a fixed amount Discount).\
Type: NumberWrapper | UI: "Amount" (`amount`)

#### Deal Price After Discount

**`$discount.dealPriceNoVat`**

Deal price without VAT after applying this Discount (cumulative with previous Discounts).\
Type: NumberWrapper

**`$discount.dealPriceVat`**

Deal price with VAT after applying this Discount (cumulative with previous Discounts).\
Type: NumberWrapper

#### Discount Note

**`$discount.isNote`**

Boolean indicating if a note/reason exists for this Discount.\
Type: Boolean

**`$discount.note`**

Note or reason for applying this Discount.\
Type: String | UI: "Note" (`note`)

#### Affected Units

**`$discount.units` (Nested List)**

List of Units this Discount applies to. Each Unit has all the same properties as in the [Units](#units-repeating-list) section.

Example usage:

```velocity
#if(!$discount.isAllUnits)
  This discount applies to:
  #foreach($unit in $discount.units)
    - $unit.internalId ($unit.type)
  #end
#end
```

### Related Placeholders

* See [Prices and Discounts](#prices-and-discounts) section in Simple Placeholders for aggregate discount calculations
* See [Units](#units-repeating-list) section for details on Unit properties within the discount's units list

***

## Standards (Repeating List)

The `$standards` list contains all standard choices made for the Deal (used in standard choice documents).

### How to Use

To iterate over standard choices in your template:

```velocity
#foreach($standard in $standards)
  Category: $standard.category
  Group: $standard.group
  Choice: $standard.choice

  #if($standard.summary)
    Summary: $standard.summary
  #end

  Selected by: $standard.customerName
  Date: $standard.createdOn
#end
```

### Available Properties

Each `$standard` item has the following properties:

#### `$standard.customerName`

Name of the customer who made this standard choice.\
Type: String

#### `$standard.createdOn`

Date when this standard choice was created/selected.\
Type: DateWrapper

#### `$standard.category`

Category of the standard (e.g., "Flooring", "Kitchen", "Bathroom").\
Type: String

#### `$standard.group`

Group within the category (e.g., "Living Room", "Master Bedroom").\
Type: String

#### `$standard.choice`

The specific choice/selection made (e.g., "Oak Parquet", "White Tiles").\
Type: String

#### `$standard.summary`

Summary or description of the standard choice.\
Type: String

#### `$standard.imageUrl`

URL to the image of the selected standard (may be empty).\
Type: String

Example with image:

```velocity
#foreach($standard in $standards)
  $standard.category - $standard.choice
  #if($standard.imageUrl)
    Image: $standard.imageUrl
  #end
#end
```

***

## Meter Readings (Repeating List)

The `$meters` list contains one row per meter reading recorded on the Deal's handover inspection.

### How to Use

```velocity
#foreach($meter in $meters)
  Type: $meter.type_with_units
  Reading: $meter.reading
  Number: $meter.number
  Total: $meter.totalPriceVat
#end
```

### Available Properties

#### Meter Identification

**`$meter.type`**

Meter type name (localized).\
Type: String

**`$meter.type_with_units`**

Meter type name including the unit of measurement.\
Type: String

**`$meter.unit`**

Unit of measurement (e.g. "kWh", "m³").\
Type: String

#### Meter Reading Values

**`$meter.reading` / `$meter.is_reading`**

Meter reading value. Boolean check `$meter.is_reading` indicates if a reading value is present.\
Type: NumberWrapper / Boolean

**`$meter.number` / `$meter.is_number`**

Meter identifier number. Boolean check `$meter.is_number` indicates if a number is present.\
Type: String / Boolean

**`$meter.eic` / `$meter.is_eic`**

EIC code of the meter. Boolean check `$meter.is_eic` indicates if an EIC code is present.\
Type: String / Boolean

#### Pricing

**`$meter.unitPriceNoVat` / `$meter.is_unitPriceNoVat`**

Unit price without VAT. Boolean check `$meter.is_unitPriceNoVat` indicates if a unit price is present.\
Type: NumberWrapper / Boolean

**`$meter.unitPriceVat` / `$meter.is_unitPriceVat`**

Unit price with VAT. Boolean check `$meter.is_unitPriceVat` indicates if a unit price is present.\
Type: NumberWrapper / Boolean

**`$meter.vatRate` / `$meter.is_vatRate`**

VAT rate (formatted with "%" suffix). Boolean check `$meter.is_vatRate` indicates if a VAT rate is present.\
Type: String / Boolean

**`$meter.totalPriceNoVat` / `$meter.is_totalPriceNoVat`**

Total price without VAT (reading × unit price). Boolean check `$meter.is_totalPriceNoVat` indicates if present.\
Type: NumberWrapper / Boolean

**`$meter.totalPriceVat` / `$meter.is_totalPriceVat`**

Total price with VAT (reading × unit price). Boolean check `$meter.is_totalPriceVat` indicates if present.\
Type: NumberWrapper / Boolean

**`$meter.vat`**

VAT amount on the total price.\
Type: NumberWrapper

**`$meter.note` / `$meter.is_note`**

Additional notes for the meter reading. Boolean check `$meter.is_note` indicates if a note is present.\
Type: String / Boolean

> Related: The simple placeholders `$metersTotalPriceNoVat`, `$metersTotalPriceVat`, and `$metersTotalVat` (documented in Simple Placeholders → [Meter Readings](#meter-readings)) provide aggregate totals across all meters.

***

## Documents (Type-Specific Placeholders)

The system provides individual placeholders for each Deal Document type (not a repeating list).

### How to Use

Access document information by document type:

```velocity
Purchase Contract:
  Type: $documentPURCHASE_CONTRACTType
  Deadline: $documentPURCHASE_CONTRACTDeadline
  Signed: $documentPURCHASE_CONTRACTSignatureDate
  #if($is_documentPURCHASE_CONTRACTSigned)
    Status: Signed
  #end
```

### Available Document Types

For each document type in the system, the following placeholders are available:

#### `$document{TYPE}Type`

The localized name of the document type.\
Type: String

#### `$document{TYPE}Deadline`

Signature deadline for this document.\
Type: DateWrapper | UI: "Deadline" (`business_case_document_deadline`)

#### `$document{TYPE}SignatureDate`

Date when the document was signed (if signed).\
Type: DateWrapper | UI: "Signature date" (`business_case_document_signeddate`)

#### `$is_document{TYPE}Signed`

Boolean indicating if the document has been signed.\
Type: Boolean

### Common Document Types

Replace `{TYPE}` with one of these document type identifiers:

* `PURCHASE_CONTRACT` - Purchase contract
* `RESERVATION_CONTRACT` - Reservation contract
* `FUTURE_PURCHASE_CONTRACT` - Future purchase contract
* `INVOICE` - Invoice
* `RECLAMATION_RECEIVED_PROTOCOL` - Reclamation received protocol
* `RECLAMATION_PROTOCOL_GENERAL_CONTRACTOR` - Reclamation protocol for general contractor
* `DEFECT_RECEIVED_CONFIRMATION` - Defect received confirmation
* `UNIT_HANDOVER_PROTOCOL` - Unit handover protocol
* And other document types configured in the system. Check with Engineering for their exact names.

### Example Usage

```velocity
#if($documentPURCHASE_CONTRACTSignatureDate)
  Purchase Contract signed on: $documentPURCHASE_CONTRACTSignatureDate
#else
  Purchase Contract deadline: $documentPURCHASE_CONTRACTDeadline
#end

#if($is_documentINVOICESigned)
  Invoice has been signed.
#end
```

### Related Placeholders

* See [Deal Overview](#deal-overview) section for document-related Deal status information

***

## Inspection and Defects

Inspection and defect information is available through simple placeholders and complex nested objects.

### Simple Placeholders

See [Inspection](#inspection) section in Simple Placeholders for:

* `$inspectionDate` - Date of the handover inspection
* `$technicalInspectionDate` - Date of the Technical Inspection

### Inspection Objects (Nested Objects)

Both `$handover` and `$tech_inspection` are nested objects containing inspection details. They share many common properties but each has some specific fields.

#### Common Properties (Both Inspections)

The following properties are available on both `$handover.*` and `$tech_inspection.*`:

Dates:

* `planned_date` / `planned_date_time` / `is_planned_date` - Planned inspection date (DateWrapper / Boolean)
* `actual_date` / `actual_date_time` / `is_actual_date` - Actual inspection date (DateWrapper / Boolean)

People:

* `responsible_person` / `is_responsible_person` - Responsible person name (String / Boolean)
* `name_customer` - Customer name (String)
* `name_construction_representative` / `is_name_construction_representative` - Construction representative name (String / Boolean)
* `phone_construction_representative` / `is_phone_construction_representative` - Construction representative phone (String / Boolean)
* `person_present` / `is_person_present` - Person present name (String / Boolean)

Signatures (Images):

* `signature_technician` / `is_signature_technician` - Technician signature (Image / Boolean)
* `signature_customer` / `is_signature_customer` - Customer signature (Image / Boolean)
* `signature_constr_rep` / `is_signature_construction_representative` - Construction representative signature (Image / Boolean)

Defects and Documentation:

* `defects` - List of defects found during inspection (nested list)
* `person_present_docs` - List of documents for person present (each with `name` and `file` image)
* `notes` / `is_notes` - Inspection notes (String / Boolean)

Example usage:

```velocity
#if($handover.is_actual_date)
  Handover completed on: $handover.actual_date
  Responsible: $handover.responsible_person
  #if(!$handover.defects.isEmpty())
    Defects found: $handover.defects.size()
  #end
#end

#if($tech_inspection.is_actual_date)
  Technical Inspection completed on: $tech_inspection.actual_date
#end
```

#### Handover-Specific Properties

The `$handover` object has additional properties specific to handover inspections:

Access Tokens (Nested List):

* `access_tokens` - List of keys, access cards, and other access items, each with:
  * `type` - Type of access token (String)
  * `amount` / `is_amount` - Quantity (NumberWrapper with word variants / Boolean)
  * `identifiers` / `is_identifiers` - Identifier codes/numbers (String / Boolean)
  * `note` / `is_note` - Notes (String / Boolean)

Resident Information:

* `license_plates` - List of vehicle license plate numbers (List of Strings)
* `number_of_people_living` / `is_number_of_people_living` - Number of people living in the unit (NumberWrapper with word variants / Boolean)
* `resident_name` / `is_resident_name` - Resident's name (String / Boolean)
* `resident_email` / `is_resident_email` - Resident's email (String / Boolean)
* `resident_phone` / `is_resident_phone` - Resident's phone (String / Boolean)
* `resident_address` / `is_resident_address` - Resident's address (String / Boolean)

Labeling:

* `name_on_bell` / `is_name_on_bell` - Name to display on doorbell (String / Boolean)
* `name_on_mailbox` / `is_name_on_mailbox` - Name to display on mailbox (String / Boolean)

Acceptance:

* `accepted` - Boolean indicating if handover was accepted by customer

Example usage:

```velocity
#if($handover.is_actual_date)
  Access tokens provided:
  #foreach($token in $handover.access_tokens)
    - $token.type: $token.amount
    #if($token.is_identifiers)
      Identifiers: $token.identifiers
    #end
  #end

  #if($handover.is_resident_name)
    Resident: $handover.resident_name
    #if($handover.is_resident_phone)
      Phone: $handover.resident_phone
    #end
  #end

  #if($handover.accepted)
    Handover was accepted by customer.
  #end
#end
```

### Inspection Items (Repeating List)

The `$inspection_items` (or shorter alias `$insp_items`) list contains inspection checklist items organized by item type (e.g., Windows, Doors, Flooring).

Each item in the list has:

* `name` - Item type name (String)
* `tech_inspection` (or `tech_insp`) - Technical inspection data for this item type (nested object)
* `handover` - Handover inspection data for this item type (nested object)

Both `tech_inspection` and `handover` nested objects contain:

* `is_fine` - Boolean indicating no problems found
* `is_problem` - Boolean indicating problems found
* `is_defect` - Boolean indicating defects exist for this item
* `defect` - First defect for this item (if any)
* `defects` - List of all defects for this item

Example usage:

```velocity
#foreach($item in $inspection_items)
  Item: $item.name

  #if($item.tech_inspection.is_problem)
    Technical Inspection found issues:
    #foreach($defect in $item.tech_inspection.defects)
      - $defect.description
    #end
  #end

  #if($item.handover.is_fine)
    Handover: No issues
  #end
#end
```

### Inspection Rooms (Repeating List)

The `$inspection_rooms` (or shorter alias `$insp_rooms`) list contains inspection data organized by room/location.

Each room in the list has:

* `name` - Room name/location (String)
* `tech_inspection` (or `tech_insp`) - Technical inspection data for this room (nested object)
* `handover` - Handover inspection data for this room (nested object)

Both `tech_inspection` and `handover` nested objects contain:

* `is_fine` - Boolean indicating no defects in this room
* `is_problem` - Boolean indicating defects exist in this room
* `is_prevents_flat_usage` - Boolean indicating critical defects that prevent flat usage
* `defects` - List of defects found in this room

Example usage:

```velocity
#foreach($room in $inspection_rooms)
  Room: $room.name

  #if($room.tech_inspection.is_problem)
    Technical Inspection defects in this room:
    #foreach($defect in $room.tech_inspection.defects)
      - $defect.description
      #if($defect.is_prevents_flat_usage)
        (CRITICAL - prevents usage)
      #end
    #end
  #end

  #if($room.handover.is_fine)
    Handover: Room accepted without issues
  #end
#end
```

### Meter Readings

See [Meter Readings](#meter-readings) section in Simple Placeholders for meter-related placeholders.

***

## Custom Attributes

Custom attributes can be defined for various entities (Customers, Units, Buildings, Projects, Deals) in the system. These attributes are accessible via their attribute keys and appear as additional placeholders in templates.

The availability and names of custom attribute placeholders depend on your system configuration.

### How Custom Attributes Work

When a custom attribute is defined in your system, it becomes available as a placeholder using its attribute key. Each custom attribute also gets a boolean check placeholder with the `is_` prefix to test if the attribute has a value.

### Attribute Scope

Custom attributes appear in different parts of templates depending on their scope:

* Deal attributes - Available as simple placeholders at the document level (e.g., `$attribute_key`)
* Project attributes - Available as simple placeholders at the document level (e.g., `$attribute_key`)
* Unit attributes - Available within the `#foreach($unit in $units)` loop (e.g., `$attribute_key` inside the loop)
* Customer attributes - Available within the `#foreach($customer in $customers)` loop (e.g., `$attribute_key` inside the loop)

### Example: Deal/Project Custom Attributes

Deal and Project attributes are available directly as simple placeholders throughout the template:

```velocity
#if($is_deal_special_terms)
  Special Terms: $deal_special_terms
#end

#if($is_project_construction_year)
  Construction Year: $project_construction_year
#end
```

### Example: Unit Custom Attributes

If you have a custom attribute with key `flat_advert_description` defined for Units:

```velocity
#foreach($unit in $units)
  Unit: $unit.internalId
  #if($is_flat_advert_description)
    Advertisement Description: $flat_advert_description
  #end
#end
```

Available placeholders:

* `$flat_advert_description` - The attribute value (String)
* `$is_flat_advert_description` - Boolean indicating if the attribute has a value

### Example: Customer Custom Attributes

If you have a custom attribute with key `customer_name_paternal` defined for Customers:

```velocity
#foreach($customer in $customers)
  Customer: $customer.fullName
  #if($is_customer_name_paternal)
    Paternal Name: $customer_name_paternal
  #end
#end
```

Available placeholders:

* `$customer_name_paternal` - The attribute value (String)
* `$is_customer_name_paternal` - Boolean indicating if the attribute has a value

### Attribute Types

Custom attributes support different data types. All use the placeholder `$attribute_key` (where `attribute_key` is the attribute's key). The value returned depends on the attribute type:

* String: The text value
* Integer/Numeric: The numeric value (also available as word variants: `$attribute_key_sk`, `$attribute_key_cz`)
* Boolean: `true` or `false`
* Date: Date value (formatted according to user preferences)
* Enum (single-select): The localized name of the selected option
* Option (multi-select): Comma-separated localized names of all selected options

All attribute types also support `$is_attribute_key` to check if a value is set.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dev.realpadsoftware.com/placeholders/document-templating/deal-documents.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
