Historical vehicle registration plates of South Africa
Before 1994, South Africa had only four provinces: Cape Province, Natal Province, Orange Free State and Transvaal. Each province had its own identifying lettering: Cape – C, Natal – N, Orange Free State – O and Transvaal – T.

Pre 1980 
White letters on a black background were used across the country, including the military. For example:  CC 147 

Each town had a unique registration prefix followed by a number that was allocated sequentially from 1 (the mayor's vehicle) onward to 999 999. For trade plates (used by car dealers on un-licensed vehicles), the letters and numbers were swapped. There were no personalised number plates. Government 
Government vehicles used the letters GG (for Government Garage) as a prefix, followed by a sequential number. For example:  GG 4321

 Three government services and a government agency used their own registration codes:
 DW – Department of Water Affairs. P – Post Office (including telecommunications). SAS-R – South African Railways road motor service. BT – Bantu Trust. Military 
Military vehicles used the letter U (for Union Defence Force) as a prefix until 1961, when U was replaced by R (for Republic of South Africa), followed by a sequential number. Examples:  U 4321   R 54321  On armoured vehicles especially, the numbers were painted in white on the green paint of the bodywork, or in black on desert sand paint. Police 
Police vehicles used the letters SAP as a prefix, followed by a sequential number. For example:  SAP 4321

However, many police vehicles were registered locally and carried the registrations used in the four provinces. Diplomatic corps 
Diplomatic vehicles used the letters DC as a prefix, followed by a sequential number. For example:  DC 4321

Cape Province 
The towns in the Cape Province were originally assigned two-letter prefixes for the principal cities and towns, with smaller centres allocated three-letter codes. CA represented the largest city, Cape Town, CB the second-largest, Port Elizabeth, CC was Kimberley, CD King William's Town, CE East London, CF Grahamstown, CG Oudtshoorn, CH Queenstown, CI Worcester, CJ Paarl, CK Malmesbury and CL Stellenbosch. By the middle of the 20th century it was realised that the letter I was easily confused with the figure 1 and Q with O and 0, while odd codes had been introduced with the small letter o tagged on. So the system was revised, eliminating the o codes, and extra two-letter codes were allocated: CM De Aar, CN Wellington, CO Calitzdorp, CR Hopefield, CS Bredasdorp, CT Ceres, CU Port Nolloth, CV Vredendal, CW Worcester, CX Knysna, CY Bellville and CZ Beaufort West. The full list of Cape Province prefixes (with present-day provinces in brackets) was:

Codes obsolete by 1950

Transvaal Province

Circa 1975 to 1994 
A new numbering scheme had to be introduced in the Transvaal, after the Johannesburg series exceeded the number  TJ 999-999 . An alphanumeric system was introduced in this province, which allowed more permutations with fewer characters. The reason given for this change was that it was necessary because the system was computerised, which was an argument only valid for a few years. Despite this, a trend towards centralisation of vehicle registries continued, despite its inconvenience to motorists. The series comprised three letters followed by three numbers and the letter T.  All number plates used black text on a yellow background, for example:  BCD 123 T . From this point onward, a Transvaal vehicle's origin could no longer be narrowed down to a specific town or city. However the first letter of the registration indicated the date of first registration of a vehicle, as the sequence grew alphabetically. However, because the Transvaal used codes that coincided with those used in other provinces, traffic officers failed to notice the T at the end, and issued fines to Cape motorists whose registrations matched those of T vehicles passing through the Cape. The use of C and N codes ought to have been barred. O was not used, since the new system avoided the use of vowels. At this time black text on yellow background became mandatory throughout South Africa so the other three provinces also adopted the new black on yellow number plates, but kept their existing numbering systems. Example: CR 7822. At this stage government plates adopted the same system as Transvaal. Example: BCD 123 M.

Towards 1994 this numbering system for the Transvaal was rapidly running out of permutations. However, in 1994 the four provinces were dissolved and nine new provinces were created. All the new provinces apart from the Western Cape and KwaZulu-Natal adopted the alphanumeric system. Due to public demand at this time, different text colour on white background was also allowed. The different provinces could decide on text colour for their plates. A white background is used in all provinces although some provinces place graphics on this background relevant to their province. Towards 2012 Gauteng Province (GP) was running out of permutations and had to adopt a new system. This system used two letters, two numbers, two letters and the province indicator GP. Natal Province 
In many cases the districts of the province took their letters from the place names to determine the letters that are used to identify each region. Almost all of the areas remained unchanged since 1994, the Only province in South Africa not changing number plates or areas since 1994. This pattern does not always hold. Orange Free State 
The town of Sasolburg, where oil is produced out of coal, received the very appropriate prefix OIL. Homeland Number Plates 
Under apartheid South Africa, each of the homelands had its own department of vehicle licensing. Bophuthatswana 

 YBA – Molopo, including Mafikeng (now Mahikeng) and the Bophuthatswana capital, Mmabatho. YBB – Odi. Previously part of Brits district, code TAZ. YBC – Moretele. Previously part of Pretoria district, code TP. YBD – Bafokeng & Tlhabane. Previously part of Rustenburg district, code TRB. YBE – Ditsobotla. Previously part of Lichtenburg district, code TAB. YBF – Mogwase. Previously part of Rustenburg district, code TRB. YBG – Lehurutshe. Previously part of Zeerust district, TAF. YBH – Tlhaping-Tlharo. Previously Kuruman district (now Kudumane), CBK. YBJ – Madikwe. Previously part of Zeerust district, TAF. YBK – Thaba Nchu. Previously part of Bloemfontein district, OB. YBL – Mankwe. Previously part of Rustenburg district, code TRB. YBM – Ganyesa. Previously part of Stellaland (Vryburg), code CCS. YBN – Taung. Previously CFN. YBX – Mabopane. Previously part of Pretoria district, code TP. Government:

 YB – Government vehicles
 YBP – Police vehicles

Most of Bophuthatswana was absorbed into North West Province. Thaba Nchu returned to the Free State Province. The half-district Moretele 2 (east of the N1) became part of Mpumalanga. Ciskei 

 GCA – Alice Previously CFD. GCB – Hewu & Whittlesea. Previously CEF. GCC – Keiskammahoek Previously CFK. GCD – Middledrift Previously CDX. GCE – Mdantsane Previously part of the East London district, code CE. GCF – Peddie Previously CBW. GCH – Mpofu & Seymour. Previously CCH. GCJ – Zwelitsha, Bisho (now Bhisho) & Dimbaza. Bisho was the capital of Ciskei; today it is the capital of the Eastern Cape. Previously part of the King William's Town district, code CD. Government:

 GC – Ciskei government vehicles
 GCP – Ciskei police vehicles

Ciskei became part of the Eastern Cape Province. Gazankulu 

 GM – Malamulele district. Previously part of Louis Trichardt district (TAJ). Now part of Limpopo province. GY – Giyani district. Previously part of Louis Trichardt district (TAJ). Now part of Limpopo province. GR – Ritavi district. Previously part of Tzaneen district (TBC). Now part of Limpopo. GH – Mhala district. Previously part of White River district (TDH). Now part of Mpumalanga. GN - Hlanganani District. Which includes Elim, Bungeni, Majozi, Tiyani, Msengi, Olifantshoek and Rotterdam
Government

 GAZ – Gazankulu government

Lebowa 

 LEB-1-NUMBER/S – Lebowakgomo (capital of Lebowa) & Mankweng (Thabamoopo district) Previously Pietersburg district (TAL). LEB-2-NUMBER/S – Schoonoord & surrounds. Previously Groblersdal district (TCA). LEB-3-NUMBER/S – Mahwelereng & surrounds (Mokerong District) Previously Potgietersrus district (TAN). LEB-4-NUMBER/S – Seshego, Moletji, Matlala & Mashashane. Previously Pietersburg district (TAL). LEB-5-NUMBER/S – Mapulaneng (Bushbuckridge). Previously Graskop district (TAP). LEB-6-NUMBER/S – Nebo & surrounds. Previously Groblersdal district (TCA). LEB-7-NUMBER/S – Tzaneen & Bolobedu surrounds. Previously TBC)
 LEB-8-NUMBER/S – Tzaneen & Lenyenye (Naphuno). Previously TBC. LEB-9-NUMBER/S – Praktiseer & surrounds. Previously Lydenburg district (TAE). LEB-10-NUMBER/S – Botlokwa & Sekgosese. Previously Pietersburg district (TAL). LEB-11-NUMBER/SO – Bochum & surrounds. Previously Pietersburg district (TAL). LEB-13-NUMBER/S – Phalaborwa. Previously Graskop district (TAP). Government

 LG – Lebowa government
 LP – Lebowa police

Lebowa became part of Limpopo Province. Qwaqwa 

 OBW – private vehicles
 WR – government vehicles
 WRP – police vehicles

The letter W stands for the Witsieshoek district, where Qwaqwa was located. Retained the code OBW from the Orange Free State. It is once more part of the Free State. KwaNdebele 

 KNK – KwaMhlanga
 KNE – Enkangala
 KNA – Siyabuswa
 KNB – Kwaggafontein
 KNF – Vaalbank (Libangeni)

Government

 KNG – KwaNdebele government
 KNP – KwaNdebele police

KwaNdebele became part of Mpumalanga province. Transkei 

 XA – Umtata Transkei capital. Today Mthatha, Eastern Cape. Previously CCY. XAA – Nqamakwe Previously CDE. XAB – Tabankulu Previously CDR. XAC – Tsomo Previously CFF. XAD – Xhora & Elliotdale. Previously CDG. Now Xora. XAE – Mqanduli Previously CDH. XAF – Bizana Now Mbizana. Previously CDJ. XAG – Gatyana Formerly Flagstaff, CDK. XAH – Siphaqeni Formerly Willowvale, CDN. XB – Gcuwa (Butterworth district) Previously CCV. XC – Lusikisiki Previously CDO. XD – Cofimvaba Previously CDM. XE – Engcobo Now Ngcobo. Previously CDB. XF – Umzimvubu & Port St Johns. Previously CDF. XH – Umzimkulu Now Umzimkhulu. Previously CDP; since 2006 part of KwaZulu-Natal, code NMZ. XJ – Maxesibeni, previously Mount Ayliff, code CDW. XK – KwaBhaca & Mount Frere. Previously CDS. XL – Maloti New district at the foot of the Drakensberg range, home to many Sotho-speakers. XR – Cacadu (Lady Frere) Previously Glen Grey district, code CAX. XN – Idutywa Previously CDC. Now Dutywa. XO – Tsolo Previously CFE. XS – Xalanga, including Cala (previously CCZ). XT – Herschel Previously CBD. XU – Libode Previously CDU. XV – Qumbu Previously CDV. XW – Mount Fletcher. Previously CDT. XY – Centane. Previously Kentani, code CCD. XZ – Ngqeleni Previously CDY. Government

 XG – Transkei government
 XGA – Agriculture & Forestry Department
 XGC – Commerce, Industry & Tourism Department
 XGH – Health & Welfare Department
 XGL – Local Government & Land Tenure Department
 XGW – Works & Energy Department
 XM – Transkei army
 XP – Transkei police
 XPT – Transkei traffic police
 XRT – Transkei Road Transport Service

Transkei became part of the Eastern Cape Province, apart from Umzimkhulu, which was transferred to KwaZulu-Natal in 2006. Venda 

 VD – Dzanani
 VS – Tshitale
 VT – Thohoyandou
 VV – Dzanani, Mutale, Sibasa & Vuwani

Government

 VM – Government vehicles
 VDF – Defence Force
 VP – Police
 VTA – Traffic administration

Venda became part of Limpopo Province. Zululand / KwaZulu 

 ZG – Government
 ZK – Paramount Chief
 ZP – Police
 Z – private vehicles
 ZAR - Zuid Afrikaanse Boervolk

The colony of Zululand lay to the north of the Tugela River (today Thukela) and was annexed to Natal in 1887. Its tribal territories fell under the Paramount Chief of the amaZulu. KwaZulu was created to encompass the tribal territories of both Natal and Zululand, and also fell under the Paramount Chief (today the King) of the amaZulu. In 1994 KwaZulu and Natal were merged as KwaZulu-Natal Province. Ulundi was the capital of KwaZulu and shared the status of KwaZulu-Natal capital with Pietermaritzburg until 2004. See also 

Vehicle Registration Plates of South Africa

References 

Road transport in South Africa