๐ What's new in LedgerBee
Highlights
Approvers can see and edit the whole entry
Approvers now see the full journal entry they are approving and can change it. "Edit and approve" does both in one step, so the entry no longer has to be sent back and forth. The full approval history is kept across rounds, with the entry as it stood at each stage. Approval cards from Hivey now show on the Pending tab, and any missing required dimensions can be fixed right there.
Hivey chat can build any dashboard widget
You can ask the Hivey chat for any widget the dashboard builder offers, such as cash balance, overdue debtors, MRR, expenses or latest entries. The widget appears as a card, ready to add to a dashboard or to a new one. When data spans several periods, the chat now shows it as a chart first.
Split commitments and invoiced revenue by your own dimensions
The Commitment chart and the Total invoiced revenue chart on the dashboard can now be grouped by your own dimensions, such as department, location or project. Revenue that doesn't map to a dimension value appears as "Unallocated". Invoiced amounts are split the way they were booked, including credit notes.
Apply saved discounts to invoices and quotes
Invoices, quotes and order confirmations can now apply your saved discounts, on single lines or on the whole document. Each discount is checked against its products, customers, validity dates and currency. The applied discounts and the total saved are shown on the document. A quote warns you if a discount it uses ends before the quote does.
โจ Improvements
- E-invoices and PDFs now show the named discounts a document used, with a "Total discounted" row on PDFs. Credit notes show them as credits, and the composer preview matches.
- Recurring bank-fee rules can store a dimension value for each dimension the fee account requires, and every fee they post carries those values. The rule editor warns when a required dimension is missing, and the rules list shows the stored values.
- Hivey now returns customers and suppliers with the same rows, order and totals as the pages show. It reports the same validation messages for invalid filters and links result cards to the matching filtered list.
- Quick booking of bank lines now shows which dimensions each line requires and marks the line that is missing one. "Apply all" and copy-down now include dimension values.
- You can reject several Hivey proposals in one go. Rows leave the queue straight away, and a notice shows how many succeeded and failed. Giving a reason is optional.
- Payments now ask for the dimensions required by the bank and customer or supplier balance accounts. Quick booking, the journal entry form and Hivey approvals mark what is missing, and booking is refused until it is filled in.
- The approval history and the event log now show as one timeline. It includes approval comments, send-back reasons and earlier versions of the entry. Partial approvals read "Approved, waiting for the other approvers".
- Credit notes now give back the discounts of the invoice they credit. For example, crediting 2 Widgets at 1,000 with a 10% line discount returns 900. Document discounts are spread across the credited lines and VAT rates.
- Drafts of invoices, quotes and order confirmations now preview which discounts would apply, and what they are worth, before you save. Discounts that can't be applied are listed with the reason.
- Subscriptions that Fenerum invoices together are now imported as a billing group and stay on one invoice. You can review the groups in the import preview and skip any you want to keep separate.
- A discount can be limited in total and per customer. Booking an invoice that would exceed a limit is refused and the invoice stays a draft. The discount check shows how many uses remain, and a full credit note returns the uses.
- Hivey chat is now available to all companies as a preview. The chat is clearly marked, you can send feedback from it, and requests to change data explain that writing isn't available yet.
๐ Bug fixes
- Foreign suppliers are now correctly attributed to their country of origin, so purchases from abroad are tracked properly in VAT returns and not treated as Danish.
- VAT codes now use correct rates, preventing incorrect bookings from recurring in new transactions.
- Payments to invoices across multiple accounting years are now correctly recorded as settled, and re-importing e-conomic company data preserves all settlements that haven't changed in the source system.
- Searching Booked Entries now finds entries by supplier or customer name on all three tabs, and in the inbox's "Attach to a booked entry" drawer.
- Small currency exchange differences on paid invoices can now be cleanly settled to an account, without reversing the payment.
- Settling an invoice that has only a small amount left in Danish kroner no longer asks for an exchange-rate check. Settlement amounts now follow your number-format preference.
- Import error reports now point to the correct row in your file, even with title or blank rows, and editing Excel previews during import now works.
- Bank-line proposals now show the full booked entry and its documents, so reviewers can make better-informed reconciliation decisions.
- Invoices whose inbox rule sets a required dimension are now booked automatically instead of being left in the inbox.
- Paid invoices with a small amount left can now be matched against their offsetting entries when the selection nets to zero in the company's currency.
- Deleting a product used by a quote or order confirmation now explains that it is in use and names the documents, and suggests archiving it instead.
- Supplier invoices with US-format dates (MM/DD/YYYY) are now imported with the correct service periods and posting dates.
- VAT rates now stay exactly as you type or import them, so 5.26% stays 5.26%.
- Invoices from companies with no bank account on file no longer show a "Pay by bank transfer:" line.
- Reversing an invoice now gives its redemption-limited discount use back, so the discount can be used again on the corrected invoice.
- Hivey chat now replies in the language you write in and includes the total amount in overdue-invoice answers. It also says a widget is built when its period has no figures, and MRR charts no longer show months beyond the available data.
๐ง For developers & integrators
โ ๏ธ Breaking changes
- MCP list_counterpartiesnow requires aviewparameter (customersorsuppliers). Calls without it now fail, and the unified search and supplier embedding search are removed from this tool.
- POST /public-api/draft-journal-entriesnow validates required dimensions on payment drafts. Booking is refused if the bank or balance accounts require dimensions the payment lacks.
- MCP get_saas_metricsnow refuses a granularity given without a date range.
๐ MCP tools
- list_counterparties(changed): an agent can ask for the customers or suppliers list with the same filters, validation, rows and totals as the pages (filters such ascustomersQ,status,country,tags,currency,paymentTermsMinandpaymentTermsMax).
- get_overdue_invoices(changed): an agent can now ask for the total overdue amount, and the scope of thechaseFirstranking is clarified.
- get_saas_metrics(changed): an agent gets MRR figures without unrequested projected months, and granularity now needs a date range.
๐ API & webhooks
- POSTandPUT /bank-recurring-posting-rulesaccept and returntagIds(array of dimension value IDs).GET /bank-recurring-posting-rulesreturns it too.
- GET /open-entriesaccepts the query parameterincludeSettledWithRemainderto list paid invoices that still have a remainder. Matching them can return the new error codesSETTLEMENT_SETTLED_DOCUMENT_REQUIRES_BALANCED_MATCHandSETTLEMENT_SETTLED_DOCUMENT_POSTING_DATE_NOT_AFTER_STAMP.
- DELETE /api/v1/products/:productIdandDELETE /v1/products/:idnow return409 PRODUCT_IN_USEinstead of a server error.details.documentslists up to ten blocking quotes or order confirmations as{kind, number, id}, anddocumentCountgives the total. Other foreign-key conflicts return the same 409 with an empty list.
- GET credit note endpoints now return line-level discounts, document-level discounts spread across VAT rates and tax categories, and totalDiscounted, matching invoice reads.
- Invoices, quotes, order confirmations and credit notes accept discountIds(array) on lines and on the document forPOSTandPUT.
- Single-document responses return
appliedDiscounts
per line, plus documentDiscounts
and totalDiscounted
. List responses omit them.- On update, omitting
discountIds
keeps the existing discounts, []
clears them, and null
is refused with 400.- Discounts that don't apply are rejected with a coded reason, and quote saves can return
warnings
when a discount ends before the quote expires.-
POST /v1/credit-notes/from-invoice/{invoiceId}
returns the invoice's discounts. Other credit-note creation cannot apply discounts of its own.- New endpoint POST /v1/subscriptions/{id}/product-changeschanges a subscription's quantity or price from a chosen date, without cancelling it.
- The request takes
effectiveDate
, product lines with optional quantity
, price
, description
and customPrice
overrides, and an optional keepOmittedLineFields
flag.- The subscription keeps its id, and a future-dated change appears in the scheduled changes.
- GET /v1/discounts/{discountId}/applicabilityreturns the new fieldsremainingandremainingForCustomer, and the new reasonsmaxRedemptionsReachedandmaxPerCustomerReached.
- GET /v1/discounts/{discountId}/applicablenow excludes discounts whose limits are exhausted for the requesting customer.
- Booking refusals can now return DISCOUNT_REDEMPTION_LIMIT_REACHEDandDISCOUNT_CUSTOMER_REDEMPTION_LIMIT_REACHED, each with the limit value and the current count.