Maverick Citizen


South Africa’s Covid-19 expenditure laid bare

South Africa’s Covid-19 expenditure laid bare
(Illustrative image | Sources: Adobe Stock | Rawpixel | nicepng)

Data Scraping & Research by Yuxi Wang; Design by Matthew Stark; Development by Dirk Meerkotter & Yuxi Wang

For all the darkness wrought by the Covid-19 pandemic, it offered at the same time an unexpected illumination: a relatively consistent and contained source of procurement data. At OpenUp, we are firm believers in the transformative power of data for empowering and activating citizens, yet good-quality open government data sets are still not available as a norm.

However, anger at corruption combined with significant popular (and international) pressure for transparent procurement data relating to Covid-19 encouraged the National Treasury to publish its related data, albeit through different formats, from 2020. We saw this as an opportunity – an opportunity to help provide everyone with simpler access to procurement data; data that may provide more questions than answers, but nevertheless allows us a first step toward real knowledge about our procurement realities.

To do this, we scraped the open data from the Treasury dashboard of Covid procurement on 14 November 2021 and identified some trends and outliers. The National Treasury (NT) has been publishing Covid procurement data since the beginning of 2020. At the outset, the Treasury published a list of PDFs highlighting procurement by each institution. These were moved, but you can still access the reports through this link to the PDFs.

After a first bout of proactive, across-the-board institutional transparency, some of the institutions stopped publishing their Covid procurement/expenditure disclosure reports. Gauteng, the biggest spender, stopped publishing expenditure disclosure reports in January 2021 and has not resumed.

This has left the NT dashboard as the main data source on the topic. Unfortunately, the data from the dashboard are not open for downloading, with the dashboard interface being difficult to search or navigate. As a result, OpenUp decided to scrape the “Transaction List” and “Supplier Analysis” pages of the dashboard, to see if simpler data access could feed some of our procurement curiosities.

You can click here to view or download the full data set we scraped.

NT issued an instruction that requires institutions to send their procurement data directly to Treasury. Problematically though, there is not a uniformity in the way institutions have chosen to report their data, leaving it very “dirty” for those outside trying to make sense of it. For example, among the order records the Department of Basic Education is named as “Basic education”, “Department of education”, “Department of education” and “Education”.

In this report, we have tried to aggregate the data from items, departments and suppliers and identify the big outliers. And it should be noted this “dirtiness” makes it difficult to draw hard and fast conclusions without further confirmation and further investigation. But this is in some senses the point: windows of data help us just as much to define better questions as they can ultimately help us to find answers.

Where possible, we have sought to explain assumptions or decisions taken to make this data clearer to read. Most importantly, we have tried to give you a chance to play with data, a first date we hope can lead to a committed relationship to data exploration for the advancement of transparency.

1. Hey Big Spenders! A treemap overview

This treemap shows a breakdown of Covid procurement by departments, item description and service description. We show only the top departments with the highest payments.

You can click on a square to drill down to the next level, and click the “All” rectangle on the top to go up a level.


2. A Departmental Wishlist: The top items departments spent money on

This visualisation shows the orders for goods and services for which the highest payments were made. Each bar represents a category of item. Among the most expensive items, we further break them down into the departments which reported to NT as paying the most for these items. Different departments are represented by different colours.

If you toggle the “Show as values” button, the bar represents the payment amount. The slider at the bottom of the visualisation allows you to filter out some bars, so the shorter bars will show more clearly. Hover over bars or legends for more information to highlight all spending by a particular department.

When you hover on a legend, you will see a focus sign to the right of the legend. You can click it to view only the selected department. Click it again to reset. As you read through the analysis regarding individual departments, you can view only the specific department in this way..


2.1 What’s this? Items obscured under “0” and “Other” Category

R5.8-billion in goods is listed under “Other” as a category, and R2.5-billion in goods is listed under “0”, according to the item description from the data base. Some purchase records note what the procurement item is in the “Service_description”, but this is not always the case. For example, the R1.3-billion and R150-million orders shown below come with insufficient explanations to get a sense of what they are, and need definition.


2.2 Feeling flush: The biggest spending departments

The data base helps us get insight into patterns and habits of particular departments and institutions. Below we provide some breakdowns that piqued our interest:

Gauteng Health: R3.7-billion paid

  • R1.95-billion paid on Item 0. About R1.8-billion of the payments made provide no more information on what the ordered item is.
  • R886-million was paid for infrastructure. However, the order amount for infrastructure is R3.5-billion. It is not clear whether further payments were made and if so where they are recorded.
  • R548-million was paid for masks; one company, Dinaane Consulting Services, was paid R195-million of this:
  • R219-million was paid for “Gowns” (which amounted to 67% of all spending under the item).
  • At least R80-million was paid on “Renovation”. Despite this, all of the renovation orders have an order amount of R0. No other department records spending under this item.

SA Police Service (SAPS): R1.56-billion

  • R879-million was spent on “Surgical masks for patients” (53% of all spending under the item). They purchased 43.6 million units of boxes of 50 masks at an average of R20.17 per unit. Most of these purchases happened during March and May 2020.
  • R501-million was paid for “Hand sanitisers and disinfectants” (42% of all spending under the item).
  • R51-million was paid for “Other PPEs” (10% of all spending under the item).
  • R36-million was spent on “Surface sanitisers and disinfectants” (37% of all spending under the item).
  • The following were the biggest suppliers serving the SAPS:
    • Red Roses Africa Pty Ltd was paid R515-million for “Hand sanitisers and disinfectants”.
    • Kagiso Afrika Holdings (named as Khagiso Afrika Holdings) was paid R103-million for “Surgical masks for patients” and “Wipe containers”.
    • Emergency and Response Equipment was paid R125-million for “Surgical masks for patients” and “Wipe containers”.
    • Basadzi Pele Management Consulting and Projects was paid R93-million for “Surgical masks for patients” and “Hand sanitisers and disinfectants”.
    • TTTB Supplying and Construction (named as TTTEB Supplying & Construction) was paid R87-million for “Surgical masks for patients”.
    • Lesedi Technical Engineering Consulting (LTE Consulting) was paid R77-million for “Surgical masks for patients”.
    • Before Sunset (Be for Sunset Trading and Projects 107), Tombo Investments, and TSA Bophelo Medical Suppliers and Logistics (TSA Bapelo Medical) were paid around R60-million each for “Surgical masks for patients”.

Others were also curious about spending in this area – see this related report from the Sunday Independent: SAPS in R1.6b PPE mess.

SA National Defence Force (SANDF): R627-million

  • R524-million was paid for “Surgical masks for patients” (more than 30% of all spending under the item). However, their order amount was R732-million.
  • R74-million was paid for gloves (18% of all spending under the item).
  • Some of the orders from the SANDF seem abnormal, including tens of orders with a zero or minus order amount or payment amount, even though the order quantity is in the thousands. You will also see these orders on the existing investigations and potential red flags visualisation under “cost miscalculations”.

KwaZulu-Natal Education Department: R528-million

  • R176-million was paid on “Hand sanitisers and disinfectants” (15% of all spending under the item); however, the order amount is R291-million. KZN Education ordered in total about 3.5 million litres of hand sanitiser, of which one million litres have been paid for.
  • R74.5-million was paid for digital thermometers (40% of all spending under the item).
  • R68-million was paid for cloth masks (23% of all spending under the item).
  • R68-million was paid for “Multi purpose sanitisers and disinfectants” (40% of all spending under the item).
  • R40-million was paid for “dispenser” (74% of all spending under the item).
  • R25-million was paid for “Visor / Face Shield” (30% of all spending under the item).
  • R9-million was paid for “Apron” (40% of all spending under the item).
  • R8 million was paid for “Sanitising spray bottles” (27% of all spending under the item).

Gauteng Education Department: R474-million

  • We should note that “Education” has been “cleaned” or recategorised by us as Gauteng Education. You can read more about why we did so here.

2.3 Several departments paid millions for accommodation, advertising and human resources.

All the Western Cape Government Departments (All WCG Departments)

  • R102-million was paid for “Gowns”.
  • R60-million was paid for “Accommodation and meals”.
  • R50-million was paid for Item 0: “Transfer payments to school for curriculum support”.
  • R8.6-million was paid for advertising. These orders were all supplied by FCB Cape Town.
  • Note “All WCG Departments” are listed as one category in the data set (rather than by department as with other provinces).

Mpumalanga Health

  • About R30-million was paid for “Management fees” to Safarmex Medical Logistics (R23-million), and Bongani-Rainmaker Logistics (R7-million). It’s unclear what the management fee is for.
  • R1.4-million was paid for accommodation.

KwaZulu Natal: Public Works Department

  • R24-million was paid for “Human resources-services” ( a significant 59% of all spending under the item).

Johannesburg Social Housing Company (Joshco)

  • R143-million was paid on “other PPEs”. It includes R140-million paid for “Temporarily Re Allocation Accommodation”. The institution also paid R4.2-million for “Cleaning and Cart away Dirt”. This contract is currently being investigated by the SIU.

3. The Big Fish: Highest-paid suppliers and orders

This visualisation shows the suppliers and orders that were paid the most. Each bubble is a supplier. Each square is an order of more than R50-million that was paid. Click the arrow to go to the next slide.

3.1 Counting the Cost: General accounts on supplier expenditure

  1. R8.1-billion was paid to 59 suppliers. These suppliers were paid in amounts ranging from R45-million to R2.5-billion. More than three-quarters of them only served one or two institutions.
  2. Logan Medical and Surgical, Masiqhame Trading 1057 and Promed Technologies took more than 280 orders. Logan Medical and Surgical, Promed Technologies and Liora Medical served more than 10 institutions.
  3. Gauteng Health and the SAPS placed most of the large orders that paid over R50-million.
  4. The top three suppliers paid were:
    1. R2.5-billion was paid to Pfizer Laboratories to procure vaccines.
    2. R516-million was paid to Red Roses Africa by the SAPS.
    3. R349-million was paid to ENZA Construction by Gauteng Health, KZN Health and Gauteng Infrastructure Development.

3.2 Outlier Suppliers

Masiqhame Trading 1057

  • R282-million was paid to Masiqhame Trading 1057. All WCG Departments, Western Cape Education and Western Cape Health made 282 orders in total to the supplier. The company supplied PPE including masks, sanitisers, gloves, spraying bottles, “Sanitising of buildings service”, and non-PPE Covid related items. According to this report, the SIU is investigating the company.

Dinaane Consulting Services

  • The supplier was paid R195-million. Only Gauteng Health ordered from this company. The company supplied mainly mask respirators and surgical masks.

Logan Medical and Surgical

  • Logan Medical and Surgical supplied 323 orders across 30 institutions. The supplier was paid R172-million in total, including R121-million from KZN Education. Another supplier, Unitrade 1032, with the same director, Vimla Naidoo, was paid R8-million.

Tusk Construction Support Services, a construction support company, supplies R87-million of PPE

  • All WCG Departments and Western Cape Transport and Public Works paid a total of R87-million to the supplier for masks, gloves, digital thermometers, hand sanitisers and other PPE. However, from the company website, the company’s major industry is construction support: “The company provides professional construction support and related professional services to the Department of Transport and Public Works in the Western Cape and to Compass Insurance Company Limited and to CIA Building Insurance.”

SSEM, a company with six CSD registration numbers

  • There are six different CSD (Central Supplier Database) registration numbers for the company SSEM. In procurement records, it has the names of SSEM, SSEM Mtembu, SSEM MTHEMBU, SSEM Mthembu Medical, and SSEM Mthebu Medical (Pty) Ltd. These companies, however, have the same directors. A total of R81-million was paid to the company by eight institutions.

3.3 The Supporters: The big suppliers for transportation, logistics, accommodation, meals, food parcels, etc.

Lagoon Beach Hotel

  • All WCG Departments, and Western Cape Transport and Public Works, paid a total of R94-million for accommodation and meals to the Lagoon Beach Hotel.

Umanyano Travel Services

  • Umanyano was formed by Santaco Western Cape and represents the minibus taxi industry in the province. More than R125-million was paid to the company by All WCG Departments and Western Cape Transport and Public Works, including about R45-million to the Red Dot project. The other R69-million was paid for “Transport and Storage”.

Bendalo Holdings

  • R46-million was paid to Bendalo Holdings by the Eastern Cape Social Security Agency for food parcels, which was about 15% of all paid orders of food parcels.

Bongani-Rainmaker Logistics

  • R74-million was paid by Gauteng Education for “Distribution of PPES” and R7-million was paid by Mpumalanga Health for management fees to Bongani-Rainmaker Logistics. The Mpumalanga Health management fees order has an order amount of R0, yet has a payment amount of R7-million.

4. Masked Prices

This visualisation shows the price per mask/unit for individual orders. Some orders have “Each” as the Unit of Measure (UOM), but this could potentially mean “each mask/ each box/each packet, etc”. The y axis thus indicates either the price for each mask (when the UOM is specified, such as “Box of 50”) or the price per unit (when the UOM is each). With an ambiguous UOM, it’s very difficult to compare the mask price against the Treasury’s price ceilings. The price ceilings data are sourced from the Instruction Notices published by the National Treasury.

You can hover over a dot to see all orders from the department, and use the dropdown box to select mask type. If you toggle “Colour by payment amount”, the visualisation will show the orders of masks that have been paid most. Drag on the visualisation to only show a selected area. 


Note: This chart filtered out those with a unit price of over R400.

4.1 General Conclusions

  • There was a wide price range of “Unit Mask” purchased.

Department of Trade and Industry

  • From March to August 2020, the Department of Trade and Industry purchased more than R2-million of “Surgical masks for patients” at R84 per mask. This is much higher than the price ceiling.

Department of Home Affairs

  • Home Affairs paid a much higher than average price for “Surgical masks for patients” and “Respirator masks”. For example on July 4, 2020, it made a R1-million order at R40 per surgical mask, while the price ceiling at the time was R11.5 per mask. Most orders on cloth masks by Home Affairs have a unit price over R40.

eThekwini Municipality

  • On 5 April 2020, the municipality made 15 orders of cloth masks with different mask prices. Its mask unit price ranged from R20 per unit to R200 per unit. This also happened on 5 March and 19 April 19 2020. All of these orders have an UOM of “Each”.
  • In May 2020, the municipality purchased “Surgical masks for healthcare workers” ranging from R6.50 to R350 per unit. All of these orders have a UOM of “Each”.

Mpumalanga Health

  • In 2020, the department ordered at least 2.6 million “Surgical masks for healthcare workers” at R38 per unit. (Most of these orders have a UOM of “each”). The price ceiling for the item is around R15. This amounts to an order of about R100-million, of which R66-million has already been paid.

South African Broadcasting Corporation Limited

  • In April 2020, the institution paid about R1-million for cloth masks at R72 per unit. Its UOM is “each”. About a week later, the Treasury set a price ceiling for cloth masks at R25 per mask.

Other Agencies

  • The Mandela Bay Development Agency, Lepelle Northern Water, Modimolle-Mookgophong Municipality, Overstrand Municipality, Umdoni Municipality, Amathole Municipality and Broadband Infrastructure company were all reported to have ordered masks with a much higher price to that of the NT Notice.

5. Red Flags: Existing investigations and other highlights

Some of the explorations above have shown how data can lead to questions, but sometimes there is a story not just from the data, but about the data itself.

This visualisation shows some orders that are currently under investigation, as well as orders that are potentially problematic and require more explanation. Each column represents a problem area that requires further investigation.

If you click on the circles with outlines you can see the media reports written about these particular orders. Close the tooltip before you click on another circle or a checkbox.

5.1 Big Spending on Infrastructure by Gauteng Department of Infrastructure Development (GDID)

  • R1.2-billion was ordered for “Designed, Construction and Commissioning of Hospital Facility Consisting of 1400 ICU bed units on Turn key basis”. These orders have apparently not been paid yet.
  • R495-million was ordered for “Refurbishment of existing Anglogold Ashante Mine Hospital to accommodate Covid-19 patients”. These orders are not recorded by NT as paid yet.
  • R314-million was ordered for “Provision of General Building work related at four different locations, Discovery Hospital, DR. George Mukhari Hospital, Lanasia CHC and Tshwane District (Steve Biko Cluster)”.

Note: These are the non-aggregated numbers from the Gauteng Department of Infrastructure Development (GDID) February 2021 reporting.

5.2 Cost Miscalculation

GDID – Cost Miscalculation

  • GDID seems to be reporting its aggregated number to the Treasury. So the same orders are repeated multiple times. This results in a total of R6.6-billion in orders for the GDID, according to the dashboard data.

Negative order or payment amount

  • 30 orders have a negative payment or order amount. Most of these orders are from Knysna Municipality, Defence and Mpumalanga Health. For example, Defence made “R-5.6 million” for gloves and masks and was paid in total “R-5 million”.


In 2020 the World Health Organization issued a statement noting that, “In indoor spaces, routine application of disinfectants to environmental surfaces via spraying or fogging (also known as fumigation or misting) is not recommended.” Yet, fogging is common practice according to the data.

Outlined circles are existing fogging investigations on Gauteng Education and GDID fogging orders.

Circles without outlines are other large orders related to fogging. For example, the Gauteng Gambling Board paid about R4-million for “Fogging and disinfecting of Alexandra township”. The Independent Electoral Commission spent about R7-million on “Disinfectant fogging spray”.

Supplier problems

Supplier problems include orders placed with companies on the Treasury restricted suppliers list; the use of suppliers who are not licensed by the South African Health Products Regulatory Authority; various Defence orders flagged by the Special Investigating Unit; and orders placed with Red Roses Africa (Pty) Ltd and (notoriously) Digital Vibes. There are existing investigations on all these issues. Click on a circle to read the article about it.

Price Gouging

Companies being investigated by the Competition Commission for excessive pricing, orders with the most expensive unit mask price, and SAPS price orders with excessive pricing are highlighted under this issue.

The Highest Unit Prices for Masks

These mask orders have a unit price ranging from R4,400 per unit to R75,000 per unit. Their UOM is “Each”. This could be a data mistake.

6. Explore More: Our ‘Keep the Receipts’ tool

“Keep the Receipts” is a partnership between the Public Service Accountability Monitor (PSAM), OpenUp and several amazing volunteers. The aim is to catalogue South African provincial and national government spending related to Covid-19 into a machine-readable, searchable format.

We have uploaded all the data we scraped to the tool under the OCPO Covid-19 reporting dashboard data repository. It gives you another opportunity to explore some of the data above, or consider procurement in general.

This procurement data stands as an exemplifier of what questions could be asked, and how questions might start to be answered, if citizens were just availed more readily with simple, accessible and quality open government data. A period of darkness has offered us a window of light, and shown how simply giving us access to more can help improve the quality of the data from the demand side. It is, above all, an opportunity for those curious and concerned that taxpayers’ money is spent honestly and where it is most needed. DM

Data Sources:

  1. Instruction Notes
  2. Covid procurement PDF reports
  3. Covid procurement dashboard

Documentation: (work in progress)

Yuxi Wang works in the field of research and data storytelling, digging through data sets and looking for potential stories. Coming from China, she is fascinated and inspired by South Africa’s civil society tech scene and proud to be part of it.


"Information pertaining to Covid-19, vaccines, how to control the spread of the virus and potential treatments is ever-changing. Under the South African Disaster Management Act Regulation 11(5)(c) it is prohibited to publish information through any medium with the intention to deceive people on government measures to address COVID-19. We are therefore disabling the comment section on this article in order to protect both the commenting member and ourselves from potential liability. Should you have additional information that you think we should know, please email [email protected]"

Please peer review 3 community comments before your comment can be posted


This article is free to read.

Sign up for free or sign in to continue reading.

Unlike our competitors, we don’t force you to pay to read the news but we do need your email address to make your experience better.

Nearly there! Create a password to finish signing up with us:

Please enter your password or get a sign in link if you’ve forgotten

Open Sesame! Thanks for signing up.

A South African Hero: You

There’s a 99.7% chance that this isn’t for you. Only 0.3% of our readers have responded to this call for action.

Those 0.3% of our readers are our hidden heroes, who are fuelling our work and impacting the lives of every South African in doing so. They’re the people who contribute to keep Daily Maverick free for all, including you.

The equation is quite simple: the more members we have, the more reporting and investigations we can do, and the greater the impact on the country.

Be part of that 0.3%. Be a Maverick. Be a Maverick Insider.

Support Daily Maverick→
Payment options

MavericKids vol 3

How can a child learn to read if they don't have a book?

81% of South African children aged 10 can't read for meaning. You can help by pre-ordering a copy of MavericKids.

For every copy sold we will donate a copy to Gift of The Givers for children in need of reading support.