You have two types of money movements - there should be a table for deposits and a table for withdrawals.
These would be related to the Accounts Table.
Like selling widgets - there are sales orders and purchase orders - incoming and outgoing.
there should be a table for deposits and a table for withdrawals
Not necessarily. You can also have a column (field) for deposits, a column (field) for withdrawals. This makes it fairly simple to then set up a running balance field (column) to produce a layout that looks very similar to the traditional bookkeeping ledger.
You might use these fields:
cBal (calculation field: Deposit - Withdrawal)
sBalanceRunning (Summary fields, running total of cBal).