31.10.2026Released · v0.38.0
Release 0.38.0 is published
Version 0.38.0 is published on npm. It makes bank confirmations and owner expenses safer. An owner-paid expense can no longer be saved to an account that needs a dimension without choosing one, for example when account 2110 has dimensions. A duplicate transfer row is deleted only through a freshly checked, reviewed plan. A Wise statement is no longer booked to another bank account just because it is your only one. Classification approval shows what each group would book, and a payment is not overwritten when someone has changed it in the meantime. Invoice booking keeps the supplier's usual payable account, and Lightyear no longer offers to confirm an older draft this run did not create. Full release notes.
30.10.2026Released · v0.37.0
Release 0.37.0 is published
Version 0.37.0 is published on npm. It fixes the gaps found in a test on real books. A bank payment that names an invoice's order or cart number is now matched to that invoice even when another invoice has the same amount. Wise payments to a client already in your list get that client and can be confirmed. The guided assistant can now delete the duplicate half of a transfer between your own accounts after you approve it, and book a ticket that names both the seller and the carrier once you choose the supplier. Classification proposes the account a counterparty has always been booked to and lists payments that may pay an open invoice. The guided report can be computed from fresh data. Full release notes.
30.10.2026Released · v0.36.0
Release 0.36.0 is published
Version 0.36.0 is published on npm. This release follows a thorough review of all workflow instructions. A bank payment that names an open purchase invoice's number or order number is no longer booked as a new expense. Reconciliation, invoice booking and month-end now stop and ask when something may already be in the books, and month-end no longer confirms invoices or journals in a batch. Guided invoice booking keeps the payment reference and supplier IBAN, and one approval covers both creating and confirming the invoice. Asking the guided assistant to close the month now opens the month-end workflow. The VAT-registration check asks about sales that do not count toward the threshold before saying it is exceeded. Full release notes.
30.10.2026Released · v0.35.0
Release 0.35.0 is published
Version 0.35.0 is published on npm. A Wise transfer to a third party (for example the owner's private account) is now imported as an ordinary unconfirmed bank row and no longer holds up the whole import. Bus and train tickets take the purchase date as the invoice date, not the departure time. A reverse-charge footnote no longer adds a made-up VAT amount to the invoice. Duplicate warnings say when the other entry has a different import reference. An order or cart number printed on the invoice is saved in its notes, so a bank payment that names it is suggested as its match. Full release notes.
28.10.2026Released · v0.34.3
Release 0.34.3 is published
Version 0.34.3 is published on npm. The verified reading is slightly stricter: a character that text recognition reads beside a printed value can no longer complete it into a different value, and your own registry code counts as printed even when a date or another number follows it on the line. Full release notes.
28.10.2026Released · v0.34.2
Release 0.34.2 is published
Version 0.34.2 is published on npm. The payment reference (viitenumber) printed on an invoice is now saved when booking through the verified reading. A VAT-registered invoice whose VAT is one cent off the line maths now books with one confirmation. A logo that text recognition reads as a stray letter or digit no longer adds confirm rows to the review card. A ticket with a discount line is no longer blocked as mixing VAT rates. When the previous invoice's title names goods this invoice does not mention, you are asked for a new title. An invoice from a non-VAT-registered supplier that prints your VAT number is no longer blocked. Full release notes.
26.10.2026Released · v0.34.1
Release 0.34.1 is published
Version 0.34.1 is published on npm. Google invoices now go through the verified reading with one confirmation: an invoice number printed in the header under the same label is confirmed instead of typed. Abbreviated Estonian month names (veebr, okt, dets, märts) are now read. A 0% VAT invoice can be confirmed right after it is created. A transfer between your own bank accounts no longer holds a new invoice as a possible duplicate payment. The audit log now shows which fields were read from the image. Full release notes.
26.10.2026Released · v0.34.0
Release 0.34.0 is published
Version 0.34.0 is published on npm. When an invoice PDF loses its date or number behind a dotted line (as Google invoices do), the assistant now reads it from a picture of that row, and the server accepts it only when its own text recognition reads the same; you confirm it on the review card. Invoices with a typed date can now be booked when they carry VAT too, and corrections on the review card are re-checked against the whole document before anything is created. Works in verified-reading mode. Full release notes.
26.10.2026Released · v0.33.0
Release 0.33.0 is published
Version 0.33.0 is published on npm. A Wise transfer that matches rows on two of your banks can now be pointed at the right one, row by row. A Wise payment booked twice is held for review instead of slipping through. Wise payouts into your bank book automatically when the sending account's row proves them. Recurring broker top-ups get an account suggestion from your history. Invoices that print net, VAT and total on one total row (like Tele2) are read when the supplier's Estonian VAT number is on the invoice. A final invoice whose prepayment is already booked by hand is held. Older receipts at the 9% and 5% rates of the time are no longer held. IBANs and foreign VAT numbers are now checked with maintained libraries, and review guidance is in English. Full release notes.
26.10.2026Released · v0.32.3
Maintenance release 0.32.3 is published
Version 0.32.3 is published on npm. These fixes came from a test run on real books. A Wise payment you already booked by hand, with its Wise ID as the journal's document number, is now recognised as booked instead of being held for review. A bank statement row is no longer flagged as booked in the wrong direction just because a different same-day payment of the same amount went the other way. The bank-reconciliation and Wise-import guides explain the new review reasons. Full release notes.
26.10.2026Released · v0.32.2
Maintenance release 0.32.2 is published
Version 0.32.2 is published on npm. A transfer under the company's own name to an own account that is not set up in e-arveldaja, or has no accounting dimension, is now held for review instead of being booked to a different own account. A transfer to an unregistered IBAN (such as a Wise top-up) is booked automatically only when the other account's matching row proves it. An own account with an empty IBAN field is recognised by its account number, and a transfer with a manually chosen target account now executes without a plan-drift error. Dependencies are updated. Full release notes.
20.10.2026Released · v0.32.1
Maintenance release 0.32.1 is published
Version 0.32.1 is published on npm. It fixes product-name updates, percentage discounts and sales-invoice-note updates while preserving invoice amounts. Bank previews with an empty work queue make fewer requests. Bank workflow execution calls now include the required plan handle, and workflow instructions require reviewing all planned effects before approval. Real MCP tests also covered transaction confirmation and invalidation, plus company-switching safeguards. Full release notes.
19.10.2026Updated · v0.32.0
Opening balances come directly from e-arveldaja
The server reads opening-balance entries from the API and includes them in reports once. No separate import or local opening-balance file is needed. Maintain the source entries in e-arveldaja; opening balances are not counted as cash receipts or payments.
19.10.2026Fixed · v0.32.0
Cash flow separates cash movements from noncash changes
The annual report separates actual receipts and payments from offsets and other noncash entries. Invoice, investment and foreign-exchange treatment uses evidence from linked entries; missing or conflicting evidence leaves the amount marked for review. Read the change notes.
19.10.2026
New · v0.31.0
Your assistant can read an invoice and submit its values for checking
In the optional reading mode, the assistant reads the PDF and the server checks the submitted values against the document's text. The review shows the total, supplier and supporting text lines; the assistant asks you about missing or ambiguous values. Enable the mode explicitly with EARVELDAJA_DOCUMENT_READING=1.
A non-VAT company can charge purchase-invoice VAT to its expense account. Supported EUR invoices can retain the document VAT while charging it to the same row's cost account. Receipt batches book the whole gross amount as expense; a bug that could leave only the net amount on the cost row is fixed.
19.10.2026
Fixed · v0.31.0
Approval applies to the invoice and document you reviewed
When confirming an approved plan, changes to material invoice or linked payment details stop confirmation. The receipt-batch plan shows each file's supplier, invoice, bank distribution and any client reassignment. PDF attachment checks verify the exact file bytes; adding the approved attachment no longer triggers a false change warning.
A partially completed creation retains the known invoice ID and recovery details. If creation has an unknown outcome, another invoice is not created automatically. The fixes were checked on real accounts for both a VAT-registered and a non-VAT company.
19.10.2026
Updated · v0.31.0
Bank import keeps more description text, and reports state their limits
CAMT import keeps the full bank description where possible and reports any shortening. Historical aging reports clearly state that they use the invoice's current payment status. Account balances can be narrowed to one sub-account, and unknown tool arguments are no longer silently ignored. All 16 workflow prompts have been reviewed.
Restart the server after updating and obtain a fresh preview. After importing with the new CAMT markers, downgrading below 0.31.0 is unsupported. Full release notes.
16.10.2026
Security · v0.30.1
A receipt already booked by a manual journal is held for review
If the receipt's invoice number already appears in a journal's document number or title (for example ETR1:EE1966453), no new purchase invoice is created: the receipt is held for review with the journal number, and the note suggests attaching the document to that journal. A receipt whose invoice number looks cut short (for example “AB1.234”) is held too; the extracted number itself is unchanged, so an invoice booked earlier is still found as a duplicate.
16.10.2026
Security · v0.30.1
A receipt with an unverified amount or buyer is held for review
A receipt is held for review in every mode when the file holds several documents, the buyer is another company, the invoice numbers disagree, the total is not confirmed by a label, an amount exceeds the receipt limit, or the total is 0. A wrong-company invoice can no longer be created in the guided workflow. Net / VAT / total rows, table headers, zero balances and supplier names are read more accurately, and “MTÜ” and “Mittetulundusühing” are recognised as the same supplier.
15.10.2026
Security · v0.30.0
A receipt whose payment is already booked is held for review
If the receipt's outgoing payment is already booked from the bank, no new purchase invoice is created from the receipt: it is held for review with the matching journal number, so the expense is not booked twice. Journals are re-read before each create, so a payment booked in the meantime is caught too. Receipt amounts are read more carefully (VAT is no longer taken from, say, a street address), and a receipt whose net, VAT and total do not add up, or whose VAT rate was not in force on the invoice date, is held for review.
15.10.2026
Fixed · v0.30.0
Purchase invoice totals are checked before writing
Purchase-invoice VAT and total rules are now checked before the invoice is created, not after; nothing is written for an invoice that fails them. For a VAT-registered company, an invoice line that carries VAT must state its VAT rate. Receipt batch output is compact by default (detail: "full" includes the OCR text), and the accounting inbox now reports Lightyear CSV exports and XML files that are not bank statements.
15.10.2026
Security · v0.30.0
Wise transfers booked against the right own account
The counterpart of a Wise transfer (your other bank account) is now resolved per row from own-account evidence, not by one choice for the whole file. If the same transfer may already be booked on the Wise account, the row is held for review; the owner can release such rows with acknowledged_journal_holds, after which the entry is created and confirmed as usual. Each entry is re-checked right before it is written.
14.10.2026
Fixed · v0.29.2
Lightyear income is no longer proposed twice
When a Lightyear reward or dividend has already been booked by hand under another document number (for example reward), the tool no longer proposes it as a new entry. A same-amount entry on the broker account within a day sends the row to review with the matching journal's number. A reference shared by rows with different content is reviewed row by row, and rows already booked count as duplicates rather than review items. The legacy-booking check has a request budget, so a large statement can't stall.
14.10.2026
Fixed · v0.29.2
Stricter checks before booking
Dates that don't exist (such as 31 February) are now refused by every tool. Journal titles over 100 characters are refused before reaching the API; the dividend package shortens a long shareholder name itself. A non-VAT-registered company's purchase invoice no longer accepts deductible VAT fields. Your own bank account is recognised even when its IBAN is written with spaces, so inter-account transfers aren't missed. Client debt now states clearly when offsetting entries booked under other clients are left out.
14.10.2026
Security · v0.29.2
An approved plan runs only on the reviewed file
Bank statement, Wise, Lightyear and document imports now check before writing that the file is exactly the one you previewed: content, size, extension and location. A copied, moved or swapped file stops the run and nothing is written. The audit log is written through a safe temporary file, and document numbers of possible duplicate postings are sandboxed from the AI assistant like other imported text.
2026-10-12
New · v0.29.0
More bank transactions confirm themselves
A new rule confirms a receipt automatically when its reference number and amount match exactly one confirmed, unpaid EUR invoice and its direction and currency are proven by the statement. A row whose client differs from the invoice's client goes to review, and automatic confirms still go through a reviewed preview. Rows that e-arveldaja's own bank import already created are recognised and skipped on CAMT import. Classification suggests the counterparty's previous booking even without an IBAN. The LHV payment instruction id helps pick the right Wise top-up among eligible candidates, and flags a conflict for review when it names another candidate. The summary shows examples of the automatic decisions and says where to find the full list.
2026-10-12
Fixed · v0.29.0
Bank import guards better against double-booking
CAMT and Wise import now also check manual journals: a movement whose journal is found with certainty is not created again. An uncertain hit is flagged for review; CAMT does not create the row, while Wise may still create an unconfirmed row for you to review or delete. Several earlier duplicate cases are fixed: re-imports after an upgrade, concurrent imports, partly imported statements, rows booked in the wrong direction, Wise card payments split across two balances, and fees already booked.
2026-10-12
Fixed · v0.29.0
Foreign-currency invoices: rate and currency
e-arveldaja's currency_rate means foreign units per 1 EUR. Some paths used to multiply to get the EUR amount; they now divide (e.g. 108 USD at 1.08 = 100 EUR). A EUR payment is matched to a foreign-currency invoice by the invoice's EUR base amount. When a receipt's total lines show two currencies (e.g. a USD invoice that also prints a EUR equivalent), the read currency is cross-checked against the supplier's past invoices, and in a receipt batch also against a linked payment; a contradiction sends it to review. A new supplier, or single-document processing without the payment check, may not reveal every contradiction.
2026-10-12
Security · v0.29.0
Imported text and files are better protected
Forged sandbox delimiters are stripped from bank statement, Wise and Lightyear CSV and receipt text as soon as it is read, so a malicious file cannot carry them into the books or the AI assistant's instructions. Input files have a hard size cap, and a file that changes while it is being read is refused.
2026-10-02
Fixed · v0.28.1
Google invoices: a date is no longer read as the total
On Google's Estonian 0% invoices (Workspace, Cloud, Gemini) the PDF reader took the billing-period row "Kokkuvõte – 1. sept 2026 – 30. sept 2026" as the total, so the total became a day number (such as 30) and VAT was computed as the difference from the net amount. The reader now recognises the "Kogusumma" (total) row and no longer reads part of a date as an amount.
2026-10-02
Fixed · v0.28.0
Incoming bank transactions confirm again
The e-arveldaja API reads every transaction back as outgoing, even one stored as incoming, so a check added in 0.26.0 left incoming CAMT and Wise rows unconfirmed. The check is gone; the direction comes from the statement. Rows whose direction is unknown (entered manually or imported another way) are no longer treated as money out: duplicate checks look at both sides and the tool won't book a refund as an expense. Attaching a document to a record that has none works again, and balances and reports no longer break when the number of entries is an exact multiple of 100.
2026-10-02
New · v0.28.0
Unconfirmed entries no longer drop out of balances unnoticed
Account balances still count confirmed entries only, but now also show how many unconfirmed entries post to the account in the period and for what amount, with a warning to confirm them before comparing with a statement. Lightyear booking lists the draft entries it created along with a ready-to-run confirm command. Previously they could be left unconfirmed and the broker account then didn't match the statement.
2026-09-25
Fixed · v0.27.0
A dropped connection no longer leads to double bookings
When e-arveldaja doesn't answer or the connection drops during a write, the tool no longer treats it as a failure; it reports that the outcome is unknown — check before retrying, because the entry may in fact have been saved. That way a retry can't create a duplicate entry or send an e-invoice twice. Duplicate and invoice-payment checks before a write now always read fresh data, not the cache.
2026-09-25
New · v0.27.0
Owner-paid receipts can be finished from the inbox
When you paid an expense out of your own pocket, the assistant asks for the missing details as separate yes/no questions and applies the VAT rules: for example, input VAT on guest reception is not deductible, and on an M1 passenger car not excluded from private use generally only 50%. Guided mode (guided) flows now run end to end without switching to the full toolset. The dividend package previews by default — entries are created only after your approval.
2026-09-25
New · v0.26.0
Year-end close the RIK way
The year-end close now books the two closing entries described in RIK's e-arveldaja guide (result to account 2970 on 31 Dec, then to retained earnings 2960 on 1 Jan), recognises entries you already made by hand and adds only what's missing — it never books twice. The month-end overdue list no longer includes invoices that aren't due yet, and a closed year's profit and loss no longer shows zeros. Lightyear sells are booked with the cash the statement actually shows, and a Wise own-account transfer already recorded from the other bank is no longer booked a second time.
2026-09-18
New · v0.25.7
Protection against third-party payers and the wrong company
When someone else pays an invoice (say, a ministry paying a foundation's invoice), e-arveldaja records the receipt under the payer rather than the invoice's customer, so the customer still appears to owe the money. The tool no longer auto-confirms such payments and sends them to review instead. With several companies, every write can be pinned to a specific company — if the server restarted in the meantime and another company is active, the command is refused.
2026-07-25
New · v0.25.0
Choose how many tools your assistant sees
The EARVELDAJA_PROFILE setting selects the toolset: guided mode guided (19 tools) for everyday bookkeeping, guided-sales with sales invoices, the default standard, or every tool with full. A smaller set means fewer tokens in every conversation.
2026-07-21
New · v0.24.0
Warns about duplicate payments and closing-balance mismatches
The tool now warns when the same bank payment is already in the books — no matter how it got there — and checks that the bank statement's closing balance reconciles with the accounting. It never deletes anything on its own — it only flags.
2026-07-20
Fixed · v0.22.1
Incoming receipts could be recorded as outgoing payments during a short window
In version 0.22.0, incoming receipts (including deposits and refunds) could be recorded as an outgoing payment instead. Fixed in version 0.22.1. This could only affect those who happened to create new bank transactions overnight into 20 July, roughly 22:30–04:15 (Estonian time).
If in doubt, compare the bank-account balance e-arveldaja shows against your real balance; if they differ, re-import the affected statements.