Kenya secures Sh43.5 billion AfDB loan for economic inclusion and climate resilience
Listen to article
3 min listen
Audio reading is not supported on this browser.
Ready
Thanks for listening. Continue with a related story, or tap the speaker icon on the next page to listen.

Hustler Fund: Nearly Sh90 billion disbursed to 27 million Kenyans – Ruto
Rachael Mutabasi
·
3 weeks agoRead nextOpens a fresh page.
The programme builds on reforms initiated under its first phase and is aligned with Kenya’s Fourth Medium-Term Plan (2023–2027) and Vision 2030, which seeks to transform the country into a newly industrialised middle-income economy by 2030.
Kenya has secured a €293.88 million (Sh43.5 billion) loan from the African Development Bank (AfDB) to support economic reforms, inclusion and green growth.
The financing, approved by the AfDB Group Board of Directors, will fund the second phase of Kenya’s Economic Inclusion and Green Recovery Support Programme (EIGRSP II).
The programme will support reforms in public financial management, fiscal transparency, debt reporting, public procurement and financial integrity.
More To Read
- Hustler Fund: Nearly Sh90 billion disbursed to 27 million Kenyans – Ruto
- Access to affordable credit remains biggest MSME challenge, says Ruto
- Kenya to benefit from Sh1.2 billion AfDB financial integration grant
- Contractors face blacklist as Parliament flags delays in Sh45.5 billion water programme
- Stop counting jobs and instead count value-creating enterprises, African states told
- AfDB bets on agriculture to absorb Africa’s 11 million annual job seekers
It will also promote women’s economic empowerment, micro, small and medium-sized enterprise (MSME) development, job creation and green growth.
“Kenya has demonstrated resilience in navigating a challenging global environment while continuing to pursue important reforms to strengthen its economy and create opportunities for its people,” said Abdoulaye Coulibaly, Director of AfDB Governance Department.
“This operation reflects the Bank’s confidence in Kenya’s reform agenda and our continued commitment to supporting inclusive growth, private-sector development, and climate resilience.”
Latest Stories
- Madagascar hunger crisis set to worsen, with 3.72 million people at risk
- Watching too much TV among 40-60 year olds linked to smaller brain structures later in life
- Two American service members killed in Jordan amid renewed US-Iran hostilities
- Ethiopian police arrest two for alleged trafficking of 105 citizens in Dubai job scam
The operation was prepared in collaboration with the Kenyan Government and in coordination with development partners, including the International Monetary Fund (IMF) and the World Bank.
AfDB reiterates that the coordinated approach would support Kenya’s efforts to strengthen fiscal sustainability, governance, private-sector development and resilience.
“This operation supports reforms that will strengthen public institutions, improve the efficiency and transparency of public spending, expand opportunities for young people and entrepreneurs, and help build a more resilient and inclusive economy.”
The programme builds on reforms initiated under its first phase and is aligned with Kenya’s Fourth Medium-Term Plan (2023–2027) and Vision 2030, which seeks to transform the country into a newly industrialised middle-income economy by 2030.
Kenya has been a member of the AfDB Group since 1964, with the institution supporting development priorities in infrastructure, energy, agriculture, water and sanitation, private-sector development, regional integration and governance.
Other Topics To Read
Top Stories Today
- New report faults Kenya’s laws for criminalising begging, hawking and loitering
- Two American service members killed in Jordan amid renewed US-Iran hostilities
- Madagascar hunger crisis set to worsen, with 3.72 million people at risk
- Watching too much TV among 40-60 year olds linked to smaller brain structures later in life
- Ethiopian police arrest two for alleged trafficking of 105 citizens in Dubai job scam
- Over 7 million abusive posts removed during World Cup matches, FIFA says
`;
}
return “;
}
function commentActionsMarkup(comment, canComment) {
const likeLabel = comment.liked_by_me ? ‘Liked’ : ‘Like’;
const likeCount = Number(comment.like_count || 0) > 0
? “
: ”;
const likeButton = canComment && comment.status === ‘approved’
? “
: “;
const replyButton = canComment && comment.status === ‘approved’
? “
: ”;
return `
`;
}
function commentMarkup(comment, canComment, isReply = false) {
const pendingBadge = comment.status && comment.status !== ‘approved’
? “
: ”;
const edited = comment.is_edited
? “
: ”;
const repliesHtml = Array.isArray(comment.replies) && comment.replies.length
? `
`
: “;
return `
`;
}
function replyFormMarkup(commentId) {
return `
`;
}
function setNotice(widget, message, type = ‘info’) {
const notice = widget.querySelector(‘[data-role=”notice”]’);
if (!notice) return;
if (!message) {
notice.hidden = true;
notice.textContent = ”;
notice.classList.remove(‘is-error’);
return;
}
notice.hidden = false;
notice.textContent = message;
notice.classList.toggle(‘is-error’, type === ‘error’);
}
function setCount(widget, total) {
const count = widget.querySelector(‘[data-role=”count”]’);
if (!count) return;
const num = Number(total || 0);
count.textContent = num === 1 ? ‘1 comment’ : `${num} comments`;
}
function openReplyBox(widget, commentId) {
widget.querySelectorAll(‘[data-role=”reply-box”]’).forEach(box => {
box.hidden = true;
box.innerHTML = ”;
});
const targetItem = widget.querySelector(`.ev-comments__item[data-comment-id=”${commentId}”]`);
if (!targetItem) return;
const replyBox = targetItem.querySelector(‘[data-role=”reply-box”]’);
if (!replyBox) return;
replyBox.hidden = false;
replyBox.innerHTML = replyFormMarkup(commentId);
const textarea = replyBox.querySelector(‘textarea’);
if (textarea) textarea.focus();
}
function closeReplyBox(container) {
if (!container) return;
container.hidden = true;
container.innerHTML = ”;
}
async function initCommentsWidget(widget) {
const state = {
articleId: Number(widget.dataset.articleId),
loadUrl: widget.dataset.loadUrl,
storeUrl: widget.dataset.storeUrl,
commentsBaseUrl: widget.dataset.commentsBaseUrl,
canComment: widget.dataset.canComment === ‘1’,
page: 1,
perPage: 10,
sort: ‘newest’,
total: 0,
hasMore: false,
busy: false
};
const list = widget.querySelector(‘[data-role=”list”]’);
const loading = widget.querySelector(‘[data-role=”loading”]’);
const empty = widget.querySelector(‘[data-role=”empty”]’);
const loadMoreBtn = widget.querySelector(‘[data-role=”load-more”]’);
const sortSelect = widget.querySelector(‘[data-role=”sort”]’);
const composerForm = widget.querySelector(‘[data-role=”composer-form”]’);
async function loadComments(reset = true) {
if (state.busy) return;
state.busy = true;
setNotice(widget, ”);
loading.hidden = false;
if (reset) {
state.page = 1;
list.innerHTML = ”;
empty.hidden = true;
}
try {
const url = new URL(state.loadUrl, window.location.origin);
url.searchParams.set(‘page’, state.page);
url.searchParams.set(‘per_page’, state.perPage);
url.searchParams.set(‘sort’, state.sort);
const response = await requestJson(url.toString(), {
method: ‘GET’,
headers: {
‘Accept’: ‘application/json’,
‘X-Requested-With’: ‘XMLHttpRequest’
}
});
const items = Array.isArray(response.data) ? response.data : [];
const meta = response.meta || {};
state.total = Number(meta.total || 0);
state.hasMore = !!meta.has_more;
setCount(widget, state.total);
if (reset) {
list.innerHTML = ”;
}
if (!items.length && reset) {
empty.hidden = false;
} else {
empty.hidden = true;
list.insertAdjacentHTML(
‘beforeend’,
items.map(item => commentMarkup(item, state.canComment, false)).join(”)
);
}
loadMoreBtn.hidden = !state.hasMore;
} catch (error) {
if (!list.children.length) {
empty.hidden = false;
empty.textContent = ‘Unable to load comments right now.’;
}
setNotice(widget, error.message || ‘Unable to load comments.’, ‘error’);
} finally {
loading.hidden = true;
state.busy = false;
}
}
async function submitTopLevelComment(form) {
const textarea = form.querySelector(‘textarea[name=”content”]’);
const button = form.querySelector(‘[data-role=”submit-comment”]’);
if (!textarea) return;
const content = textarea.value.trim();
if (!content) return;
const originalText = button ? button.textContent : ”;
try {
if (button) {
button.disabled = true;
button.textContent = ‘Posting…’;
}
const response = await requestJson(state.storeUrl, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({
article_id: state.articleId,
content: content,
source_url: window.location.href
})
});
textarea.value = ”;
if (response?.data) {
list.insertAdjacentHTML(
‘afterbegin’,
commentMarkup(response.data, state.canComment, false)
);
empty.hidden = true;
if ((response.data.status || ”) === ‘approved’) {
state.total += 1;
setCount(widget, state.total);
}
}
setNotice(widget, response.message || ‘Comment posted successfully.’);
} catch (error) {
setNotice(widget, error.message || ‘Unable to post comment.’, ‘error’);
} finally {
if (button) {
button.disabled = false;
button.textContent = originalText || ‘Post comment’;
}
}
}
async function submitReply(form) {
const commentId = Number(form.dataset.commentId || 0);
const textarea = form.querySelector(‘textarea[name=”content”]’);
const button = form.querySelector(‘.ev-comments__reply-submit’);
if (!commentId || !textarea) return;
const content = textarea.value.trim();
if (!content) return;
const originalText = button ? button.textContent : ”;
try {
if (button) {
button.disabled = true;
button.textContent = ‘Posting…’;
}
const response = await requestJson(`${state.commentsBaseUrl}/${commentId}/reply`, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({
article_id: state.articleId,
content: content,
source_url: window.location.href
})
});
if (response?.data) {
const parentItem = widget.querySelector(`.ev-comments__item[data-comment-id=”${commentId}”]`);
if (parentItem) {
const repliesWrap = parentItem.querySelector(‘.ev-comments__replies’);
if (repliesWrap) {
repliesWrap.insertAdjacentHTML(
‘beforeend’,
commentMarkup(response.data, state.canComment, true)
);
}
}
}
closeReplyBox(form.closest(‘[data-role=”reply-box”]’));
setNotice(widget, response.message || ‘Reply posted successfully.’);
} catch (error) {
setNotice(widget, error.message || ‘Unable to post reply.’, ‘error’);
} finally {
if (button) {
button.disabled = false;
button.textContent = originalText || ‘Post reply’;
}
}
}
async function toggleLike(button) {
const commentId = Number(button.dataset.commentId || 0);
if (!commentId) return;
const originalHtml = button.innerHTML;
try {
button.disabled = true;
button.innerHTML = ‘Working…’;
const response = await requestJson(`${state.commentsBaseUrl}/${commentId}/like`, {
method: ‘POST’,
headers: buildJsonHeaders(),
body: JSON.stringify({})
});
const liked = !!response?.data?.liked;
const likeCount = Number(response?.data?.like_count || 0);
button.classList.toggle(‘is-liked’, liked);
button.innerHTML = `${liked ? ‘Liked’ : ‘Like’} ${likeCount > 0 ? “ : ”}`;
} catch (error) {
button.innerHTML = originalHtml;
setNotice(widget, error.message || ‘Unable to update like.’, ‘error’);
} finally {
button.disabled = false;
}
}
if (composerForm) {
composerForm.addEventListener(‘submit’, function (e) {
e.preventDefault();
submitTopLevelComment(composerForm);
});
}
if (sortSelect) {
sortSelect.addEventListener(‘change’, function () {
state.sort = this.value || ‘newest’;
loadComments(true);
});
}
if (loadMoreBtn) {
loadMoreBtn.addEventListener(‘click’, function () {
if (state.busy || !state.hasMore) return;
state.page += 1;
loadComments(false);
});
}
widget.addEventListener(‘click’, function (e) {
const likeBtn = e.target.closest(‘[data-action=”toggle-like”]’);
if (likeBtn) {
e.preventDefault();
toggleLike(likeBtn);
return;
}
const replyBtn = e.target.closest(‘[data-action=”toggle-reply”]’);
if (replyBtn) {
e.preventDefault();
openReplyBox(widget, Number(replyBtn.dataset.commentId || 0));
return;
}
const cancelReplyBtn = e.target.closest(‘[data-action=”cancel-reply”]’);
if (cancelReplyBtn) {
e.preventDefault();
closeReplyBox(cancelReplyBtn.closest(‘[data-role=”reply-box”]’));
}
});
widget.addEventListener(‘submit’, function (e) {
const replyForm = e.target.closest(‘.ev-comments__reply-form’);
if (replyForm) {
e.preventDefault();
submitReply(replyForm);
}
});
loadComments(true);
}
document.addEventListener(‘DOMContentLoaded’, function () {
document.querySelectorAll(‘.ev-comments’).forEach(initCommentsWidget);
});
})();
Trending

Crisis looms as Iran reportedly asks Houthis to prepare Red Sea closure amid renewed hostilitiesBusiness
|Alfred Onyango
|13 hours ago

Kenya revives residency-by-investment plan to attract more global capitalBusiness
|Alfred Onyango
|12 hours ago

Airstrike kills 25 Al-Shabaab in Hiiraan as four terrorists surrender to Somali forcesSomalia
|Mary Wambui
|11 hours ago

Katiba Institute, Muite demand answers over alleged quarantine of seven Americans at Laikipia Air BaseNews
|Rachael Mutabasi
|18 hours ago

Elon Musk loses trillionaire status as SpaceX slide wipes billions off fortuneTechnology
|Margaret Wanjiru
|18 hours ago
Kenya launches AI-powered coding competition for schoolchildrenTechnology
|XINHUA
|13 hours ago

Madagascar hunger crisis set to worsen, with 3.72 million people at riskAfrica
|Bashir Mbuthia
|6 hours ago

Police arrest fifth suspect in Mombasa Marikiti mob killingCoast
|Farhiya Hussein
|10 hours ago
Kenya secures Sh43.5 billion AfDB loan for economic inclusion and climate resilienceBusiness
|Alfred Onyango
|15 hours ago

Emmanuel Wanyonyi misses 800m podium finish at London Diamond LeagueSports
|Bashir Mbuthia
|12 hours ago