Features
- Bank match AI transaction labels - AI-drafted bank match transactions are now visually labeled so you can quickly distinguish them from manually matched transactions.
- Bank match rule draft preview - When the AI copilot drafts a new bank match rule, it now renders as a readable workflow preview instead of raw data in the chat response.
- Record codes on approval lists - Invoice, bill, and journal entry approval lists now show a record code column, placed after the number column to match the overview screens.
- Record code on listing pages - Listing pages now display the record code for each record.
- Cash flow report column selector - The cash flow report now uses the same pivot and column-selector icon as the income statement and balance sheet, replacing the previous “Month” dropdown button.
- New Owner modal field order - The New Owner modal now lists Company above Name, and the Name field defaults to the company name.
- Avalara push data helper text - The “Allow push data” toggle in Avalara Settings now includes helper text explaining what it does.
- Company prefix section - A new company prefix section is available in company settings.
- Multi-select vendor payment filter - The vendor payment form filter now supports selecting multiple values at once.
- Helios bank connections - A new bank connection provider, Helios, is now available for connecting bank accounts.
- NetSuite migration company selector - NetSuite migrations now use “All Companies” instead of “Global” to match DualEntry terminology.
- Statement reconciliation reauthorization - When your QuickBooks Online or Xero connection loses API access, the statement reconciliation drawer now offers a reconnect flow instead of blocking you. You can still upload an export as before.
- Combined classifications mapping step - NetSuite migrations now map classes, departments, and projects together in a single classifications step instead of three separate tabs.
- Clearer constraint error messages - Error messages for duplicate or conflicting records now describe the issue in plain language instead of showing raw database errors.
Fixes
- MCP OAuth security hardening - Closed a vulnerability where open dynamic client registration could allow interception of authorization codes and theft of access tokens.
- User profile updates - Profile details now update immediately after you edit them, instead of requiring a refresh.
- Plaid exit modal overlay - Fixed an issue where exiting the Plaid bank connection flow left a blank overlay on screen.
- Project customer field - Fixed an issue where the customer field was cleared when editing an existing project.
- Payment information validation - Fixed a bug that let you bypass required payment information validation by clearing a field after entering it.
- Item edit from list view - Fixed an issue where editing an item from the list view failed after saving.
- Company payment method layout - Corrected incorrect padding in the company payment method section.
- Selection error on load - Fixed an error that occurred when a selection state was read before it was available.
- Intercompany journal entry GL Impact refresh - The GL Impact tab now updates immediately after you save, archive, or recover an intercompany journal entry, without requiring a page refresh.
- GL Impact header dates - Corrected the transaction and posting dates shown in the GL Impact header so they reflect the source record and your independent transaction dates setting.
- Long input field layout - Fixed an issue where entering a very long value stretched the entire page layout.
- Effective ownership chain display - Companies held by people or outside entities, rather than another company in your organization, now correctly show their direct owners instead of appearing to have no ownership data.
- Non-controlling interest disclosure - The Effective Ownership & NCI card now clearly separates the unassigned ownership percentage from the count of outside holders, instead of combining them into one misleading figure.
- Blocked mailto links - Fixed a content security policy violation that blocked
mailtolinks from opening. - Change order contract calculations - Fixed an issue where change order invoice amounts and customer credits could be calculated incorrectly.
- Amortization and fixed asset draft posting - Fixed an issue where draft amortization schedules and fixed assets could post entries to the financial statements before receiving required approvals.
- Reconciliation summary sign convention - Fixed an issue on credit-normal accounts (credit card, accounts payable, and other liability accounts) where the reconciliation summary’s Recon Difference and Variance GL to Bank could never both show zero.
- Bulk transaction archive and recover access - Fixed an issue where restricted users could archive or recover transactions in companies outside their access.
- Location data access scoping - Fixed an issue where location and product category data could be visible across companies that shouldn’t share access.
- Bank match rule access scoping - Fixed an issue where bank match rules could be deleted or dismissed by users outside the rule’s organization.
- Payroll clearing reconciliation for withheld amounts - Fixed an issue where payroll amounts withheld by the provider without an itemized line, such as insurance premiums, silently posted to the clearing account without explanation.
- Voided journal entries from Xero - Fixed an issue where manual journal entries voided in Xero stayed posted in DualEntry after resyncing; they are now archived.
- Vendor resolution for NetSuite employee bill payments - Fixed an issue where NetSuite bill payments to employees failed to import because the payee wasn’t resolved as a vendor.
- Billable expense items - Fixed an issue where billable expense invoice lines imported from NetSuite without an item.
- Effective ownership for deleted owners - Fixed an issue where a soft-deleted owner with existing ownership records could drop out of the effective ownership chain.
- Scheduled agent unread badge - Fixed an issue where the AI copilot’s scheduled agent list showed an unread badge to users who didn’t own the schedule and couldn’t clear it.