---
id: object/page/6996
type: object
title: Page 6996 "Expense Agent Setup"
summary: Page 6996 "Expense Agent Setup" in ExpenseAgent (Microsoft.ExpenseAgent). Introduced in BC29, still in BC30.
tier: official
language: en
tags:
  - page
  - expenseagent
versions:
  introduced: "29"
  last_changed: null
  deprecated: null
review:
  state: derived
  by: null
  at: null
  flags: []
generated:
  at: "2026-10-11T00:31:51.816Z"
  pipeline: 0.2.0
  prompts: {}
  input_hash: 94f98fd515a174cc257ff3d3ca588bf91436327e252062203456c858c5e45c19
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/ExpenseAgent/app/src/Setup/Pages/ExpenseAgentSetup.Page.al
    title: src/Apps/W1/ExpenseAgent/app/src/Setup/Pages/ExpenseAgentSetup.Page.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
  - kind: learn
    url: https://learn.microsoft.com/dynamics365/business-central/expense-management/expense-management-agent
    title: How the Expense Agent Processes Emails
    date: null
    commit: null
    t: null
    quote: null
  - kind: learn
    url: https://learn.microsoft.com/dynamics365/business-central/expense-management/expense-management-per-diem-mileage
    title: Set Up Per Diem and Mileage Allowances
    date: null
    commit: null
    t: null
    quote: null
  - kind: learn
    url: https://learn.microsoft.com/dynamics365/business-central/expense-management/expense-management-setup
    title: Set Up Expense Management in Business Central
    date: null
    commit: null
    t: null
    quote: null
links:
  learn:
    - https://learn.microsoft.com/dynamics365/business-central/expense-management/expense-management-agent
    - https://learn.microsoft.com/dynamics365/business-central/expense-management/expense-management-per-diem-mileage
    - https://learn.microsoft.com/dynamics365/business-central/expense-management/expense-management-setup
  objects: []
  features: []
  topics:
    - topic/business-central/business-functionality/expense-management-preview/set-up-expense-management
    - topic/business-central/business-functionality/expense-management-preview/understand-expense-agent
    - topic/business-central/copilot-and-agent-capabilities/expense-agent-preview/expense-agent-overview
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/11682
    - change/bcapps/11541
    - change/bcapps/11425
    - change/bcapps/10825
    - change/bcapps/11420
    - change/bcapps/10155
    - change/bcapps/10956
    - change/bcapps/10561
    - change/bcapps/10631
    - change/bcapps/10031
    - change/bcapps/9859
object_type: page
object_id: 6996
name: Expense Agent Setup
caption: Expense Management Setup
namespace: Microsoft.ExpenseAgent
app: ExpenseAgent
extends: null
first_version: "29"
last_version: "30"
present_in:
  - "29"
  - "30"
changed_in: []
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids:
  - docs/learn-smb-docs/business-central/expense-management/expense-management-agent.md
  - docs/learn-smb-docs/business-central/expense-management/expense-management-per-diem-mileage.md
  - docs/learn-smb-docs/business-central/expense-management/expense-management-setup.md
counts:
  fields: 0
  procedures: 0
  events: 0
  subscribers: 0
  controls: 56
  actions: 10
relations:
  out: 1
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
  calls: 2
  called_by: 1
  implements: 0
---

# Page 6996 "Expense Agent Setup"

> Page 6996 "Expense Agent Setup" in ExpenseAgent (Microsoft.ExpenseAgent). Introduced in BC29, still in BC30.

ExpenseAgent · Microsoft.ExpenseAgent · captioned "Expense Management Setup" · BC29-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/ExpenseAgent/app/src/Setup/Pages/ExpenseAgentSetup.Page.al) · facts from BC29

## Properties

| Property | Value |
|---|---|
| Caption | Expense Management Setup |
| SourceTable | Expense Agent Setup |
| PageType | Card |
| UsageCategory | Administration |
| ApplicationArea | Basic, Suite |

## Fields on this page

Layout controls in source order, grouped by the container they sit in. Shows: the table field a control is bound to (or its expression as written); ToolTip: the control's own, else the bound field's (marked).

| Group | Control | Shows | ToolTip |
|---|---|---|---|
| General | Enable Agent <small>obsolete Pending 29.0; #if not CLEAN29</small> | [Enable Agent](../table/6930.md#fields) | Specifies whether the agent is active in this company. Use the Configure Expense Agent wizard from the agent avatar to activate or deactivate the agent; this page only reflects the current state. |
|  | Mailbox Account <small>obsolete Pending 29.0; #if not CLEAN29</small> | [Email Address](../table/6930.md#fields) | Specifies the email account that the agent monitors. You need permission to the mailbox to activate the agent. |
|  | Enable Email with Receipts <small>obsolete Pending 29.0; #if not CLEAN29</small> | [Enable Email with Receipts](../table/6930.md#fields) | Specifies whether the agent reads its mailbox and processes incoming emails containing expense receipts. Receipts are only processed when a mailbox is configured. <small>from the table field</small> |
|  | Exchange Rate for Expenses | [Exchange Rate for Expenses](../table/6930.md#fields) | Specifies which exchange rate to use when converting foreign currency expenses. <small>from the table field</small> |
|  | Allow Prepayment-Cash Advance | [Allow Prepayment-Cash Advance](../table/6930.md#fields) | Specifies whether prepayments and cash advances are allowed. <small>from the table field</small> |
|  | Allow Grp. of Trans. in Report | [Allow Grp. of Trans. in Report](../table/6930.md#fields) | Specifies whether similar transactions are grouped together in expense reports. <small>from the table field</small> |
|  | Allow VAT Reclaim | [Allow VAT Reclaim](../table/6930.md#fields) | Specifies whether VAT reclaim is allowed on expenses. <small>from the table field</small> |
|  | Expense Report Grouping | [Expense Report Grouping](../table/6930.md#fields) | Specifies how expense reports are grouped when they are created automatically. <small>from the table field</small> |
|  | Exp. Report Rounding Precision <small>obsolete Pending 29.0; #if not CLEAN29</small> | [Exp. Report Rounding Precision](../table/6930.md#fields) | Specifies the rounding precision for amounts in expense reports. <small>from the table field</small> |
|  | Expense Report Rounding Type <small>obsolete Pending 29.0; #if not CLEAN29</small> | [Expense Report Rounding Type](../table/6930.md#fields) | Specifies how amounts are rounded: nearest, up, or down. <small>from the table field</small> |
|  | Create Emp. for Expense Users | [Create Emp. for Expense Users](../table/6930.md#fields) | Specifies whether Employees should be automatically created from Expense Users when no matching Employee exists. Employees and their connection with Expense Users are critical for correct processing and posting in Expense Agent, but this setting may impact your HR data. <small>from the table field</small> |
|  | Default VAT Bus. Posting Group | [Default VAT Bus. Posting Group](../table/6930.md#fields) | Specifies the default VAT Business Posting Group for expense transactions. <small>from the table field</small> |
|  | Payment Methods Applied | [Payment Methods Applied](../table/6930.md#fields) | Specifies whether the default expense payment methods (Card, Cash, Bank) have been created. <small>from the table field</small> |
|  | Posting Groups Applied | [Posting Groups Applied](../table/6930.md#fields) | Specifies whether the default expense posting groups (including the employee posting group) have been created. <small>from the table field</small> |
|  | Exp. Categories Applied | [Exp. Categories Applied](../table/6930.md#fields) | Specifies whether the default expense categories and subcategories have been created. <small>from the table field</small> |
|  | Exp. Locations Applied | [Exp. Locations Applied](../table/6930.md#fields) | Specifies whether the default expense locations have been created. <small>from the table field</small> |
| Send mail | Account <small>obsolete Pending 29.0; #if not CLEAN29</small> | [Noreply Email Address](../table/6930.md#fields) | Specifies the email account used for all outgoing Expense Agent messages: pending-approval requests sent to approvers, approved/rejected notifications sent to submitters, reimbursement notifications, and the optional open report reminders. If empty, the main mailbox account is used instead. When no ... |
| Notify users about unsubmitted reports | Enable Open Report Notif. <small>obsolete Pending 29.0; #if not CLEAN29</small> | [Enable Open Report Notif.](../table/6930.md#fields) | Specifies whether the system sends periodic notifications for open expense reports. Notifications are only sent when a mailbox is configured. <small>from the table field</small> |
|  | Notification frequency <small>obsolete Pending 29.0; #if not CLEAN29</small> | [Open Report Notif. Freq.](../table/6930.md#fields) | Specifies how often the system should send notifications for open expense reports (Daily, Weekly, etc.). <small>from the table field</small> |
|  | Notif. Day of Week <small>obsolete Pending 29.0; #if not CLEAN29</small> | [Notif. Day of Week](../table/6930.md#fields) | Specifies the day of the week for weekly open report notifications. <small>from the table field</small> |
|  | Notif. Day In A Month <small>obsolete Pending 29.0; #if not CLEAN29</small> | [Notif. Day In A Month](../table/6930.md#fields) | Specifies the day of the month for monthly open report notifications. <small>from the table field</small> |
|  | Custom Notif. Formula <small>obsolete Pending 29.0; #if not CLEAN29</small> | [Custom Notif. Formula](../table/6930.md#fields) | Specifies a custom date formula to use for open report notification scheduling. <small>from the table field</small> |
| Notify users about approval updates | Enable Approval Notif. <small>obsolete Pending 29.0; #if not CLEAN29</small> | [Enable Approval Notif.](../table/6930.md#fields) | Specifies whether the system sends email notifications when expense reports are submitted, approved, or rejected. |
| Rule Controls | Receipt No. Mandatory | [Receipt No. Mandatory](../table/6930.md#fields) | Specifies whether a receipt number is mandatory for expenses. <small>from the table field</small> |
|  | Merchant Name Mandatory | [Merchant Name Mandatory](../table/6930.md#fields) | Specifies whether a merchant name is mandatory for expenses. <small>from the table field</small> |
|  | Use Rules | [Use Rules](../table/6930.md#fields) | Specifies whether configured expense management rules are applied. <small>from the table field</small> |
|  | Evaluate Policies <small>obsolete Pending 29.0; #if not CLEAN29</small> | [Evaluate Policies](../table/6930.md#fields) | Specifies whether the agent evaluates expenses against the configured policies. Rules are evaluated by code, while policies are evaluated by AI, so enabling this consumes additional AI credits. |
|  | Submitter-run Evaluation <small>obsolete Pending 29.0; #if not CLEAN29</small> | [Submitter-run Evaluation](../table/6930.md#fields) | Specifies whether submitters can preventively run policy evaluation before submitting expense reports. This evaluation will consume additional AI credits. <small>from the table field</small> |
|  | Do Not Allow Expenses Older Than | [Do Not Allow Exp. Older Than](../table/6930.md#fields) | Specifies a date formula; expenses older than the resulting date are not allowed. <small>from the table field</small> |
|  | If Exp. Is Older Than Allowed | [If Exp. Is Older Than Allowed](../table/6930.md#fields) | Specifies how the system handles expenses older than the allowed date: warn, require justification, or block submission. <small>from the table field</small> |
|  | Check Category/Subcategory Usage | [Check Category/SubCat. Usage](../table/6930.md#fields) | Specifies whether both category and subcategory are required on each expense. <small>from the table field</small> |
|  | Display Anti-Corruption attestation | [Enable Anti-Corp. Statement](../table/6930.md#fields) | Specifies whether users must confirm an anti-corruption attestation before submitting expenses. <small>from the table field</small> |
|  | Management Rules Applied | [Management Rules Applied](../table/6930.md#fields) | Specifies whether the default management rules have been created. <small>from the table field</small> |
| Approval | Enable Approval Workflow | [Enable Approval Workflow](../table/6930.md#fields) | Specifies whether expense reports use the traditional approval workflow instead of the Expense Agent approval experience. <small>from the table field</small> |
|  | DefaultApprover | [Default Approver Name](../table/6930.md#fields) | Specifies the name of the expense user who by default is set as approver. <small>from the table field</small> |
| Projects | Enable Project Fields <small>obsolete Pending 29.0; #if not CLEAN29</small> | [Enable Project Fields](../table/6930.md#fields) | Specifies whether project and project task fields are visible in the expense web app for submitters. <small>from the table field</small> |
|  | Project Visibility <small>obsolete Pending 29.0; #if not CLEAN29</small> | [Project Visibility](../table/6930.md#fields) | Specifies which projects are visible to submitters: only projects assigned to the user, or all active projects. <small>from the table field</small> |
| Number Series | Expense User Nos. | [Expense User Nos.](../table/6930.md#fields) | Specifies the number series for creating individual Expense Users. <small>from the table field</small> |
|  | Expense Reports Nos. | [Expense Reports Nos.](../table/6930.md#fields) | Specifies the number series used to create new expense reports. <small>from the table field</small> |
|  | Posted Expense Reports Nos. | [Posted Expense Reports Nos.](../table/6930.md#fields) | Specifies the number series used for posted expense reports. <small>from the table field</small> |
|  | Expense Nos. | [Expense Nos.](../table/6930.md#fields) | Specifies the number series used to create expenses. <small>from the table field</small> |
|  | Expense Vendor Nos. | [Expense Vendor Nos.](../table/6930.md#fields) | Specifies the number series used when creating Expense Vendor records for accountant review. <small>from the table field</small> |
|  | No. Series Applied | [No. Series Applied](../table/6930.md#fields) | Specifies whether the default number series for expenses, expense users, expense reports, and posted expense reports have been created. <small>from the table field</small> |
| Allowance | Standard Rate of Mileage | [Standard Rate of Mileage](../table/6930.md#fields) | Specifies the default mileage reimbursement rate. <small>from the table field</small> |
|  | Full Per-Diem Calculation | [Full Per-Diem Calculation](../table/6930.md#fields) | Specifies the rule used to calculate full per diem, for example by calendar day or by hours. <small>from the table field</small> |
|  | Per Diem Rounding Precision <small>obsolete Pending 29.0; #if not CLEAN29</small> | [Per Diem Rounding Precision](../table/6930.md#fields) | Specifies the rounding precision for per diem amounts. <small>from the table field</small> |
|  | Minimum Hours for Per Diem | [Minimum Hours for Per Diem](../table/6930.md#fields) | Specifies the minimum number of hours required to qualify for per diem. <small>from the table field</small> |
|  | Partial Day Rules | [Partial Day Rules](../table/6930.md#fields) | Specifies how per diem for partial days is determined. <small>from the table field</small> |
|  | Min Hours for Partial Per Diem | [Min Hours for Partial Per Diem](../table/6930.md#fields) | Specifies the minimum number of hours required to qualify for a partial per diem. <small>from the table field</small> |
|  | Percentage For Partial Day | [Percentage For Partial Day](../table/6930.md#fields) | Specifies the percentage of the full per diem to apply for partial days. <small>from the table field</small> |
|  | Reduction for Breakfast % | [Reduction for Breakfast %](../table/6930.md#fields) | Specifies the percentage deducted from the per diem when breakfast is provided. <small>from the table field</small> |
|  | Reduction for Lunch % | [Reduction for Lunch %](../table/6930.md#fields) | Specifies the percentage deducted from the per diem when lunch is provided. <small>from the table field</small> |
|  | Reduction for Dinner % | [Reduction for Dinner %](../table/6930.md#fields) | Specifies the percentage deducted from the per diem when dinner is provided. <small>from the table field</small> |
|  | Default Mileage UOM | [Default Mileage UOM](../table/6930.md#fields) | Specifies the default unit of measure for mileage. <small>from the table field</small> |
|  | Only Shortest Route <small>obsolete Pending 29.0; #if not CLEAN29</small> | [Only Shortest Route](../table/6930.md#fields) | Specifies whether only the shortest route is shown for mileage expenses. When enabled, alternative routes are not displayed on the map and only the shortest route is used for distance calculation. <small>from the table field</small> |
| Content | Agent Access Control | part [Page 6995 "Expense Agent Access Ctrl"](../page/6995.md) | — |

## Actions

| Group | Action | ToolTip | Runs |
|---|---|---|---|
| Setup | Expense Categories | Opens the page to set up expense categories. | [Page 6946 "Expense Categories"](../page/6946.md) |
|  | Expense Users | Opens the page to set up expense users. | [Page 6951 "Expense Users"](../page/6951.md) |
|  | Expense Locations | Opens the page to set up expense locations. | [Page 6937 "Expense Locations"](../page/6937.md) |
|  | Expense Management Rules | Opens the page to set up expense management rules. | [Page 6900 "Expense Management Rules"](../page/6900.md) |
|  | Expense Posting Groups | Opens the page to set up expense posting groups. | [Page 6976 "Expense Posting Groups"](../page/6976.md) |
|  | Expense VAT Posting Setup | Opens the page to define reduced VAT rates for expense management. | [Page 472 "VAT Posting Setup"](../page/472.md) |
|  | Mileage Rate Setup | Opens the page to set up time-valid mileage rates that apply based on the transaction date. | [Page 7128 "Mileage Rate Setup"](../page/7128.md) |
|  | Apply default settings | Applies all default settings (number series, payment methods, posting groups, expense categories and subcategories, expense locations, and management rules) for the expense agent. Defaults that have already been applied are skipped. |  |
| Navigation | View agent consumption | View consumption details for the Expense Agent. | [Page 7079 "EA Billing Overview"](../page/7079.md) |
|  | View communication status | View scheduled task statuses and errors for incoming mailbox processing, outgoing emails, and reminders. | [Page 7076 "Expense Agent Status"](../page/7076.md) |

## Triggers

OnOpenPage

## Relations

- source table [Table 6930 "Expense Agent Setup"](../table/6930.md)

## Calls

From the extracted call graph of BC29 (graphify-al on the snapshot checkout): calls whose target is known from a declared type or an `Object::"Name"` argument. Interface dispatch and calls through events are not counted, so the list is not complete.

- [Codeunit 4317 "Agent System Permissions"](../codeunit/4317.md) (1 call: `OnOpenPage → CurrentUserHasCanManageAllAgentsPermission`)
- [Codeunit 8703 "Feature Telemetry"](../codeunit/8703.md) (1 call: `OnOpenPage → LogUptake`)

## Called by

- [Codeunit 6990 "EA Agent Card Notif. Handler"](../codeunit/6990.md) (1 call: `OpenExpenseAgentSetup → (object)`)

## Recent changes

- 2026-09-22 [#11682 [Expense Agent] Remove migration TODO and analyzer suppressions](../../changes/bcapps/11682.md) (main, BC30, refactor)
- 2026-09-17 [#11541 Clarify Expense Agent and expense management setup](../../changes/bcapps/11541.md) (main, BC30, feature)
- 2026-09-15 [#11425 Bug 650137: [29.x] Expense Locations and Per-diem rules in configuration - Backport](../../changes/bcapps/11425.md) (releases/29.x, BC29, feature)
- 2026-09-15 [#10825 [Master]-Bug 645041: Expense Agent - Rename Enable approval workflow caption and tooltip](../../changes/bcapps/10825.md) (main, BC30, fix)
- 2026-09-14 [#11420 [Master] - [Expense Management] Hide Enable Agent on Expense Agent Setup Page](../../changes/bcapps/11420.md) (main, BC30, fix)
- 2026-09-10 [#10155 Slice 641293: [Expense Agent] Expense Locations and Per-diem rules in configurationAdded more locations](../../changes/bcapps/10155.md) (main, BC30, feature)
- 2026-09-04 [#10956 [ExpenseAgent] Refactor agent setup for policies](../../changes/bcapps/10956.md) (main, BC30, feature)
- 2026-08-27 [#10561 Mileage Rate Setup](../../changes/bcapps/10561.md) (main, BC30, feature)
- 2026-08-26 [#10631 Integration/main to releases 29.x 31a860b5](../../changes/bcapps/10631.md) (releases/29.x, BC29, feature)
- 2026-08-21 [#10031 Add AI-assisted policy evaluation backend to Expense Agent](../../changes/bcapps/10031.md) (main, BC30, feature)
- 2026-08-04 [#9859 [Master] - Move Expense Agent (Preview) app into BCApps](../../changes/bcapps/9859.md) (main, BC30, feature, added)

## Across versions

- Present in: BC29-30
- Changed (declaration) in: none

## Documented on Microsoft Learn

- [How the Expense Agent Processes Emails](https://learn.microsoft.com/dynamics365/business-central/expense-management/expense-management-agent)
- [Set Up Per Diem and Mileage Allowances](https://learn.microsoft.com/dynamics365/business-central/expense-management/expense-management-per-diem-mileage)
- [Set Up Expense Management in Business Central](https://learn.microsoft.com/dynamics365/business-central/expense-management/expense-management-setup)

Source: AL metadata extracted from the code (names, ids, signatures, properties); no code bodies (D10).

## Ask your agent

Procedure bodies are not stored here (D10). The call sections above are our own, per object, from the BC29 call graph. For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: `bcatlas_resolve_node(object_type: "page", object_name: "Expense Agent Setup")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
