Audio By Vocalize
KRA customs Officers during the launch of the body-worn cameras at JKIA Terminal 1 in Nairobi on March 10, 2026. [David Gichuru,Standard]
The Kenya Revenue Authority has equipped customs officers with body-worn cameras, in a move aimed at improving transparency and curbing corruption at the country’s ports of entry.
The devices will be used by officers clearing passengers, verifying cargo at ports and inland depots, and those stationed at One-Stop Border Posts. They will also be deployed during surveillance, border patrols, and inspections of vessels (ships), vehicles, and aircraft.
In a statement dated Tuesday, March 10, KRA said the cameras can capture video, photographic, and audio evidence of interactions between officers and the public to promote accountability and trust.
Transport Cabinet Secretary Davis Chirchir said the technology would help address persistent bribery allegations against some officers and stop organised crime at entry points.
The CS spoke during the commissioning of 350 devices, the first phase of the rollout, at Jomo Kenyatta International Airport.
“Every day, thousands of passengers and large volumes of cargo pass through this airport, connecting Kenya to markets, investors, and opportunities around the world. At the same time, these gateways must remain secure against illicit trade, smuggling, and other transnational threats,” Chirchir said.
“These devices will record operations in real time, thereby strengthening evidence collection during inspections and seizures, and enhancing transparency in interactions with the public.”
KRA Customs and Border Control Commissioner Lilian Nyawanda said enforcement officers have previously struggled to secure convictions against smugglers due to insufficient evidence, especially when suspects turn hostile.
The rollout has, however, raised concerns among netizens over potential privacy violations, especially recordings made without explicit consent.
Ciru Mwaniki wondered, “This recording of private citizens, isn’t it against the law in light of data protection?” while Kevin Aila observed, “Good for Optics. But I don’t think KRA needs body camera’s, but robust systems.
Still, other Kenyans praised the move and urged for implementation in other enforcement agencies like the police where corruption remains rampant.
Lawyer Cliff Ombeta warned the program could face legal challenges, citing data management requirements, consent issues and the lack of specific legislation governing body cameras.
But KRA said the footage will be securely managed through a central command center that monitors and stores recordings.
“The Authority has also established a Central Command Centre to manage and monitor footage, ensuring structured oversight, secure storage, and proper review mechanisms,” the statement read.
The system includes four data storage servers, docking stations, and live GPS tracking.
Under Kenya’s Data Protection Act (Kenya), state institutions may use surveillance technologies if they establish a clear legal basis. The law recognises public interest and official authority as valid grounds for such measures.
The project was financially supported by the World Bank.
.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
KRA customs Officers during the launch of the body-worn cameras at JKIA Terminal 1 in Nairobi on March 10, 2026.
[David Gichuru,Standard]
The Kenya Revenue Authority has equipped customs officers with body-worn cameras, in a move aimed at improving transparency and curbing corruption at the country’s ports of entry.
The devices will be used by officers clearing passengers, verifying cargo at ports and inland depots, and those stationed at One-Stop Border Posts. They will also be deployed during surveillance, border patrols, and inspections of vessels (ships), vehicles, and aircraft.
In a statement dated Tuesday, March 10, KRA said the cameras can capture video, photographic, and audio evidence of interactions between officers and the public to promote accountability and trust.
Transport Cabinet Secretary Davis Chirchir said the technology would help address persistent bribery allegations against some officers and stop organised crime at entry points.
The CS spoke during the commissioning of 350 devices, the first phase of the rollout, at Jomo Kenyatta International Airport.
“Every day, thousands of passengers and large volumes of cargo pass through this airport, connecting Kenya to markets, investors, and opportunities around the world. At the same time, these gateways must remain secure against illicit trade, smuggling, and other transnational threats,” Chirchir said.
“These devices will record operations in real time, thereby strengthening evidence collection during inspections and seizures, and enhancing transparency in interactions with the public.”
KRA Customs and Border Control Commissioner Lilian Nyawanda said enforcement officers have previously struggled to secure convictions against smugglers due to insufficient evidence, especially when suspects turn hostile.
The rollout has, however, raised concerns among netizens over potential privacy violations, especially recordings made without explicit consent.
Ciru Mwaniki wondered, “
This recording of private citizens, isn’t it against the law in light of data protection?”
while Kevin Aila observed, “
Good for Optics. But I don’t think KRA needs body camera’s, but robust systems.
Still, other Kenyans praised the move and urged for implementation in other enforcement agencies like the police where corruption remains rampant.
Lawyer Cliff Ombeta warned the program could face legal challenges, citing data management requirements, consent issues and the lack of specific legislation governing body cameras.
But KRA said the footage will be securely managed through a central command center that monitors and stores recordings.
“The Authority has also established a Central Command Centre to manage and monitor footage, ensuring structured oversight, secure storage, and proper review mechanisms,” the statement read.
The system includes four data storage servers, docking stations, and live GPS tracking.
Stay informed. Subscribe to our newsletter
Under Kenya’s Data Protection Act (Kenya), state institutions may use surveillance technologies if they establish a clear legal basis. The law recognises public interest and official authority as valid grounds for such measures.
The project was financially supported by the World Bank.
.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 Denis Omondi
