One can register a domain name on the Internet through the Internet Domain Registrar or through a reseller, such as ISPs or web hosting companies.
The cheapest registration fee that I found was $1.99 (R15) for a .net domain through GoDaddy. South African ISPs and web hosting companies (such as www.imaginet.co.za, www.mweb.co.za, www.sadomain.com) usually charge between R100 and R400 to register a domain name.
If you buy the domain directly from the Domain Registrar, they pay a small administration fee to ICANN.
If you buy a domain name from a reseller, they pay a fee to the Domain Registrar and an administration fee to ICANN.
I have found one ISP that provides a free name registration service - www.1stdomain.net, but only when you additionally purchase one of their special packages.