Cash Flow Statement based on GAAP (USA) and/or IFRS (international) standards
I was trying to find if someone has requested Cash Flow Statement based on GAAP (USA) and/or IFRS (international) standards to be implemented in GnuCash, but only found such requests from the GnuCash users mailing list, not from the feature request database. On the mailing list, unfortunately, the responses revealed that the GnuCash team is not familiar with the concept, although it has long history and is a well established accounting discipline.
So I decided to make an attempt to describe the idea instead of just referring to external resources (but https://en.wikipedia.org/wiki/Cash_flow_statement really is a good source to begin with).
Technically speaking, the standard Cash Flow Statement is kind of a cross between Income Statement and Balance sheet. It has the style of the balance sheet in expressing an equation between two sides of a computation, and it uses the summing-up mechanism of the Income Statement to sum up not only income and expense, but also asset, liability and equity entries for a given period. And then some.
The report has four parts, where the first three have a break-down of only one level, and the fourth is even simpler:
Operating flow + Investment flow + Financing flow = Cash flow,
where
Operational flow is represented as high level of Income Statement directly in cash basis or supplemented with adjustments to convert it from accrual basis;
Investment flow is represented as high-level grouping of acquisitions and dispositions;
Financing flow is represented as high-level grouping of liabilities + equities + receivables flow;
Cash flow is represented as a simple calculation: "cash at end of period minus cash at beginning of period".
The first thing to note is that assets are divided into three sub-classes: Investment, Receivable and Cash, which each separately take part in the big equation. You cannot generate a standard Cash Flow Statement without these subclasses, and you have to make sure all asset accounts belong to one of them. So a user who wants to use the standard report has to make sure the classification of assets is done right.
The next thing to note is much trickier. In principle, Income Statement is always given on accrual basis, but the Cash Flow Statement is always given on cash basis. To achieve this, there are two ways to represent the Operating flow: direct and indirect.
For the indirect form, you have to supplement the Net Income from Income Statement by adding entries that adjust the result from accrual to cash basis. This is easy, once we make sure GnuCash ignores these additional entries in book closing as well as in generating the Income Statement.
For the direct form, you have to bypass part or all of the Income Statement, depending on how exactly the accrual basis was achieved, but in my limited understanding, the choices again require you to supply additional entries to finish the job.
Someone who has actual experience of other accounting software might be able to explain how these additional entries possibly could be supplied automatically. Sine I don't have such experience, as I really have trouble imagining it.