Announcing Import Rules

The fastest way to import

Today, I'm excited to announce the release of Import Rules in uFincs. With Import Rules, you can automate away the tedium of manually adjusting each and every transaction when you import from a CSV file.

By creating rules, you can transform transactions to have exactly the right types, descriptions, and accounts without having to manually edit each one. This way, you can quickly categorize hundreds or even thousands of transactions.

If you regularly generate lots of transactions, or if you've ever wanted to try uFincs but balked at the idea of manually importing all of your past transactions, then I think Import Rules are going to make your life a lot easier.

How to use Import Rules

Using import rules is quite simple. Let's walk through it.

Creating and Managing Import Rules

First, you'll find that the "Import Transactions" option now brings you to a sort of overview page:

From here, you can choose to proceed to the CSV File import process, just as you would before. This is also where you might find other import options in the future.

But more importantly for us right now, you'll also find where you can manage your import rules:

Let's say you wanted to create a new rule. Just click the "Add Rule" button and you'll be presented with this new form:

Here, you can specify all of the conditions and actions for the rule. Conditions specify which transactions the rule should apply, whereas actions specify which transformations to make on the transaction.

Currently, we've kept it simple. Conditions support the following properties:

  • Account

  • Description

Additionally, you can match against the above properties using the following functions:

  • 'contains' (e.g. “does the description ‘contain’ the value?” )

  • 'matches regex' (e.g. “does the description ‘match the regex’ given by the value?”)

For actions, we support transformations on the following properties:

  • Account

  • Description

  • Type

With these conditions and actions, I think we support the most useful cases for doing things like "rewriting descriptions" and "automatically categorizing accounts". If you ever want more conditions or actions, just let me know and I'll see what I can do!

During the Import Process

Now that we've seen how to create and manage import rules, let's take a look at how the import process itself has changed.

First, select the option to import from a CSV file, just as usual.

You can fill out the first three steps of the import process (choosing an account to import to, choosing a file to import from, and choosing/creating a mapping for the CSV file so that we can read it properly). Once you're done, you'll arrive at the fourth step, Adjust Transactions.

Here, you'll find a new "Active Import Rules" section:

If you click on it, you can expand the section to see all of the rules that are currently active (i.e. that are being applied to transactions that are being imported right now):

Here you can also add new rules or toggle all of the rules on/off (useful if you need to check a transaction's original values).

And that's really it! If you had rules set up for every type of transaction being imported, then you could just click Next to finish things out. Much faster, much more repeatable, and saves you time!

Import Rule 'Gotchas'

We've already mentioned above how import rules only support a certain (small) set of conditions and actions, so we won't go over those again.

However, one of the other 'gotchas' of the import rules is the order in which they are applied.

Rule Ranking

Basically, each rule is assigned a 'rank' based on how complicated its conditions are: more conditions, longer conditions, and regex conditions will increase a rule's ranking. Then, rules are applied in order from highest to lowest rank.

This makes it so that, if multiple rules could apply to a single transaction, the highest-ranked one will apply first — in effect, we treat 'complexity' as a proxy for 'specificity'.

Here's an example. Say we had two rules, one with this condition:

  • Description contains "deposit"

And another with this condition:

  • Description contains "customer deposit"

Because the second rule's condition is longer than the first rule's, its ranking will be higher and will thus be applied before the first rule.

A consequence of this ranking system is that, if you really wanted to, you could chain rules together so that lower-ranked rules still apply to transactions that were changed by higher-ranked rules. I don't know how useful that would be in practice (especially considering a rule can have more than one action), but I'm sure someone will appreciate it.

Action Ranking

Another 'gotcha' is about the order in which rule actions are applied. Specifically, you should know that "type" actions are applied before "account" actions. This is mainly due to the fact that certain accounts can only be applied to certain types of transactions. As such, although you can choose any account to apply when creating a rule, it will actually only be applied to the final transaction if it fits with whatever type the transaction is.

For example, if you create an action that changes the type to "Income" but specify that the account being applied is an "Expense" account (say, 'Food'), then the 'Food' account will not end up being applied to the transaction because the "Income" transaction type can not have an "Expense" account as either its credit or debit account.

Other Import Process Improvements

While the introduction of import rules is the main highlight of today's announcement, there are some other small improvements that have been made to the import process, in the hopes of improving the overall experience.

Highlighting Missing Accounts in Yellow

During the Adjust Transactions step of the import process (the fourth step), we previously marked accounts that needed to be manually filled out in a rather drab grey:

However, after user testing, I found that it wasn't that obvious what needed to be done here (or that anything needed to be done at all). In retrospect, that's not surprising.

As such, we've changed the accounts to be displayed in a much more eye-catching yellow shade:

Hopefully, this change will make it more apparent that the accounts need to be filled out here.

Making Tooltip Messages (More) Visible

Previously, if you wanted to figure out why the "Next" button was disabled when trying to move to the next step in the import process, you had to somehow figure out that you could hover over the button to get a little tooltip explaining why:

For obvious reasons, this wasn't obvious to everyone. As such, we've now made it so that these tooltip messages can be more easily accessed by just clicking the "Next" button (while it 'looks' disabled):

Now, if you ever get frustrated that the dang button is disabled, you'll be quickly shown just what's going on and what you need to do to proceed!


With the introduction of import rules today, we hope to reduce some of the friction with starting/continuing to use uFincs. Not everyone wants to manually enter or adjust every transaction, so hopefully you'll find the import rules helpful for speeding things up.

Test them out today, right now, for free, by taking uFincs for a free test drive.

And as always, if you have any questions or feedback, feel free to let me know at

Till next time.