Audio By Vocalize
Kenyans have been granted a temporary reprieve after the High Court in Nairobi, has issued orders suspending the implementation of an automated traffic fines system that had begun issuing instant penalties to motorists.
In orders issued on Thursday, Bahati Mwamuye of the Milimani High Court barred the National Transport and Safety Authority (NTSA), the government and its partners from issuing or enforcing traffic penalties generated through algorithmic or automated decision-making systems, pending the hearing of a petition challenging the system filed by Lawyer Shadrack Wambui
“Pending the inter partes hearing and determination of the Petitioner Notice of Motion Application… a conservatory order be and is hereby issued restraining the Respondents and the Interested Party… from issuing, generating, demanding or enforcing instant or automated traffic penalties produced through algorithmic or other automated decision-making systems and/or implementing or further implementing the impugned Instant Fines Traffic Management System,” Justice Mwamuye ordered.
The court further directed that the petitioners serve all parties with the application, petition, and the court order by close of business Friday, March 13, 2026, and file an affidavit of service.
Respondents and the interested party have been given until March 20, 2026, to file and serve their responses, while the petitioners may file a rejoinder by March 27, 2026, if necessary.
Justice Mwamuye also directed that parties propose timelines for an expedited hearing.
“At the mention of the matter, and in addition to confirming compliance, parties and/or counsel shall address the Court on their proposals for the expedited hearing and determination of the matter within 90 days of that mention date, if possible,” the judge ordered.
In the ruling, the court also directed that KCB Bank Kenya be included in the case as an interested party.
The orders arise from a petition filed by Sheria Mtaani and Lawyer Shadrack Wambui against the State Law Office, the National Transport and Safety Authority, and other parties over the use of algorithm-based enforcement in traffic management.
Lawyer Wambui moved to court seeking the orders, arguing that the implementation of the automated Instant Fines Traffic Management System by the NTSA raises constitutional concerns, particularly the risk of motorists being penalised through algorithmic or automated decision-making without due process.
In the court papers, he contends that the system could expose Kenyans to instant penalties without a fair hearing or an opportunity to challenge the fines, potentially violating fundamental rights and freedoms guaranteed under the Constitution.
Wambui also sought the court’s intervention to suspend the system pending a full hearing of the petition to prevent continued enforcement of what he terms an unconstitutional and opaque traffic enforcement mechanism.
Wambui further argues that by allowing automated systems to determine and impose penalties, NTSA has effectively taken over a function that constitutionally belongs to the courts.
“The system exposes motorists to penalties generated through opaque automated processes without affording them a fair opportunity to challenge or be heard, contrary to constitutional safeguards on due process,” said lawyer Wambui.
He added that the framework “effectively allows the NTSA to usurp the judicial authority of the courts by determining liability and imposing penalties outside the judicial process.”
The case will be mentioned on April 9, 2026, to confirm compliance and give further directions on the hearing of the application and petition.
.std-banner-wrap {
max-width: 100%;
width: 100%;
position: relative;
margin: 2.5rem 0 2rem;
font-family: Georgia, ‘Times New Roman’, serif;
}
.std-top-rule {
display: flex;
height: 4px;
}
.std-top-rule .r1 {
background: #CC0000;
flex: 3;
}
.std-top-rule .r2 {
background: #C9A84C;
flex: 1;
}
.std-top-rule .r3 {
background: #0D0D0D;
flex: 6;
}
.std-banner {
background: #F9F5F0;
padding: 2rem 2.2rem 1.8rem;
position: relative;
overflow: hidden;
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.10), 0 1px 0 #C9A84C;
border-left: 4px solid #CC0000;
}
.std-banner::before {
content: ‘S’;
position: absolute;
right: -1rem;
top: -2rem;
font-family: Georgia, serif;
font-size: 14rem;
font-weight: 900;
color: rgba(204, 0, 0, 0.04);
line-height: 1;
pointer-events: none;
user-select: none;
}
.std-eyebrow {
display: inline-flex;
align-items: center;
gap: 0.5rem;
font-size: 0.62rem;
font-weight: 700;
letter-spacing: 0.2em;
text-transform: uppercase;
color: #CC0000;
margin-bottom: 0.85rem;
font-family: Arial, sans-serif;
}
.std-eyebrow::before {
content: ”;
display: block;
width: 18px;
height: 1.5px;
background: #CC0000;
}
.std-banner-title {
font-family: Georgia, ‘Times New Roman’, serif;
font-size: clamp(1.3rem, 3.5vw, 1.75rem);
font-weight: 900;
color: #0D0D0D;
line-height: 1.2;
margin: 0 0 0.75rem;
letter-spacing: -0.02em;
}
.std-banner-title .std-hl {
color: #CC0000;
font-style: italic;
}
.std-divider {
display: flex;
align-items: center;
gap: 0.6rem;
margin-bottom: 0.9rem;
}
.std-divider::before,
.std-divider::after {
content: ”;
flex: 1;
height: 1px;
background: #d8d0c6;
}
.std-divider-dot {
width: 6px;
height: 6px;
border-radius: 50%;
background: #CC0000;
flex-shrink: 0;
}
.std-banner-body {
font-size: 0.97rem;
line-height: 1.7;
color: #2C2C2C;
font-weight: 400;
margin: 0 0 1.4rem;
font-family: Georgia, serif;
}
.std-banner-body strong {
font-weight: 700;
color: #0D0D0D;
}
.std-cta-row {
display: flex;
align-items: center;
gap: 1rem;
flex-wrap: wrap;
margin-bottom: 1.2rem;
}
.std-btn-subscribe {
display: inline-flex;
align-items: center;
gap: 0.6rem;
background: #CC0000;
color: #fff !important;
font-family: Arial, sans-serif;
font-size: 0.8rem;
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
padding: 0.72rem 1.5rem 0.72rem 1.3rem;
border: none;
cursor: pointer;
text-decoration: none !important;
border-bottom: none !important;
position: relative;
overflow: hidden;
transition: background 0.2s ease, transform 0.15s ease, box-shadow 0.2s ease;
box-shadow: 0 4px 16px rgba(204, 0, 0, 0.3);
clip-path: polygon(0 0, calc(100% – 10px) 0, 100% 50%, calc(100% – 10px) 100%, 0 100%);
padding-right: 1.8rem;
}
.std-btn-subscribe:hover,
.std-btn-subscribe:focus,
.std-btn-subscribe:visited,
.std-btn-subscribe:active {
background: #A00000 !important;
color: #fff !important;
transform: translateY(-1px);
box-shadow: 0 6px 22px rgba(204, 0, 0, 0.4);
text-decoration: none !important;
border-bottom: none !important;
outline: none;
}
.std-btn-subscribe:active {
transform: translateY(0);
}
.std-btn-arrow {
display: inline-block;
font-size: 1rem;
line-height: 1;
transition: transform 0.18s ease;
}
.std-btn-subscribe:hover .std-btn-arrow {
transform: translateX(3px);
}
.std-dismiss {
font-size: 0.75rem;
color: #999;
background: none;
border: none;
border-bottom: 1px dashed #ccc;
padding: 0 0 1px;
cursor: pointer;
font-family: Georgia, serif;
letter-spacing: 0.03em;
transition: color 0.2s;
}
.std-dismiss:hover {
color: #333;
border-bottom-color: #333;
}
/* Payment logos */
.std-payment-row {
display: flex;
align-items: center;
gap: 0.45rem;
flex-wrap: wrap;
padding-top: 1rem;
border-top: 1px solid #e0d9d0;
margin-bottom: 0.7rem;
}
.std-pay-label {
font-size: 0.6rem;
color: #aaa;
letter-spacing: 0.14em;
text-transform: uppercase;
font-family: Arial, sans-serif;
margin-right: 0.2rem;
white-space: nowrap;
}
.std-pay-badge {
display: inline-flex;
align-items: center;
justify-content: center;
height: 24px;
padding: 0 0.5rem;
border-radius: 3px;
border: 1px solid #e0d7ce;
background: #fff;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}
/* M-Pesa */
.std-mpesa-text {
font-family: Arial, sans-serif;
font-size: 0.7rem;
font-weight: 900;
}
.std-mpesa-m {
color: #39b74a;
}
.std-mpesa-dash {
color: #db3939;
}
.std-mpesa-p {
color: #39b74a;
}
/* Visa */
.std-visa-text {
font-family: ‘Times New Roman’, Times, serif;
font-size: 0.82rem;
font-weight: 900;
font-style: italic;
color: #1a1f71;
letter-spacing: -0.03em;
}
/* Mastercard */
.std-mc-wrap {
position: relative;
width: 28px;
height: 16px;
}
.std-mc-left {
width: 16px;
height: 16px;
border-radius: 50%;
background: #eb001b;
position: absolute;
left: 0;
top: 0;
}
.std-mc-right {
width: 16px;
height: 16px;
border-radius: 50%;
background: #f79e1b;
position: absolute;
right: 0;
top: 0;
mix-blend-mode: multiply;
}
/* Airtel Money */
.std-airtel-text {
font-family: Arial, sans-serif;
font-size: 0.64rem;
font-weight: 800;
}
.std-airtel-a {
color: #ec2427;
;
}
.std-airtel-m {
color: #dd3436;
font-weight: 600;
}
/* Equitel */
.std-equitel-text {
font-family: Arial, sans-serif;
font-size: 0.6rem;
font-weight: 700;
color: #003087;
letter-spacing: 0.02em;
}
.std-equitel-eq {
color: #e2001a;
}
/* Trust strip */
.std-trust-strip {
display: flex;
align-items: center;
gap: 0.45rem;
flex-wrap: wrap;
}
.std-trust-strip .std-shield {
width: 11px;
height: 11px;
fill: #C9A84C;
flex-shrink: 0;
}
.std-trust-strip span {
font-size: 0.67rem;
color: #aaa;
letter-spacing: 0.03em;
font-family: Arial, sans-serif;
}
.std-trust-strip .std-dot {
width: 3px;
height: 3px;
border-radius: 50%;
background: #ccc;
flex-shrink: 0;
}
/* Bottom rule */
.std-bottom-rule {
height: 2px;
background: linear-gradient(to right, #C9A84C, #CC0000, #0D0D0D);
}
/* Entrance animation */
@keyframes stdSlideUp {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.std-banner-wrap {
animation: stdSlideUp 0.5s cubic-bezier(0.22, 1, 0.36, 1) both;
}
Support Independent Journalism
Stand With Bold Journalism.
Stand With The Standard.
Continue
→
Pay via
Secure Payment
Kenya’s most trusted newsroom since 1902
Follow The Standard
channel
on WhatsApp
In orders issued on Thursday, Bahati Mwamuye of the Milimani High Court barred the National Transport and Safety Authority (NTSA), the government and its partners from issuing or enforcing traffic penalties generated through algorithmic or automated decision-making systems, pending the hearing of a petition challenging the system filed by Lawyer Shadrack Wambui
“Pending the inter partes hearing and determination of the Petitioner Notice of Motion Application… a conservatory order be and is hereby issued restraining the Respondents and the Interested Party… from issuing, generating, demanding or enforcing instant or automated traffic penalties produced through algorithmic or other automated decision-making systems and/or implementing or further implementing the impugned Instant Fines Traffic Management System,” Justice Mwamuye ordered.
The court further directed that the petitioners serve
all parties with the application
, petition, and the court order by close of business Friday, March 13, 2026, and file an affidavit of service.
Respondents and the interested party have been given until March 20, 2026, to file and serve their responses, while the petitioners may file a rejoinder by March 27, 2026, if necessary.
Justice Mwamuye also directed that parties propose timelines for an expedited hearing.
“At the mention of the matter, and in addition to confirming compliance, parties and/or counsel shall address the Court on their proposals for the expedited hearing and determination of the matter within 90 days of that mention date, if possible,” the judge ordered.
In the ruling, the court also directed that KCB Bank Kenya be included in the case as an interested party.
The orders arise from a petition filed by Sheria Mtaani and Lawyer Shadrack Wambui against the State Law Office, the National Transport and Safety Authority, and other parties over the use of algorithm-based enforcement in traffic management.
Lawyer Wambui moved to court seeking the orders, arguing that the implementation of the automated Instant Fines Traffic Management System by the NTSA raises constitutional concerns, particularly the risk of motorists being penalised through algorithmic or automated decision-making without due process.
In the court papers
, he contends that the system could expose Kenyans to instant penalties without a fair hearing or an opportunity to challenge the fines, potentially violating fundamental rights and freedoms guaranteed under the Constitution.
Wambui also sought the court’s intervention to suspend the system pending a full hearing of the petition to prevent continued enforcement of what he terms an unconstitutional and opaque traffic enforcement mechanism.
Stay informed. Subscribe to our newsletter
Wambui further argues that by allowing automated systems to determine and impose penalties, NTSA has effectively taken over a function that constitutionally belongs to the courts.
“The system exposes motorists to penalties generated through opaque automated processes without affording them a fair opportunity to challenge or be heard, contrary to constitutional safeguards on due process,” said lawyer Wambui.
He added that the framework “effectively allows the NTSA to usurp the judicial authority of the courts by determining liability and imposing penalties outside the judicial process.”
The case will be mentioned on April 9, 2026, to confirm compliance and give further directions on the hearing of the application and petition.
.std-banner-wrap {
max-width: 100%;
width: 100%;
position: relative;
margin: 2.5rem 0 2rem;
font-family: Georgia, ‘Times New Roman’, serif;
}
.std-top-rule {
display: flex;
height: 4px;
}
.std-top-rule .r1 {
background: #CC0000;
flex: 3;
}
.std-top-rule .r2 {
background: #C9A84C;
flex: 1;
}
.std-top-rule .r3 {
background: #0D0D0D;
flex: 6;
}
.std-banner {
background: #F9F5F0;
padding: 2rem 2.2rem 1.8rem;
position: relative;
overflow: hidden;
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.10), 0 1px 0 #C9A84C;
border-left: 4px solid #CC0000;
}
.std-banner::before {
content: ‘S’;
position: absolute;
right: -1rem;
top: -2rem;
font-family: Georgia, serif;
font-size: 14rem;
font-weight: 900;
color: rgba(204, 0, 0, 0.04);
line-height: 1;
pointer-events: none;
user-select: none;
}
.std-eyebrow {
display: inline-flex;
align-items: center;
gap: 0.5rem;
font-size: 0.62rem;
font-weight: 700;
letter-spacing: 0.2em;
text-transform: uppercase;
color: #CC0000;
margin-bottom: 0.85rem;
font-family: Arial, sans-serif;
}
.std-eyebrow::before {
content: ”;
display: block;
width: 18px;
height: 1.5px;
background: #CC0000;
}
.std-banner-title {
font-family: Georgia, ‘Times New Roman’, serif;
font-size: clamp(1.3rem, 3.5vw, 1.75rem);
font-weight: 900;
color: #0D0D0D;
line-height: 1.2;
margin: 0 0 0.75rem;
letter-spacing: -0.02em;
}
.std-banner-title .std-hl {
color: #CC0000;
font-style: italic;
}
.std-divider {
display: flex;
align-items: center;
gap: 0.6rem;
margin-bottom: 0.9rem;
}
.std-divider::before,
.std-divider::after {
content: ”;
flex: 1;
height: 1px;
background: #d8d0c6;
}
.std-divider-dot {
width: 6px;
height: 6px;
border-radius: 50%;
background: #CC0000;
flex-shrink: 0;
}
.std-banner-body {
font-size: 0.97rem;
line-height: 1.7;
color: #2C2C2C;
font-weight: 400;
margin: 0 0 1.4rem;
font-family: Georgia, serif;
}
.std-banner-body strong {
font-weight: 700;
color: #0D0D0D;
}
.std-cta-row {
display: flex;
align-items: center;
gap: 1rem;
flex-wrap: wrap;
margin-bottom: 1.2rem;
}
.std-btn-subscribe {
display: inline-flex;
align-items: center;
gap: 0.6rem;
background: #CC0000;
color: #fff !important;
font-family: Arial, sans-serif;
font-size: 0.8rem;
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
padding: 0.72rem 1.5rem 0.72rem 1.3rem;
border: none;
cursor: pointer;
text-decoration: none !important;
border-bottom: none !important;
position: relative;
overflow: hidden;
transition: background 0.2s ease, transform 0.15s ease, box-shadow 0.2s ease;
box-shadow: 0 4px 16px rgba(204, 0, 0, 0.3);
clip-path: polygon(0 0, calc(100% – 10px) 0, 100% 50%, calc(100% – 10px) 100%, 0 100%);
padding-right: 1.8rem;
}
.std-btn-subscribe:hover,
.std-btn-subscribe:focus,
.std-btn-subscribe:visited,
.std-btn-subscribe:active {
background: #A00000 !important;
color: #fff !important;
transform: translateY(-1px);
box-shadow: 0 6px 22px rgba(204, 0, 0, 0.4);
text-decoration: none !important;
border-bottom: none !important;
outline: none;
}
.std-btn-subscribe:active {
transform: translateY(0);
}
.std-btn-arrow {
display: inline-block;
font-size: 1rem;
line-height: 1;
transition: transform 0.18s ease;
}
.std-btn-subscribe:hover .std-btn-arrow {
transform: translateX(3px);
}
.std-dismiss {
font-size: 0.75rem;
color: #999;
background: none;
border: none;
border-bottom: 1px dashed #ccc;
padding: 0 0 1px;
cursor: pointer;
font-family: Georgia, serif;
letter-spacing: 0.03em;
transition: color 0.2s;
}
.std-dismiss:hover {
color: #333;
border-bottom-color: #333;
}
/* Payment logos */
.std-payment-row {
display: flex;
align-items: center;
gap: 0.45rem;
flex-wrap: wrap;
padding-top: 1rem;
border-top: 1px solid #e0d9d0;
margin-bottom: 0.7rem;
}
.std-pay-label {
font-size: 0.6rem;
color: #aaa;
letter-spacing: 0.14em;
text-transform: uppercase;
font-family: Arial, sans-serif;
margin-right: 0.2rem;
white-space: nowrap;
}
.std-pay-badge {
display: inline-flex;
align-items: center;
justify-content: center;
height: 24px;
padding: 0 0.5rem;
border-radius: 3px;
border: 1px solid #e0d7ce;
background: #fff;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}
/* M-Pesa */
.std-mpesa-text {
font-family: Arial, sans-serif;
font-size: 0.7rem;
font-weight: 900;
}
.std-mpesa-m {
color: #39b74a;
}
.std-mpesa-dash {
color: #db3939;
}
.std-mpesa-p {
color: #39b74a;
}
/* Visa */
.std-visa-text {
font-family: ‘Times New Roman’, Times, serif;
font-size: 0.82rem;
font-weight: 900;
font-style: italic;
color: #1a1f71;
letter-spacing: -0.03em;
}
/* Mastercard */
.std-mc-wrap {
position: relative;
width: 28px;
height: 16px;
}
.std-mc-left {
width: 16px;
height: 16px;
border-radius: 50%;
background: #eb001b;
position: absolute;
left: 0;
top: 0;
}
.std-mc-right {
width: 16px;
height: 16px;
border-radius: 50%;
background: #f79e1b;
position: absolute;
right: 0;
top: 0;
mix-blend-mode: multiply;
}
/* Airtel Money */
.std-airtel-text {
font-family: Arial, sans-serif;
font-size: 0.64rem;
font-weight: 800;
}
.std-airtel-a {
color: #ec2427;
;
}
.std-airtel-m {
color: #dd3436;
font-weight: 600;
}
/* Equitel */
.std-equitel-text {
font-family: Arial, sans-serif;
font-size: 0.6rem;
font-weight: 700;
color: #003087;
letter-spacing: 0.02em;
}
.std-equitel-eq {
color: #e2001a;
}
/* Trust strip */
.std-trust-strip {
display: flex;
align-items: center;
gap: 0.45rem;
flex-wrap: wrap;
}
.std-trust-strip .std-shield {
width: 11px;
height: 11px;
fill: #C9A84C;
flex-shrink: 0;
}
.std-trust-strip span {
font-size: 0.67rem;
color: #aaa;
letter-spacing: 0.03em;
font-family: Arial, sans-serif;
}
.std-trust-strip .std-dot {
width: 3px;
height: 3px;
border-radius: 50%;
background: #ccc;
flex-shrink: 0;
}
/* Bottom rule */
.std-bottom-rule {
height: 2px;
background: linear-gradient(to right, #C9A84C, #CC0000, #0D0D0D);
}
/* Entrance animation */
@keyframes stdSlideUp {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.std-banner-wrap {
animation: stdSlideUp 0.5s cubic-bezier(0.22, 1, 0.36, 1) both;
}
Follow The Standard
channel
on WhatsApp
By Nancy Gitonga
