JCF Documentation

JCF settings profiles

Last updated on Jan 05, 2021

To allow JCF to read the transactions from a CSV file, it needs to know a few extra details like the column ordering and date formats in the CSV file. JCF settings profiles allow you to declare these configuration values ahead of time and may be version controled alongside your other data. As part of setup you should have a jcf_settings_profiles.textproto file with a couple of example settings profiles.

I create settings profiles as I go before I match each CSV. Each new settings profile can be re-used so after building up a collection you only need to create new ones for new accounts.

To create one, I open the CSV file and determine the following:

  1. The ordering of the data columns, and then converting those to CsvFieldPosition messages containing an index and one of these column types like this:
    csv_field_positions: {
      position: {
        field: DATE
        column_index: 1
      // ...more...
  2. The date format, using lowercase y, uppercase M, and lowercase d. For example:
    csv_date_format_java: 'yyyy-MM-dd'


    csv_date_format_java: 'MM/dd/yy'

Lastly, I sometimes have a separate profile for account nicknames but also sometimes lump a profile together with all settings set at once! JCF will let you know if a setting isn’t specified correctly.

Master ledger accounts

JCF works best when you have at the very least listed the expected accounts in your master.ledger. You may optionally have a separate master.accounts file containing an explicit account listing.

As part of setup you should have set up a master ledger with a bunch of income and expense accounts as part of setup. If you need to add more, simply edit your master.ledger to add explicit account lines like:

account Expenses:My Expense Category:Sub Category 


account Assets:Current Assets:My Bank 1234