CASHAC - Cash Accounting from 6o6oSoftware



1      ACCOUNTS. 2




5      BALANCES. 15


8      BUDGETS. 18

8      SWEEP. 20

9      ARCHIVING.. 21

10        TROUBLESHOOTING.. 22

11        MISCELLANEOUS. 24

Annex A - Double-entry book-keeping. 25

Annex B - Sample Internal Accounts. 26

Annex C - Key to database tables. 28



1        ACCOUNTS


1.1     Summary













Show where in the outside world your money resides.


Examples : individual bank accounts, store cards, credit cards, people who owe you or to whom you owe



Internal (“Pot”)






Show budgets that you set yourself to limit your spending.


Examples : Budget for day-to-day, budget for projects, long term savings, provisions for holidays









Show where your money actually comes from and (more interestingly) goes to.


Examples : Gas, Electricity, Rent, Groceries, Salary








Show who pays you and who you pay.


Examples : Lloyds Bank, Sainsbury’s, friends




You will generally  have many instances of each type of Account, possibly as many as hundreds in the case of Counterparties, possibly as few as just one default in the case of Pots. You may create (or amend) Accounts of any type at any time, either as a stand-alone activity, or in the course of entering Transactions. You cannot change the type of an Account once it has been input.


1.2     External Accounts record where your money and/or your debts can be found in the outside world. The most basic External Account is ‘hard cash’, which records the amounts of notes and coin in your possession. Apart from this ‘hard cash’ account, each External Account is provided for you by a Counterparty, for example your bank. You may have more than one External Account from any Counterparty, for example your current and deposit accounts at your bank, or your personal and joint accounts, in which case these accounts are distinguished by ‘Designations’ (for example, = “current account” or “deposit account” ). If the Account has a positive balance then the Counterparty owes this amount to you; if a negative balance then they owe you a negative amount, ie you owe them. Where a Counterparty owes you money, represented by a positive balance on an External Account, then the steps you need to take to retrieve this money can vary widely : if you have lent money to a dodgy aquaintance then you will need to work quite hard over possibly an extended period of time to persuade them to repay you, whereas if your bank owes you money then you can withdraw it at any time from a cash machine. You can use External Account Groups to distinguish between these types of asset.


1.3     Internal Accounts (or 'Pots') record what your money is for in the future, and are used to budget for future expenditure and income, and to monitor how your actual spending compares with your budget. If you are lucky enough not to have to budget then use a single default Pot for every transaction. The total amount of money in all your Internal Accounts (ie the sum of all balances) will be the same as that in all your External Accounts (see also below under "posting date"); but it is a good strategy to avoid relying on any 1-1 correspondence between individual Internal Accounts and individual External Accounts, even if this is sometimes tempting. For example, I might have a "savings" account at my bank, and I might set aside funds internally to a Savings 'Pot', but to rely on any more than an approximate correspondence between these will cause grief. Better not to rely on any correspondence here at all, since for example the Savings Pot may include funds on more than one external savings account, and may also include part but not all of an external account for example surplus funds on my current account.


1.4     Counterparty Accounts record where in the outside world your money comes from and goes to. For example, you will have instances of these for your employer, for the shops which you use regularly, and for the various utility companies who supply you (gas, electricity, water, local council, etc). You might also have a Counterparty Account entitled "Counterparty not specified" (or similar) for transactions where you are not interested in identifying the Counterparty, for example for Counterparties which you might only use once such as petrol stations.


A Counterparty may be a 'Payer' or a 'Payee' or both. When entering Payments, the picking-list of Counterparties may be restricted to 'Payees', and conversely when entering Receipts the list is restricted to 'Payers'.


Counterparty Accounts do not have balances, since you are not interested in how much money they have. You will of course be interested in amounts which you owe to a Counterparty, or which they owe you : these should be recorded in an External Account for that Counterparty.


1.5     Category Accounts record the types of things you actually spend your money on, for example Rent, Gas, Groceries. You may then analyse how these compare with each other, or with the same Category in a previous period.


1.6     Account Groups


Accounts may be grouped, and these groups may themselves be grouped. This hierarchy of groups and subgroups may be nested to any depth. Cashac reports group balances and movements as the sum of the balances & movements of the Accounts in the group. If you edit the grouping hierarchy, by moving an Account from one Group to another, the Group balances and movements are automatically recalculated at the next Rebalance.


Suggested External Account Groups are

o        Hard cash (notes & coin)

o        Current accounts

o        Deposit/savings accounts

o        Credit cards

o        Store cards

o        Credit accounts (spending) - counterparties to whom I owe money

o        Credit accounts (income) - counterparties who owe me money


Suggested Internal Account Groups are

o        Recurrent Expenditure / Income

the net annual movement across this group should be > 0 !

o        Non-recurrent expenditure (= projects)

o        Non-recurrent income

o        Reserves


Suggested Category Groups might be

o        “Energy” with accounts for Gas and Electricity,

o        “Holidays” with accounts for each individual holiday or type of holiday.


Counterparties might be grouped according to their location (for example “London”, “Brighton”, “internet”)



1.7     Channels may be defined for each external account. These are the various routes via which money can enter or exit the account, for example “debit card”, “cheque”, “internet payment”. Channels are particularly useful for joint accounts, to allow separate reporting on withdrawals by the individual account holders. External Account postings can be filtered by Channel, so that for example you can view just your own cheques from your joint account.





2.1     Transaction types


Table 1 – Summary of transaction types


Txn type name

Account type













Cash Payment (outright)





Outright cash payments in exchange for goods/services, for example via hard cash, cheque, or credit card. Also cash given as gifts where no goods/services are received in exchange.


Cash Receipt (outright)





Outright cash payments received, either in exchange for goods/services or as gifts.


Credit Purchase





Purchases made on credit granted by the supplier (not credit card purchases, which count as Cash Payments). These are a special case of Cash Payment, where the Counterparty is also the Account Provider of the External Account used to pay for the transaction.


Credit Sale





Sales made to customers where you grant them credit. A special case of Cash Receipts, as above.


External Transfer

dr + cr




Transfers between your External Accounts, for example, drawing down from your savings, or paying your credit card bill. Also settlement (repayment) of  outstanding credit, either by you to your suppliers, or by your customers to you.


Internal Transfer


dr + cr



Transfers between your Internal Accounts, to allocate budgets at the start of a budget period, and to clear down budget variances at the end of the budget period (the ‘Sweeo’ function helps with this).


2.2     Transction Types and Account Types


Diagram 1 – Transaction types and account types



Notes to Diagram - The boxes show account types; the lines show transaction types. The numbers on the lines cross-refer to the table of transaction types above. The unbracketted numbers refer to the flows shown by the black arrow-heads, and the bracketted numbers refer to the flows shown by the white arrow-heads.


A transaction of  types 1-4 (Purchases & Sales) impacts four separate accounts, one of each account type.


A transaction of type 5 (External Transfer) impacts two separate accounts, both External, with no impact on any Internal Accounts or Counterparties or Categories.


A transaction of type 6 (Internal Transfer) impacts two separate accounts, both Internal, with no impact on any External Accounts or Counterparties or Categories.


The way in which transactions impact the various account types ensures that the sum of all External Account balances will always equal the sum of all Internal Account balances, although there is no correspondence between individual External and Internal accounts (but see below about Posting Dates). Balances are not maintained for Counterparty or Category accounts.









2.3     Transaction examples









I pay by cheque / debit card for clothes


debit Extl “my bank account”

credit Cpty “store x”

debit Ctgy “Clothes”

debit Intl “Living”



I use my credit card to buy clothes


debit Extl “my credit card”

credit Cpty “store x”

debit Ctgy “Clothes”

debit Intl “Living”



I use my store card to buy clothes



debit Extl “my store card y”

[credit Cpty “store y”]

debit Ctgy “Clothes”

debit Intl “Living”

Txn type CashPayt could also be used, but input of CredPurch is slightly more streamlined


I pay off my credit card


debit Extl “my bank account”

credit Extl “my credit card”

In Cashac this is a transfer not a payment. The payment was made previously when the clothes were bought.


I pay for my groceries including cashback using my debit card


debit Extl “my bank account”

credit Cpty “Tesco”

debit Ctgy “Groceries”

debit Intl “Living”

txn 1 for total amount




debit Cpty “Tesco”

credit Extl “notes & coin”

credit Ctgy “Groceries”

credit Intl “Living”

txn 2 for cashback amount


I pay my bank charges


debit Extl “my bank account”

[credit Cpty “my bank” ]

debit Ctgy “Interest/charges paid”

debit Intl “Living”

“my bank account” is provided by “my bank”.

Cashpayt could also be used for this.


I withdraw cash from an ATM


debit Extl “my bank account”

credit Extl “Notes & Coin”



I pay my builder in hard cash


debit Extl “Notes & Coin”

credit Cpty “my builder”

debit Ctgy “Building Project”

debit Intl “Projects”



I receive my salary direct to my bank account (see also 22)



credit Extl “my bank account”

debit Cpty “my employer”

credit Ctgy “Net Salary”

credit Intl “Living”



I pay for gas by direct debit of £94 per month


debit Extl “my bank account”

credit Extl  “British Gas”

amount = £94

This is the ‘full approach’. The ‘simplistic approach’ is described at 15 below.


I receive a gas bill ‘for’ £331 - in fact this is the residual amount owing carried forward to next time, the charge for the gas this quarter is actually £289


debit Extl “British Gas”

[credit Cpty “British Gas”]

debit Ctgy “Gas”

debit Intl “Living”

Amount = £289

Check that the balance remaining on Extl “British Gas” = £331.

“British Gas” has 2 accounts, Extl (showing how much I owe them or they owe me) and Cpty (showing how much I’ve paid them). Doing it this way really helps if the bill is shared between several co-residents (see below), but is probably over-the-top if it is just you paying.


I work out how much each of my co-residents owe for gas


[debit Cpty “my co-resident” ]

credit Extl “my co-resident : owes”

credit Ctgy “Gas”

credit Intl “Living”



My co-residents reimburse me in cash for their share of the gas & other house bills


debit Extl “my co resident : owes”

credit Extl “notes & coin”

a zero balance is left on the debit account, assuming they pay off all that they owe.


I pay for gas by direct debit of £94 per month (simple method)


debit Extl “my bank account”

credit Cpty  “British Gas”

amount = £94

debit Ctgy “Gas”

debit Intl “Living”

This method does not help you share the bill, nor to keep track of whether your direct debit is for roughly the right amount. But it’s OK if you do not have to share the bill and if you trust the Counterparty to adjust the Direct Debit amount from time to time to match the cost of gas actually used.


I lend my friend money by cheque


debit Extl “my bank account”

credit Extl “my friend owes”

NB not a CashPayt since it leaves a liability outstanding : you expect the money to be repaid. Note the Extl Acc “my friend owes” is distinct from the Cpty “my friend”.


My friend pays me back, eventually, in cash


debit Extl “my friend owes”

credit Extl “notes & coin”



I draw down from my savings



debit Extl “my deposit account”

credit Extl “my current account”

If you use Internal Account balances then there may be one or more corresponding Internal Transfers as well, to show what the money is for (eg a particular project, or eg bailing out recurrent expenditure).


I allocate a monthly budget for all day-to-day living expenses



debit Intl “Budget”

credit Intl “Living”

the balance on Budget after all such transfers (incl #20 below) should be zero or slightly positive.


I allow for how much I earn in my budget


debit Intl “Budgetted Salary”

credit Intl “Budget”

amount = avg monthly salary

a negative balance is left on the debit account until I’m actually paid


At the end of the month I make any budgetted funds (for example, for Going Out) that are surplus this month available for treats


debit Intl “Living”

credit Intl “Treats”

a zero balance is left on the debit account. The ‘sweep’ function could also be used. Illustrates the theory, but I find it too much work in practice to do the accounts to this level of detail.


My employer deducts direct from my salary for my canteen subscriptions





debit Cpty “my employer”

credit Extl “My employer : owes” 

amount = my gross salary

credit Intl “default”


This illustrates a different and more sophisticated approach from that in 10 above. Income Tax can be accounted for in the same way.




debit Extl “My employer : owes”

credit “my employer”

amount = canteen sub

debit Ctgy “Canteen Subs”

debit Intl “default”






debit Extl “My employer : owes”

amount = salary balance after deductions

credit Extl “my bank account”





The following instructions tell you how to populate a completely empty database. Follow the steps in sequence :


1        Create a new External Account for 'hard cash'. The Counterparty who supplies this account should be blank.


2        Create a new Internal Account, entitled “Default” or similar.


3        Enter details of the Counterparties who provide your bank accounts, ie the names of the banks. Check the boxes for both “payer” and “payee”.


4        Create new External Account(s) for your bank account(s) and credit cards. Include the correct ‘opening balance’ in each case. Cashac will prompt you to specify an Internal Account to which to post this opening balance, reply with the “Default” internal account created in step 2 above.


5        Enter details of Counterparties with whom you have a credit relationship, ie your store cards, any customers to whom you grant credit, and any suppliers who grant you credit. Then enter the corresponding External Accounts.


6        Enter details of the main Categories you envisage using for Spending and Income. Don’t worry if the list is nowhere near complete at this stage. It’s a good strategy to make the Categories as specific as possible, for example relating to a particular holiday rather than to Holidays in general; you can use the Account Groups facility at a later stage to provide the levels of aggregation which you need.


7        Don't worry about entering details of Counterparties with whom you you make or receive cash payments (as distinct from credit purchases/sales) - these can be entered at the same time as transactions.


9        You are now ready to start entering Transactions – see below. At the same time you can enter any additional Counterparties and or Categories as needed. Where you are prompted for an Internal Account use the “Default” created in step 2 above (see x below).





4.1     Retain your receipts! Don’t just stuff them in your pocket or in the carrier bag with your purchases, but fold them up like an anal retentive and slip them into your wallet/purse. Dutifully complete cheque stubs and credit stubs with date, amount, counterparty, and a note as to what the payment/receipt was for (eg “shoes”, “birthday present from x”, ...). Ideally every day, and certainly no less frequently than every week, data-capture these retained receipts/stubs as transactions in Cashac.


4.2     [no longer used]


4.3     The ‘posting date’ is an optional input relating to Payments and Receipts (but not Transfers), that defaults to ‘transaction date’ if omitted. Pots and categories are posted on the ‘transaction date’; External Accounts and Counterparties are posted on the ‘posting date’. This allows transactions to be recorded in your own Internal Accounts on their true date, while still correctly reflecting any delay in being applied to external accounts (for example for the time to clear a cheque). The use of ‘posting dates’ means that the aggregate balance across all Internal Accounts might sometimes not equal that across all External Accounts, because of transactions included in the former but not yet in the latter (a future enhancement might be to list such transactions and automatically reconcile these two figures).


4.4     The transaction amount should (usually) be entered without a sign (ie by implication positive). If a negative amount is entered here then Cashac will automatically translate into a transaction in the opposite direction; for example, a negative Payment will be recorded as a Receipt. This facility can be useful to streamline inputting of a series of transactions all of which relate to a single Account.


4.5     If a transaction is cancelled then its postings remain on record against the relevant Accounts but with a zero value; the original amount of the transaction can still be viewed on the ‘Transaction details’ form. This facility is useful in reconciling payments (in particular, cheques) on External Accounts which have persistently failed to be presented : in this circumstance the transaction is cancelled, and if/when it eventually appears on the external account statement it can be ‘uncancelled’ and given the appropriate posting date.


4.6     The ‘Select Account’ dialog box to enter an External or Internal Account or Counterparty or Category, is automatically displayed when the relevant field is clicked with the mouse.

Tip : When creating new Category Accounts, concentrate on what the transaction was for, ie what goods/services were exchanged, rather than whether it was justified or whether you could afford it (which are tasks for a later stage : Internal Account Reconciliation).


4.7     The Category for a transaction can often be derived from the Counterparty. When you select a Counterparty, Cashac automatically displays a list of Counterparty-Categories, ie previously used Categories for this Counterparty (without waiting for you to click the Category field). This will generally be quicker to pick from than a list of all Categories. You can of course opt not to pick from this list but to enter a Category that has not been used before for this Counterparty, or even to enter a completely new Category. If the Counterparty-Category list comprises just a single item then Cashac automatically populates the Category field with this item. You can override this by clicking the Category field.


Similarly the Internal Account (‘Pot’) for a transaction can usually be derived from the Category, and Cashac streamlines transaction input in a similar (but more simplistic) way : Cashac stores a single default Pot for each Category, which is simply the Pot in the last entered transaction for this Category. When entering (or automatically selecting) a Category in transaction input, Cashac automatically populates the Pot field with this default. Again, this can be overridden by clicking on the Pot field.


4.8     The “Repeat” tab on the Transaction Input form may be used to specify that a transaction should automatically repeat, for example for Standing Orders or Direct Debits from your bank account.  Instances of repeating transactions (“Repeaters”) are automatically generated up to (and including) the first instance in the future. Each instance is treated as a transaction in its own right, and can be amended or deleted independently of other instances and of the master details. You can specify how many instances you want, or when the repeat is to finish. Alternatively you can leave the repeater open-ended so that instances will be generated indefinitely; this may be terminated subsequently by marking the master details as “inactive”.  If an instance of an active Repeater is deleted, then it will be regenerated automatically on the next Rebalance - if you want a gap in the repeat-sequence then you should cancel the relevant instance rather than delete it (or make the Repeater inactive). A stand-alone (ie non-repeating) transaction may easily be converted into a repeater via the “Repeat” option on the Transaction Details form : this assumes that the transaction displayed is the first instance, and that the repeat interval is monthly.

Tip : Make as much use of repeating transactions as possible, and not just for your standing orders and direct debits. For example, you can set up an annual repeater for your car service. If you do not know the transaction amount in advance specify a zero amount.


4.9     When entering a repeating transaction an option is available to enter a Reminder, which will automatically pop up the specified number of days before the transaction date. This is especially useful for annual transactions such as servicing the car.


4.10   A “Cashback” option allows a Cashback transaction to be entered at the same time as the underlying purchase transaction. ‘Cashback’ is a facility offered by most supermarkets whereby you can overpay for goods using your debit card, and they refund the overpayment in cash. Cashback data-entry is linked to the underlying purchase so that common fields (eg counterparty, date) do not need to be entered again; but once entered, the two transactions are not automatically linked. A transaction reference of “Cashback” is automatically added, which provides a reminder in postings lists that this transaction has a related transaction in another postings list.   The Cashback facility in Cashac can also be used in reverse, ie to enter a negative Cashback amount, for example where you pay for a meal using your credit- or debit-card, and pay the tip using cash. 


4.11   When recording a deposit of several cheques into an external account, a separate Cashac transaction should be entered for each cheque deposited (since a different Counterparty or Category will apply for each). A facility on the Postings form allows these multiple postings to be selected and their total amount displayed, to aid their reconciliation to the single line on the bank statement.


4.12   When entering payments or receipts, Cashac warns if you have an External Account with the relevant Counterparty which you are not using for this transaction, ie you have a credit relationship with the counterparty which you are not using in this transaction. Some types of credit relationship are easy to bypass inadvertently, for example if you use this method to account for your energy usage, or for your salary. This warning is for information only : for example, you might still want to use your debit card in a store even though you have a store-card for that store.

5        BALANCES


5.1     Balances are reported for External and Internal accounts, but not for Counterparties or Categories.


5.2     Balances and Movements may be viewed for all External Accounts at once (or all Internal Accounts at once) by pressing the “Show Values” button on the Accounts form (available from the main menu). This form shows balances for the relevant Accounts and Groups on 2 specified dates (ie ‘Brought Forward’ and ‘Carried Forward’ balances respectively), and movements for these accounts for the Period between these dates. The form allows the Period to be changed. This form includes (i) any Account with a non-zero balance or movement, even if closed throughout the period, and (ii) any Account opened or closed in the period even if it has no balance/movement. The form excludes accounts which were opened after the period ended, or which were closed before the period started and have a zero balance[1].


5.3     Account balances and movements, as reported on the Accounts form, are generated by the "Rebalance" function. This function also generates instances of repeating transactions and associated reminders, and makes accounts dormant or undormant depending on when they were last posted. A Rebalance becomes necessary after a transaction is input, amened or deleted, if an Account is created or deleted, or if an Account is added to or removed from an Account Group. The Rebalance function is automatically invoked (if required) before displaying account balances; but it is not automatically invoked each time is becomes required because it is not instantaneous. Cashac prompts if a Rebalance is outstanding, and you may invoke it manually from the main menu as required.


5.4     When you create new External or Internal Accounts, you specify whether you expect the balance normally to be less than, equal to, or greater than zero (or a combination). Once balances have been calculated, the software then warns if the Account balance is out of range, via "!" on the Account balances list. Cashac currently imposes a limit of ­+21,474,836.48 on all amounts (balances and transactions) - this is too tight and I am working on increasing it.


5.5     [no longer used]


5.6     Balances are also available for a single account at a time on the Postings Form in ‘statement view’, in the form of a running balance with each posting. These running balances are much quicker to calculate than the balances/movements on the Balances form.




6.1     You will need to ‘reconcile’ your bank statements, credit card bills, etc to your own records. This is really important, although it’s a chore. It provides independent confirmation that both you and your bank have correctly recorded transactions for the account and period in question, as well as highlighting any irregular or fraudulent transactions on your external accounts.


6.2     The steps are as follows :


(i)      Make sure that you have entered all known transactions to Cashac, for example, from receipts, cheque book stubs, email confirmations. It’s best if you do this little and often, ideally daily.


(ii)      Use Cashac to list the postings for the relevant External Account. Use the ‘Postings View’ rather than the ‘Statement View’, so that the running balance is not displayed, which ensures the quickest possible screen refresh after each item is reconciled. Use the “Reconcile Posting” function to check off each posting on screen that also appears on the bank statement. Use a pencil to check these items off on the statement as well. Ideally this should be all of them, fat chance ...


(iii)     External Account postings in Cashac which are dated within the period of the statement but do not appear on the statement, ie not marked as “reconciled” from step (ii), have probably been delayed for some reason, for example, cheques that have not yet been presented for payment. Update the transaction details either to enter a ‘posting date’ that is 1 month (say) ahead, or to cancel the transaction (it can if necessary be uncancelled later).


(iv)     For any statement items without a pencil mark after (ii), check that they are OK, and if so enter matching transaction details for the relevant date. [If they are not OK you will still need to enter matching back-dated details, but once the bank has resolved the problem an equal & opposite transaction can be entered later].


(v)     Now switch to ‘Statement View’ on the Postings form : the running balance for the last posting marked as “reconciled” should now match the ‘carry forward’ balance on the statement - if so use the “Reconcile Balance” function for this posting. This function creates a dummy one-sided ‘posting’ for this account, date and amount : the amount of this ‘posting’ is the expected running balance. When Cashac displays a posting list and encounters a balance reconciliation ‘posting’, it checks that the posting amount matches the running balance and if so displays “Balance Reconciled” (suitably abbreviated); if a mismatch is found then the actual running balance is annotated with the expected running balance together with a “?” .


6.3     Do not attempt to reconcile your Internal Accounts until you have reconciled all your External Accounts for the period in question.  Reconciliation of your Internal Accounts is where you agonise over whether you could afford your expenditure and how you will make savings in the future. For example, the balance on the Internal Account Group “Recurrent Income / Expenditure”) should be positive - if not you are over-spending, and will need to make good the shortfall via an Internal Transfer from somewhere (for example from an Internal Account “Reserves”).

8        BUDGETS


The steps are as follows


(i)      Decide on a budget ‘period’, recommend annual, and a monitoring ‘interval’, for example weekly. It may be that income and expenditure are monitored at different intervals (eg monthly vs weekly).


(ii)      Decide which Categories the budget will cover and ensure that these Categories are grouped together - this will enable you to analyse past spending for this Category Group and thereby arrive at a realistic estimate for your budget in future.


(iii)     Estimate the budgetted spending limit for each monitoring interval - see above.


(iv)     Create 3 new Pots named (say) "Budget fixed", “Budgetted Iincome”, and “Budgetted Expenditure”. If reusing existing pots for this ensure that they have a zero balance.


(v)     Enter a repeating Internal Transfer to move the budgetted amount from “Budget Fixed” to “Budgetted Expenditure” at the start of each monitoring interval. Likewise, enter another repeating Internal Transfer to move your budgetted income from “Budgetted Income” to “Budget Fixed”. The balance on “Budget Fixed” should thereby be zero or slightly positive at the end of the year. - any surplus can be transferred periodically to (say) a “Budget Treats” Pot.


(vi)     Each time a payment is entered that is within the scope of the budget, ensure that the Internal Account is specified as “Budgetted Expenditure”.  Likewise, each time budgetted income is entered as a Receipt transaction, ensure that the Internal Account is specified as “Budgetted Income”.


(vii) Monitor your adherence to the budget by checking the balances on “Budgetted Income” and “Budgetted Expenditure” as frequently as possible, giving special attention to any balances flagged with "!". Pots that are overdrawn will need an injection of new funds fom somewhere, ie an Internal Transfer from another Pot : for example, you might transfer funds from a less essential spending Pot, and defer this less essential spending until you can better afford it; or you might draw down some savings from a "Savings" Pot.


(viii)   At the end of the period, the balance on all your spending and income Pots will ideally be zero, ie your actual spending & income will have matched your estimates. Fat chance. You will need to analyse and explain the differences. Only do this after you are sure that all your ‘actuals’ have been entered; the best way to ensure this is to reconcile all your External Accounts to a date beyond the end of the budget period.


(ix)     Before the start of the next budget period you will need to ‘sweep’ the non-zero balances on your spending and income Pots so that you start the next period with a clean slate ie all zero balances on these Pots.


8        SWEEP


o        The ‘Sweep’ function automatically generates a transaction or set of transactions to clear the balance on one or more accounts to zero.

o        Sweep may be invoked either for an individual Account or for a Group of Accounts. The function is available on the Balances form (for Accounts or Groups) and on the Postings form (for individual Accounts only).

o        When invoked for a Group of Accounts, then every account in the Group, and every account in any subgroups, is swept individually, with one Sweep transaction per Account. A unique reference for the Sweep as a whole is included in the ‘Reference’ and ‘Description’ fields in each transaction, for use by the ‘Unsweep’ function. [This ‘Group Sweep’ facility was useful in previous versions of Cashac where Pots & Categories were combined, and may be less use now that these account types are separate.]

o        Sweep may be invoked for Internal Accounts or for External Accounts. For Internal Accounts, the sweep transaction is an Internal Transfer to a second specified Internal Account. For External Accounts the sweep transaction can be an External Transfer (to a second External Account) or a Payment/Receipt (to/from a Counterparty).

o        Sweep copes with negative balances as well as positive - the automatically-generated transactions are simply in the opposite direction (as if a negative amount is entered in the Full Transaction Input form).

o        The ‘Unsweep’ function automatically undoes a Sweep by deleting all the related transactions that were in the original sweep. It is invoked from the Postings form by selecting the ‘delete’ option for a Sweep posting - you can opt either to delete just the selected posting, or the entire sweep.

o        Sweep is used on Internal Accounts, to clear down accounts at year end to a single Internal Account (this is equivalent to clearing down Profit & Loss accounts in double-entry book-keeping).

o        Sweep may be used on External Accounts for example to clear down monthly balances on the “Notes and Coin” account in respect of spending that has not been itemised. The sweep transaction would be a payment to a Counterparty “Not specified” or similar, with an Internal Account of “Uncategorised cash spending” or similar.



9        ARCHIVING


9.1     After you have used Cashac for a while (probably a few years) the volume of transactions and postings on the database will cause the response time of the program to be significantly impaired[2]. The Archive function allows you to strip out old transactions and postings to resolve this. The ‘brought foward’ balances of the Accounts are automatically updated to reflect the archived postings.


9.2     Use the menu options “Transactions | Journal | First” to see what will be archived.


9.3     The Archive function automatically makes a safe copy of the database, and also of the current version of CASHAC.EXE, since future versions of Cashac will not necessarily be compatible with your old data - but it is wise to supplement these with your own backup copies immediately before the archive.


9.4     It is a good strategy to sweep all your spending and income Internal Accounts before archiving, in order to minimise the number of non-zero brought forward balances on Internal Accounts This implies that archive should be done only as at a year-end.


9.5     For example, my database might contain postings from 1998 to 2008, and I might want to archive 1998-2006 leaving 2007-2008 on file. I should consider clearing down all my Internal Accounts as at 31.12.2006, so that on my newly slimmed-down database I only have one b/fd balance on my Internal Accounts.




10.1   If a transaction or posting is not listed where you expect it, search for it by amount - it may have been entered for the wrong account.


10.2   If an Account or Counterparty is not listed where you expect it, check that the filter is set to “all” so that all accounts / counterparties are listed (not just those active in the specified period).


10.3   If in doubt it is worth running the Cashac Database Check function. This reports a variety of database integrity errors, some of which can be repaired automatically using the Database Repair function, and others which you must repair yourself.


10.4   The following errors are bugs in the ‘Paradox’ database software, so unfortunately are beyond my control to prevent (apart from reprogramming Cashac to use a more reliable database - one day ...), but at least they are curable.


o        Sometimes the program fails in its initialisation phase because it needs exclusive access to a table (usually MOVTS) which is wrongly reported as in use by another process. This happens because the ‘Borland Database Engine’ (BDE) gets it knickers in a twist, especially if other Paradox applications are running. Rebooting the PC cures it.


o        Sometimes Cashac reports ‘record not found’ errors even though the record in question is obviously visible in one of the program’s displays. This is caused by an index file (one of *.PX, *.XG0, *.YG0) falling out of sync with its main table (*.DB). The record in question is on the table but not on the index. This can happen if the program terminates in a non-standard way, for example if the PC has been switched off without exiting Windows. The Indexes for the table in question must be rebuilt using the Repair utility REPAIR.EXE[3]. If you cannot divine which table is at fault (see key to tables below), then repair all of them.


o        Cashac can report an error concerning “blobs” - these are ‘Binary Large Objects’, which is jargon for how text is stored. The only text field in Cashac to which this applies is the ‘Notes’ field in Account and Counterparty details. The error is similar to the Index out of sync problem above - the BDE thinks that the full text on the *.MB file is out of sync with the first few characters of the text duplicated on the *.DB file. As above, a rebuild of the OBJ table using the Repair utility gets round this problem, although the text for the record in question is lost. You may be able to retrieve the text using Copy and Paste from a backup copy of the Cashac database.


10.5   If you are not sure, then one or more (in sequence) of the following steps will usually solve your problem

(i)      Reboot the PC

(ii)      Set display filters to ‘all’

(iii)     Force a Rebalance

(iv)     Run Database Check/Repair

(v)     Rebuild some/all the tables using the Repair utility REPAIR.EXE


10.6   If all else fails, I will be happy to help, email me (address on my website). Include “Cashac” in the email title so that I can distinguish your email from the tsunami of spam. If I do not reply within a few days please try again, my spam filters are draconian and not very sophisticated.




11.1   There’s no printing facility in Cashac – sorry. The ‘Quick Reports’ facility in Delphi (my development platform of choice) stopped working for me on transition to Windows XP. But if you have access to a spreadsheet, eg Excel, then printing can be simply achieved by exporting (via the clipboard) from Cashac to the spreadsheet, and printing from there.


11.2   There’s no online help in Cashac – sorry again. I have not had time to develop this. I hope that this guide helps at least in part to remedy this omission.




Charlie Thomas
December  2010


Annex A - Double-entry book-keeping



Diagram A1 - Double-entry book-keeping

Annex B - Sample Internal Accounts



Diagram B1


Illustrates the strict separation of recurrent and one-off income/expenditure.



Diagram B2


Annex C - Key to database tables


Cashac uses the following data files (in rough order of significance)



Account, (Ext, Int, Cpty, Ctgy) and Group details









Transaction master details for repeating transactions (‘repeaters’)



Used for Counterparty-Categories (sic) - formerly used for Counterparty-Pots when Pots & Categories were combined.


Account balances and movements - this table is cleared down and rebuilt at each Rebalance



Temporary store for monthly and yearly totals used in the Analysis functions.


Any Channels defined for External Accounts






[1] Account details include the date that the Account was opened (leave blank to use the first posting date) and the date that the Account was closed (blank if the Account is still open).  An overrideable warning is given if an attempt is made to post an already-closed or not-yet-open account. An Account can be closed while it still has a non-zero balance - the assumption is that this will be cleared using a transaction back-dated to before the close date.

[2] As an indication of performance, as at February 2009 I have over 35,000 postings online over 8 years, and performance is fine ie no pressure yet to archive. In the next year or two, the balances on some of my Internal Accounts will approach the limit of about £21mn, which will require an Archive operation to – Cashac warns when this internal limit is approached. A future enhancement to Cashac will remove this limit.

[3] The utility REPAIR.EXE is a version of the unsupported Borland utility DTUTIL.EXE