Changeset - 0ee8ef4ade6a
[Not reviewed]
0 7 0
Martin Michlmayr (tbm) - 5 years ago 2019-03-28 14:31:23
tbm@cyrius.com
Use https:// for links
7 files changed with 12 insertions and 12 deletions:
0 comments (0 inline, 0 general)
README.md
Show inline comments
 
# Using Ledger CLI for Non-Profit Organizational Accounting
 

	
 
Non-profit organizations (NPOs), particularly 501(c)(3) charities in the USA,
 
have their own specific accounting needs.  These often differ from for-profit
 
accounting needs.  For example, for-profit-oriented systems often make
 
problematic assumptions about the workflow of accounting tasks (often because
 
NPOs rely primarily on donations, rather than fee-for-service or
 
widget-selling income).  Also, non-profit income is categorized differently
 
than for-profit income, and the reporting requirements vary wildly from their
 
for-profit equivalents.
 

	
 
This project is designed to provide some basic templates, tutorials, workflow
 
documentation and scripts to handle accounting for an NPO.  The primary
 
example is a
 
[direct project (aka Model A) fiscal sponsor NPO](http://en.wikipedia.org/wiki/Fiscal_sponsorship#Models_of_fiscal_sponsorship).
 
[direct project (aka Model A) fiscal sponsor NPO](https://en.wikipedia.org/wiki/Fiscal_sponsorship#Models_of_fiscal_sponsorship).
 

	
 
The tutorials herein
 

	
 
# Copyright and License of this project
 

	
 
The intention is that the examples and templates be of maximum use to
 
everyone in all possible contexts.  As such, no copyleft is applied, and the
 
examples and templates will be licensed under CC-0v1.0.  The documentation
 
itself (such as the READMEs and tutorials) are dual-licensed
 
(GPLv3-or-later|CC-By-SA-3.0) for maximum use as redistributable
 
documentation, or for use in GPLv3-or-later and/or AGPLv3-or-later projects.
 

	
 
# Copyright and License of this File
 

	
 
This specific document, the README.md file for npo-ledger-cli, is copyrighted:
 
  Copyright © 2013, Bradley M. Kuhn
 

	
 
The copyright holders wish that this document could be placed into the public
 
domain.  However, should such a public domain dedication not be possible, the
 
copyright holders grant a waiver and/or license under the terms of CC0-1.0, as
 
published by Creative Commons, Inc.  A copy of CC0-1.0 can be found in the
 
same repository as this README.md file under the filename CC0-1.0.txt.  If
 
this document has been separated from the repository, a [copy of CC0-1.0 can
 
be found on Creative Commons' website](http://creativecommons.org/publicdomain/zero/1.0/legalcode).
 
be found on Creative Commons' website](https://creativecommons.org/publicdomain/zero/1.0/legalcode).
accounts/config/config-accounts.ledger
Show inline comments
 
; -*- ledger -*-
 
; -*- coding: utf-8 -*-
 
;
 
; config-accounts.ledger: The Ledger CLI accounts declarations for NPO use-case.
 
;
 
; Copyright © 2013, Bradley M. Kuhn.
 
;
 
; The copyright holders wish that this document could be placed into the
 
; public domain.  However, should such a public domain dedication not be
 
; possible, the copyright holders grant a waiver and/or license under the
 
; terms of CC0-1.0, as published by Creative Commons, Inc.  A copy of CC0-1.0
 
; can be found in the same repository as this README.md file under the
 
; filename CC0-1.0.txt.  If this document has been separated from the
 
; repository, a copy of CC0-1.0 can be found on Creative Commons' website at
 
; http://creativecommons.org/publicdomain/zero/1.0/legalcode
 
; https://creativecommons.org/publicdomain/zero/1.0/legalcode
 

	
 
; ##############################  GENERAL/SHARED ACCOUNTS #######################
 

	
 
; Shared Asset Accounts
 

	
 
define assetChecker(amt) = (amt > -10.00 or (tag("TaxImplication") !~ /^\s*$/ and tag("Entity") !~ /^\s*$/))
 

	
 
account Asset:Checking
 
   assert assetChecker(amount)
 
   note Checking account for entire organization
 
   assert commodity == "$"
 

	
 
; Shared Liabilities Accounts
 

	
 
account Liabilities:Credit Card:Visa
 
    note Visa Credit Card account for entire organization
 
    assert commodity == "$"
 

	
 

	
 
; Organizational accrual accounts
 

	
 
account Accrued:Accounts Receivable:Main Org
 
    note Accrued receivables for Main Org
 
    assert commodity == "$"
accounts/config/config-commodities.ledger
Show inline comments
 
; -*- ledger -*-
 
; -*- coding: utf-8 -*-
 
;
 
; config-commodities.ledger: The Ledger CLI commodities declarations for NPO use-case.
 
;
 
; Copyright © 2013, Bradley M. Kuhn.
 
;
 
; The copyright holders wish that this document could be placed into the
 
; public domain.  However, should such a public domain dedication not be
 
; possible, the copyright holders grant a waiver and/or license under the
 
; terms of CC0-1.0, as published by Creative Commons, Inc.  A copy of CC0-1.0
 
; can be found in the same repository as this README.md file under the
 
; filename CC0-1.0.txt.  If this document has been separated from the
 
; repository, a copy of CC0-1.0 can be found on Creative Commons' website at
 
; http://creativecommons.org/publicdomain/zero/1.0/legalcode
 
; https://creativecommons.org/publicdomain/zero/1.0/legalcode
 

	
 
;  ############################## COMMODITIES #############################
 

	
 
commodity $
 
   note USD
 
   format $1,000.00
 
   nomarket
 

	
accounts/config/config-npo.ledger
Show inline comments
 
; -*- ledger -*-
 
; -*- coding: utf-8 -*-
 
;
 
; Copyright © 2013, Bradley M. Kuhn.
 
;
 
; The copyright holders wish that this document could be placed into the
 
; public domain.  However, should such a public domain dedication not be
 
; possible, the copyright holders grant a waiver and/or license under the
 
; terms of CC0-1.0, as published by Creative Commons, Inc.  A copy of CC0-1.0
 
; can be found in the same repository as this README.md file under the
 
; filename CC0-1.0.txt.  If this document has been separated from the
 
; repository, a copy of CC0-1.0 can be found on Creative Commons' website at
 
; http://creativecommons.org/publicdomain/zero/1.0/legalcode
 
; https://creativecommons.org/publicdomain/zero/1.0/legalcode
 

	
 
!include config-commodities.ledger
 
!include config-tags.ledger
 
!include config-accounts.ledger
accounts/config/config-tags.ledger
Show inline comments
 
; -*- ledger -*-
 
; -*- coding: utf-8 -*-
 
;
 
; config-tags.ledger: The Ledger CLI tag declarations for NPO use-case.
 

	
 
; Copyright © 2013, Bradley M. Kuhn.
 
;
 
; The copyright holders wish that this document could be placed into the
 
; public domain.  However, should such a public domain dedication not be
 
; possible, the copyright holders grant a waiver and/or license under the
 
; terms of CC0-1.0, as published by Creative Commons, Inc.  A copy of CC0-1.0
 
; can be found in the same repository as this README.md file under the
 
; filename CC0-1.0.txt.  If this document has been separated from the
 
; repository, a copy of CC0-1.0 can be found on Creative Commons' website at
 
; http://creativecommons.org/publicdomain/zero/1.0/legalcode
 
; https://creativecommons.org/publicdomain/zero/1.0/legalcode
 

	
 
; ################################# TAGS ################################
 

	
 
; The Statement, Receipt, and Invoice tags' values should always a be a
 
; relative path names.  Note that we "check", but do not "assert" that the
 
; file name match a standard Unix-like path syntax, without spaces in the
 
; file name.
 

	
 
tag Statement
 
    assert value =~ /[^\/].+/
 
    check value =~ /[^\/][^ ]+(\/[^ ])+/
 

	
 
tag Receipt
 
    assert value =~ /[^\/].+/
 
    check value =~ /[^\/][^ ]+(\/[^ ])+/
 

	
 
tag Invoice
 
    assert value =~ /[^\/].+/
 
    check value =~ /[^\/][^ ]+(\/[^ ])+/
 

	
 
; IncomeType refers to the types of income a non-profit can receive.  In this
 
; example, it's for the categorizations on the USA Form 990.  This could be
 
; changed to accommodate other jurisdictions around the world.
 

	
npo-ledger-cli-tutorial.md
Show inline comments
 
Non-Profit Accounting With Ledger CLI, A Tutorial
 
=================================================
 

	
 
Non-profit organizations (NPOs), particularly 501(c)(3) charities in the USA,
 
have their own specific accounting needs.  These often differ from for-profit
 
accounting needs.  For example, for-profit-oriented systems often make
 
problematic assumptions about the workflow of accounting tasks (often because
 
NPOs rely primarily on donations, rather than fee-for-service or
 
widget-selling income).  Also, non-profit income is categorized differently
 
than for-profit income, and the reporting requirements vary wildly from their
 
for-profit equivalents.
 

	
 
This project is designed to provide some basic templates, tutorials, workflow
 
documentation and scripts to handle accounting for an NPO.  The primary
 
example is a
 
[direct project (aka Model A) fiscal sponsor NPO](http://en.wikipedia.org/wiki/Fiscal_sponsorship#Models_of_fiscal_sponsorship).
 
[direct project (aka Model A) fiscal sponsor NPO](https://en.wikipedia.org/wiki/Fiscal_sponsorship#Models_of_fiscal_sponsorship).
 

	
 
This tutorial was written primarily based on
 
[Software Freedom Conservancy](http://sfconservancy.org/)'s use of Ledger CLI
 
[Software Freedom Conservancy](https://sfconservancy.org/)'s use of Ledger CLI
 
from 2008-10-22 to present for its own accounting needs.  While Conservancy
 
has done well using this system, and believes that its account system meets
 
Generally accepted accounting principles (GAAP), this document **does not**
 
constitute advice from a CPA nor legal advice for a non-profit that seeks to
 
comply with relevant state and/or federal accounting requirements for USA
 
non-profits.  The authors make no representations nor warranties regarding
 
this information and this information is provided for discussion purposes
 
only.  Readers of these tutorial and templates are urged to seek professional
 
advice from a CPA and/or tax legal counsel in constructing an accounting
 
system appropriate for your organization.
 

	
 
Furthermore, given the authors' limited knowledge of accounting requirements
 
outside the USA, the suggestions herein probably are not particularly useful
 
at all for organizations outside the USA.
 

	
 
Configuration of Chart of Accounts
 
----------------------------------
 

	
 
The first thing any accountant will ask to see is your so-called "chart of
 
accounts".  The first time I heard this phrase, I thought it was something
 
complicated.  Fact of the matter is, it's really just a list of all the
 
accounts that you use.  Accountants also use "account codes", which, as near
 
as I can tell, are of primary interest because they get better sorting.
 
Ledger CLI doesn't really support account codes, so I've ignored them.
...
 
@@ -549,27 +549,27 @@ which will show all unique `Entity:` values currently in use.
 
Copyright and License of This File
 
----------------------------------
 

	
 
This specific document, the README.md file for npo-ledger-cli, is copyrighted:
 
  Copyright © 2013, Bradley M. Kuhn
 

	
 
This document's license gives you freedom; you can copy, modify, convey,
 
propagate, and/or redistribute this software under the terms of either:
 

	
 
    * The GNU General Public License as published by the Free Software
 
      Foundation, Inc.; either version 3 of the License, or (at your option)
 
      any later version (aka GPLv3-or-later).
 

	
 
    * *or* the Creative Commons Attribution-ShareAlike 3.0 United States
 
      license, as published by Creative Commons, Inc. (aka CC-By-SA-USA-3.0)
 

	
 
In addition, when you convey, distribute, and/or propagate this document
 
and/or modified versions thereof, you may also preserve this notice so that
 
recipients of such distributions will also have both licensing options
 
described above.
 

	
 
A copy of GPLv3 and CC-By-SA-3.0-USA can be found in the same repository as
 
this file under the filenames GPLv3.txt and CC-By-SA-3.0-USA.txt.  If this
 
document has been separated from the repository, a
 
[copy of GPL can be found on FSF's website](http://www.gnu.org/licenses/gpl.txt)
 
[copy of GPL can be found on FSF's website](https://www.gnu.org/licenses/gpl.txt)
 
and a
 
[copy of CC-By-SA-USA-3.0 can be found on Creative Commons' website](http://creativecommons.org/licenses/by-sa/3.0/us/legalcode).
 
[copy of CC-By-SA-USA-3.0 can be found on Creative Commons' website](https://creativecommons.org/licenses/by-sa/3.0/us/legalcode).
rounding/proposal.md
Show inline comments
 
 
 
Some documentation is  already there on internal representation of numbers in ledger. It stores numbers as rational numbers avoid rounding problems arising of floating point representation.
 

	
 
http://www.ledger-cli.org/3.0/doc/ledger3.html#Specifying-Amounts
 
https://www.ledger-cli.org/3.0/doc/ledger3.html#Specifying-Amounts
 

	
 
The only time when rounding occurs is while displaying. But there are some other rounding problems in accountancy and it will be good to have a discussion on them.
 

	
 
From the point of view of accountants,
 

	
 
1.  Control over displayed precision
 

	
 
There is no option to force a desired display precision. There is no option to increase or decrease display precision via command line.
 
for example 
 
D $1
 
2014-06-09 day 2
 
  A		$1.89
 
  C	
 
  
 
The ledger pay attention to the  the precision used in specifying the amount, whether thousand marks were used, etc. This is done so that printing the commodity looks the same as the way you use it. Using options like D will be overridden.
 
You may use option "D" to increase the display precision but not decrease. Point to note is that there is no effect on calculations.
 

	
 

	
 
2. Too much accuracy.
 

	
 
It is good that ledger is very accurate in calculations but it sometimes becomes inconsistent with real world practices due to this accuracy. At times we may need to truncate some amounts even though amounts specified in the journal may be of higher precision. Uptill now, the precision is really controlled by amounts and they are always rounded and not truncated.
 

	
 

	
 
3. Accumulated inaccuracy
 

	
 
If rounding up was done per transaction, then the error per transaction may add up to significant difference than the actual total.   
 
  For example :
 
2014-06-09 day 2
 
  A		2 AAA @$5.52
 
  C	
 
  
 
2014-06-08 day 1
 
  A		1 BBB @$5.52
 
  C
 
  
 
In the above example if there is rounding up in each transaction then the overall result will be off by few cents.
 
This problem does not occur in ledger as rounding is deffered till the last point that is at the time of display.
 
  
...
 
\ No newline at end of file
 
  
0 comments (0 inline, 0 general)