Convert exported YNAB4 data to ledger-cli
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Alan Pearce 058a156b6d Add Readme 8 years ago
src Align accounts and amounts 8 years ago
.gitignore Initial commit (Scaffolding) 8 years ago
LICENSE Add project name to license file 8 years ago Add Readme 8 years ago
composer.json Initial commit (Scaffolding) 8 years ago
composer.lock Initial commit (Scaffolding) 8 years ago
main.php Initial commit (Scaffolding) 8 years ago


This is just a hacky import script that reads YNAB exports (budget and register) and produces ledger output to stdout.

What it does

It transforms the budget into a set of virtual transactions at the first of the month (or the day of the opening balance, for the first month) balanced against the Assets account. Categorised transactions are exported with a non-balanced virtual posting to reduce the category amount. It guesses whether an account should be an asset or a liability by its starting balance (anything positive denotes an asset), or by the presence of “credit” in the account name. Memos are transformed into comments, either on the transaction or, for split transactions, on each posting.


It mostly works and has served its purpose for me. It doesn’t work so well with off-budget accounts, although transferring into them seems fine, if they have any income it will not be categorised correctly.

I don’t expect to develop this further, unless there is specific need. I haven’t tested it with currencies other than the British Pound. Let me know if something doesn’t work (ideally with some test data) and I’ll try to fix it.

If you want to fix it yourself, go ahead. I’ll merge any pull request that looks reasonable and works with my own data.


composer install
./main.php convert /path/to/budget.csv /path/to/register.csv > new-ledger-file.dat


The project is licensed under the BSD 3-Clause License.