---
id: object/page/6927
type: object
title: Page 6927 "Expenses API"
summary: Page 6927 "Expenses API" in ExpenseAgent (Microsoft.ExpenseAgent). 4 public procedures. 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: c1a198154b7aa86243b8488b000583707f8ece7954cfda12f68cd6844910feae
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/ExpenseAgent/app/src/APIs/ExpensesAPI.Page.al
    title: src/Apps/W1/ExpenseAgent/app/src/APIs/ExpensesAPI.Page.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/11770
    - change/bcapps/10561
    - change/bcapps/10130
    - change/bcapps/9859
object_type: page
object_id: 6927
name: Expenses API
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: []
counts:
  fields: 0
  procedures: 5
  events: 0
  subscribers: 0
  controls: 67
  actions: 0
relations:
  out: 1
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
  calls: 4
  called_by: 0
  implements: 0
---

# Page 6927 "Expenses API"

> Page 6927 "Expenses API" in ExpenseAgent (Microsoft.ExpenseAgent). 4 public procedures. Introduced in BC29, still in BC30.

ExpenseAgent · Microsoft.ExpenseAgent · BC29-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/ExpenseAgent/app/src/APIs/ExpensesAPI.Page.al) · facts from BC29

## Properties

| Property | Value |
|---|---|
| SourceTable | Expense |
| PageType | API |

## 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 | Id | `Rec.SystemId` | — |
|  | No. | [No.](../table/6900.md#fields) | Specifies the expense document number. Leave blank to assign a number from the Expense Nos. number series. <small>from the table field</small> |
|  | Expense User Number | [Expense User No.](../table/6900.md#fields) | — |
|  | Expense User System Id | `ExpenseUserSystemId` | — |
|  | Expense Report No. | [Expense Report No.](../table/6900.md#fields) | — |
|  | Posted Expense Report No. | [Posted Expense Report No.](../table/6900.md#fields) | — |
|  | Expense Category | [Expense Category](../table/6900.md#fields) | — |
|  | Expense Subcategory | [Expense Subcategory](../table/6900.md#fields) | — |
|  | Status | [Status](../table/6900.md#fields) | — |
|  | Description | [Description](../table/6900.md#fields) | — |
|  | Justification | [Justification](../table/6900.md#fields) | — |
|  | Expense Date | [Expense Date](../table/6900.md#fields) | — |
|  | Expense Time | [Expense Time](../table/6900.md#fields) | — |
|  | Expense External Document No. | [Expense Ext. Doc. No.](../table/6900.md#fields) | — |
|  | Currency Code | `CurrencyCodeDisplay` | — |
|  | Amount | [Amount](../table/6900.md#fields) | — |
|  | Amount (LCY) | [Amount (LCY)](../table/6900.md#fields) | — |
|  | Currency (LCY) | `CurrencyLCYDisplay` | — |
|  | Merchant Name | [Merchant Name](../table/6900.md#fields) | — |
|  | Merchant Registration Number | [Merchant Registration No.](../table/6900.md#fields) | — |
|  | Merchant VAT Registration Number | [Merchant VAT Registration No.](../table/6900.md#fields) | — |
|  | Receipt Attached | [Receipt Attached](../table/6900.md#fields) | — |
|  | Receipt Entry | [Receipt Entry](../table/6900.md#fields) | — |
|  | Shortcut Dimension 1 Code | [Shortcut Dimension 1 Code](../table/6900.md#fields) | — |
|  | Shortcut Dimension 2 Code | [Shortcut Dimension 2 Code](../table/6900.md#fields) | — |
|  | Payment Method Code | [Payment Method Code](../table/6900.md#fields) | — |
|  | Refundable | [Refundable](../table/6900.md#fields) | — |
|  | Billable | [Billable](../table/6900.md#fields) | — |
|  | Billable to Customer | [Billable to Customer](../table/6900.md#fields) | — |
|  | Expense Location | [Expense Location](../table/6900.md#fields) | — |
|  | Starting Date and Time | [Starting Date and Time](../table/6900.md#fields) | — |
|  | Ending Date and Time | [Ending Date and Time](../table/6900.md#fields) | — |
|  | Non-Refundable Amount | [Non-Refundable Amount](../table/6900.md#fields) | — |
|  | Mileage | [Mileage](../table/6900.md#fields) | — |
|  | Unit of Measure Code | [Unit of Measure Code](../table/6900.md#fields) | — |
|  | Starting Point | [Starting Point](../table/6900.md#fields) | — |
|  | Ending Point | [Ending Point](../table/6900.md#fields) | — |
|  | Round Trip | [Round Trip](../table/6900.md#fields) | Specifies whether the mileage expense is a round trip. |
|  | Vehicle Type | [Vehicle Type](../table/6900.md#fields) | Specifies the vehicle type used for this mileage expense. |
|  | Total Mileage | `TotalMileage` | Specifies the total mileage for reimbursement. |
|  | Reimbursable Amount | [Reimbursable Amount](../table/6900.md#fields) | — |
|  | Reimbursable Amount (LCY) | [Reimbursable Amount (LCY)](../table/6900.md#fields) | — |
|  | Credit Card Feed No. | [Credit Card Feed No.](../table/6900.md#fields) | — |
|  | Extraction Confidence | [Extraction Confidence](../table/6900.md#fields) | — |
|  | VAT Bus. Posting Group | [VAT Bus. Posting Group](../table/6900.md#fields) | — |
|  | VAT Prod. Posting Group | [VAT Prod. Posting Group](../table/6900.md#fields) | — |
|  | Expense Detail Required | [Expense Detail Required](../table/6900.md#fields) | — |
|  | Applied Rule Id | [Applied Rule Id](../table/6900.md#fields) | — |
|  | Reimbursement Type | [Reimbursement Type](../table/6900.md#fields) | — |
|  | Rule Violations | [Rule Violations](../table/6900.md#fields) | — |
|  | Created Date Time | [Created Date-Time](../table/6900.md#fields) | — |
|  | System Created At | `Rec.SystemCreatedAt` | — |
|  | System Modified At | `Rec.SystemModifiedAt` | — |
|  | System Created By | `Rec.SystemCreatedBy` | — |
|  | System Modified By | `Rec.SystemModifiedBy` | — |
|  | Created By Expense User Id | [Created By Exp. User Id](../table/6900.md#fields) | — |
|  | Modified By Expense User Id | [Modified By Exp. User Id](../table/6900.md#fields) | — |
|  | Project No. | [Job No.](../table/6900.md#fields) | — |
|  | Project Task No. | [Job Task No.](../table/6900.md#fields) | — |
|  | Project Description | `JobDescription` | — |
|  | Project Task Description | `JobTaskDescription` | — |
|  | attachments | part [Page 6950 "Expense Attachments API"](../page/6950.md) | — |
|  | Expense Itemizations | part [Page 6935 "Expense Itemizations API"](../page/6935.md) | — |
|  | Expense Participants | part [Page 6936 "Expense Participants API"](../page/6936.md) | — |
|  | Expense Per Diem | part [Page 6954 "Expense Per Diem API"](../page/6954.md) | — |
|  | Expense VAT Specifications | part [Page 7085 "Expense VAT Spec. API"](../page/7085.md) | — |
|  | Expense Rule Violations | part [Page 6963 "Expense Rule Violations API"](../page/6963.md) | — |

## Procedures

- `ReleaseExpense(var ActionContext: WebServiceActionContext)`
- `ReopenExpense(var ActionContext: WebServiceActionContext)`
- `ValidateExpenseRule(var ActionContext: WebServiceActionContext)`
- `ApplyExpenseRule(var ActionContext: WebServiceActionContext)`

Plus 1 local procedures.

## Triggers

OnInit, OnOpenPage, OnAfterGetRecord, OnNewRecord, OnInsertRecord, OnModifyRecord

## Relations

- source table [Table 6900 "Expense"](../table/6900.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 6988 "Expense API Currency Helper"](../codeunit/6988.md) (4 calls: `OnAfterGetRecord → GetCurrencyCodeForAPI`, `OnInit → GetCurrencyCodeForAPI`, `OnInsertRecord → GetCurrencyCodeFromAPI`, …)
- [Codeunit 6993 "Expense Agent API Validation"](../codeunit/6993.md) (2 calls: `OnInit → VerifyAgentAccess`, `OnInsertRecord → IsCurrentUserExpenseAgent`)
- [Codeunit 6912 "Expense Auto Population"](../codeunit/6912.md) (1 call: `OnAfterGetRecord → GetEffectiveDistance`)
- [Codeunit 6968 "Expense Audit Subscribers"](../codeunit/6968.md) (1 call: `OnInsertRecord → TelemetryCategory`)

## Recent changes

- 2026-09-28 [#11770 [Master] - Bug 650783: [Expense Agent][Demo Data] Posted demo expenses remain Submitted with a dangling Expense Report No.](../../changes/bcapps/11770.md) (main, BC30, fix)
- 2026-08-27 [#10561 Mileage Rate Setup](../../changes/bcapps/10561.md) (main, BC30, feature)
- 2026-08-11 [#10130 [ExpenseAgent] Expose VatSpecifications on Expense API Page](../../changes/bcapps/10130.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

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: "Expenses API")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
