pem - Man Page

GNU personal expenses manager


pem [Options] [<description> <amount> ...]


GNU Pem is a handy tool to help you keep track of your personal income and expenses. Needless to say, using pem is extremely simple and easy. A command of the following form is all it takes

   $ pem "Bus ticket" 10.75
   $ pem -f myexpenses.txt Breakfast 20

Pem stores these details in a CSV file, named after the current month, and placed in the `~/.pem' directory under your $HOME directory. You may specify some other file using the `-f' option. Also, each amount is considered as an expenditure unless indicated otherwise by `-e'.


From version 0.7.4, pem introduced support for tags & categories of records. You can tag an income and/or expense record as

   $ pem -c bills "Cell phone bill" 830.50
   $ pem -c 'travel fun leisure' "Trip to Goa" 4500

These are saved with the tags 'bills' & 'travel fun leisure' respectively. Later, you can see very useful reports showing your category wise expense traits. Now pem also facilitates filtering of records using tags and description. Note that, while filtering records, pem first looks into the tags and when they don't match, goes for the description field. Ex. To see all your expenses on `travel', you can say

   $ pem -s travel
   $ pem -m travel

While the first will list all your `travel' expenses in a month; The later will show the cumulative results for each month till date. Other than this, pem supports these following options


-b --bare

show unformatted report

-c --category <name>

categorise/tag your expenses

-e --earned

indicates income

-f --file <name>

specify file name

-s [n]

show daily report with total after [n] days

-m [n]

show monthly report with total after [n] months


show category/tag-wise report

-t --total

shows just the total when used it with -s

-M <mm>

select the start month (01 <= mm <= 12)

-N <mm>

select an end month (01 <= mm <= 12)

-Y <yy>

select an year (00 <= yy <= 99)

-h --help

show this help

-v --version

show version information



Pem recognizes the PEMTIME environment variable. PEMTIME defines the format in which you want the `Date & Time' to be displayed. For example, if you export PEMTIME="%F", the date "May 31 2007" will be displayed as 2007-05-31. For more information/options please see strftime(3).

Reporting Bugs

Report bugs to <>


Written by Prasad J Pandit

Initial category patch: John Westlund