Functional Weave
Code in TypeScript

property.completion-statement@1.0.1

README.md

3,604 bytes · view raw

# property.completion-statement

The figures on a buyer's completion statement for a property purchase: what
has to be sent to the seller on the completion day, and what the buyer has to
provide in total once their own costs are added.

    price
    − deposit paid on exchange
    ± ground rent, service charge and other outgoings apportioned to completion
    = balance to the seller
    + the buyer's fees (legal fees, SDLT, searches, registration)
    = total due from the buyer

## Apportionment

Outgoings such as ground rent and service charge are billed for a period that
usually straddles the completion date. Each is split by days, following the
Standard Conditions of Sale (fifth edition), condition 6.3: apportionment is
made with effect from the date of actual completion, and the seller is
treated as owning the property **until the end of the completion day**, with
the sum accruing evenly from day to day across the period. So:

- seller's days = the period start up to and including the completion date;
- buyer's days = the rest of the period.

If the seller has **already paid** the charge (`paidBySeller: true`), the
buyer refunds the seller the buyer's days, which is added to the balance. If
it is **not yet paid** (the buyer will receive and pay the bill), the seller
allows the buyer the seller's days, which is taken off.

The split is made by `finance.proration` (with `money.allocate`), so the
seller's and buyer's shares always add up to the charge exactly: a £9.99
charge over two days is 500p and 499p, never 500p twice.

A period that ends before completion is all the seller's (arrears not paid
are allowed in full); a period that starts after completion is all the
buyer's (an advance payment by the seller is refunded in full).

## What it does not do

- It uses a daily rate of the charge ÷ days in the period. Some contracts
  apportion annual sums on a 365-day year regardless of leap years, or treat
  the completion day as the buyer's: adjust `completionDate` or the period
  to match the contract.
- Estimated service charges that are later balanced (SCS 6.3.5), rent
  arrears clauses, late completion interest and retentions are not
  calculated.
- The mortgage advance is not netted off: the total due is what the buyer
  needs, from a lender and their own funds together.
- Every amount must be in the price's currency.

## Source

Law Society, Standard Conditions of Sale (fifth edition, 2018 revision),
condition 6.3 (apportionments).

## Before you rely on this

**Not professional advice.** This capability calculates property figures from published rules. It is a software component for developers, not legal or financial advice. Rules change and every rate here has an effective date. Check that the dates cover your case. Verify results against the official sources listed above, and have a conveyancer or tax adviser review how you use it, before anyone relies on the output. Provided "as is" under its licence, without warranty.

**Unreviewed.** This capability's implementations agree in every language and pass its published test vectors, which were worked out from the official sources cited. But no qualified conveyancer or tax adviser has yet checked those vectors, or confirmed that the capability covers the cases it claims. Treat it as a draft. Do not use it for real people, money or decisions without your own expert review. Once a qualified reviewer signs off, this notice is replaced with their name, qualification and the date. Each new version needs fresh sign-off.

1.0.1 marks it unreviewed. The code and the tests are unchanged.