# NPV Editor

## Overview

The **NPV Editor** is where the salesman builds and customizes a payment plan with the client, before the unit enters the Unit Sales Pipeline. It is accessed from inside the **Unit Details** screen by clicking the **NPV** button on a payment plan.

---

## Auto-Rebalancing Logic

Whenever an installment amount is changed, the system automatically redistributes the difference across the remaining installments to keep the total equal to the unit price:

- **If the edited amount is less than the standard installment** — the difference is distributed equally across all other unlocked installments.
- **If the edited amount is more than the standard installment** — the extra amount is deducted equally from all other unlocked installments.

Any installment that has a **radio button selected** is **locked** — it will not be touched by the rebalancing engine regardless of changes made to other installments.

---

## Accessing the NPV Editor

1. Go to **Units** and open the unit the client is interested in.
2. In the Unit Details screen, find the payment plan section.
3. Select the payment plan template and click **NPV**.
4. The NPV Editor opens. [![image.png](https://knowledge-base.profitcrm.net/uploads/images/gallery/2026-07/scaled-1680-/ncKimage.png)](https://knowledge-base.profitcrm.net/uploads/images/gallery/2026-07/ncKimage.png)

---

## The Editor Screen

The NPV Editor shows two tables side by side:

<table id="bkmrk-side-description-ori"><thead><tr><th>Side</th><th>Description</th></tr></thead><tbody><tr><td>**Original Payments** (left)</td><td>The original payment plan template — read-only reference.</td></tr><tr><td>**Editable Payments** (right)</td><td>The working copy the salesman adjusts with the client.</td></tr></tbody></table>

Above the editable table:

- **Unit Info bar** — shows Project, Building, Building Segment, Unit Name, Delivery Date, Space, View, Status, Finishing, Floor, Maintenance Price, Total Price, Deal Price, Reserved For.
- **Discount Rate (r) from project** — the current NPV rate for this project (shown as % / year).
- **Reference Start Date** — the starting date for calculating payment timelines. This is set in the **Payment Start Date** field on the unit details screen before clicking the NPV button.
- **Discount %** — the salesman can enter a discount percentage here; the system recalculates the Deal Price and shows it below (e.g., "Deal Price after discount: 1,400,000.00").

[![image.png](https://knowledge-base.profitcrm.net/uploads/images/gallery/2026-07/scaled-1680-/frSimage.png)](https://knowledge-base.profitcrm.net/uploads/images/gallery/2026-07/frSimage.png)

---

## What the Salesman Can Do

<table id="bkmrk-action-notes-change-"><thead><tr><th>Action</th><th>Notes</th></tr></thead><tbody><tr><td>**Change an installment amount**</td><td>System automatically rebalances remaining payments to keep the total equal to the unit price.</td></tr><tr><td>**Change an installment date**</td><td>Year and month only — allowed within the configured grace period.</td></tr><tr><td>**Delete an installment**</td><td>System rebalances remaining payments.</td></tr><tr><td>**Add a custom payment row**</td><td>Click **Add Payment Row** — system rebalances.</td></tr><tr><td>**Enter a discount %**</td><td>Recalculates the Deal Price.</td></tr></tbody></table>

> ⚠️ The unit price and delivery date are locked — they cannot be changed from the NPV editor.

---

## Validation Rules

After editing, the salesman clicks **Validate Payments**. The system runs 5 checks:

<div class="overflow-x-auto w-full px-2 mb-6" data-sourcepos="64:1-70:102;2895-3495" id="bkmrk-check-rule-total-che"><table class="min-w-full border-collapse text-sm leading-[1.7] whitespace-normal"><thead class="text-left"><tr><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Check</th><th class="text-text-100 border-b-0.5 border-[hsl(var(--border-300)/0.6)] py-2 pr-4 align-top font-bold" scope="col">Rule</th></tr></thead><tbody><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Total Check**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Sum of all payments = unit price. The system rebalances automatically if not equal.</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Pre-Delivery Check**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Payments before the delivery date ≥ Delivery Percentage Limit % of the unit price.</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Minimum Down Payment Check**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">The down payment must be at or above the Minimum Down Payment Percentage % configured on the payment plan.</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**Minimum Installment Check**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">Every installment ≥ Minimum Installment (NPV) % of the unit price.</td></tr><tr><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">**XNPV Check**</td><td class="border-b-0.5 border-[hsl(var(--border-300)/0.3)] py-2 pr-4 align-top">The present value of all payments ≥ unit price × (1 - Maximum Discount Limit %).</td></tr></tbody></table>

</div>### If Validation Fails

<table id="bkmrk-user-permission-resu"><thead><tr><th>User Permission</th><th>Result</th></tr></thead><tbody><tr><td>**No override permission**</td><td>If the plan fails the **XNPV check**, it is rejected and cannot be saved — a message shows the loss amount in EGP. The salesman must adjust the plan until it passes.</td></tr><tr><td>**Has override permission**</td><td>A warning is shown with the failure type and exact loss amount. User can click **Save Anyway** to save the plan. The override only applies to the **XNPV check** (the plan's present value being below the minimum acceptable worth) — all other validation checks still run normally and cannot be bypassed.</td></tr></tbody></table>

[![image.png](https://knowledge-base.profitcrm.net/uploads/images/gallery/2026-07/scaled-1680-/y1wimage.png)](https://knowledge-base.profitcrm.net/uploads/images/gallery/2026-07/y1wimage.png)

> 💡 The loss amount is always shown explicitly so the authorized user understands the full financial impact before deciding to override.

---

## Saving the Plan

Once validation passes (or an authorized user overrides), click **Save Payment Plan**.

The saved plan flows into the **Unit Sales Pipeline** — it becomes the payment plan used from the **Hold** step onwards when the unit is reserved for this client.