AWRA OpsHub Search

The Certificate Expired and the Work Carried On

You checked the WIBA policy, the NCA registration and the tax compliance certificate before you let them on site. Eight months later one of them has lapsed and nothing anywhere knows — because the reminder machinery exists and is pointed at a different module.

Construction & Contractors Washingtone Aura 16 min read

Subcontractor compliance is treated almost everywhere as an admissions test. The documents are collected before the first gang arrives, somebody senior looks through them, the file goes into a drawer or a shared folder, and the subcontractor starts work. What that process controls is the day they were engaged. What matters legally is the day something happens — and on a contract running fourteen months, those are rarely the same day.

The documents that decide your exposure are precisely the documents that expire. A workmen's compensation policy runs a year. A tax compliance certificate runs a year. NCA registration renews annually. Public liability runs to a policy date. Every one of them can lapse quietly halfway through a contract while the subcontractor keeps working, keeps invoicing, and keeps sending people up scaffolding — and the only party with an incentive to mention it is the one who would have to pay for the renewal.

This article is about the difference between a gate and a state, and about a specific and slightly absurd asymmetry in how most systems — including this one — handle the two.

The gate is well built. The state is not watched.

Take the onboarding side first, because it is genuinely solid and it is worth knowing what you already have:

6
prequalification states, including expired as a real status
1
validity date per supplier — qualified_until, one date for the whole relationship
06:00
daily job that expires lapsed qualifications and deactivates the vendor
0
emails sent when that happens

Read those four together and the shape of the problem appears. There is a validity date. There is a scheduled job that acts on it. What the job does is set the application to expired and switch the linked vendor inactive, so a lapsed subcontractor silently drops out of every future [request for quotation](/glossary/request-for-quotation). That is a real control and a well-chosen consequence. It is also completely silent: the job writes a line to the application log and notifies nobody. The first human-visible symptom is a vendor who is no longer on a shortlist, noticed by a buyer who assumes somebody deactivated them on purpose.

Collect the documents before engagement

A public application form scoped to your organization: company details, KRA PIN, registration number, years in business, category, county, plus document uploads. Review states include requesting more information from the applicant.

Built in

Store them so they cannot be quietly swapped

On approval, every uploaded document is archived into the Document Vault — SHA-256 checksummed, classified, and access-logged on every view and download. This is stronger than a shared folder in the way that matters after an incident.

Built in

Set a validity date on the relationship

qualified_until is set at approval and re-set on every re-qualification, and it is shown on the supplier's own page with an expiring-soon warning.

Built in

Stop work reaching a lapsed subcontractor

The daily job deactivates the vendor, which removes them from request-for-quotation selection. Blunt, effective, and it happens without anyone remembering to act.

Built in

Warn somebody before the date arrives

There is no reminder email for an approaching qualification expiry. The expiring-soon flag lives on the individual supplier's page — you have to already be looking at the record to see it, and the supplier list filters by status, not by date.

Not built

Hold an expiry date per certificate

A supplier document carries a type, a verified flag and an AI validation result. It has no date field of any kind. So the system cannot know that the WIBA policy runs out in March and the tax compliance certificate in September.

Not built

Prove which policy was in force on the day of the incident

The vault keeps every version and logs every access, so the evidence exists and is defensible — the same record of who changed what that any contested claim eventually turns on. Assembling it into "on 14 March, this policy, these dates, this certificate number" is a person's job.

Yours to own

The asymmetry worth knowing about

Here is the part that is genuinely odd, and worth stating plainly because it changes what you should ask a vendor. The reminder machinery exists. Document Vault files carry an expires_at timestamp, and there is a scheduled command that runs every morning, finds vault files inside thirty days of expiry, and emails the organization about them. It works, it respects notification preferences, and it is exactly the mechanism a compliance register needs.

It is filtered to two model classes: employees and employment contracts. An HR document with an expiry date produces a thirty-day warning. The identical field, on the identical table, attached to a supplier produces nothing. Meanwhile the central vault upload screen labels that field "Access Expiry" — and it means it: once the date passes, viewing or downloading the file returns a hard error. For a compliance document that is the opposite of the desired behaviour. You want a warning before the date and continued access to the historic document forever, because the expired policy is the evidence of what was in force last year.

The same date field on the same table warns you about an employee's work permit and says nothing about a subcontractor's liability policy.

Not a missing feature — a feature pointed at one module

One more detail closes the picture: attachments on transactional records — expenses, purchase orders, requisitions, quotations, assets — accept a file, a title, a description and a classification. They do not accept an expiry date at all. And a vendor is not an attachable record, so the subcontractor's current insurance certificate has no home on the subcontractor.

Which documents you actually need, and what the system knows about them

The four document types the prequalification form asks for by name are incorporation, tax compliance, bank details and portfolio. Now compare that list against what a Kenyan main contractor genuinely needs from a subcontractor before allowing them on site:

Document Askable by name Holds its own expiry Warns before lapse
Certificate of incorporation Yes No No
Bank details Yes No No
Portfolio / past experience Yes No No
KRA tax compliance certificate Yes No No
NCA contractor registration No No No
WIBA / workmen's compensation policy No No No
Public liability insurance No No No
NSSF and SHIF contribution status No No No

Built and maintained Configurable by you, not maintained by us Not built

The pattern in that table is not random and it is worth naming. Of the four documents the form asks for by name, three never expire — a certificate of incorporation is issued once, bank details change but do not lapse, a portfolio is a claim about the past. The documents that carry dates and therefore carry risk are either unnamed, or named without a date. The four that matter most on a construction site are not in the list at all; they go in as "other", where nothing distinguishes a lapsed liability policy from a company brochure.

The pattern that works with what exists

  1. Set the qualification date to the earliest certificate, not to a year from today

    There is one qualified_until per supplier and there are five documents with five dates. So make the single date mean something: set it to the earliest expiry among the certificates that matter. When it fires, the vendor deactivates, and re-qualifying forces a fresh look at all of them. It is a blunt instrument used precisely — the whole file is re-checked because one item lapsed, which is the conservative direction to fail in.

  2. Capture each document's expiry as a required custom field

    Custom fields are available on vendors and on supplier applications, and they can be made mandatory. Add a date per certificate — WIBA expiry, NCA expiry, TCC expiry, liability expiry. Nothing will watch these dates, but they become filterable and exportable, which turns "who is lapsing this quarter" from an archaeology exercise into a report you can run.

  3. Put a recurring task on the notice deadline, not the expiry date

    Recurring tasks genuinely spawn on a schedule — it is the one reliable reminder mechanism for anything the compliance side cannot watch. Date it three or four weeks before the certificate lapses, because chasing a renewal on the day it expires means a subcontractor stood down. This is the same workaround that service contracts and auto-renewals need, for the identical reason: the controls are event-driven and an expiry raises no event.

  4. Never set an Access Expiry on a compliance document

    It is access control, not a compliance clock. Setting it makes the document unreadable after the date, which destroys exactly the evidence you would want in front of an insurer or an inspector. Leave it blank and let the certificate live in the vault permanently.

  5. Re-verify at the payment, not at the renewal

    Renewals get chased when someone remembers; payments get processed every month without fail. Tie the check to the thing that already happens reliably — a compliance confirmation as part of certifying the subcontractor's monthly valuation, held as a required field on the record. The strongest control in a construction chain is almost always the one attached to money, which is why valuing work rather than processing a claim is the right place to hang it.

What to ask any vendor selling you compliance tracking

Five questions that separate a document store from a compliance register

Can a single supplier hold five documents with five different expiry dates?

What a real answer sounds like

A date per document, not per supplier, with the list sortable by soonest.

What a soft answer is hiding

One validity date for the relationship, which forces you to manage the other four elsewhere.

Who gets emailed, and how many days before?

What a real answer sounds like

A named role or recipient list, a configurable window, and a demonstrable scheduled job.

What a soft answer is hiding

A coloured badge on a page somebody has to already be visiting.

What happens on the day it lapses — and is it reversible?

What a real answer sounds like

A specific consequence, logged and attributed, with a defined route back.

What a soft answer is hiding

Nothing happens, or something silent happens that a buyer will interpret as a mistake.

Can I still open last year's expired policy?

What a real answer sounds like

Yes, permanently, with an access log — expiry changes status, never availability.

What a soft answer is hiding

Expiry is wired to access control, and your evidence disappears exactly when you need it.

Can an approved payment be blocked when compliance has lapsed?

What a real answer sounds like

A rule that gates the payment, or a candid "no, it warns".

What a soft answer is hiding

A dashboard tile. Dashboards do not stop money.

Read this before evaluating us on compliance tracking

What AWRA OpsHub does today

  • A full prequalification pipeline — public application scoped to your organization, review with an information-request step, approval or rejection, and approval creating the vendor record.
  • A qualification validity date (`qualified_until`) with a daily job at 06:00 that expires lapsed qualifications and deactivates the linked vendor, so they drop out of RFQ selection without anybody acting.
  • Documents archived to the Document Vault on approval — SHA-256 checksummed, classified, with every view and download logged against a named user.
  • An expiring-soon warning on the supplier's own page, plus expired as a filterable status on the supplier list.
  • Vendor blacklisting and a preferred flag, feeding the same supplier record that vendor scorecards read from — with a reason, timestamp and the user who set it — separate from deactivation, and the right tool for "never again" as opposed to "not right now".
  • Custom fields on vendors and on supplier applications, which can be made mandatory — the only place a per-certificate expiry date can currently live.
  • Recurring tasks that reliably spawn daily, which is the working reminder mechanism for renewal deadlines.

What it does not do

  • No expiry date on a supplier document. The document record holds a type, a verified flag and an AI validation result, and no date field at all. Five certificates with five dates cannot be tracked as five certificates.
  • No reminder before a qualification lapses. The expiry job logs and acts; it emails nobody. Quotations, purchase orders, RFQs, invoices, tasks and HR documents all have reminder commands — supplier compliance does not.
  • The Document Vault expiry field is access control, not a compliance clock. It is labelled "Access Expiry" and past the date both viewing and downloading fail. Do not use it for certificates.
  • Vendors are not an attachable record. Expenses, purchase orders, requisitions, quotations and assets take attached documents; a vendor does not, so the current insurance certificate has no home on the subcontractor itself.
  • Record attachments cannot carry an expiry date even where attachment is supported — the upload accepts a file, title, description and classification only.
  • No NCA, WIBA, liability or statutory-contribution document type. The four named types are incorporation, tax compliance, bank and portfolio; everything else is "other".
  • No contract entity. The only contract model in the product is an employment contract. A vendor has no start, end, renewal or valid-until field, so a subcontract as an agreement with a term does not exist as a record.
  • No withholding tax anywhere in the product — nothing computes, deducts, tracks or reports it, which matters for subcontractor and consultant payments generally.

The fair summary: the gate is better than most contractors currently run, and the state is not watched. If your requirement is "collect and immutably keep the documents, and stop unqualified suppliers reaching new work", that is built and it works without discipline. If your requirement is "tell me on 1 March that four subcontractors' policies lapse this month", that is a spreadsheet or a set of recurring tasks, and you should plan for it as such rather than discover it in month eight. We would rather you knew that before an incident than after one.

The verdict

Compliance is not a document you collected, it is a state on a date — and the date that matters is never the date you filed the folder. Set the single qualification date to the earliest expiry among the certificates that count, capture each certificate's own date as a required custom field, and hang a recurring task on the notice deadline rather than the expiry. Then the worst case is an awkward conversation about a renewal three weeks early, instead of discovering after a fall that the policy ran out in March.

Frequently asked questions

Which documents should a main contractor insist on before a subcontractor starts?

The consistent core is NCA registration appropriate to the work, a current workmen's compensation (WIBA) policy covering the people who will actually be on site, public liability cover, a valid KRA tax compliance certificate, and evidence of statutory contribution status. Two details matter more than the list: check the *dates*, and check that the policy covers the headcount and trade actually attending — a policy for six people does not cover the twenty who turn up.

Is one qualification validity date enough?

It is enough to be useful if you set it deliberately. Because there is a single `qualified_until` per supplier, set it to the earliest expiry among the certificates you care about rather than a year from approval. When it fires the vendor deactivates and re-qualification forces a fresh look at the whole file. That fails in the conservative direction, which is the correct direction for site safety.

What actually happens when a qualification expires?

A job runs each morning at 06:00, finds approved applications past their validity date, sets them to expired, and switches the linked vendor inactive so they no longer appear in RFQ selection. Re-qualifying reactivates them, subject to your plan's active-vendor limit. It is worth knowing that this happens with no notification — nobody is emailed, so brief your procurement team that an unexpectedly inactive vendor may mean a lapsed certificate rather than an error.

Can I attach the current insurance certificate to the vendor record?

Not directly — vendors are not one of the attachable record types. The document lives either on the prequalification application, from where it is archived into the vault on approval, or as a direct vault upload. The practical convention is to keep the certificate on the application and re-qualify when it renews, so the vault holds a dated series of policies rather than one file that gets overwritten.

Should I use the vault's expiry field for a certificate?

No. It is labelled "Access Expiry" and that is precisely what it does — once the date passes, viewing and downloading the file both fail. For a compliance document that destroys the evidence at the moment it becomes contentious. Leave it blank; an expired policy should remain permanently readable, because proving what cover was in force last March is the entire point of keeping it.

How do I stop paying a subcontractor whose compliance has lapsed?

With a rule you build rather than a permission you grant. There is no approve-an-expense permission — recording spend and paying it are the same grant — so a compliance gate has to be a workflow condition or a required field on the certification of each monthly valuation. Attaching the check to the payment is more reliable than attaching it to a renewal reminder, because the payment happens every month whether or not anybody remembers.

Does the AI validation on uploaded documents check whether a certificate is current?

No, and it should not be relied on that way. There is an advisory AI evaluation producing a score and risk flags on an application, and a validation result stored against each document — advisory input for a human reviewer, not a compliance determination. Nothing reads a date off a certificate and nothing acts on one. A person still has to look at the document and type the date into a field.

Help Center

Need a quick answer while you read?

Run inventory, procurement, assets, sales, and field work with approved AWRA guidance for setup, migration, integrations, security, pricing, and support.

Search all approved AWRA public help articles.

Open Help Center