prabusw / beancount-importers-india

Beancount Importer for csv formatted tradebook and transaction reports given by brokers and banks from India. Tested for working with broker Zerodha, RKSV, banks SBI, ICICI Bank,IOB & KVB.
GNU General Public License v3.0
6 stars 0 forks source link
beancount beancount-importer beancount-importer-india beancount-importer-sbi beancount-importer-zerodha beancount-india beancount-sbi csv-format icicibank icicibank-importer importer-zerodha sbi-importer

beancount-importers-india

Beancount importer for Banks and Brokers in India. The code for SBI and ICICI has already been tested and found working for banks like KVB and IOB. More information about Beancount accounting package can be found here http://furius.ca/beancount/

Importer for ICICIBank

If you have account with ICICI Bank, the importer script icici.py can be used. This script is heavily based on the script importers-chase.py hosted here https://gist.github.com/mterwill/7fdcc573dc1aa158648aacd4e33786e8

The default transaction file downloaded in csv format from ICICI Bank website will work as it is with few manual steps as detailed below.

How to prepare icicibank statement in xls for import as csv

Importer for SBI

If you have account with SBI Bank, the importer script sbi.py can be used. This script is heavily based on the script importers-chase.py hosted here https://gist.github.com/mterwill/7fdcc573dc1aa158648aacd4e33786e8

The default transaction file downloaded in csv format from SBI Bank website will work as it is with few manual steps as detailed below.

How to prepare SBI Bank statement for import

Note: The main difference in SBI and ICICI Bank importer code is in the representation of unused value. In ICICI it is given as Zero i.e "0", in SBI it is empty.

Importer for Zerodha

This is an importer for csv formatted tradebook from Indian stock broker Zerodha. Every decent broker in India, gives similar tradebook. So this importer can work almost for every broker who provides tradebook in csv format.

This importer zerodha.py is based almost entirely on the sample csv importer "utrade_csv.py" provided by the Beancount author Martin Blais.

The default csv formatted tradebook from Zerodha has the following fields: trade_date tradingsymbol exchange segment trade_type quantity price order_id trade_id order_execution_time

For the importer to work, you need to manually add the following fields amount, fees either in Google sheets or Openoffice or other such spreadsheet software.

The formula for amount =

 quantity*price 
and for fees =
 amount*0.001 
rounded to 2 decimal places.

In Libreoffice, formula for amount(column k) appears as

 =F2*G2 
, where columns F and G are quantity and price respectively. forumla for fees(column L) appears as
 =round(k2*0.001,2)
.

With the above two changes done, make sure the csv file is named as zerodhayyyymmdd.csv format. For example, zerodha20200401.csv is a valid filename.

This csv must be placed in Downloads folder at the root of beancount.

The script zerodha.py must be placed in the following folder importers\zerodha at the root of beancount.

Refer to the folder structure presented at the bottom of this document with the above scripts in their respective folders.

The configuration file is named as config.py and this can be in the same folder as the main beancount file i,e here my.beancount.

Note1: There is another importer for Zerodha here at https://github.com/swapi/beancount-utils. It can import xml formatted Digital Contract Note available from Zerodha website.

Note2:In Libreoffice, when changing the date format to YYYY-MM-DD, an apostrophe will appear before the date and the date may still appear as DD-MM-YYYY. To solve this, Choose the Date column. Click on Data->Text to Columns option. Now dates will appear without apostrophes and will appear properly in YYYY-MM-DD format.

How to Extract data or import data from csv files

The command(linux) to extract data in a format sutiable for beancount is given below.

$bean-extract config.py Downloads

Depending on the number of matching csv files available in Downloads folder, the beancount formatted output will be displayed one by one. You can redirect it to new txt file and copy paste it later to my.beancount.To redirect

$bean-extract config.py Downloads > mytxn.txt

Sample two line input for zerodha.csv follows:
trade_date  tradingsymbol   exchange    segment trade_type  quantity    price       order_id          trade_id  order_execution_time    amount    fees
2017-04-13  LIQUIDBEES      NSE         EQ    sell        30        999.99  1200000000772831    59283787    2017-04-13T09:54:26   29999.7     30
2017-04-13  INFY              NSE           EQ    buy           3         941.2   1100000000419606  26200755    2017-04-13T12:37:32   2823.6      2.82

The output of above command is given below


2017-04-13 * "sell LIQUIDBEES with TradeRef 59283787" 
  Assets:IN:Investment:Zerodha:LIQUIDBEES      -30 LIQUIDBEES {} @ 999.99 INR
  Expenses:Financial:Taxes:Zerodha              30 INR                       
  Assets:IN:Investment:Zerodha:Cash        29969.7 INR                       
  Income:IN:Investment:PnL:LIQUIDBEES                                        

2017-04-13 * "buy INFY with TradeRef 26200755" 
  Assets:IN:Investment:Zerodha:INFY     3 INFY {941.2 INR}
  Expenses:Financial:Taxes:Zerodha   2.82 INR             
  Assets:IN:Investment:Zerodha:Cash          

This is how the original statement from ICICIBank appears in icici3722.csv after change in date format to YYYY-MM-DD:

S No.    Value Date  Transaction Date   Cheque Number   Transaction Remarks                   Withdrawal Amount (INR)   Deposit Amount (INR)    Balance (INR)
1       2019-04-01    2019-04-02                        MPS/SRI AUROBIN/201904011758/012476/      249.22                       0                     XX,620.60
2       2019-04-01    2019-04-01                        MCD REF SRI AUROBINDO UDYO DT 190401          0                       1.87                   XX,622.47

The output of above command is given below

2019-04-01 * "MPS/Sri Aurobin/201904011758/012476/" ""
  Assets:IN:ICICIBank:Savings  -249.22 INR

2019-04-04 * "MCD Ref Sri Aurobindo Udyo Dt 190401" ""
  Assets:IN:ICICIBank:Savings  1.87 INR

Example folder structure:

├── config.py
├── documents
│   ├── Assets
│   │   └── IN
│   │       ├── ICICIBank
│   │       │   └── Savings
│   │       │       ├── Icici3722-fy2017-18.CSV
│   │       ── Zerodha
│   │           ├── tradebook_2017-04-01_to_2018-03-31.csv
│   ├── Expenses
│   │   
│   ├── Income
│   │   
│   └── Liabilities
├── Downloads
│   ├── icici3722.csv
│   ├── zerodha20170401.csv
│   
├── importers
│   ├── etrade
│   │   ├── etrade.py
│   │   ├── __init__.py
│   │       
│   ├── icici
│   │   ├── icici.py
│   │   |__init__.py
│   │   
│   ├── iob
│   │   ├── __init__.py
│   │   ├── iob.py
│   ├── sbi
│   │   ├── __init__.py│   │   
│   │   └── sbi.py
│   └── zerodha
│       ├── __init__.py
│       └── zerodha.py
|
|
|─ my.beancount