Re: Changes to the accounting system in 2020

Lists: spi-general
From: Martin Michlmayr <tbm(at)spi-inc(dot)org>
To: spi-general(at)lists(dot)spi-inc(dot)org
Subject: Changes to the accounting system in 2020
Date: 2021-07-12 09:06:34
Message-ID: YOwGGo9T5EO28Kpa@jirafa.cyrius.com
Views: Raw Message | Whole Thread | Download mbox
Lists: spi-general

SPI has made two substantial changes to its accounting system and
books in 2020:

* Migration from cash basis to accrual basis: the accrual basis is a
method of accounting which gives a more accurate picture of the
financial status. It also makes it easier to track outstanding
payments.

* Migration from ledger to beancount: both are text-based, FOSS
accounting systems. Beancount offers a number of advantages, in
particular a Python API which can be used to access data and to extend
the functionality of the accounting system.

We have used the migration to beancount to improve the accounting
process in a number of ways, in particular to add more automation and
checks.

* Importers for various donation platforms to reduce the amount of time
it takes to import data while making the process less error-prone.
We use OFX/CVS importers from beancount, but we have written importers
for a number of donation platforms that are used to donate to SPI
(e.g. Network for Good, CyberGrants).

* Scripts that encode business logic in order to automate common
processes. For example, when importing bank transactions, scripts
now look up outstanding accounts payable and assign transactions
accordingly.

* Validation of data through plugins, such as ensuring that payments
match the accrued amounts, checking payees for misspellings, and more.

* Bank reconciliation: due to the way checks are handled, a bank
reconciliation showing differences between the bank statements and our
books of record has to be generated every month. This process
is handled by a script. (Checks are recognized immediately when they
are received/sent, not when they are actually deposited by the bank.)

Finally, we improved the internal documentation considerably,
documenting not only the accounting system, but also common tasks and
areas, such as onboarding of new projects, vendor management, and more.
While the documentation isn't 100% complete, I'm pretty happy with the
current state, in particular I think it does a good job of reducing the
"bus factor" (i.e. someone else could take over if I'm hit by a bus).

# Future work

* Reporting: the reporting script is still the old one, and it's no
longer fit for purpose. I need to replace it completely, which is
more complex than one would expect for a number of reasons.
(One reason is that projects want monthly reports that are fairly
stable, but, especially now that we're on the accruals basis,
things change sometimes: e.g. donation platforms often inform us
months later of donations but we recognize the donation on the
day it was made, not when we were informed.)

* Customized reporting: we sometimes do some customized reports for
projects; it would be good to automate those.

* Item-level data for projects: we intend to share transaction data
with projects, but again this is slightly more complex than one
might think. (One reason is that one transaction can involve
multiple projects, so we have to write a script that splits up
such transactions.)

* PayPal importer for beancount: almost everything is beancount "native"
now except the reporting script (we convert from beancount to ledger
and run our old ledger reporting script) and PayPal (we use our old
ledger script and convert to beancount). The reason I haven't
converted the PayPal importer is because it contains quite a bit of
business logic, but I'll convert it eventually.

--
Martin Michlmayr
Contractor, Software in the Public Interest, Inc.


From: Louis-Philippe Véronneau <pollo(at)debian(dot)org>
To: spi-general(at)lists(dot)spi-inc(dot)org
Subject: Re: Changes to the accounting system in 2020
Date: 2021-07-12 16:05:07
Message-ID: a9d14c9f-6340-57c9-3ea9-a4a1063bd353@debian.org
Views: Raw Message | Whole Thread | Download mbox
Lists: spi-general

On 2021-07-12 05 h 06, Martin Michlmayr wrote:
> SPI has made two substantial changes to its accounting system and
> books in 2020:

Many, many thanks for the work you've been doing.

--
⢀⣴⠾⠻⢶⣦⠀
⣾⠁⢠⠒⠀⣿⡁ Louis-Philippe Véronneau
⢿⡄⠘⠷⠚⠋ pollo(at)debian(dot)org / veronneau.org
⠈⠳⣄


From: Steve McIntyre <steve(at)einval(dot)com>
To: Louis-Philippe Véronneau <pollo(at)debian(dot)org>
Cc: spi-general(at)lists(dot)spi-inc(dot)org
Subject: Re: Changes to the accounting system in 2020
Date: 2021-07-12 16:18:28
Message-ID: 20210712161828.GP1798@tack.einval.com
Views: Raw Message | Whole Thread | Download mbox
Lists: spi-general

On Mon, Jul 12, 2021 at 12:05:07PM -0400, Louis-Philippe Véronneau wrote:
>On 2021-07-12 05 h 06, Martin Michlmayr wrote:
>> SPI has made two substantial changes to its accounting system and
>> books in 2020:
>
>Many, many thanks for the work you've been doing.

+1 - thanks Martin!

--
Steve McIntyre, Cambridge, UK. steve(at)einval(dot)com
Is there anybody out there?


From: Peter Cock <p(dot)j(dot)a(dot)cock(at)googlemail(dot)com>
To: Martin Michlmayr <tbm(at)spi-inc(dot)org>
Cc: spi-general(at)lists(dot)spi-inc(dot)org
Subject: Re: Changes to the accounting system in 2020
Date: 2021-07-14 08:23:16
Message-ID: CAKVJ-_6ghEwxCAiqi-Nsf-TeHKsRsEEPicxi96KFE_WXpNK3yg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox
Lists: spi-general

Thank you Martin,

While I have no comment on the merits of cash vs accrual basis, having a
more documented and more automated process sounds like excellent work.
Reducing the "bus factor" is also really important but hard work.

Kind regards,

Peter
(Open Bioinformatics Foundation)

On Mon, Jul 12, 2021 at 10:06 AM Martin Michlmayr <tbm(at)spi-inc(dot)org> wrote:
>
> SPI has made two substantial changes to its accounting system and
> books in 2020:
>
> * Migration from cash basis to accrual basis: the accrual basis is a
> method of accounting which gives a more accurate picture of the
> financial status. It also makes it easier to track outstanding
> payments.
>
> * Migration from ledger to beancount: both are text-based, FOSS
> accounting systems. Beancount offers a number of advantages, in
> particular a Python API which can be used to access data and to extend
> the functionality of the accounting system.
>
> We have used the migration to beancount to improve the accounting
> process in a number of ways, in particular to add more automation and
> checks.
>
> * Importers for various donation platforms to reduce the amount of time
> it takes to import data while making the process less error-prone.
> We use OFX/CVS importers from beancount, but we have written importers
> for a number of donation platforms that are used to donate to SPI
> (e.g. Network for Good, CyberGrants).
>
> * Scripts that encode business logic in order to automate common
> processes. For example, when importing bank transactions, scripts
> now look up outstanding accounts payable and assign transactions
> accordingly.
>
> * Validation of data through plugins, such as ensuring that payments
> match the accrued amounts, checking payees for misspellings, and more.
>
> * Bank reconciliation: due to the way checks are handled, a bank
> reconciliation showing differences between the bank statements and our
> books of record has to be generated every month. This process
> is handled by a script. (Checks are recognized immediately when they
> are received/sent, not when they are actually deposited by the bank.)
>
> Finally, we improved the internal documentation considerably,
> documenting not only the accounting system, but also common tasks and
> areas, such as onboarding of new projects, vendor management, and more.
> While the documentation isn't 100% complete, I'm pretty happy with the
> current state, in particular I think it does a good job of reducing the
> "bus factor" (i.e. someone else could take over if I'm hit by a bus).
>
> # Future work
>
> * Reporting: the reporting script is still the old one, and it's no
> longer fit for purpose. I need to replace it completely, which is
> more complex than one would expect for a number of reasons.
> (One reason is that projects want monthly reports that are fairly
> stable, but, especially now that we're on the accruals basis,
> things change sometimes: e.g. donation platforms often inform us
> months later of donations but we recognize the donation on the
> day it was made, not when we were informed.)
>
> * Customized reporting: we sometimes do some customized reports for
> projects; it would be good to automate those.
>
> * Item-level data for projects: we intend to share transaction data
> with projects, but again this is slightly more complex than one
> might think. (One reason is that one transaction can involve
> multiple projects, so we have to write a script that splits up
> such transactions.)
>
> * PayPal importer for beancount: almost everything is beancount "native"
> now except the reporting script (we convert from beancount to ledger
> and run our old ledger reporting script) and PayPal (we use our old
> ledger script and convert to beancount). The reason I haven't
> converted the PayPal importer is because it contains quite a bit of
> business logic, but I'll convert it eventually.
>
> --
> Martin Michlmayr
> Contractor, Software in the Public Interest, Inc.
> _______________________________________________
> Spi-general mailing list
> Spi-general(at)lists(dot)spi-inc(dot)org
> http://lists.spi-inc.org/listinfo/spi-general