The 2026 wave of civil moving traffic enforcement
Councils across England are deploying ANPR cameras at a pace not seen since the original roll-out of civil parking enforcement two decades ago. Gloucestershire went live on 1 June 2026, using ANPR cameras to tackle banned turns, restricted streets and yellow box junctions. Oxfordshire is running a multi-tranche programme across 2025/26 and 2026/27. Kirklees received Department for Transport approval in late 2025 and is now in active trial. For local-authority technology teams and the vendors supplying them, the engineering question is no longer whether to build camera-based moving traffic enforcement, but how to build it correctly, quickly and in a way that produces contravention records solid enough to withstand tribunal scrutiny. This guide covers the full stack, from image capture to PCN-ready output, with cloud ANPR as the recognition layer.
What counts as a moving traffic contravention
Part 6 of the Traffic Management Act 2004 (TMA) gives local authorities outside London the power to enforce a defined set of moving traffic contraventions by camera. The contraventions your system will encounter most often are: driving in a bus lane or through a bus gate during restricted hours; making a banned left, right or U-turn; entering a yellow box junction when the exit is not clear; driving through a no-entry restriction; and entering a school street or other motor-vehicle-prohibited zone without a valid permit or exemption. Each contravention has a corresponding contravention code, and that code must appear on any PCN issued. Your contravention logic must map camera observations to the correct code before a record is passed to the back office.
Legal framework: approved devices and PCN evidence standards
Local authorities outside London may issue a Regulation 10 PCN for a bus lane or moving traffic contravention only on the basis of evidence produced by an approved device. A device is approved when the Secretary of State certifies that it meets the requirements set out in Schedule 1 of the Civil Enforcement of Road Traffic Contraventions (Approved Devices, Charging Guidelines and General Provisions) (England) Regulations 2022. The Vehicle Certification Agency (VCA) carries out this certification on behalf of the Secretary of State.
The statutory guidance is unambiguous on officer review: a properly trained council officer must view the image and be satisfied that it clearly establishes the contravention before a decision is taken to issue the PCN. If the image has not been viewed, or is not in compliance with VCA requirements, it is rendered inadmissible as evidence of the contravention. A record must be kept of who viewed the image, who authorised the PCN, and when that happened. Ideally this is incorporated directly into the PCN processing system.
The practical implication for developers is that your system must treat the camera and its associated recording chain as the approved device. A cloud recognition API sits downstream of that device as a processing layer. It enriches the record; it does not replace the device. Your architecture must preserve the original approved-device images untampered, alongside all API outputs, timestamps and officer review events.
System architecture overview
Camera placement and image capture strategy
Camera positioning is the single biggest determinant of recognition accuracy. Plates are optimised to reflect infrared light, making IR illumination essential for reliable reads, particularly after dark. Cameras must support tight synchronisation with external illumination to maintain high capture rates and minimise motion blur. For bus lanes and bus gates, a single camera angled at the lane entry is usually sufficient. For yellow box junctions, you need at least one wide-context camera confirming the vehicle entered the box while the exit was blocked, plus a close plate camera for the ANPR read. For school streets and restricted zones, entry and exit cameras paired by zone logic give you dwell-time evidence and eliminate false positives caused by vehicles making genuine deliveries. Mount cameras on existing lamp columns where possible; where no suitable street furniture exists, a dedicated post will be needed, adding installation time and cost.
API call flow
The camera captures a frame, encodes it and posts it to the recognition endpoint. A minimal, correct call to the NPR API looks like this:
POST https://nprapi.com/api/v1/recognise X-API-Key: your-api-key-here Content-Type: multipart/form-data -F "image=@plate.jpg" -F "vehicle=true" -F "multiple=true"
Setting vehicle=true adds DVSA-sourced vehicle data including make, model and colour. Setting multiple=true instructs the API to return all visible plates in the frame, which matters at wide junctions where two or more vehicles may be present simultaneously. The response for a multi-plate call returns a plates array; each entry carries registration, confidence (an integer from 0 to 100), and country as an ISO 3166-1 alpha-2 code where identifiable. Single-plate mode returns success, registration, confidence and credits_used. Full documentation is at https://nprapi.com/docs.
Confidence scores and their role in enforcement decisions
Each time the ANPR algorithm processes a plate, it generates a confidence score that reflects the accuracy of the entire plate detection, combining individual character-level assessments into a single integer result. In an enforcement context, a persistently low confidence score at a particular site over time is an operational signal that the camera needs repositioning or reconfiguration rather than a reason to discard reads.
For PCN workflow purposes, define a threshold below which records are automatically routed to manual review rather than the automated officer queue. A threshold of 85 out of 100 is a reasonable starting point for well-lit daytime conditions; lower-light deployments may require a higher threshold or a dual-read strategy using primary and secondary cameras, an approach that can exceed 99 per cent plate-read accuracy in production systems.
Never reject a low-confidence read outright. Route it to the officer review queue with the confidence value, the original image and any vehicle data returned. The officer decision, not the algorithm score, is the legal trigger for PCN issue.
Vehicle data: confirming make, model and colour
Setting vehicle=true on the recognise call returns DVSA vehicle attributes alongside the plate string in the same JSON response. Make, model and colour are useful in two ways. First, they allow your system to perform an immediate sanity check: if the API returns a plate but the DVSA colour on record is white and the camera image shows a dark-coloured vehicle, that is a flag for manual review rather than an automated contravention trigger. Second, vehicle data supports officer review and strengthens the contravention record. A reviewing officer who can see that the plate, make and colour all match the camera image has a much higher degree of confidence before authorising a PCN. This is particularly important for bus lane enforcement, where the vehicle type (for example, a motorcycle versus a private car) can determine whether an offence occurred at all.
Building exemption logic
Every moving traffic enforcement zone has categories of vehicle that are legally or locally exempt. Getting exemption logic wrong generates appeals and erodes public trust. The categories you must handle are set out below.
Statutory and operational exemptions
Emergency vehicles (police, fire, ambulance, blood bikes) are exempt from most restrictions when responding to an incident. Your system should maintain a regularly updated allowlist of registered emergency fleet plates. Where a plate is not on the list but camera evidence is ambiguous (for example, a vehicle fitted with a light bar), flag the record for human review.
Bus lane and bus gate exemptions
Buses, licensed taxis and, in many schemes, pedal cycles and motorcycles are permitted in bus lanes. The vehicle type returned by the vehicle=true flag assists here, but do not rely on it exclusively. Cross-reference against a local operator permit list maintained by the authority. Licensed taxi plates should be stored in a separate allowlist updated in line with the licensing authority's records.
School street and restricted zone exemptions
School streets typically exempt residents registered at addresses within the restricted area, blue badge holders who need access to a property in the zone, and formal care or health workers serving an address in the street. Your exemption database must store the registration, the exemption type, the expiry date and, for time-limited schemes, the permitted entry windows. On each plate read, the recognition output feeds a lookup against this table before any contravention logic runs.
Permit list management
Exemption lists are not static. Residents move, licences expire, blue badges are renewed on a rolling cycle. Build a lightweight admin interface and an expiry-sweep job that flags records approaching their end date. Tribunal cases are sometimes won by appellants showing that a valid exemption was on the database but the expiry date had not been refreshed. Make the audit trail for list changes as robust as the contravention record itself.
Timestamps, frame sequencing and evidence-grade image sets
A contravention record is only as strong as its evidence package. For each event your system must store: the UTC timestamp of each frame to millisecond precision; the camera identifier and its GPS coordinates; the approved-device reference number; the raw frame as captured (never compressed further after capture); and the API response JSON including the confidence score and vehicle data. For yellow box junctions and school streets, store a sequence of frames spanning the full observation window, not just the plate-read frame. This allows a reviewing officer, and if the matter is appealed, a Traffic Penalty Tribunal adjudicator, to verify that the vehicle was genuinely blocked in the box or genuinely inside the restricted zone.
Embed the timestamp visibly in the exported evidence image rather than relying solely on file metadata. File metadata can be challenged; a timestamp burned into the frame itself is far harder to dispute.
Multi-camera zone orchestration
Complex contraventions such as yellow box blocking and school street entry require you to correlate reads from more than one camera. The pattern is entry-exit pairing with a dwell-time window. When camera A reads a plate on entry to the restricted zone, your orchestration layer opens a session keyed on the registration. If camera B (exit) reads the same plate within the maximum lawful traversal time (the time a vehicle would need to pass straight through without stopping), the journey is clean and the session closes without a contravention. If the dwell time exceeds the threshold, or if an exit read never arrives within your window, the session is flagged as a potential contravention and queued for officer review.
For banned turns, the geometry differs. A single camera covering the junction approach records the plate. Your system then checks whether a second camera downstream of the prohibited turn detects the same vehicle within a short time window. A match found within the expected elapsed time range produces a candidate contravention record.
Use the NPR API batch endpoint (POST https://nprapi.com/api/v1/batch with images[] files, status polled via GET https://nprapi.com/api/v1/batch/{uuid}) when you need to process high volumes of frames from a busy junction retrospectively, for example when a camera has been operating in monitoring-only mode and the authority decides to activate enforcement.
Structuring the contravention record for PCN workflow ingestion
A PCN issued under Regulation 10 must contain specific particulars as set out in Schedule 2 of the General Regulations, including the date of the notice, the contravention code, the penalty charge amount and payment instructions. Your contravention record must carry every field required to populate a PCN without the back-office system needing to query an external source. The minimum recommended schema is: contravention ID (UUID); contravention code; site ID; camera IDs; observation UTC start and end; registration; confidence score; vehicle make, model and colour; approved-device reference; officer ID who authorised; authorisation timestamp; evidence package path or URL; and PCN-ready flag.
Structure this as a flat JSON document or a normalised relational record, depending on what your back-office platform expects. Most commercial civil enforcement back-office systems accept either format via a documented ingest API. Build an adapter layer rather than coupling your recognition pipeline directly to a single back-office product; authorities change suppliers.
Handling edge cases
Partial and obscured plates are the most common failure mode. A vehicle with a dirty, damaged or deliberately obscured rear plate will return a low confidence score or no read at all. Log these events with the original frame and a no-read indicator. High volumes of no-reads at a specific camera site are an operational signal that camera angle, illumination or focus needs adjustment.
Foreign-registered vehicles present a distinct challenge. The NPR API returns a country code where identifiable, which allows your system to flag non-GB plates for a separate workflow. Enforcement against foreign-registered vehicles under civil powers is not straightforward, and most authorities exclude them from automated PCN issuance pending legal advice.
Low-light captures are best handled by ensuring cameras use active IR illumination on a dusk-to-dawn schedule. If a frame arrives at the API with poor exposure, the confidence score will reflect this. Do not discard the frame; store it with its score. Some contraventions occur at dusk and a marginal read is still reviewable by a trained officer with access to supporting frames from the sequence.
UK GDPR and data retention
ANPR systems capture personal data (a vehicle registration is linked to an identifiable individual) and must operate within UK GDPR and the Data Protection Act 2018. The ICO requires purpose-limited collection, role-based access controls and documented retention schedules. The statutory guidance is clear on this point: contravention data should be kept until payment has been received or all legal processes, including representations and appeals, have been exhausted. Data that does not result in a contravention should be deleted on a much shorter cycle, typically within 24 to 72 hours, depending on your data protection impact assessment.
A key architectural advantage of using a cloud recognition API that processes images without retaining them is that the recognition layer does not become a long-term store of personal data. Confirm with your API provider that images submitted for recognition are not retained after processing. Store images yourself only where they form part of an active or potential contravention record, and enforce deletion automatically once the retention schedule expires. Anyone whose plate has been captured has the right to request a copy of their personal data under UK GDPR; your system must be able to produce this with other vehicles' data redacted from any shared frames.
Testing and accuracy benchmarks before go-live
Before activating enforcement at any site, run a monitoring-only period of at least six weeks during which every read is logged but no contravention records are produced. Compare the registration strings returned by the API against a ground-truth dataset captured manually or by a secondary system. Measure true positive rate, false positive rate and no-read rate by time of day, day of week and weather condition. Consistently low confidence scores in morning peak conditions point to illumination or camera angle issues that must be resolved before going live.
Test your exemption list logic with synthetic records covering every exemption category. Test your dwell-time window logic with simulated entry-only and entry-exit scenarios. Run load tests against the API at your expected peak frame rate to confirm latency stays within bounds for real-time officer alerting workflows. Define a minimum acceptable confidence threshold in your go-live acceptance criteria and obtain sign-off from the authority's legal team before the first enforcement-mode read is processed.
Getting started with NPR API
NPR API provides a free tier suitable for development and integration testing, alongside a sandbox environment where you can validate your request format, inspect JSON response anatomy and verify your exemption and contravention logic before connecting live camera feeds. The recognition endpoint is a single REST call: post an image to https://nprapi.com/api/v1/recognise with your key in the X-API-Key header, and receive structured JSON back within milliseconds. Add vehicle=true to pull DVSA vehicle attributes in the same call. The API slots into any back-office enforcement platform as a stateless recognition layer, leaving data residency, evidence packaging and PCN workflow entirely under your control. Full documentation is at https://nprapi.com/docs.
Moving traffic enforcement is now a standard capability for UK local authorities, and the pipeline of councils seeking designation powers continues to grow. The authorities that will operate it most effectively are those whose technology teams build clean, auditable systems before appeal volumes expose architectural shortcuts. A well-structured recognition layer, rigorous exemption logic, officer-reviewed evidence packages and defensible data retention policies are not optional extras. They are the foundation on which every legally sound PCN rests.