🐝 What's new in LedgerBee
Highlights
One period and one grouping for the whole dashboard
The dashboard toolbar now has a single grouping menu (per widget, day, week, month, quarter or year) next to the period presets and a custom date range. Every dated chart re-groups together, and widgets keep their own grouping only if you lock their settings. Quarter and year presets follow your accounting year, so a July–June company sees "This quarter" as July–September. Months with no postings show as zero, unfinished periods are drawn lighter, and each chart says what it is based on.
VAT tasks for every unfiled quarter
If your company uses Tasks, each VAT period that has ended without a return on record now becomes a task for your admins. Each admin is notified in the app and by email. The task shows the period, the deadline and the pre-filing checks, with the items that need attention first, and it has a button to the VAT return. Marking the return as filed closes the task. Tasks due within 14 days or overdue are highlighted with a countdown. The VAT page, performance report and cash-flow forecast now also show the correct payment deadline for each period.
Bank proposals that show what they will post
Pressing a bank line's Hivey proposal now selects the line together with the entry Hivey matched it to, ready to confirm. AI approval has a new Summary step that shows what approving will post, including a plain-language description and the posting table. After approval, the step shows what was posted. The classic bank reconciliation page has been retired in favour of the redesigned page.
Hivey shows your real Invoices list
When you ask Hivey about invoices, such as which are overdue or which haven't been sent, the answer now shows the Invoices page's own list. It has the same columns, filters, sorting, paging and export, plus an "Open in Invoices" link. Asking Hivey to narrow the list updates it in place.
✨ Improvements
- Hivey now shows the Journal's own drafts list when you ask about draft entries. Each draft shows its status, the page's filters, sorting and export work in the list, and Hivey can change an open list in place.
- Searching Customers and Suppliers now matches every word you type, in any order, across name, number, VAT number, email and group name. Counts, "Select all", exports and the email preview follow the search, and "Selected rows only" exports only the ticked rows.
- Hivey now shows the Subscriptions page's own list in its answers, with the same columns, filters, paging and export, plus an "Open in Subscriptions" link.
- The Invoices page has a new "Overdue only" switch and "Sending" filter chips (All, Not sent yet, Being sent, Sent). The Customer and Total columns can now be sorted. Filter choices are kept in the page link, so shared links open the same list.
- Meter details now show the aggregation method with an explanation. A new Edit button opens the meter editor from the details drawer, and the usage report builder's cURL and JSON options now display in full.
- Dashboard widgets can now sit on the home page next to your notes. Add them from the right-click menu, by dragging in a Hivey chart, or from a widget's header. You can move, resize, lock and edit them. Breakdown widgets also gained Sort by and Order options.
- The "For you" card on the home page can now be dragged to another spot, locked, layered, hidden and restored from the right-click menu.
🐛 Bug fixes
- Draft invoices, credit notes, quotes and order confirmations imported from e-conomic now keep e-conomic's VAT and totals, and the import page warns where LedgerBee's rounding would differ.
- Imported foreign-currency account balances now show the correct amount in the account's own currency.
- PDF document previews now open in Safari 18 and older browsers, and if a preview fails, only the preview area shows the error.
- Approved chains finish booking and move out of the Pending list into Finalized once booking completes.
- Dashboard tables grouped by day now name each row by its full date, and period chips use named months consistently.
- Connecting a bank through Aiia now works when the bank also holds a card account.
- VAT on invoices, credit notes, quotes and order confirmations is now calculated once per VAT rate, so line VAT adds up exactly to the document's VAT. Credits return exactly the VAT originally charged.
- A VAT rate you set on an invoice product line, including 0%, is now kept.
- Changing a subscription's plan, running billing while a new subscription is being created, moving bank lines to journal together, and opening any page all complete normally.
- Invoice and credit note drafts with VAT on a 0% line now show a clear warning and block Send until fixed, instead of failing with a generic error.
- E-invoices for documents with a whole-document discount now state the same VAT as the invoice, its PDF and its journal entry.
- Sending an invoice or credit note with VAT on a sales account without a VAT code is now refused up front with a clear explanation.
- The Pliant corporate card application now asks for the correct fields and lists the missing required ones when Submit is disabled.
- Uploading a new company logo no longer removes the customer portal's logo or favicon.
- Doughnut, polar area, bubble and waterfall widgets now show their full date range in the period chip.
- Text in the home page chat can now be selected and copied.
🔧 For developers & integrators
⚠️ Breaking changes
- GET /api/v1/customers: a request that already sendssearchnow receives the paginated object (withnextCursor) instead of the full array. Any search with at least one word returns the paginated shape.
🔗 API & webhooks
- GET /v1/journal-entriesgains theexcludeReversedquery parameter.trueomits each linked reversal pair,falseor an empty value leaves the filter off, and any other value returns 400.
- Journal entry responses gain reversedByEntryId(on the reversed entry) andreversalOfEntryId(on the reversal). Both arenullotherwise, and reversals imported from e-conomic are not linked.
- Reversal requests can now return 409 JOURNAL_ENTRY_REVERSAL_IN_PROGRESSwhile the first reversal is still posting, and400 JOURNAL_ENTRY_ALREADY_REVERSEDafter it has posted.
- New DELETE /v1/customers/{customerId}(scopecustomers-write) returns 200 with{ id, customerNumber, result }, whereresultisDELETEDorDEACTIVATED. Customers with bookings, invoices or subscriptions are deactivated. It can return 400CUSTOMER_CANNOT_DELETE_PARENT_CHILD_NO_DELIVERY(withdetails.childCustomerId) or 404CUSTOMER_NOT_FOUND.
- New DELETE /v1/suppliers/{supplierId}(scopesuppliers-write) returns 204. It can return 400SUPPLIER_HAS_REFERENCES(withdetails.journalEntryCountanddetails.draftCount) or 404SUPPLIER_NOT_FOUND.
- New attachment endpoints for journal entries and drafts:
-
POST /api/v1/journal-entries/{id}/attachments
(multipart, scope journal-entries-write
)-
DELETE /api/v1/journal-entries/{id}/attachments/{documentId}
(scope journal-entries-write
)-
GET /api/v2/draft-journal-entries/{id}/attachments
(scope journal-entries-read
)-
POST /api/v2/draft-journal-entries/{id}/attachments
(multipart, scope journal-entries-write
)-
DELETE /api/v2/draft-journal-entries/{id}/attachments/{documentId}
(scope journal-entries-write
)- Attachments accept PDF, JPEG or PNG up to 10 MB. Unsupported or disguised files return a coded 400, and files over 10 MB return 413. Repeated uploads with the same idempotency key return the original response.
- GET /api/v1/customersgains these query parameters:
-
search
: multi-word, all words must match.-
vatNumber
: matches with or without the DK prefix and common separators.-
email
: case- and whitespace-insensitive exact match.-
isActive
: true
or false
. Any other value returns 400 SHARED_VALIDATION_FAILED
.- A nextCursorreplayed under different search or filters returnsPAGINATION_INVALID_CURSOR. Phone numbers are not searched.