Compare commits

...

10 commits

Author SHA1 Message Date
Martin Michlmayr
9f2a0cd1cc
Define the PurchaseOrder and Contract tags 2019-03-29 12:40:05 +07:00
Martin Michlmayr
6cd57d970d
Use official spelling for W-8BEN
It's W-8BEN (or sometimes W-8 BEN), not W8-BEN.
2019-03-28 22:28:48 +07:00
Martin Michlmayr
4f9fa15a66
Update IRS links 2019-03-28 22:28:06 +07:00
Martin Michlmayr
a08541d6d7
Fix internal links 2019-03-28 22:26:38 +07:00
Martin Michlmayr
6202489c00
Drop closing colon from tags
The syntax in ledger is tag: -- the actual tag is tag, not tag:.
The guide was inconsistent about that.
2019-03-28 22:21:27 +07:00
Martin Michlmayr
a1da18abe8
Perform some copy editing 2019-03-28 22:11:39 +07:00
Martin Michlmayr
10e89248db
Fix internal link 2019-03-28 22:06:51 +07:00
Martin Michlmayr
759e3c3d83
Fix internal link 2019-03-28 22:03:35 +07:00
Martin Michlmayr
e0eff840cc
Fix formatting issue 2019-03-28 22:03:11 +07:00
Martin Michlmayr
0ee8ef4ade
Use https:// for links 2019-03-28 21:31:23 +07:00
7 changed files with 81 additions and 51 deletions

View file

@ -12,7 +12,7 @@ for-profit equivalents.
This project is designed to provide some basic templates, tutorials, workflow This project is designed to provide some basic templates, tutorials, workflow
documentation and scripts to handle accounting for an NPO. The primary documentation and scripts to handle accounting for an NPO. The primary
example is a 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 The tutorials herein
@ -36,4 +36,4 @@ 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 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 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 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).

View file

@ -12,7 +12,7 @@
; can be found in the same repository as this README.md file under the ; 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 ; 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 ; 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 ####################### ; ############################## GENERAL/SHARED ACCOUNTS #######################

View file

@ -12,7 +12,7 @@
; can be found in the same repository as this README.md file under the ; 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 ; 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 ; 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 ############################# ; ############################## COMMODITIES #############################

View file

@ -10,7 +10,7 @@
; can be found in the same repository as this README.md file under the ; 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 ; 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 ; 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-commodities.ledger
!include config-tags.ledger !include config-tags.ledger

View file

@ -12,7 +12,7 @@
; can be found in the same repository as this README.md file under the ; 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 ; 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 ; 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 ################################ ; ################################# TAGS ################################

View file

@ -13,10 +13,10 @@ for-profit equivalents.
This project is designed to provide some basic templates, tutorials, workflow This project is designed to provide some basic templates, tutorials, workflow
documentation and scripts to handle accounting for an NPO. The primary documentation and scripts to handle accounting for an NPO. The primary
example is a 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 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 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 has done well using this system, and believes that its account system meets
Generally accepted accounting principles (GAAP), this document **does not** 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 The main command-line program though, that generates the chart of accounts
looks like this: looks like this:
$ ledger -f accounts/main/books.ledger -V -F "%-150A\n" -w -s -b 2012/01/01 -e 2013/01/01 reg $ 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 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` The portion of the transaction that credits the `Income:Main Org:Donations`
has three tags: [`Entity`](#entity-tag), [`Invoice`](#invoice-tag) and 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 listed at the top of the transaction, propagate through and apply to both
sides. But, the `IncomeType` tag, which has no meaning for `Accrued:` 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. the transaction.
Below you'll find detailed descriptions of all the possible tags that are 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 #### 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 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). 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 * a point-of-sale credit card receipt from a purchase, given by a cashier or
sent via email after the purchase has occurred. sent via email after the purchase has occurred.
@ -221,13 +222,13 @@ Some examples of appropriate uses of the `Receipt:` are:
#### Invoice Tag #### 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 organization or received by the organization. Typically, this is a document
that is a request for payment, rather than documenting an actual payment that 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). 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. * 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 reimburse (e.g., an expense report, requesting for reimbursement of travel
expenses). 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 #### 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, external party (or even perhaps generated internally) that provides document,
insight, or other information about the transaction. The value of the 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). 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. * 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 `TaxReporting` tag is an optional tag for `Assets` accounts that debit to
the account. 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 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` tag. For example, for individual contractors in the USA, a
`TaxImplication` of `1099` would be well served by a `TaxReporting` that `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 being paid. For a individual foreign contractor, the `TaxReporting` might
link to a 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. for the payee.
### Information Tags ### Information Tags
@ -283,8 +313,8 @@ considered pure "meta-data" for a ledger entry.
#### Entity Tag #### Entity Tag
The `Entity:` tag is required for many types of ledger entries. The value of 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 a unique moniker that identifies the organization,
company, person, or legal entity that is the external party for the company, person, or legal entity that is the external party for the
transaction. transaction.
@ -294,12 +324,12 @@ trouble. However, you could implement checks in
typos have occurred. This would be somewhat cumbersome, since Ledger CLI typos have occurred. This would be somewhat cumbersome, since Ledger CLI
would likely require that the monikers be encoded into a regular expression. would likely require that the monikers be encoded into a regular expression.
Barring that, the 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 #### IncomeType Tag
The `IncomeType:` tag is used for all `Income:` accounts. This refers to the 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. 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 Since this particular system is designed for USA non-profit entities who file
USA Form 990, the following `IncomeType` values are supported: USA Form 990, the following `IncomeType` values are supported:
@ -318,12 +348,12 @@ Form 990 filing.
#### TaxImplication Tag #### 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 transaction includes a payment of $10.00 or more leaving the account. This
tag catalogs any tax implications that might occur on outgoing funds. tag catalogs any tax implications that might occur on outgoing funds.
The most important USA-related issue tracked by this tag are contractors who 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. go along with a TaxImplication tag.
The possible values for this field are: 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 * `Accountant-Advises-No-1099`, indicating that the circumstances and rules
seem to indicate a USA Federal Form 1099 should be issued for the `Entity` 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 involved, but an outside accountant advised that no 1099 needs be issued
this `Entity`. for this `Entity`.
* `Bank-Transfer`, indicating that the amount is a transfer between two * `Bank-Transfer`, indicating that the amount is a transfer between two
banking accounts under the control of the NPO itself. 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. code for the country where the grant goes.
This tag is to assist in filing 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). [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 ### 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: 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 [`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).) [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: Expense accounts can have the following optional tag:
* A [`GrantLocation:`](#grantlocation-tag) tag. * A [`GrantLocation`](#grantlocation-tag) tag.
#### NEVER CHARGED Payee #### NEVER CHARGED Payee
The only exception to the standard tagging requirement is when the payee has 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 been modified to indicate that the expense was `NEVER CHARGED`. This is a
historical special-case. The solution was originally design for the historical special-case. The solution was originally designed for the
following scenario: following scenario:
Suppose an expense was expected — for example, a situation where you Suppose an expense was expected — for example, a situation where you
@ -452,7 +482,7 @@ it like this:
Liabilities:Credit Card:Visa $100.00 Liabilities:Credit Card:Visa $100.00
Expenses:Conservancy:Hosting $-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 **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 the Expense did/should occur. This use of `NEVER CHARGED` in the payee is
thus deprecated. thus deprecated.
@ -461,20 +491,20 @@ thus deprecated.
Each `Income:` account must have the following tags: Each `Income:` account must have the following tags:
* One of: [`Invoice:`](#invoice-tag), * One of: [`Invoice`](#invoice-tag),
[`PurchaseOrder:`](#purchase-order-tag), [`PurchaseOrder`](#purchaseorder-tag),
[`Statement:`](#statement-tag), or [`Statement`](#statement-tag), or
[`Contract`](#contract-tag). Exceptions to this requirement are as follows: [`Contract`](#contract-tag). Exceptions to this requirement are as follows:
+ the income generated from the transaction is less than $800, or + the income generated from the transaction is less than $800, or
+ the `IncomeType` is `RBI` and the income is for a defined, public + the `IncomeType` is `RBI` and the income is for a defined, public
program (such as conference registration) 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. 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 Reports For Various Situations
------------------------------ ------------------------------
@ -536,7 +566,7 @@ FIXME: example output
### Checking Integrity of a Tag ### 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 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 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 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 $ 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 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 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 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 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 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).

View file

@ -1,7 +1,7 @@
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. 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. 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.
@ -39,4 +39,4 @@ If rounding up was done per transaction, then the error per transaction may add
In the above example if there is rounding up in each transaction then the overall result will be off by few cents. 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. This problem does not occur in ledger as rounding is deffered till the last point that is at the time of display.