|
|
|
@ -13,10 +13,10 @@ 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**
|
|
|
|
@ -99,6 +99,7 @@ will generate a file called `chart-of-accounts.csv`, which is the chart of accou
|
|
|
|
|
|
|
|
|
|
The main command-line program though, that generates the chart of accounts
|
|
|
|
|
looks like this:
|
|
|
|
|
|
|
|
|
|
$ ledger -f accounts/main/books.ledger -V -F "%-150A\n" -w -s -b 2012/01/01 -e 2013/01/01 reg
|
|
|
|
|
|
|
|
|
|
Note that this is bound by date. Typically, it makes sense to list your
|
|
|
|
@ -168,10 +169,10 @@ example, in this entry:
|
|
|
|
|
|
|
|
|
|
The portion of the transaction that credits the `Income:Main Org:Donations`
|
|
|
|
|
has three tags: [`Entity`](#entity-tag), [`Invoice`](#invoice-tag) and
|
|
|
|
|
[`IncomeType`](#income-type). The `Entity` and `Invoice` tags, since they're
|
|
|
|
|
[`IncomeType`](#incometype-tag). The `Entity` and `Invoice` tags, since they're
|
|
|
|
|
listed at the top of the transaction, propagate through and apply to both
|
|
|
|
|
sides. But, the `IncomeType` tag, which has no meaning for `Accrued:`
|
|
|
|
|
accounts, so it is applied only to the `Income:Main Org:Donations` part of
|
|
|
|
|
accounts, is applied only to the `Income:Main Org:Donations` part of
|
|
|
|
|
the transaction.
|
|
|
|
|
|
|
|
|
|
Below you'll find detailed descriptions of all the possible tags that are
|
|
|
|
@ -199,12 +200,12 @@ contains the receipt from that purchase.
|
|
|
|
|
|
|
|
|
|
#### Receipt Tag
|
|
|
|
|
|
|
|
|
|
The `Receipt:` tag refers to receipt of some sort. Typically, this is a
|
|
|
|
|
The `Receipt` tag refers to receipt of some sort. Typically, this is a
|
|
|
|
|
document that shows clear confirmation that the transaction has already
|
|
|
|
|
occurred. The value of the `Receipt:` tag is always a valid pathname in the
|
|
|
|
|
occurred. The value of the `Receipt` tag is always a valid pathname in the
|
|
|
|
|
repository to the document, [as described above](#documentation-tags).
|
|
|
|
|
|
|
|
|
|
Some examples of appropriate uses of the `Receipt:` are:
|
|
|
|
|
Some examples of appropriate uses of the `Receipt` are:
|
|
|
|
|
|
|
|
|
|
* a point-of-sale credit card receipt from a purchase, given by a cashier or
|
|
|
|
|
sent via email after the purchase has occurred.
|
|
|
|
@ -221,13 +222,13 @@ Some examples of appropriate uses of the `Receipt:` are:
|
|
|
|
|
|
|
|
|
|
#### Invoice Tag
|
|
|
|
|
|
|
|
|
|
The `Invoice:` tag refers to an actual invoice, either generated by the
|
|
|
|
|
The `Invoice` tag refers to an actual invoice, either generated by the
|
|
|
|
|
organization or received by the organization. Typically, this is a document
|
|
|
|
|
that is a request for payment, rather than documenting an actual payment that
|
|
|
|
|
has occurred. The value of the `Invoice:` tag is always a valid pathname in
|
|
|
|
|
has occurred. The value of the `Invoice` tag is always a valid pathname in
|
|
|
|
|
repository to the document, [as described above](#documentation-tags).
|
|
|
|
|
|
|
|
|
|
Some examples of appropriate uses of the `Invoice:` tag are:
|
|
|
|
|
Some examples of appropriate uses of the `Invoice` tag are:
|
|
|
|
|
|
|
|
|
|
* an actual invoice as sent by a vendor to the organization.
|
|
|
|
|
|
|
|
|
@ -238,16 +239,45 @@ Some examples of appropriate uses of the `Invoice:` tag are:
|
|
|
|
|
reimburse (e.g., an expense report, requesting for reimbursement of travel
|
|
|
|
|
expenses).
|
|
|
|
|
|
|
|
|
|
#### PurchaseOrder Tag
|
|
|
|
|
|
|
|
|
|
The `PurchaseOrder` tag refers to a document issued by the buyer to a
|
|
|
|
|
seller of a service or product. It is often issued before the supplier
|
|
|
|
|
can create and submit an invoice.
|
|
|
|
|
|
|
|
|
|
Some examples of appropriate uses of the `PurchaseOrder` tag are:
|
|
|
|
|
|
|
|
|
|
* A purchase order for conference sponsorship.
|
|
|
|
|
|
|
|
|
|
* A purchase order for sponsorship of outreach activities.
|
|
|
|
|
|
|
|
|
|
#### Contract Tag
|
|
|
|
|
|
|
|
|
|
The `Contract` tag refers to contracts that define a commercial
|
|
|
|
|
relationship.
|
|
|
|
|
|
|
|
|
|
Some examples of appropriate uses of the `Contract` tag are:
|
|
|
|
|
|
|
|
|
|
* a contract between the organization and an independent contractor
|
|
|
|
|
providing development services.
|
|
|
|
|
|
|
|
|
|
* a contract with a venue for a conference.
|
|
|
|
|
|
|
|
|
|
* a contract with a vendor to supply food for a conference.
|
|
|
|
|
|
|
|
|
|
* a contract for insurance services (such as directors and officers liability
|
|
|
|
|
insurance).
|
|
|
|
|
|
|
|
|
|
#### Statement Tag
|
|
|
|
|
|
|
|
|
|
The `Statement:` tag refers to any sort of written statement received from an
|
|
|
|
|
The `Statement` tag refers to any sort of written statement received from an
|
|
|
|
|
external party (or even perhaps generated internally) that provides document,
|
|
|
|
|
insight, or other information about the transaction. The value of the
|
|
|
|
|
`Statement:` tag is always a valid pathname in the repository to the
|
|
|
|
|
`Statement` tag is always a valid pathname in the repository to the
|
|
|
|
|
document, [as described above](#documentation-tags).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Some examples of appropriate uses of the `Statement:` tag are:
|
|
|
|
|
Some examples of appropriate uses of the `Statement` tag are:
|
|
|
|
|
|
|
|
|
|
* bank statements, as received from the banking institution.
|
|
|
|
|
|
|
|
|
@ -266,14 +296,14 @@ Some examples of appropriate uses of the `Statement:` tag are:
|
|
|
|
|
The `TaxReporting` tag is an optional tag for `Assets` accounts that debit to
|
|
|
|
|
the account.
|
|
|
|
|
|
|
|
|
|
When provided, the `TaxReporting` accompanies a `TaxImplication` information
|
|
|
|
|
When provided, the `TaxReporting` tag accompanies a `TaxImplication` information
|
|
|
|
|
tag. The TaxReporting refers to a document that verifies the choice for the
|
|
|
|
|
`TaxImplication` tag. For example, for individual contractors in the USA, a
|
|
|
|
|
`TaxImplication` of `1099` would be well served by a `TaxReporting` that
|
|
|
|
|
links to a [W-9](https://www.irs.gov/pub/irs-pdf/fw9.pdf) for the individual
|
|
|
|
|
links to a [W-9](https://www.irs.gov/forms-pubs/about-form-w-9) for the individual
|
|
|
|
|
being paid. For a individual foreign contractor, the `TaxReporting` might
|
|
|
|
|
link to a
|
|
|
|
|
[W8-BEN](https://www.irs.gov/uac/form-w-8ben-certificate-of-foreign-status-of-beneficial-owner-for-united-states-tax-withholding)
|
|
|
|
|
[W-8BEN](https://www.irs.gov/forms-pubs/about-form-w-8-ben)
|
|
|
|
|
for the payee.
|
|
|
|
|
|
|
|
|
|
### Information Tags
|
|
|
|
@ -283,8 +313,8 @@ considered pure "meta-data" for a ledger entry.
|
|
|
|
|
|
|
|
|
|
#### Entity Tag
|
|
|
|
|
|
|
|
|
|
The `Entity:` tag is required for many types of ledger entries. The value of
|
|
|
|
|
the `Entity:` tag is a unique moniker that identifies the organization,
|
|
|
|
|
The `Entity` tag is required for many types of ledger entries. The value of
|
|
|
|
|
the `Entity` tag is a unique moniker that identifies the organization,
|
|
|
|
|
company, person, or legal entity that is the external party for the
|
|
|
|
|
transaction.
|
|
|
|
|
|
|
|
|
@ -294,12 +324,12 @@ trouble. However, you could implement checks in
|
|
|
|
|
typos have occurred. This would be somewhat cumbersome, since Ledger CLI
|
|
|
|
|
would likely require that the monikers be encoded into a regular expression.
|
|
|
|
|
Barring that, the
|
|
|
|
|
[integrity of your data should be periodically checked](checking-integrity-of-tag).
|
|
|
|
|
[integrity of your data should be periodically checked](#checking-integrity-of-a-tag).
|
|
|
|
|
|
|
|
|
|
#### IncomeType Tag
|
|
|
|
|
|
|
|
|
|
The `IncomeType:` tag is used for all `Income:` accounts. This refers to the
|
|
|
|
|
type of income. The value of the `IncomeType:` tag is always a string.
|
|
|
|
|
The `IncomeType` tag is used for all `Income` accounts. This refers to the
|
|
|
|
|
type of income. The value of the `IncomeType` tag is always a string.
|
|
|
|
|
Since this particular system is designed for USA non-profit entities who file
|
|
|
|
|
USA Form 990, the following `IncomeType` values are supported:
|
|
|
|
|
|
|
|
|
@ -318,12 +348,12 @@ Form 990 filing.
|
|
|
|
|
|
|
|
|
|
#### TaxImplication Tag
|
|
|
|
|
|
|
|
|
|
The `TaxImplication:` tag is used for all `Asset:` accounts when the
|
|
|
|
|
The `TaxImplication` tag is used for all `Asset:` accounts when the
|
|
|
|
|
transaction includes a payment of $10.00 or more leaving the account. This
|
|
|
|
|
tag catalogs any tax implications that might occur on outgoing funds.
|
|
|
|
|
|
|
|
|
|
The most important USA-related issue tracked by this tag are contractors who
|
|
|
|
|
must have annual 1099 and/or W2 issued. An [`Entity:` tag](entity-tag) should always
|
|
|
|
|
must have annual 1099 and/or W2 issued. An [`Entity` tag](#entity-tag) should always
|
|
|
|
|
go along with a TaxImplication tag.
|
|
|
|
|
|
|
|
|
|
The possible values for this field are:
|
|
|
|
@ -339,8 +369,8 @@ The possible values for this field are:
|
|
|
|
|
|
|
|
|
|
* `Accountant-Advises-No-1099`, indicating that the circumstances and rules
|
|
|
|
|
seem to indicate a USA Federal Form 1099 should be issued for the `Entity`
|
|
|
|
|
involved, but an outside accountant advised that no 1099 need be issues for
|
|
|
|
|
this `Entity`.
|
|
|
|
|
involved, but an outside accountant advised that no 1099 needs be issued
|
|
|
|
|
for this `Entity`.
|
|
|
|
|
|
|
|
|
|
* `Bank-Transfer`, indicating that the amount is a transfer between two
|
|
|
|
|
banking accounts under the control of the NPO itself.
|
|
|
|
@ -396,7 +426,7 @@ that the geographical reason be identified with the
|
|
|
|
|
code for the country where the grant goes.
|
|
|
|
|
|
|
|
|
|
This tag is to assist in filing
|
|
|
|
|
Form 990, [Schedule I](https://www.irs.gov/uac/about-schedule-i-form-990) and
|
|
|
|
|
Form 990, [Schedule I](https://www.irs.gov/forms-pubs/about-schedule-i-form-990) and
|
|
|
|
|
[Schedule F](https://www.irs.gov/charities-non-profits/exempt-organizations-annual-reporting-requirements-foreign-activities-form-990-schedule-f-activities-reported).
|
|
|
|
|
|
|
|
|
|
### Account Type Documentation Requirements
|
|
|
|
@ -412,22 +442,22 @@ ledger itself via the configurations found in `config-tags.ledger` and
|
|
|
|
|
|
|
|
|
|
Each `Expenses:` account entry must be tagged with the following tags:
|
|
|
|
|
|
|
|
|
|
* One of: [`Invoice:`](#invoice-tag), [`Receipt:`](#receipt-tag), or
|
|
|
|
|
* One of: [`Invoice`](#invoice-tag), [`Receipt`](#receipt-tag), or
|
|
|
|
|
[`Statement`](#statement-tag). (The only exception to this rule: an entry
|
|
|
|
|
does not need an `Invoice:`, `Receipt`, nor a `Statement` tag if the
|
|
|
|
|
does not need an `Invoice`, `Receipt`, nor a `Statement` tag if the
|
|
|
|
|
[payee was never charged](#never-charged-payee).)
|
|
|
|
|
|
|
|
|
|
* A [`Program:`](#program-tag) tag.
|
|
|
|
|
* A [`Program`](#program-tag) tag.
|
|
|
|
|
|
|
|
|
|
Expense accounts can have the following optional tag:
|
|
|
|
|
|
|
|
|
|
* A [`GrantLocation:`](#grantlocation-tag) tag.
|
|
|
|
|
* A [`GrantLocation`](#grantlocation-tag) tag.
|
|
|
|
|
|
|
|
|
|
#### NEVER CHARGED Payee
|
|
|
|
|
|
|
|
|
|
The only exception to the standard tagging requirement is when the payee has
|
|
|
|
|
been modified to indicate that the expense was `NEVER CHARGED`. This is an
|
|
|
|
|
historical special-case. The solution was originally design for the
|
|
|
|
|
been modified to indicate that the expense was `NEVER CHARGED`. This is a
|
|
|
|
|
historical special-case. The solution was originally designed for the
|
|
|
|
|
following scenario:
|
|
|
|
|
|
|
|
|
|
Suppose an expense was expected — for example, a situation where you
|
|
|
|
@ -452,7 +482,7 @@ it like this:
|
|
|
|
|
Liabilities:Credit Card:Visa $100.00
|
|
|
|
|
Expenses:Conservancy:Hosting $-100.00
|
|
|
|
|
|
|
|
|
|
However, going forward, you'd likely never enter anything the ledger
|
|
|
|
|
However, going forward, you'd likely never enter anything into the ledger
|
|
|
|
|
**until** you had real proof via an Invoice, Receipt or Statement that showed
|
|
|
|
|
the Expense did/should occur. This use of `NEVER CHARGED` in the payee is
|
|
|
|
|
thus deprecated.
|
|
|
|
@ -461,20 +491,20 @@ thus deprecated.
|
|
|
|
|
|
|
|
|
|
Each `Income:` account must have the following tags:
|
|
|
|
|
|
|
|
|
|
* One of: [`Invoice:`](#invoice-tag),
|
|
|
|
|
[`PurchaseOrder:`](#purchase-order-tag),
|
|
|
|
|
[`Statement:`](#statement-tag), or
|
|
|
|
|
* One of: [`Invoice`](#invoice-tag),
|
|
|
|
|
[`PurchaseOrder`](#purchaseorder-tag),
|
|
|
|
|
[`Statement`](#statement-tag), or
|
|
|
|
|
[`Contract`](#contract-tag). Exceptions to this requirement are as follows:
|
|
|
|
|
+ the income generated from the transaction is less than $800, or
|
|
|
|
|
+ the `IncomeType` is `RBI` and the income is for a defined, public
|
|
|
|
|
program (such as conference registration)
|
|
|
|
|
|
|
|
|
|
* An [`Entity:`](#entity-tag) tag, *iff.* the Income for the transaction is
|
|
|
|
|
* An [`Entity`](#entity-tag) tag, *iff.* the Income for the transaction is
|
|
|
|
|
for more than $800.
|
|
|
|
|
|
|
|
|
|
* An [`IncomeType:`](#incometype-tag) tag.
|
|
|
|
|
* An [`IncomeType`](#incometype-tag) tag.
|
|
|
|
|
|
|
|
|
|
* A [`Program:`](#program-tag) tag.
|
|
|
|
|
* A [`Program`](#program-tag) tag.
|
|
|
|
|
|
|
|
|
|
Reports For Various Situations
|
|
|
|
|
------------------------------
|
|
|
|
@ -536,7 +566,7 @@ FIXME: example output
|
|
|
|
|
|
|
|
|
|
### Checking Integrity of a Tag
|
|
|
|
|
|
|
|
|
|
[As mentioned](#entity-tag), the `Entity:` tag is one example among many
|
|
|
|
|
[As mentioned](#entity-tag), the `Entity` tag is one example among many
|
|
|
|
|
where the value is a wide range, but since Ledger CLI isn't backed by a more
|
|
|
|
|
complete ERP system, it's possible during data entry for typos to make a
|
|
|
|
|
serious problem. One work around to this flaw is to periodically run a
|
|
|
|
@ -544,7 +574,7 @@ command like:
|
|
|
|
|
|
|
|
|
|
$ ledger -f accounts/books.ledger -F '%(tag("Entity"))\n' reg|sort|uniq|less
|
|
|
|
|
|
|
|
|
|
which will show all unique `Entity:` values currently in use.
|
|
|
|
|
which will show all unique `Entity` values currently in use.
|
|
|
|
|
|
|
|
|
|
Copyright and License of This File
|
|
|
|
|
----------------------------------
|
|
|
|
@ -570,6 +600,6 @@ 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).
|
|
|
|
|