What Should Post By Itself, and What Should Wait
The auto-post envelope, the holds that explain themselves, and why a transfer with one leg missing is the most dangerous row in bookkeeping.
Quick answer
Auto-post in IQ Books is off by default and has two settings when you turn it on: post at 90% confidence, or at 95%. Confidence alone is never enough, so seven categories are excluded whatever the score says: transfers, invoice and bill matches, split transactions, reverse-charge and postponed VAT, future-dated lines, lines with no category or a category a person has already changed, and anything outside the feed’s mapped accounts. Switching auto-post on never posts the backlog, because only lines created after the moment you enabled it are eligible. Anything held tells you why it is held, and every line auto-post did put through is listed with its confidence and method for the last seven days.
Both extremes are wrong
Full automation in bookkeeping fails for a boring reason: the cost of the errors is not symmetrical. A correctly coded stationery purchase saves you four seconds. A transfer between your own accounts posted as income overstates turnover, misstates VAT and survives until someone reconciles the other side. One of those is worth automating and one is not, and they arrive in the same list looking identical.
No automation fails for an equally boring reason: most bank lines are the same handful of merchants repeating, and asking a person to confirm the coffee shop for the four hundredth time is how review fatigue starts. By line three hundred nobody is reading.
So the useful question is not whether software should post on its own. It is where the boundary sits, and whether the boundary is written down somewhere you can read it.
The envelope
Auto-post in IQ Books has three settings and no others: off, post at 90% confidence, post at 95%. Off is the default and stays the default until you change it.
What the threshold actually means
Confidence is the score CodeIQ’s pipeline attaches to its own suggestion, and it is not a marketing number. A line matched to a pattern you have coded the same way thirty times scores very differently from one the semantic phase guessed at. Setting 95% means you are only automating the repeats.
The things that never post themselves
Confidence is necessary and nowhere near sufficient. A line can be scored at 99% and still be the wrong thing to post without a person. These are excluded whatever the score says.
| Excluded | Why |
|---|---|
| Anything identified as a transfer | A transfer has two legs and posting one alone creates a phantom sale or cost. It waits for its pair. |
| Anything matched to an invoice or a bill | Allocation decides which document is settled and by how much. Get it wrong and the debtor stays open while the cash disappears into a nominal. |
| Anything split across accounts | A split is a judgement about proportion. There is no confidence score for that. |
| Reverse charge, postponed VAT accounting, domestic reverse charge | These move figures into boxes on the VAT return that are painful to unwind after filing. |
| Lines dated in the future | A future-dated posting lands in a period you have not opened yet. |
| Lines with no category, or where a person already chose a different one | If a human has overridden the suggestion, the human confirms it. That is the whole point of the override. |
| Anything on an account outside the feed’s own mapping | Auto-post touches only the accounts the connection actually feeds. |
Switching it on does not post the backlog
The trap this avoids
You connect a feed, pull three months of history, review none of it yet, then flip auto-post to 95% to see what it does. If the setting applied to everything already sitting there, you would have just posted a quarter in one click.
So the moment auto-post is first switched on is recorded, and only lines created after that moment are ever eligible. Your backlog stays exactly where it is, waiting for you. Turning the setting off and on again does not reset the clock backwards either.
Holds, and why every one of them explains itself
A held line is not an error. It is the software saying it has a specific reason to think this one is not finished. The Waiting panel lists them with the reason attached, which turns an unexplained queue into a short list of decisions.
- Waiting for the other leg of a transfer. Held for seven days while the matching line is expected on the other account.
- A transfer that never found its pair. After the hold expires it becomes an ordinary draft carrying the evidence that made it suspicious, so you can look at it with context instead of from scratch.
- Auto-post refused. The line was eligible on paper but failed one of the exclusions above. The specific reason is recorded, it is shown in Waiting, and it is not retried in a loop.
The transfer whose other leg has not arrived
This is the hardest case in feed bookkeeping and it deserves its own section.
When you move money between two of your own accounts, the two sides rarely arrive at the same moment. One bank posts today, the other tomorrow. A card account and a current account can be days apart. If the first leg is coded and posted as a cost before its pair shows up, the pair then arrives looking like income, and you have manufactured both a fictional expense and a fictional sale that net to nothing and pollute every report in between.
The obvious defence is a word list: hold anything that says "transfer", "payment to savings", or names another of your accounts. That catches the easy half.
The half a word list cannot catch
A card processor paying out to your bank writes something like STRIPE PAYMENTS UK STRIPE XPODZ1PZ3359926052. The reference is different every single time and the word "transfer" appears nowhere. To a word list every payout is a brand new unknown merchant. To you it is the same movement you have booked eight times this month.
The fix is to learn from the books rather than from a dictionary. The description is reduced to its stable part by dropping the long tokens that contain digits, which turns eight unique references into one recognisable narrative. That narrative is then looked up against how the organisation has actually treated it before, using both legs of every transfer already posted. If the answer is consistently "this is a transfer", the line is held and told to wait for its pair.
Two properties make this safe to run unattended. A false positive costs a seven day hold and a question, never a wrong posting. And answering "not a transfer" once moves the ratio, so the same narrative is less likely to be held next time. It gets quieter as it learns, rather than louder.
Everything it did is listed
Automation you cannot audit is not automation, it is hope. Every line auto-post put through is recorded with the confidence it had, the threshold in force at the time, the method the pipeline used and the moment it happened. The last seven days of that are shown on the feed card as a list you can open with one click, so the first question after switching it on, "what has it actually been doing", has an answer that takes five seconds.
A sensible way to start
Run with auto-post off for a fortnight and watch the confidence scores on lines you would have been happy to post. Then set 95% and read the auto-posted list every morning for a week. If nothing in it surprises you, consider 90%. If something does, the override you make becomes a pattern and the next one is better.
The daily digest, off by default
You can have a short daily email covering what arrived, what posted and what is waiting. It is off unless you turn it on, and a quiet day sends nothing at all. An unattended process that emails you every morning to say it did nothing is a process you stop reading within a week.
See the envelope before you trust it
Connect a feed, leave auto-post off, and look at what the pipeline would have done. The setting is there when the answers stop surprising you.
Open IQ BooksFrequently asked questions
Is auto-post on by default?
No. It is off, and it stays off until you choose 90% or 95%. We would rather you turned it on after watching the confidence scores for a fortnight than have it running before you know what it does.
If I switch it on today, will it post the three months already sitting in drafts?
No. The moment you enable it is recorded, and only lines created after that moment are ever eligible. Your backlog waits for you. Turning it off and on again does not move that moment backwards.
What does 90% or 95% confidence actually measure?
It is the score the CodeIQ pipeline puts on its own suggestion, and it varies a great deal by method. A line matched to a pattern you have coded identically many times scores far higher than one the semantic phase inferred. Setting 95% means you are automating the repeats and nothing else.
Why will it not auto-post a transfer even at high confidence?
Because a transfer has two legs, and posting one without the other manufactures a cost or a sale that should not exist. The legs frequently arrive on different days, so the line is held until its pair shows up and then both are confirmed together.
How does it spot a transfer when the reference changes every time?
By reducing the description to its stable part, dropping the long tokens that contain digits, and then checking that narrative against how the organisation has actually treated it before. Both legs of every transfer already posted are in that history, so the receiving side learns from the paying side too.
What happens if it holds something that was not a transfer?
It costs you a seven day wait and one question. Answering that it is not a transfer lowers the ratio for that narrative, so it is less likely to be held next time. A false positive never produces a wrong posting.
Can I see what it posted without me?
Yes. The last seven days of auto-posted lines are listed on the feed card with the confidence each had, the threshold in force, the coding method and the time. Refusals are recorded too, with the specific reason, and shown in the Waiting panel.
Do I get an email about it?
Only if you ask for one. The daily digest is off by default, and a day with nothing to report sends nothing at all.