[Help] Money saving system

Hello there, I’m developing a database resource that saves locally into the host’s folder in text format.
I need help figuring out what is wrong in my code to get this error:

InvokeNative: execution failed: Argument at index 0 was null.
Error running system event handling function for resource database: citizen:/scripting/lua/scheduler.lua:41: Failed to execute thread: Execution of native 00000000ff7f66ab in script host failed.

At the moment I have my vehicle spawning menu which triggers the database resource to save (remove the price of the vehicle).

vehspawner/sv_vehicles.lua [serverside]

RegisterServerEvent('spawn:moneyCheck')
AddEventHandler('spawn:moneyCheck', function (price, model, x, y, z, heading, ped)
	if not price then
		price = 250
	end
	local paid = 0
	caller =6753
	TriggerEvent('SaveCoords', coords, source)
	TriggerEvent('GetMoney', source, caller)
	paid = 1
end)

RegisterServerEvent('MoneyGot')
AddEventHandler('MoneyGot', function (extractedMoney, caller1)
	if caller1 == 6753 then
		if extractedMoney >= tonumber(price) then
			TriggerEvent('RemoveMoney', source, tonumber(price))
			paid = 1
		else
		paid = 0
		end
		TriggerClientEvent('vehPaid', source, model, x, y, z, heading, ped, paid)
--allows the client to spawn
	end
end)

database/sv_database.lua [serverside]

RegisterServerEvent('AddMoney')
AddEventHandler('AddMoney', function(player, money)
	local SteamID = GetSteamId(player)
	path = ('DATABASE/' .. SteamID .. '.txt')
	
	local savedData = readFile(path)
		for index, key in pairs(values) do
			local data = stringsplit(savedData, ",")
		end
	local uMoney = tonumber(data[3])+tonumber(money)
	writeFile(path, data[1]..","..data[2]..","..data[3]..","..uMoney)
end)

RegisterServerEvent('RemoveMoney')
AddEventHandler('RemoveMoney', function(player, money)
	local SteamID = GetSteamId(player)
	path = ('DATABASE/' .. SteamID .. '.txt')
	
	local savedData = readFile(path)
		for index, key in pairs(values) do
			local data = stringsplit(savedData, ",")
		end
	local uMoney = tonumber(data[3])-tonumber(player, money)
	writeFile(path, data[1]..","..data[2]..","..data[3]..","..uMoney)
end)

RegisterServerEvent('GetMoney')
AddEventHandler('GetMoney', function(player, caller)
	local SteamID = GetSteamId(player)
	path = ('DATABASE/' ..SteamID.. '.txt')
	
	local savedData = readFile(path)
		for index, key in pairs(values) do
			local data = stringsplit(savedData, ",")
		end
	extractedMoney = tonumber(data[4])
	TriggerEvent('MoneyGot', extractedMoney, caller)
end)


RegisterServerEvent('SetMoney')
AddEventHandler('SetMoney', function(player, money)
	local SteamID = GetSteamId(player)
	path = ('DATABASE/' .. SteamID .. '.txt')
	
	local savedData = readFile(path)
		for index, key in pairs(values) do
			local data = stringsplit(savedData, ",")
		end
	writeFile(path, data[1]..","..data[2]..","..data[3]..","..money)
end)

RegisterServerEvent('SaveCoords')
AddEventHandler('SaveCoords', function(coords, player)
	if coords == nil then
		coords = GetEntityCoords(GetPlayerPed(-1))
	else	coords = tonumber(coords)
	end
	local SteamID = GetSteamId(player)
	path = ('DATABASE/' .. SteamID .. '.txt')
	
	local savedData = readFile(path)
		for index, key in pairs(values) do
			local data = stringsplit(savedData, ",")
		end
	writeFile(path, x..","..y..","..z..","..data[4])
end)

RegisterServerEvent('GetCoords')
AddEventHandler('GetCoords', function(player, caller)
	local SteamID = GetSteamId(player)
	path = ('DATABASE' .. SteamID .. '.txt')
	
	local savedData = readFile(path)
		for index, key in pairs(values) do
			local data = stringsplit(savedData, ",")
		end
	extractedX = tonumber(data[1])
	extractedY = tonumber(data[2])
	extractedZ = tonumber(data[3])
end)








function GetSteamId(user)
    local identifiers = GetPlayerIdentifiers(user)[1]
	return identifiers
end

function fileExists(path)
	local file = io.open(path, "rb")
	if file then
		file:close()
	end
	return file ~= nil
end

function writeFile(path, data)
	local file = io.open(path, 'w+')
	file:write(tostring(data))
	file:flush()
	file:close()
end

function readFile(path)
	if fileExists(path) then
		local file = io.open(path, 'w+')
		local buffer = file:read("*a")
		file:close()
		return buffer
	else
		return false
	end
end

function stringsplit(inputstr, sep)
    if sep == nil then
        sep = "%s"
    end
    local t={} ; i=1
    for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
        t[i] = str
        i = i + 1
    end
    return t
end

thank you for helping