+1 for beancount. I started with gnucash only to discover it doesn't play well with multiple currencies. Then, I looked into ledger and it was much better but I realized I would like access it programmatically. Finally, I settled on beancount which has an amazing UI, has sql-like query utility and good python bindings to extend it in any way I want.
For categorizing new transactions I found that regex matching and doing the rest manually works for me (takes me around 20 minutes every month)
For categorizing new transactions I found that regex matching and doing the rest manually works for me (takes me around 20 minutes every month)