The Review Gate
PRIMA Bookkeeper writes to a real set of accounts, and those accounts feed a tax return. The review gate puts a named person between each proposal and your ledger, and no setting turns it off.
Why the Gate Exists
Section titled “Why the Gate Exists”Posting a correct entry is the easy part. The risk is a confident proposal that is wrong, such as a reverse charge treated as domestic VAT or a personal drawing treated as a business expense, flowing into a filed return. The gate makes a person check the proposals before they post, and your accountant checks the ledger before anything reaches Revenue.
Checks in the Code
Section titled “Checks in the Code”- Posting takes a batch only. The
postcommand and thebookkeeper_posttool accept a batch id, and no route posts a single proposal on its own. - A batch must be complete before approval. The tool refuses approval while any line is unknown or any entry does not add up to the cent.
- Approval needs a person’s name. The tool refuses an approval with no name, and it records who approved the batch and when.
Five more checks run while the batch posts.
- Each post checks for an existing entry. Before it creates an entry, the tool checks its own records and then your ledger for an entry that already covers the bank line.
- Each entry is read back. On Sage, each entry must come back paid with nothing outstanding, and on every ledger the totals must match.
- The first failure stops the batch. Nothing after it is attempted, and a rerun skips what already posted.
- No ledger entry is ever edited or deleted. No adapter has a method that changes or removes an entry.
- A doubtful match stops the post. An entry that names the bank line at a different amount, or an entry for the same supplier and amount with no bank id, stops the post for a person to resolve.
Checks in the Skills
Section titled “Checks in the Skills”The Claude Code skills add the human side of the gate.
- Your agent puts each unknown line to you one at a time, with a proposed answer and its reason.
- It raises every line the tool marks for review before it builds the batch.
- It approves a batch only after you have seen the full table and said so, and it passes your name.
- It runs a dry run before the live post.
- It describes the VAT pack as a review pack for your accountant, never as a return ready to file.
How Two Entries for One Payment Are Prevented
Section titled “How Two Entries for One Payment Are Prevented”Every entry the tool posts carries the bank line’s id as a ptx: tag in its notes, details or reference. Before each post, the adapter searches your ledger for that tag.
| Ledger | Where the search looks |
|---|---|
| Sage Business Cloud Accounting | Three days either side of the bank date, for the tag and for a bank id written by another tool at the same amount |
| QuickBooks Online | Three days either side of the bank date |
| FreshBooks | Three days before to four days after the bank date |
| Xero | Every bank transaction whose reference carries the tag, with no date window |
On Sage, FreshBooks and QuickBooks Online, an entry for the same supplier and amount within the window that carries no id also stops the post as a probable duplicate.
Outside the Gate in This Version
Section titled “Outside the Gate in This Version”adopt and link-posting record bank lines as posted without a batch, because they write nothing to your ledger. They record that an entry someone else made already covers the line. Taking Over an Existing Ledger explains both, and a later version puts both through an approved adoption batch.

