File diff f0ea3f31bf6f → 081a2d72b825
Show inline comments
@@ -292,57 +292,68 @@ USA Form 990, the following `IncomeType` values are supported:

* `RBI`, which refers to "related business income".

* `UBTI`, which refers to "unrelated business taxable income.

Not that donor-advised funds and government grants don't currently have their
own `IncomeType`.  It's possible this might be necessary; the authors aren't
familiar with how to handle those items on the Form 990.  It would be a
relatively simple change to `config-tags.ledger`, though, to support other
income types, or to change it entirely to handle use-cases other than USA
Form 990 filing.

#### Program Tag

The `Program` tag is used primarily to track program activity for `Income:`
and `Expense:` accounts.  This allows for knowing what particular initiative
initiated the income (e.g., a specific fundraising campaign) and/or what
particular program activity an expense is toward (e.g., funding travel to
some specific conference).

The Program tag is always a string with the same format as a Ledger CLI
account (primarily for use with Ledger CLI's `--pivot` and `--group-by`,
[as described later](#testing-program-success).

### Expense Account Documentation
### Account Type Documentation Requirements

Each account type has different documentation requirements.  Based on the
type of the account, it requires a different set of tags.

When Ledger CLI's `--pedantic` option is used, these rules are enforced by
ledger itself via the configurations found in `config-tags.ledger` and

#### Expense Account Documentation

Each `Expense:` account entry must be tagged with the following tags:

* 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
  [payee was never charged](#never-charged-payee).

* A [`Program:`] tag.


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
following scenario:

Suppose an expense was expected — for example, a situation where you
gave a credit card number to charge something and the charge never came
through — but it turns out the charge never happened.

The recommended way to resolve this problem in the system is to just delete
the entry entirely from the Ledger file, and allow the VCS to log the fact
that the charge was expected, but the vendor never billed the credit card.

The reason the `NEVER CHARGED` payee text was added was to handle the
situation where the books included this charge, but the books were already
closed for the financial period (e.g., the books had already been audited).
Changing the payee was a method for documenting the expense.  You might use
it like this:

    2011/05/28 My Bad Billing Hosting - NEVER CHARGED
        Liabilities:Credit Card:Visa            $-100.00
        Expenses:Conservancy:Hosting             $100.00