The review queue
Every import route — a bank message, a PDF statement, a CSV — ends in the same place: a screen called Review, holding the things the app is not willing to save without you. Nothing there has touched your ledger yet.
This is a deliberate trade. An importer that writes everything it reads is tidier right up until it is wrong, and then it is wrong inside your history where you will not notice. The queue is where the app admits it is unsure.
Why something lands in Review
It could not read the message. Bank messages are read by rules: a template for that specific bank first, then a general grammar that looks for an amount, a direction and an account. When neither can make sense of a message, what it did manage to extract is carried into Review rather than thrown away, so you are usually confirming a partly-filled row rather than typing one from scratch.
It does not know the category. The most common reason by far. The app fills a category from what the bank’s message stated, then from how you filed that merchant last time, then from a merchant list shipped with the app. A name none of those recognise arrives without one, and the banner will tell you how many transactions need a category.
The currency is ambiguous. A row flagged Mixed currencies is one where the amount and the account disagree about what money this is. Guessing here is how a ledger quietly gains a hundred times too much, so it does not guess.
It might be something you already have. Import routes overlap — a message arrives on the day, the statement arrives at the end of the month, and both describe one payment. Suspected duplicates are shown rather than merged silently.
The sender is not known to be a bank. Messages from senders the app cannot place are held for you to confirm under Review bank senders, so a contact who happens to text you about money does not start creating transactions.
Working through it
Open Review and each row offers, in order of how much work it is:
- Pick a category — the common case, one tap.
- Edit full details — opens the whole row if the amount, date or account needs changing too.
- Skip for now — leaves it in the queue. Skipping is not discarding; it will be there next time.
Sort these out works the queue in sequence rather than one row at a time, and it ends on All sorted when the queue is empty. Done for now leaves the rest for later.
Answering once is the point
The queue is not only a gate, it is how the app learns your ledger.
Categorise a merchant and that choice becomes the answer for that merchant next time — this is ordinary record-keeping, not a model making a prediction, which is why it takes effect immediately and never drifts back. Confirm a sender and messages from it stop being held. Confirm the shape of a message a template could not read and the same shape is recognised on its next arrival.
The practical consequence: the queue is at its longest in your first week and should get shorter on its own. If it is not getting shorter, something is wrong and we would rather hear about it — that is a bug in our rules, not in your filing.
What the queue cannot save you from
It only ever sees what arrived. A payment your bank never sent a message about, and that is not on a statement you imported, is not in the queue and is not in your ledger — there is nothing to be unsure about. We measure how often that happens and publish the number.