Bem aparentemente seu problema está na modelagem, eu aconselho a estudar sobre diagramas, o
MER - Modelo de Entidade Relacionamento é um excelente exemplo de por onde começar e entender onde entra o que.
Para ir te dando uma luz pelo que entendi no seu texto você tem muito mais entidades(tabelas) do que você montou.
Eu faria da seguinte forma:
Usuário
Id,
Nome,
etc
Extrato
Id,
IdUsuario,
Valor,
Tipo de movimentação(Débito ou Crédito),
Natureza da operação( Se o que motivou o registro for uma transferência seria T, se foi uma compra seria G, se for um recebimento de crédito por entrega de resíduo seria C)
Resíduos
Id,
IdExtrato ( Pra você saber o crédito que foi gerado pela entrada do resido),
Quantidade,
Tipo,
Etc,
O saldo do usuário seria a crédito - débito toda vez que o usuário quisesse saber ou usar o saldo você faria o cálculo dele e se ficar negativo trava a movimentação.
Para as outras naturezas eu faria outras tabelas para ter o controle dessas operações.
Vale ressaltar que modelagem é algo tem interpretativo e há mil forma de fazer isso.
Em vez de ir direto para o script vai montando diagrama verificando e validando as suas entidades.