|
Ledger
Ledger
manual
Ledger CLI
cheatsheet
|
hledger hledger
manual
Beginners
corner: a basic hledger transaction
(Almost)
everything you wanted to know about hledger transactions
Cost notation
|
Beancount
Beancount
manual
Beancount
Syntax Cheat Sheet
|
Basic example
|
; a comment 2016/1/1 set opening balance
assets:checking $500.00 equity:opening balances
2016/1/5 farmer's market expenses:groceries $50.00
Assets:checking Comments, directives, and/or transactions in any
order
|
; a comment 2016/1/1 set opening balance
assets:checking $500.00 equity:opening balances
2016/1/5 farmer's market expenses:groceries $50.00
assets:checking
|
; a comment 2016-01-01 open
Assets:Checking 2016-01-01 open Equity:Opening-Balances
2016-01-01 open Expenses:Groceries 2016-01-01 txn "set opening
balance" Assets:Checking 500.00 USD
Equity:Opening-Balances 2016-01-05 txn "farmer's market"
Expenses:Groceries 50 USD Assets:Checking
All referenced accounts must have an open
directive. Account names must begin with Assets, Liabilities,
Equity, Income or Expenses (or other top-level names you have
configured); all parts must be capitalised; spaces are not allowed.
|
Comments
|
; comment # comment % comment |
comment * comment and org-mode outline node Non-comment lines may end with a comment Indented
comments are attached to the preceding transaction or posting
|
; comment # comment * comment and org-mode
outline node
|
; comment Any unrecognised line is also a
comment
|
Basic transactions
|
DATE [DESCRIPTION] ACCOUNT AMOUNT
ACCOUNT [AMOUNT] A
transaction contains any number of indented postings (usually two),
whose amounts must sum to zero At least two spaces required between
account and amount One amount may be omitted
|
DATE [[PAYEE | ]NOTE] ACCOUNT AMOUNT
ACCOUNT [AMOUNT] Same, except
DESCRIPTION can optionally be split by | into PAYEE and NOTE
fields
|
DATE txn [["PAYEE"] "DESCRIPTION"] ACCOUNT
AMOUNT ACCOUNT [AMOUNT] PAYEE and DESCRIPTION must be in double quotes, can be
multiline No need for two spaces between account and amount
|
Dates
|
YYYY-MM-DD YYYY/MM/DD YYYY.MM.DD MM-DD
MM/DD MM.DD Other formats
specified with --input-date-format
|
YYYY-MM-DD YYYY/MM/DD YYYY.MM.DD MM-DD
MM/DD MM.DD
|
YYYY-MM-DD YYYY/MM/DD YYYY.MM.DD
Only YYYY-MM-DD with 8 digits is
officially supported
|
Account names
|
TOPACCT[:SUBACCT[:...]] Revenues:Salary
liabilities:credit card:CITI 1234 other assets:house
Account names begin with a letter May
contain single spaces May contain subaccounts separated by :
|
TOPACCT[:SUBACCT[:...]]
Same
|
TOPACCT[:SUBACCT[:...]] Income:Salary
Liabilities:CreditCard:CITI-1234 Assets:House Top level account must be one of Assets, Liabilities,
Equity, Income, Expenses Each subaccount must be capitalised
Letters, digits and hyphen are allowed (no spaces)
|
Amounts
|
One of COMMODITY QUANTITY QUANTITY
COMMODITY QUANTITY 10 $10.00 1,000.0001 USD 10
"prepaid classes" COMMODITY
is a symbol, word or phrase; if it contains spaces or numbers, it must
be in double quotes It can be on the left or right, with or without
a separating space QUANTITY is a number with 0 or more decimal
places Decimal point is . Digits can be grouped into thousands by , Amount styles
influence the standard display style for each commodity
|
One of COMMODITY QUANTITY QUANTITY
COMMODITY QUANTITY 10 $10.00 1,000.0001 USD 10
"prepaid classes" 1.000.000,01 12,34,567.89
Decimal point is
. or ,
Digit group separator is , or . Any digit grouping
can be used, not just thousands
|
QUANTITY COMMODITY 10USD
1000.0001 USD
COMMODITY is all capital letters, on the right, and required
Decimal point is
. Digit
group separator , is allowed and ignored
|
More transaction features
|
DATE [FLAG] [(CODE)] DESCRIPTION [FLAG] ACCOUNT
AMOUNT [PRICE] [=BAL] ... [FLAG] ACCOUNT [AMOUNT [PRICE]
[=BAL]] FLAG (aka STATE) is
empty, ! or * meaning uncleared, pending or cleared CODE is any
string, in parentheses DESCRIPTION can be a payee name, narration,
or both
|
DATE [FLAG] [(CODE)] DESCRIPTION [FLAG] ACCOUNT
AMOUNT [PRICE] [=BAL] ... [FLAG] ACCOUNT AMOUNT [PRICE]
[=BAL]
|
DATE [txn|FLAG] [["PAYEE"] "DESCRIPTION"]
[FLAG] ACCOUNT AMOUNT [PRICE] ... [FLAG] ACCOUNT
AMOUNT [PRICE] The txn keyword
may be replaced by a FLAG For just a payee, use "PAYEE" ""
|
Prices
|
One of @ UNITPRICE @@ TOTALPRICE and/or
one of {LOTUNITPRICE} {=FIXEDLOTUNITPRICE} and/or
[LOTDATE] A UNITPRICE or
TOTALPRICE also records a market price on this date A LOTDATE is
written in square brackets
|
One of @ FIXEDUNITPRICE @@ FIXEDTOTALPRICE
and/or {=FIXEDLOTUNITPRICE} These do not record market prices The lot price
syntax is ignored
|
{LOTUNITPRICE[ / LOTDATE]} and/or one of @
UNITPRICE @@ TOTALPRICE Lot prices are remembered and form distinct commodities,
other prices are not If there is both a lot price and a regular
price, the latter records a market price
|
Balance assertions
|
= AMOUNT (after posting amount & price)
2016-03-10 Expenses:Food $20 Assets:Cash $-20 =
$80 Asserts the balance in this
commodity in this account, excluding subaccounts at this point
in the parse order
|
= AMOUNT (after posting amount & price)
Asserts the balance in
this commodity in this account, excluding subaccounts on this
day. Same day events are processed in parse order
|
DATE balance ACCOUNT AMOUNT 2014-08-09
balance Assets:Cash 562.00 USD 2014-08-09 balance Assets:Cash 210.00
CAD Asserts the balance in this
commodity in this account, including subaccounts at the start of
this day
|
Balance assignments
|
= AMOUNT (no preceding/inferred posting amount) 2012-03-10
Adjustment Assets:Cash = $50 Expenses:Misc
Sets the posting amount
so as to make the balance assertion true. (The other amountless posting
allows the transaction to balance)
|
|
|
Directives
|
KEYWORD ARGS... [SUBDIRECTIVES]
account
alias apply assert bucket capture
check comment commodity define end expr
fixed include P
payee tag test year Timeclock
directives: i o b h
|
KEYWORD ARGS... account (alias for
apply) alias apply comment D end include
|
[DATE] KEYWORD ARGS... [SUBDIRECTIVES]
DATE balance DATE close DATE commodity DATE document
DATE event DATE note DATE open DATE pad DATE price
DATE txn include option plugin poptag pushtag
|
account, open
|
account ACCOUNT
[SUBDIRECTIVES] account
Revenues:Salary account Expenses:Food:Chicken note chicken
food expenses alias food payee ^(KFC|Popeyes)$
check commodity == "$" assert commodity == "$" eval
print("Hello!") default Gives
more error checking with --strict or --pedantic Optional subdirectives do more stuff
|
|
DATE open ACCOUNT [COMMODITY[,...]] [METHOD]
2014-05-01 open Assets:Cash USD,CAD
Every account posted to
needs an open directive with prior date
|
close
|
|
|
DATE close ACCOUNT
|
commodity
|
commodity COMMODITY commodity EUR
commodity $ note American Dollars format $1,000.00
nomarket default Gives more
error checking with --strict or --pedantic Optional subdirectives do more stuff
|
|
DATE commodity COMMODITY [METADATA]
1867-01-01 commodity CAD name: "Canadian Dollar"
asset-class: "cash"
Attaches metadata to a commodity
|
market price
|
P DATE TIME COMMODITY UNITPRICE P 2004/06/21
02:18:02 AAPL $32.91 P 2004/06/21 02:18:02 AU $400.00
Used by -V and
-X Also set by transaction prices
|
P DATE [TIME] COMMODITY UNITPRICE P 2015/8/9
GBP $1.55 Used by -V A
time is ignored
|
DATE price COMMODITY AMOUNT 2014-07-09 price
USD 1.08 CAD Also set by
transaction prices
|