Did you create your own blueprint or c++ class extending the Playerstate? If yes you can set it as the default playerstate in the PlayerController blueprint (default param). I am not in front of the computer so I am not 100% sure of the place. It is either in the PlayerController or in the Game Mode.
You walk on the money, the client gets the collision event then you call an event on the server only. The server checks the collision, updates the money and callback the client.
On the client you should not update the money. In the event that runs on the server you update the money for the correct controller not the controller 0. You need a way to get the correct one (transfert or id).
Here you see that with my player ID I get the correct player state. It is not necessary to do it this way because the event is already on a controller and when you call it you need to give the right controller. I am doing this for other reasons.
You can also see that I callback the client.
To finish on the client side I tell my game to update the graphics now. You can also use a replicatedusing in C++ to have a function called when it is updated.