Certificate Demo — VAT Figure States

Internal preview only · Click any card to open the live DonationCertificate component in that state

What changed — Clause 80 VAT language correction

  • Before: "VAT Reclaimable" — incorrect; this implied the certificate itself enables a VAT reclaim.
  • After: "Output VAT retained (clawback avoided under Clause 80)" — precise: Clause 80 removes the deemed-supply output VAT that the donation would otherwise trigger.
  • Input VAT is recovered via the donor's normal VAT return (unchanged); the certificate documents the clawback avoidance only.
  • The figure is now gated on (a) donor being VAT-registered and (b) the donor_reclaims_vat flag.

State A — VAT-registered + donor confirms input VAT reclaimed

Figure shown (clean)

The donor is VAT-registered and has ticked the box confirming they reclaimed (or will reclaim) input VAT on this purchase. The full clawback-avoided figure is shown without caveat.

donor_vat_number: "GB 123 4567 89" · donor_reclaims_vat: true

State B — VAT-registered + donor confirms NO input VAT reclaimed

£0 — no clawback

The donor is VAT-registered but confirmed they did not and will not reclaim the input VAT on this purchase. Because no input tax was recovered there is nothing to claw back, so the figure is £0.

donor_vat_number: "GB 123 4567 89" · donor_reclaims_vat: false

State C — Donor NOT VAT-registered

Not applicable

The donor has no VAT number on their CommuniTie profile. Clause 80 removes a deemed-supply output VAT charge — which only arises for VAT-registered businesses. No figure is shown and the section explains why.

donor_vat_number: null · donor_reclaims_vat: null

State A (null) — VAT-registered, donor_reclaims_vat not yet captured

Figure + caveat

The donor is VAT-registered but the per-donation reclaim flag has not been collected yet (migration pending). The figure is displayed but a mandatory caveat tells the accountant to verify against VAT records.

donor_vat_number: "GB 999 8888 77" · donor_reclaims_vat: null

READ-ONLY REPORT — AddInventoryForm price-field labels (as requested)

value_gbp input label: "RRP / Voucher Value (£) *"
Help text: "The retail price value of the voucher"
⚠ No explicit VAT treatment stated — does NOT say ex-VAT or inc-VAT.
cost_price_gbp input label: "Your Cost Price (£)"
Help text: "The actual cost to you of this donation"
⚠ No explicit VAT treatment stated — does NOT say ex-VAT or inc-VAT.
The cap-warning copy in the form does use "ex. VAT" (e.g. "£200 ex. VAT relief cap"), implying the form intends cost_price_gbp to be entered ex-VAT. However this is not stated on the cost_price_gbp field itself. The certificate's existing vatInclusivityFlag correctly flags this ambiguity for accountant review.

PLAN ONLY — Capturing donor_reclaims_vat (not built)

Where to ask: In ClaimItemModal (ringfenced — not edited here), immediately before the final "Confirm Claim" submit button. Business donors only (gate on currentUser.donor_type === 'business' AND donor is VAT-registered). Exact wording: "Have you reclaimed, or do you intend to reclaim, the input VAT on this purchase via your VAT return?" — Yes / No radio. This question is only relevant when the donor has a VAT number; for non-VAT-registered donors, skip it entirely.

DB migration needed:

ALTER TABLE claims
  ADD COLUMN donor_reclaims_vat BOOLEAN;
-- NULL = not answered (pre-migration claims, or question skipped)
-- TRUE  = donor confirmed input VAT was / will be reclaimed
-- FALSE = donor confirmed input VAT was not and will not be reclaimed

Flow to certificate: On claim submit, donor_reclaims_vat is written to the claims row. The certificate route already selects certData.donor_reclaims_vat and passes it through as donor_reclaims_vat in the JSON. The component's three-state gate reads it and renders the correct panel. No further changes needed once the migration and the ClaimItemModal tickbox are in place.

Back-fill for existing claims: Leave as NULL — the certificate will show the "figure with caveat" state, which is the correct conservative behaviour for historical claims where reclaim intent was never recorded.