Notice: Function amp_has_paired_endpoint was called incorrectly. Function cannot be called before services are registered. The service ID "paired_routing" is not recognized and cannot be retrieved. Please see Debugging in WordPress for more information. (This message was added in version 2.1.1.) in /home/newsnkzy/public_html/wp-includes/functions.php on line 6131
Notice: Function amp_is_available was called incorrectly. `amp_is_available()` (or `amp_is_request()`, formerly `is_amp_endpoint()`) was called too early and so it will not work properly. WordPress is not currently doing any hook. Calling this function before the `wp` action means it will not have access to `WP_Query` and the queried object to determine if it is an AMP response, thus neither the `amp_skip_post()` filter nor the AMP enabled toggle will be considered. The function was called too early (before the plugins_loaded action) to determine the plugin source. Please see Debugging in WordPress for more information. (This message was added in version 2.0.0.) in /home/newsnkzy/public_html/wp-includes/functions.php on line 6131
Notice: Function amp_has_paired_endpoint was called incorrectly. Function cannot be called before services are registered. The service ID "paired_routing" is not recognized and cannot be retrieved. Please see Debugging in WordPress for more information. (This message was added in version 2.1.1.) in /home/newsnkzy/public_html/wp-includes/functions.php on line 6131
Notice: Function amp_is_available was called incorrectly. `amp_is_available()` (or `amp_is_request()`, formerly `is_amp_endpoint()`) was called too early and so it will not work properly. WordPress is not currently doing any hook. Calling this function before the `wp` action means it will not have access to `WP_Query` and the queried object to determine if it is an AMP response, thus neither the `amp_skip_post()` filter nor the AMP enabled toggle will be considered. The function was called too early (before the plugins_loaded action) to determine the plugin source. Please see Debugging in WordPress for more information. (This message was added in version 2.0.0.) in /home/newsnkzy/public_html/wp-includes/functions.php on line 6131
WordPress database error: [Table 'wp_nn_options' is read only] INSERT INTO `wp_nn_options` (`option_name`, `option_value`, `autoload`) VALUES ('_transient_imunify_security_rules_1776507263_1938337', 'a:2:{s:7:\"version\";s:7:\"0.312.0\";s:5:\"rules\";a:6:{s:21:\"RULE-CVE-2025-9130-01\";a:12:{s:3:\"cve\";s:13:\"CVE-2025-9130\";s:11:\"description\";s:126:\"Unify <=3.4.7 Authenticated (Contributor+) Stored XSS via unify_checkout shortcode token attribute in classic editor post save\";s:8:\"cve_link\";s:46:\"https://nvd.nist.gov/vuln/detail/CVE-2025-9130\";s:8:\"severity\";d:6.4000000000000003552713678800500929355621337890625;s:4:\"tags\";a:4:{i:0;s:3:\"xss\";i:1;s:10:\"stored-xss\";i:2;s:9:\"shortcode\";i:3;s:13:\"authenticated\";}s:4:\"mode\";s:4:\"pass\";s:6:\"target\";s:6:\"plugin\";s:4:\"slug\";s:5:\"unify\";s:8:\"versions\";s:7:\"<=3.4.7\";s:6:\"method\";s:4:\"POST\";s:6:\"action\";s:4:\"init\";s:10:\"conditions\";a:3:{i:0;a:3:{s:4:\"name\";s:11:\"REQUEST_URI\";s:4:\"type\";s:5:\"regex\";s:5:\"value\";s:22:\"~^/wp-admin/post\\.php~\";}i:1;a:3:{s:4:\"name\";s:17:\"ARGS:post_content\";s:4:\"type\";s:5:\"regex\";s:5:\"value\";s:141:\"~\\[unify_checkout\\b[^\\]]*(?:<script|\\bon(?:error|load|click|mouseover|focus|change|submit|focusin)\\s*=|javascript\\s*:|data\\s*:\\s*text/html)~i\";}i:2;a:2:{s:4:\"type\";s:18:\"missing_capability\";s:5:\"value\";s:14:\"manage_options\";}}}s:21:\"RULE-CVE-2025-9130-02\";a:12:{s:3:\"cve\";s:13:\"CVE-2025-9130\";s:11:\"description\";s:124:\"Unify <=3.4.7 Authenticated (Contributor+) Stored XSS via unify_checkout shortcode token attribute in REST API post creation\";s:8:\"cve_link\";s:46:\"https://nvd.nist.gov/vuln/detail/CVE-2025-9130\";s:8:\"severity\";d:6.4000000000000003552713678800500929355621337890625;s:4:\"tags\";a:5:{i:0;s:3:\"xss\";i:1;s:10:\"stored-xss\";i:2;s:9:\"shortcode\";i:3;s:13:\"authenticated\";i:4;s:8:\"rest-api\";}s:4:\"mode\";s:4:\"pass\";s:6:\"target\";s:6:\"plugin\";s:4:\"slug\";s:5:\"unify\";s:8:\"versions\";s:7:\"<=3.4.7\";s:6:\"method\";s:4:\"POST\";s:6:\"action\";s:13:\"rest_api_init\";s:10:\"conditions\";a:3:{i:0;a:3:{s:4:\"name\";s:11:\"REQUEST_URI\";s:4:\"type\";s:5:\"regex\";s:5:\"value\";s:57:\"~(?:^/wp-json|(?:^|&|\\?)rest_route=)/wp/v2/posts(/|\\?|$)~\";}i:1;a:3:{s:4:\"name\";s:12:\"ARGS:content\";s:4:\"type\";s:5:\"regex\";s:5:\"value\";s:141:\"~\\[unify_checkout\\b[^\\]]*(?:<script|\\bon(?:error|load|click|mouseover|focus|change|submit|focusin)\\s*=|javascript\\s*:|data\\s*:\\s*text/html)~i\";}i:2;a:2:{s:4:\"type\";s:18:\"missing_capability\";s:5:\"value\";s:14:\"manage_options\";}}}s:21:\"RULE-CVE-2026-1293-01\";a:12:{s:3:\"cve\";s:13:\"CVE-2026-1293\";s:11:\"description\";s:122:\"Yoast SEO <=26.8 Authenticated (Contributor+) Stored XSS via yoast-schema block attribute in REST API post creation/update\";s:8:\"cve_link\";s:46:\"https://nvd.nist.gov/vuln/detail/CVE-2026-1293\";s:8:\"severity\";d:6.4000000000000003552713678800500929355621337890625;s:4:\"tags\";a:4:{i:0;s:3:\"xss\";i:1;s:10:\"stored-xss\";i:2;s:8:\"rest-api\";i:3;s:15:\"gutenberg-block\";}s:4:\"mode\";s:4:\"pass\";s:6:\"target\";s:6:\"plugin\";s:4:\"slug\";s:13:\"wordpress-seo\";s:8:\"versions\";s:6:\"<=26.8\";s:6:\"method\";s:4:\"POST\";s:6:\"action\";s:13:\"rest_api_init\";s:10:\"conditions\";a:3:{i:0;a:3:{s:4:\"name\";s:11:\"REQUEST_URI\";s:4:\"type\";s:5:\"regex\";s:5:\"value\";s:68:\"~(?:^/wp-json|(?:^|&|\\?)rest_route=)/wp/v2/posts(?:/\\d+)?(?:/|\\?|$)~\";}i:1;a:3:{s:4:\"name\";s:12:\"ARGS:content\";s:4:\"type\";s:8:\"contains\";s:5:\"value\";s:12:\"yoast-schema\";}i:2;a:3:{s:4:\"name\";s:12:\"ARGS:content\";s:4:\"type\";s:5:\"regex\";s:5:\"value\";s:21:\"~<\\s*/\\s*(?i:script)~\";}}}s:21:\"RULE-CVE-2026-1293-02\";a:12:{s:3:\"cve\";s:13:\"CVE-2026-1293\";s:11:\"description\";s:119:\"Yoast SEO <=26.8 Authenticated (Contributor+) Stored XSS via yoast-schema block attribute in admin post form submission\";s:8:\"cve_link\";s:46:\"https://nvd.nist.gov/vuln/detail/CVE-2026-1293\";s:8:\"severity\";d:6.4000000000000003552713678800500929355621337890625;s:4:\"tags\";a:4:{i:0;s:3:\"xss\";i:1;s:10:\"stored-xss\";i:2;s:15:\"admin-post-form\";i:3;s:15:\"gutenberg-block\";}s:4:\"mode\";s:4:\"pass\";s:6:\"target\";s:6:\"plugin\";s:4:\"slug\";s:13:\"wordpress-seo\";s:8:\"versions\";s:6:\"<=26.8\";s:6:\"method\";s:4:\"POST\";s:6:\"action\";s:4:\"init\";s:10:\"conditions\";a:3:{i:0;a:3:{s:4:\"name\";s:11:\"REQUEST_URI\";s:4:\"type\";s:5:\"regex\";s:5:\"value\";s:22:\"~^/wp-admin/post\\.php~\";}i:1;a:3:{s:4:\"name\";s:12:\"ARGS:content\";s:4:\"type\";s:8:\"contains\";s:5:\"value\";s:12:\"yoast-schema\";}i:2;a:3:{s:4:\"name\";s:12:\"ARGS:content\";s:4:\"type\";s:5:\"regex\";s:5:\"value\";s:21:\"~<\\s*/\\s*(?i:script)~\";}}}s:14:\"TEST-HEARTBEAT\";a:11:{s:3:\"cve\";s:14:\"TEST-HEARTBEAT\";s:11:\"description\";s:0:\"\";s:8:\"cve_link\";s:0:\"\";s:8:\"severity\";d:0.1000000000000000055511151231257827021181583404541015625;s:4:\"tags\";a:0:{}s:4:\"mode\";s:4:\"pass\";s:6:\"target\";s:4:\"core\";s:4:\"slug\";s:0:\"\";s:8:\"versions\";s:7:\">=1.0.0\";s:6:\"action\";s:4:\"init\";s:10:\"conditions\";a:1:{i:0;a:2:{s:4:\"type\";s:13:\"probabilistic\";s:5:\"value\";s:6:\"0.0001\";}}}s:9:\"TEST-RULE\";a:11:{s:3:\"cve\";s:8:\"TEST-CVE\";s:11:\"description\";s:0:\"\";s:8:\"cve_link\";s:0:\"\";s:8:\"severity\";d:1;s:4:\"tags\";a:0:{}s:4:\"mode\";s:4:\"pass\";s:6:\"target\";s:4:\"core\";s:4:\"slug\";s:0:\"\";s:8:\"versions\";s:7:\">=1.0.0\";s:6:\"action\";s:4:\"init\";s:10:\"conditions\";a:1:{i:0;a:3:{s:4:\"name\";s:14:\"ARGS:test-rule\";s:4:\"type\";s:6:\"equals\";s:5:\"value\";s:36:\"b3d45e60-53a5-4959-b911-5178baaef7ac\";}}}}}', 'off') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
Notice: Function amp_is_available was called incorrectly. `amp_is_available()` (or `amp_is_request()`, formerly `is_amp_endpoint()`) was called too early and so it will not work properly. WordPress is currently doing the `plugins_loaded` hook. Calling this function before the `wp` action means it will not have access to `WP_Query` and the queried object to determine if it is an AMP response, thus neither the `amp_skip_post()` filter nor the AMP enabled toggle will be considered. It appears the plugin with slug `bunyad-amp` is responsible; please contact the author. Please see Debugging in WordPress for more information. (This message was added in version 2.0.0.) in /home/newsnkzy/public_html/wp-includes/functions.php on line 6131
Notice: Function amp_is_available was called incorrectly. `amp_is_available()` (or `amp_is_request()`, formerly `is_amp_endpoint()`) was called too early and so it will not work properly. WordPress is currently doing the `plugins_loaded` hook. Calling this function before the `wp` action means it will not have access to `WP_Query` and the queried object to determine if it is an AMP response, thus neither the `amp_skip_post()` filter nor the AMP enabled toggle will be considered. It appears the plugin with slug `bunyad-amp` is responsible; please contact the author. Please see Debugging in WordPress for more information. (This message was added in version 2.0.0.) in /home/newsnkzy/public_html/wp-includes/functions.php on line 6131
WordPress database error: [Table 'wp_nn_options' is read only] DELETE FROM `wp_nn_options` WHERE `option_name` = '_site_transient_wp_theme_files_patterns-45800b9fe9814a433083496d4de716c9'
WordPress database error: [Table 'wp_nn_options' is read only] DELETE FROM `wp_nn_options` WHERE `option_name` = '_site_transient_timeout_wp_theme_files_patterns-45800b9fe9814a433083496d4de716c9'
WordPress database error: [Table 'wp_nn_options' is read only] DELETE FROM `wp_nn_options` WHERE `option_name` = '_site_transient_bsf_usage_track'
WordPress database error: [Table 'wp_nn_options' is read only] DELETE FROM `wp_nn_options` WHERE `option_name` = '_site_transient_timeout_bsf_usage_track'
WordPress database error: [Table 'wp_nn_options' is read only] DELETE FROM `wp_nn_options` WHERE `option_name` = '_transient_elementor_remote_info_api_data_3.35.9'
WordPress database error: [Table 'wp_nn_options' is read only] DELETE FROM `wp_nn_options` WHERE `option_name` = '_transient_timeout_elementor_remote_info_api_data_3.35.9'
Finance Minister Enoch Godongwana’s Budget Speech today (February 25, 2026) delivered a much-needed dose of positivity after last year’s political turbulence over VAT hikes. The tone was upbeat, crediting reforms, stronger revenue, and disciplined spending for putting public finances on a firmer footing. No major tax increases, some relief for households, and a focus on efficiency—it’s a “turning point” budget, as Treasury describes it.
Key Fiscal Numbers at a Glance
Here’s a quick snapshot of the main projections:
Metric
2025/26 (Revised)
2026/27
2027/28
2028/29
Real GDP Growth
1.4%
1.6%
1.8%
2.0%
Budget Deficit (% GDP)
4.5%
4.0%
3.1%
~3.0%
Gross Debt (% GDP)
78.9% (peak)
77.3%
76.8%
76.5%
Primary Surplus (% GDP)
0.9%
1.6%
1.9%
2.3%
Total Spending
–
R2.67 trillion
–
–
Sources: National Treasury 2026 Budget Review.
Major Announcements
No Tax Hikes: The R20 billion in proposed increases (floated last year) is off the table, thanks to SARS overperforming by R21.3 billion. VAT stays at 15%. Personal income tax brackets and medical tax credits get full inflation adjustments (first in three years), providing ~R13.7 billion in relief. Small business VAT threshold rises to R2.3 million, and tax-free savings accounts get a boost (annual limit to R46,000).
Spending Priorities: R2.67 trillion for 2026/27, with 60%+ on the “social wage” (education, health, grants). Social grants get modest hikes: Old-age/disability to R2,400 (+R80), child support to R580 (+R20), SRD grant stays at R370 (extended to 2027). R5 billion contingency for disasters.
Fiscal Strategy: Four pillars—boost growth via investment, cut waste (e.g., ghost employees), tame the wage bill, and anchor debt. Debt stabilizes this year (first in 17 years) and falls, easing borrowing costs.
Reforms and Risks: Praise for energy/logistics progress and FATF grey-list exit. But warnings on bottlenecks, foot-and-mouth disease, and municipalities (e.g., Joburg on notice). Treasury eyes efficiency drives and targeted municipal support.
The rand strengthened to around R15.85–15.89/USD (up ~0.7% intraday), near its best since early February. JSE All Share jumped 1.53% to 127,073. Analysts called it “constructive” and credit-positive, with potential for more rating upgrades.
This is South Africa’s strongest budget in years—fiscal credibility is back, debt’s peaking (not exploding), and taxpayers get a breather. The 1.6% growth forecast is modest but realistic, hinging on reforms sticking. Risks like infrastructure woes and low investment remain, but the GNU’s unity (so far) and SARS’s collection muscle are bright spots. For ordinary South Africans, it’s relief without recklessness; for investors, it’s a green light. If momentum holds, 2028’s 2% growth could feel like a win.