Ваша задача решена еще лет 20 назад в 1С
Данные, подобные вашим, хранятся вот в таких файлах DBF (аналоги таблиц в MySQL)
www.script-coding.com/v77tables.html#3.4.2.1.
Т.н. "регистр накоплений".
2 таблицы - движений и итогов
В таблице движений хранятся все изменения баланса (с плюсом и минусом).
А с помощью таблицы итогов быстро можно получить текущий баланс, даже если у вас 1 млн. клиентов и 1 млн. документов у каждого.
Если же вы предполагаете исправлять документы задним числом, то нужна еще одна таблица - для хранения последовательности. Строго говоря, это всего одна строка в таблице - а по какой момент времени лазали задним числом, это нужно чтобы инвалидировать часть записей таблицы итогов.
Система довольно надежна и даже при многократных исправлениях документов, многократных перезаписях документов, технических сбоях и т.п. - прекрасно работает.