Features
- Audit trail for role and permission changes - User role and permission changes now appear in the activity and audit trail, with filtering and CSV export support.
- Sort customers and vendors - You can now sort the Customers and Vendors lists by name, number, or any other column.
- Deactivate customers via API - The customer API now supports deactivating a customer record, matching the behavior already available in the UI.
- Warn on future-dated postings - Organizations that allow future-dated postings can now enable a warning that flags them before posting.
- Credit-aware tax estimation - Tax estimates for transactions with vendor or customer credits now match the amounts calculated when the transaction is committed.
- Bank Connections public API generally available - The public Bank Connections API is now always available and no longer requires an early-access flag.
- Faster Bank Match suggestions - Bank Match suggestions now return noticeably faster thanks to a redesigned suggestion pipeline.
- Faster AR aging digest in the copilot - The copilot’s AR aging digest now returns in a fraction of the time it previously took.
- Better recurring vendor spend detection in the copilot - The copilot now finds missing recurring vendor spend across bills, direct expenses, and journal entries, not just bills.
- Confirmation required for connected app actions - Actions taken through connected apps (such as sending email) now require your explicit confirmation before they run. This matches the protection already applied to other write actions in the copilot.
- Approval workflows for bulk record actions - Approval workflow gates now apply to bulk record actions, so bulk edits can require approval the same way individual edits do.
- Contract list filters and dashboard widgets - You can now filter the Contracts list and add or edit widgets on list dashboards.
- Code field for bills and journal entries - Bills and journal entries now have a code field that you can view, edit, and filter by.
- NetSuite subsidiary mapping to your company tree - Manual NetSuite migrations now map subsidiaries to your existing company tree, mapping the global parent automatically and guessing the rest based on your organization structure.
- NetSuite account mapping shows subsidiary and company - NetSuite account mapping now shows which subsidiary each account came from and which DualEntry company it maps to, with dedicated columns and filters for both.
- Contract edits and change orders in the API - The API now supports editing contracts and adding nested change orders, matching the contract editing capabilities already available in the UI.
- NetSuite and Sage migrations treated as org-level - The Migrations page now separates company-level connections, such as QuickBooks and Xero, from an org-level NetSuite and Sage block that is not tied to a single company, and prevents starting a second NetSuite connection for the same organization.
Fixes
- Zoho invoice Locations - Fixed an issue where renamed classification lines caused Location values to drop off of synced Zoho invoices and credit notes.
- Vendor and customer import mapping - Fixed an issue where importing a vendor or customer with a name that already existed (including case differences or previously deleted records) left the mapping stuck in an error state.
- Moving transactions into credit card accounts - Fixed an issue that prevented moving bank-type transactions into a credit card account.
- Consolidating matched bank and card accounts - Fixed an issue that prevented consolidating cash-like accounts, such as two linked accounts for the same card, into a single matched account.
- Duplicating a demo instance - Fixed an issue that prevented duplicating a DualEntry demo instance into a new instance.
- Post-migration welcome screen - Fixed an issue where converting to a migrated sandbox skipped the intended welcome screen and redirected straight to the copilot.
- Copilot chart rendering - Fixed an issue where certain cash bridge and MRR movement charts failed to render and showed an “unable to generate artifact” error.
- Copilot citation links - Fixed an issue where longer documentation links in copilot responses could appear corrupted.
- Report export permissions - Fixed an issue where report exports did not enforce the same view permissions as the underlying report, and where one user could access another user’s exports.
- Bill.com vendor credits - Fixed an issue where applying a vendor credit to an already-paid bill caused the payment to fail importing.
- Stripe subscription sync - Fixed an issue where subscriptions failed to sync into contracts when the associated Stripe customer name was a single character.
- Payroll sync reliability - Fixed issues where payroll syncs failed on zero-amount pay statements and on archived duplicate transactions instead of completing successfully.
- Salesforce sync for optional objects - Fixed an issue where Salesforce organizations without Quote or Order objects enabled could report sync errors unnecessarily.
- Copilot recovery from malformed tool calls - Fixed an issue where the copilot would stop responding after a malformed tool call instead of retrying.
- Brex synthetic transaction classifications - Fixed an issue where synthetic Brex transaction lines did not carry over classification lines from the original lines, which could cause save errors.
- Bill.com vendor payment sync retries - Fixed an issue where a temporary error while fetching a later page of Bill.com vendor payments could abort the entire sync. DualEntry now retries and falls back to already-fetched results.
- Contract update performance - Fixed a performance issue that caused contract updates to run unnecessary extra queries.
- NetSuite transaction amounts - Fixed an issue where transaction amounts did not populate for NetSuite-migrated data.
- Bulk import status display - Fixed an issue where a bulk import with some failed rows displayed as fully failed instead of showing as a partial success.
- Cash report sync retries - Fixed an issue where a temporary error while fetching a cash report caused the sync to fail instead of retrying.
- Brex transaction export issues - Fixed issues where certain Brex transactions failed to export, including false missing-department errors, duplicate vendor postings, and VAT tax resolution failures for companies in non-VAT countries.
