The text is updating but not showing it on screen.
script.Parent.Touched:Connect(function(hit)
if hit.Name == "Collectable" then
game.Workspace.Money.Value = game.Workspace.Money.Value + hit.Value.Value
game.StarterGui.ScreenGui.TextLabel.Text = "Money: "..game.Workspace.Money.Value
hit:Destroy()
end
end)

7 comments
r u using a local script or a server script?
Normal script
Yes that's the problem, GUIs are handled on the client, server scripts can't see PlayerGui's descendants. Also you should be changing the GUI in PlayerGui not StarterGui
Wrong
It's says that "ScreenGui is not a valid member of PlayerGui"
What do you mean "Wrong"? You just took my comment and made it into an answer.
https://scriptinghelpers.org/blog/common-mistakes#PlayerGui