<a class="eb-image-viewport"></a>

#  Constitutional Court Rules on Tax Treatment of Casino Loyalty Credits in South Africa

  Saturday, 04 October 2025

![Tsogo Sun](https://www.southafricancasinos.co.za/images/law-logo.webp)The Constitutional Court of South Africa has ruled that 'freeplay' credits – non- cashable loyalty rewards given to players by casinos – must be included in taxable revenue calculations under the Western Cape Gambling and Racing Act and Eastern Cape Gambling Act. The judgment came after two major casino operators sought clarity on whether these incentives should be excluded from the definition of "adjusted gross revenue".

In a unanimous decision, the Court held that replay value forms part of taxable revenue. Justice Kollapen noted that the dispute was strictly a matter of interpreting provincial legislation, and not one that raised constitutional questions.

---

## Court Declines Appeal, Cites Lack of Broad Public Impact

The Court dismissed applications for leave to appeal, stating that the case did not present issues of broader public or constitutional significance. According to the judgment, the matter was a narrow statutory interpretation issue affecting the private interests of the parties involved. The Court found no reason to assume the ruling would have wider consequences for other casino operators or the general public.

This aligns with the Court’s consistent view that not all disputes over statutory interpretation rise to the level of constitutional importance, especially when related to provincial legislation like gambling taxes.

## Operators Ordered to Pay Costs, Legal Clarification Provided

Each applicant was ordered to pay the costs for the respondents, including those of two counsel. The judgment effectively clarifies how loyalty credits should be treated for tax purposes under South African gambling law, and reaffirms that jurisdictional scope is limited in such cases.

For players, this ruling is a reminder that while promotional credits add value to the playing experience, they also form part of how operators report and pay their taxes. South African players can continue to explore trusted online casinos that operate within the legal framework—many of which are listed on our platform.

The Court also acknowledged the passing of Advocate J A Newdigate SC, who had made submissions in the Western Cape portion of the case.
<div data-id="1" 
	class="eb-inst eb-hide eb-custom eb-1 "
	data-options='{"trigger":"onPageLoad","trigger_selector":"","delay":100,"early_trigger":false,"scroll_depth":"percentage","scroll_depth_value":5,"firing_frequency":1,"reverse_scroll_close":false,"threshold":0,"close_out_viewport":false,"exit_timer":1000,"idle_time":10000,"close_on_esc":false,"animation_open":"slideInLeft","animation_close":"fadeOut","animation_duration":0,"disable_page_scroll":false,"test_mode":false,"debug":false,"ga_tracking":false,"ga_tracking_id":0,"ga_tracking_event_category":"EngageBox","ga_tracking_event_label":"Box #1 - Convert Form","auto_focus":false}'
	data-type='popup'
	>

	<button type="button" data-ebox-cmd="close" class="eb-close placement-outside" aria-label="Close">
	<img alt="close popup button" />
	<span aria-hidden="true">&times;</span>
</button>
	<div class="eb-dialog " role="dialog" aria-modal="true" id="dialog1" aria-label="dialog1">
		
		<button type="button" data-ebox-cmd="close" class="eb-close placement-inside" aria-label="Close">
	<img alt="close popup button" />
	<span aria-hidden="true">&times;</span>
</button>	
		<div class="eb-container">
						<div class="eb-content">
				<div class="eb">
<p class="eb-p" style="text-align: center;"><div id="cf_3" class="convertforms cf cf-img-above cf-form-bottom cf-success-hideform  cf-hasLabels   cf-labelpos-top" data-id="3">
	<form name="cf3" id="cf3" method="post" action="#">
				<div class="cf-content-wrap cf-col-16 ">
			<div class="cf-content cf-col-16">
												<div class="cf-content-text cf-col " >
					<p><span style="color: brown; font-weight: bold;">EXCLUSIVE Free Casino Bonus offers delivered to your inbox &amp; mobile! </span></p>				</div>
							</div>
		</div>
				<div class="cf-form-wrap cf-col-16 " style="background-color:none">
			<div class="cf-response" role="status" aria-live="polite" aria-atomic="true" id="cf_3_response"></div>
			
							<div class="cf-fields">
					<div class="cf-control-group " data-key="1" data-name="Name" data-type="text" data-required>
		<div class="cf-control-input">
		<input type="text" name="cf[Name]" id="form3_name"
	
	
			required
		aria-required="true"
	
			placeholder="Enter Your Name"
	
	
	
	
	
	
	
	
	class="cf-input  name_form"
>	</div>
</div>
 <div class="cf-control-group " data-key="0" data-name="Email" data-type="email" data-required>
		<div class="cf-control-input">
		<input type="email" name="cf[Email]" id="form3_email"
	
	
			required
		aria-required="true"
	
			placeholder="Enter Your Email Address"
	
	
	
	
	
	
	
	
	class="cf-input  "
>	</div>
</div>
 <div class="cf-control-group " data-key="9" data-name="Mobile Number" data-type="tel" data-required>
		<div class="cf-control-input">
		<input type="tel" name="cf[Mobile Number]" id="form3_mobile-number"
	
	
			required
		aria-required="true"
	
			placeholder="Mobile Number"
	
	
	
	
	
	
	
	
	class="cf-input  "
>	</div>
</div>
 <fieldset class="cf-control-group .convertforms .cf-control-group{border:0px;}" data-key="10" data-name="checkbox_10" data-type="checkbox" data-required>
		<div class="cf-control-input">
		<div class="cf-list ">
			<div class="cf-checkbox-group  cf-checkbox-group-required ">
			<input type="checkbox" name="cf[checkbox_10][]" id="form3_checkbox10_0"
				value="I am 18+"
				data-calc-value="I am 18+"

				
									required
					aria-required="true"
				
				class="cf-input  "
			>
			<label class="cf-label" for="form3_checkbox10_0">
				I am 18+			</label>
		</div>
			<div class="cf-checkbox-group  cf-checkbox-group-required ">
			<input type="checkbox" name="cf[checkbox_10][]" id="form3_checkbox10_1"
				value="I agree with T&amp;Cs and Privacy Policy"
				data-calc-value="I agree with T&amp;Cs and Privacy Policy"

				
									required
					aria-required="true"
				
				class="cf-input  "
			>
			<label class="cf-label" for="form3_checkbox10_1">
				I agree with T&Cs and Privacy Policy			</label>
		</div>
	</div>	</div>
</fieldset>
 <div class="cf-control-group " data-key="2" data-name="submit_2" data-type="submit" >
		<div class="cf-control-input">
		
<div class="cf-text-left">
    <button type="submit" class="cf-btn cf-width-auto ">
        <span class="cf-btn-text">SUBMIT</span>
        <span class="cf-spinner-container">
            <span class="cf-spinner">
                <span class="bounce1" role="presentation"></span>
                <span class="bounce2" role="presentation"></span>
                <span class="bounce3" role="presentation"></span>
            </span>
        </span>
    </button>
</div>

	</div>
</div>
				</div>
			
					</div>

		<input type="hidden" name="cf[form_id]" value="3">

		<input type="hidden" name="8dfb5e016bc919a006e1eb4f1f751178" value="1">
					<div class="cf-field-hp">
								<label for="cf-field-6a58b6ed4f05a" class="cf-label">Last Name</label>
				<input type="text" name="cf[hnpt]" id="cf-field-6a58b6ed4f05a" autocomplete="off" class="cf-input"/>
			</div>
		
	</form>
	</div></p>
</div>			</div>
		</div>
	</div>	
</div>
