> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dualentry.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Scheduled AI agents, EBITDA metric, and AR PATCH

> August 24, 2026 DualEntry release: hourly scheduled AI agents, deterministic EBITDA formula, PATCH support for AR records, and invoice code sequences.

## Features

* **AI copilot EBITDA metric**: The AI copilot now calculates EBITDA using a consistent, deterministic formula based on net income plus depreciation, amortization, interest, and tax, so scorecard results no longer vary between runs.
* **Scheduled AI agents**: You can now connect and run scheduled AI agents on an hourly cadence, up from previously unrestricted intervals.
* **Partial updates for AR records**: The API now supports PATCH for items, contracts, customer prepayments, customer prepayment applications, and customer credits, so you can update individual fields without resending the full record.
* **Item standard price in the public API**: The items endpoint now returns standard price fields, giving integrations visibility into standard selling price alongside existing item data.
* **Invoice code sequences**: Invoices and contract invoices now receive a unique, formatted code automatically when posted, based on your organization's numbering settings.
* **Bulk update company short codes**: You can now bulk update short codes for companies and filter the companies list by short code.
* **Clearer NetSuite subsidiary labels**: NetSuite accounts that apply to every subsidiary now display as "Global" instead of listing every subsidiary name. Creating an account from the mapping screen also carries over the company, name, and type from the source row.
* **Cleaner default account names**: Default expense and income accounts created during setup no longer include a "\[Rutter]" prefix, so labels read as plain "Default Expense" and "Default Income".
* **Scoped NetSuite account mapping**: NetSuite account mapping now only offers DualEntry accounts that match the source company's scope, preventing mismatched company-to-global mappings.
* **NetSuite source links**: Data sync records imported from NetSuite via Rutter now link directly to the original NetSuite record and display its document number instead of an internal ID.
* **Scheduled agent unread indicator**: Scheduled AI agents now show an unread indicator when a run finishes, so you can tell at a glance which schedules have new results.
* **Filter integration mappings by active status**: You can now filter integration mappings by whether the source record is active, so status filters like Employee Status return the expected results.

## Fixes

* **AI copilot drafting**: The AI copilot now fully populates journal entry drafts, including debits, credits, accounts, and classifications, instead of opening a blank entry.
* **AI copilot classification detection**: The AI copilot now correctly matches classification values such as department and location instead of confusing them with classification names.
* **AI copilot invoice and receipt uploads**: Uploading an invoice or receipt to the AI copilot now fills in vendor, amount, and payment account details instead of posting a mostly empty form.
* **AI copilot data exports**: Downloading tabular data generated by the AI copilot no longer fails, including for tables with special characters in their titles.
* **Bank match AI**: Transactions you exclude from bank match AI suggestions no longer reappear later.
* **Account edits under immutability**: Bulk account status and edit actions now update every eligible account and report which accounts couldn't be changed, instead of failing the entire request.
* **Bank connections**: Institution search and connection screens now indicate when a bank connection uses OAuth, so you're warned before linking the wrong account during the provider handoff.
* **Sandbox user access**: Users copied into a new sandbox no longer see blank data until removed and re-added; access now resets correctly during sandbox creation.
* **Finch payroll filters**: Data sync filters for Finch-connected payroll integrations now show all relevant transaction types, including payments, pay statements, and consolidated payroll.
* **New user default role**: New organization members provisioned through direct add, SCIM, or bulk import now start with view-only access instead of admin.
* **Webhook security hardening**: Brex, Rippling, Meld, Waycore, and WorkOS webhooks are now hardened against replay and credential exposure.
* **Stripe credit notes**: Credit notes settled to a customer's Stripe balance or made after payment now post correctly or surface a clear integration error, instead of being silently skipped.
* **QuickBooks Desktop migration**: Transactions missing a currency during QuickBooks Desktop migration now fall back to your company's currency instead of failing to import.
* **Bulk import number formatting**: Bulk import now correctly reads European-style decimal formatting (for example, "1.234,56") instead of misinterpreting it as a larger number.
* **Sign-in security**: Cookie-authenticated requests are now restricted to trusted origins, closing a gap that could allow cross-site request forgery.
* **Overdue aging report accuracy**: The overdue aging report and its summary view now show consistent totals instead of diverging numbers for the same period.
* **PDF report title security**: Titles in exported PDF reports are now escaped, preventing malicious HTML from being used to access internal files during rendering.
* **API documentation security**: Internal API documentation is no longer publicly accessible using a default password.
* **Pending invite permissions**: Assigning a role to a pending invitation now checks that the inviter has permission to grant that role, closing a gap that let non-admins invite admins.
