select u.id, u.login
coalesce(income.sum, 0) - coalesce(payment.sum, 0) as balance
from users u
left join (
select user_id, sum(money) as sum from moneyuser group by user_id
) income ON u.id = income.user_id
left join (
select user_id, sum(money) as sum from payments group by user_id
) payment ON u.id = payment.user_id
left join и coalesce сделаны намеренно для корректного учёта пользователей, у кого ещё не было дохода либо выплат. Если нужно исключить пользователей, которые вообще ничего не делали, то допишите
where payment.user_id is null and income.user_id is null