Functional Weave
Code in Rust

construction.cis-deduction@1.0.0

README.md

2,855 bytes · view raw

# construction.cis-deduction

The deduction a contractor withholds under the Construction Industry Scheme
from a payment to a subcontractor, and what is left to pay.

## What the rate applies to

Only the labour. HMRC's steps are: start from the invoice, take off VAT, take
off what the subcontractor paid for materials, consumable stores, fuel (except
for travelling), plant hired for the job and manufacturing or prefabricating
materials, and apply the rate to what is left. So `payment` is the payment
**excluding VAT**, `materials` is all of those costs together (excluding VAT
where the subcontractor is VAT registered), and the rate is applied to
`payment - materials`. Applying 20% to the whole invoice is the usual mistake:
1,500.00 with 900.00 of materials withholds 120.00, not 300.00.

VAT is paid on top of `netPayment` in full (or reverse charged, see
`construction.vat-reverse-charge`); CIS never touches it.

## Rates

Dated rows in `data/cis-rates.json`, looked up on the payment date:

| status   | from       | rate |
|----------|------------|------|
| gross    | 2007-04-06 | 0%   |
| standard | 2007-04-06 | 20%  (registered and matched) |
| higher   | 2007-04-06 | 30%  (not registered, or not matched on verification) |
| standard | 2000-04-06 to 2007-04-05 | 18% (CIS4 card holders) |
| gross    | 2000-04-06 to 2007-04-05 | 0% (CIS5/CIS6 certificate holders) |

There was no 30% rate before the 2007 scheme, so `higher` before 6 April 2007
is an error, as is any date before 6 April 2000 (earlier rates, 25% to 23%,
are not carried). The table declares its effective columns, so a
`history=current` build refuses dates before its horizon instead of answering
them at today's rate.

## Rounding

HMRC does not publish a rounding rule for the deduction (the monthly return
takes it in pounds and pence), so the rounding mode is an argument.
`down` never withholds more than the rate; `half-up` is the ordinary
commercial choice. Whichever you use, use the same one every month.

## Edges

Materials equal to the payment leave no labour and no deduction. Materials
above the payment, negative amounts and mixed currencies are errors.

## Sources

- HMRC, "What you must do as a Construction Industry Scheme (CIS) contractor:
  Make deductions and pay subcontractors" (rates 20%, 30%, 0% and the items
  taken off before the rate):
  https://www.gov.uk/what-you-must-do-as-a-cis-contractor/make-deductions-and-pay-subcontractors
- HMRC, "Construction Industry Scheme: a guide for contractors and
  subcontractors (CIS 340)": https://www.gov.uk/government/publications/construction-industry-scheme-cis-340
- HMRC internal manual CISR71020, "Deductions: overview: the rate of deduction
  under the Construction Industry Scheme" (the rate history):
  https://www.gov.uk/hmrc-internal-manuals/construction-industry-scheme-reform/cisr71020