Ruto assents to Appropriations Bill to cushion govt after rejecting Finance Bill, 2024
Ruto assents to Appropriations Bill to cushion govt after rejecting Finance Bill, 2024
Read this story aloud
Listen to the clean text version of this article
Ready
3 min listen
Audio reading is not supported on this browser.
“Articles 221 and 222 of the Constitution require that the Appropriations Bill be assented to by June 30 every year to guarantee the continuity of government operations,” Ruto explained
President William Ruto, on Friday, June 28, signed the Appropriations Bill, 2024, as required by law before every June 30, to ensure funding for critical services.
However, the Appropriations Bill 2024 will still be subject to an adjusted supplementary budget after he rejected the Finance Bill 2024 and ordered it be withdrawn from Parliament.
“Articles 221 and 222 of the Constitution require that the Appropriations Bill be assented to by the 30th of June every year to guarantee the continuity of government operations, especially in providing critical services,” Ruto stated in a statement released by State House Spokesperson Hussein Mohamed.
More To Read
- Protests anniversary:The day Gen Z took to the streets and changed Kenya’s politics
- Did Kenya’s Gen Z protests deliver change? Economist assesses what has really changed
- High Court denies bail to suspect in State House police officer murder case, cites national security concerns
- Finance Bill 2026: What is included and what has been dropped
- State House renovation draws praise, criticism over bold redesign
- Ruto’s promise of 50 teaching jobs to Akorino church sparks fresh debate on political patronage
“I have therefore assented to the Appropriations Bill 2024 and instructed the National Treasury to immediately prepare supplementary estimates to reduce expenditure by the amount of revenue that was expected to be generated by the rejected Finance Bill 2024,” he added.
Ruto wants expenditures to be reduced by Sh346 billion, equally spread among the national government, including the executive, the legislature, the judiciary, and constitutional commissions.
President William Ruto signs the Appropriations Bill, 2024, at State House, Nairobi, on Friday, June 28, 2024. He also referred the County Allocation and Revenue Bill back to Parliament for budget reduction. (Photo: PCS)
Latest Stories
- Kenya reaffirms ties with Rwanda as it marks Liberation Day celebrations
- Morocco continue historic rise with record-breaking World Cup victory against Canada
- Serena Williams withdraws from Wimbledon doubles after knee injury, ending Venus reunion plans
- Report records 83 harassment incidents against Christians in Israel over three months
He also referred the County Allocation and Revenue Bill back to Parliament for reduction as it needs to be adjusted following the rejection of the Finance Bill, 2024.
Moreover, he also ordered the National Treasury to immediately submit to Parliament amendments to the Division of Revenue Act 2024 to reflect the reduced new revenues.
“I have also instructed the National Treasury to direct all accounting officers to ensure that only critical and essential services are funded, using no more than 15% of the budget, until the supplementary budget is approved,” Ruto stated, with the country angling towards using the revenue collection models enshrined in the Financial Act 2023.
Treasury, in response, further ordered all accounting officers to ensure strict adherence to Ruto’s orders and various laws guiding expenditure, including the Public Finance Management Act, 2012, and the Public Procurement and Asset Disposal Act, 2015.
Accounting officers will also ensure their juniors are brought up to speed with the new changes as Ruto adheres to his promise to cut down wastage, following nationwide protests against the now-withdrawn punitive Finance Bill, 2024.
“On Wednesday, June 26, 2024, I declined to sign the Finance Bill 2024, consequently sending a memorandum to the National Assembly rejecting all clauses of the bill,” Ruto reminded the nation on Friday.
While rejecting the bill, he stated that he had attempted to solve all financial woes, including the high debt levels, development demands, wage bill, and county funds, but Kenyans still opposed the bill, which they argued advocated for outrageous tax measures, including widening the tax brackets.
President William Ruto (5th right) poses for a photo with Treasury CS Njuguna Ndung’u (3rd right), Attorney General Justin Muturi (4th right), Speakers Moses Wetangula (6th right) and Amason Kingi (centre), and Majority Leaders in the National Assembly and Senate, Kimani Ichung’wah (centre) and Aaaron Cheruiyot (4th left), respectively, among other leaders a State House, Nairobi, after sigining the Appropriations Bill, 2024, on Friday, June 28, 2024. (Photo: PCS)
President William Ruto (5th right) poses for a photo with Treasury CS Njuguna Ndung’u (3rd right), Attorney General Justin Muturi (4th right), Speakers Moses Wetangula (6th right) and Amason Kingi (centre), and Majority leaders in the National Assembly and Senate, Kimani Ichung’wah (centre) and Aaaron Cheruiyot (4th left) respectively among other leaders a State House, Nairobi after sigining the Appropriations Bill, 2024, on Friday, June 28, 2024
Other Topics To Read
Top Stories Today
- Weekly new Ebola cases reach highest level since outbreak began: WHO
- Kenya reaffirms ties with Rwanda as it marks Liberation Day celebrations
- Serena Williams withdraws from Wimbledon doubles after knee injury, ending Venus reunion plans
- Report records 83 harassment incidents against Christians in Israel over three months
- Clean mobility gains ground in trucks and buses, but fossil fuels still dominate at 94 per cent – report
- Over 1,000 Sudanese return home from Egypt under ongoing repatriation programme
`;
}
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
DP Kindiki hails cooperatives as key to Kenya’s economic transformationNews
|Rachael Mutabasi
|12 hours ago
Kenya reaffirms ties with Rwanda as it marks Liberation Day celebrationsRegional
|Bashir Mbuthia
|6 hours ago
Pope Leo XIV shines spotlight on Mediterranean migration crisisWorld
|Mary Wambui
|10 hours ago
Colombia beats Ghana to complete World Cup round of 16 lineupSports
|XINHUA
|20 hours ago
Google to ban chrome extensions that ‘jailbreak’ AI chatbotsNews
|Margaret Wanjiru
|15 hours ago
Clean mobility gains ground in trucks and buses, but fossil fuels still dominate at 94 per cent – reportClimate Change
|Alfred Onyango
|7 hours ago
Eight arrested in Marsabit over Sh1.2 million SIM swap fraudNorthern Kenya
|Bashir Mbuthia
|13 hours ago
Over 1,000 Sudanese return home from Egypt under ongoing repatriation programmeSouth Sudan
|Bashir Mbuthia
|8 hours ago
Captain Riyad Mahrez announces retirement after Algeria World Cup exit2026 FIFA World Cup
|Bashir Mbuthia
|1 day ago
Report records 83 harassment incidents against Christians in Israel over three monthsMiddle-East
|Bashir Mbuthia
|6 hours ago
