Script not reducing leaderstats

Hi, Im making a purchasing script which takes away money from the player, it works by a local script firing a remote event to the server script however, it doesnt take away any cash
(part of) local script

script.Parent.TextButton.MouseButton1Click:Connect(function()
	if player.leaderstats.Cash.Value >= script.Parent.price.Value then
		game.ReplicatedStorage.Cases.BuyCase:FireServer(player)

server script

local cases = game.ReplicatedStorage.Cases

cases.BuyCase.OnServerEvent:Connect(function(player)
print("pay")
	task.wait(0.1)
	player.leaderstats.Cash.Value = player.leaderstats.Cash.Value - 0.42

end)

FireServer already passes on the player instance

if cash is an intvalue then it will just round up to next interger, try using numbervalues instead