Table 6907 "Expense Report Line"
ExpenseAgent · Microsoft.ExpenseAgent
Across versions
- BC23-28not present
- BC29present
- BC30changed
Neighbourhood 46 connected objects and pages
ExpenseAgent · Microsoft.ExpenseAgent · BC29-30 · source at ea08af5e · facts from BC29
Learn documents this table through its pages: Page 6911 “Expense Report Lines” (1 Learn page).
Properties
| Property | Value |
|---|---|
| Caption | Expense Report Line |
| Access | Internal |
| DataClassification | CustomerContent |
| LookupPageId | Expense Report Lines |
| DrillDownPageId | Expense Report Lines |
| Permissions | TableData “Expense Policy Evaluation” = d |
Fields
Explanation: the field’s ToolTip in the code; without one, the ToolTip of a page control bound to the field (marked via the page); without that, its Caption (marked caption) when that differs from the name.
| No. | Name | Type | Explanation | Notes |
|---|---|---|---|---|
| 1 | Expense User No. | Code[20] | — | TableRelation Table 6923 “Expense User” (“Expense User”.“No.”); not editable |
| 2 | Expense No. | Code[20] | Specifies the expense report number this line belongs to. via Page 6999 “Expense Report SubPage” | TableRelation Expense.“No.”; not editable |
| 3 | Document No. | Code[20] | — | TableRelation Table 6906 “Expense Report Header” (“Expense Report Header”.“No.”) |
| 4 | Line No. | Integer | — | |
| 5 | Expense Category | Code[20] | Specifies the expense category. Category determines required details such as per diem or mileage. via Page 6911 “Expense Report Lines” | TableRelation Table 6921 “Expense Category” (“Expense Category”.Code where(Inactive = const(false))) |
| 6 | Description | Text[100] | Specifies a brief description of the expense line. via Page 6911 “Expense Report Lines” | |
| 7 | Justification | Text[100] | Specifies the reason for the expense. Helps approvers understand why the expense was incurred. via Page 6999 “Expense Report SubPage” | |
| 8 | Additional Information | Text[100] | Specifies additional information for the expense line. via Page 6999 “Expense Report SubPage” | |
| 9 | Expense Date | Date | Specifies the date when the expense was incurred. via Page 6911 “Expense Report Lines” | |
| 10 | Expense Currency Code | Code[10] | Specifies the currency code used for this expense. The currency determines how the amount is calculated and displayed. via Page 6911 “Expense Report Lines” | TableRelation Currency.Code |
| 11 | Amount | Decimal | Specifies the expense amount. Changing the amount recalculates totals. via Page 6911 “Expense Report Lines” | |
| 12 | VAT Liable | Boolean | Specifies the value of the VAT Liable field. via Page 6999 “Expense Report SubPage” | |
| 13 | Amount without VAT | Decimal | Specifies the amount excluding VAT for this line. via Page 6911 “Expense Report Lines” | not editable |
| 14 | VAT Amount | Decimal | Specifies the VAT amount for this line. Enter only when VAT is applicable. via Page 6911 “Expense Report Lines” | |
| 15 | Amount (LCY) | Decimal | Specifies the expense amount converted to local currency. via Page 6911 “Expense Report Lines” | not editable |
| 16 | Merchant Name | Text[100] | Specifies the merchant name associated with the expense report. via Page 6961 “Expense Billing Information” | |
| 17 | Reimbursement Type | Enum “Expense Reimbursement Type” | Specifies how the expense is reimbursed, for example cash or payroll. via Page 6999 “Expense Report SubPage” | enum Enum 6912 “Expense Reimbursement Type”; not editable |
| 18 | Receipt Attached | Boolean | — | not editable |
| 19 | Receipt Entry | Integer | — | not editable |
| 20 | Account Type | Enum “Expense Line Type” | Specifies the type of account used for billing this expense. via Page 6911 “Expense Report Lines” | enum Enum 6978 “Expense Line Type” |
| 21 | Account No. | Code[20] | Specifies the account number used for billing this expense. via Page 6911 “Expense Report Lines” | TableRelation Table 15 “G/L Account”, Table 156 “Resource”, Table 270 “Bank Account” (if (“Account Type” = const(” “)) “Standard Text” else if (“Account Type” = const(Resource)) Resource else if (“Account Type” = const(“Fixed Asset”)) “Fixed Asset” else if (“Account Type” = const(“Bank Account”)) “Bank Account” else if (“Account Type” = const(“G/L Account”)) “G/L Account” where(Block…) |
| 22 | Shortcut Dimension 1 Code | Code[20] | Specifies dimension 1 used for analytics and posting. via Page 6911 “Expense Report Lines” | TableRelation Table 349 “Dimension Value” (“Dimension Value”.Code where(“Global Dimension No.” = const(1), Blocked = const(false))) |
| 23 | Shortcut Dimension 2 Code | Code[20] | Specifies dimension 2 used for analytics and posting. via Page 6911 “Expense Report Lines” | TableRelation Table 349 “Dimension Value” (“Dimension Value”.Code where(“Global Dimension No.” = const(2), Blocked = const(false))) |
| 24 | Payment Method Code | Code[10] | Specifies the payment method used for this expense, for example corporate card or cash. via Page 6999 “Expense Report SubPage” | TableRelation Table 6913 “Expense Payment Method” (Expense Payment Method) |
| 25 | Refundable | Boolean | Specifies the value of the Refundable field. via Page 6999 “Expense Report SubPage” | |
| 26 | Purchase Invoice | Boolean | Specifies whether the expense is billed through a purchase invoice. via Page 6961 “Expense Billing Information” | |
| 27 | Posted Purch. Invoice No. | Code[20] | Specifies the number of the posted purchase invoice for the expense. via Page 6961 “Expense Billing Information” | TableRelation Table 122 “Purch. Inv. Header” (“Purch. Inv. Header”.“No.”) |
| 28 | Vendor No. | Code[20] | Specifies the vendor number to which the expense is billed. via Page 6961 “Expense Billing Information” | TableRelation Vendor.“No.” |
| 29 | Posted Date | Date | Specifies the date when the line was posted. via Page 6911 “Expense Report Lines” | |
| 30 | Billable | Boolean | Specifies whether the expense is billable. via Page 6961 “Expense Billing Information” | |
| 31 | Billable to Customer | Code[20] | Specifies the customer to which the expense is billable. via Page 6961 “Expense Billing Information” | TableRelation Customer.“No.” |
| 32 | Expense Location | Code[20] | Specifies where the expense occurred. Used for reporting and per diem calculations. via Page 6911 “Expense Report Lines” | TableRelation Table 6925 “Expense Location” (“Expense Location”.“No.”) |
| 33 | Starting Date and Time | DateTime | Specifies the start date and time used for per diem calculations. Available when the expense requires per diem details. via Page 6999 “Expense Report SubPage” | |
| 34 | Ending Date and Time | DateTime | Specifies the end date and time used for per diem calculations. Available when the expense requires per diem details. via Page 6999 “Expense Report SubPage” | |
| 35 | Non-Refundable Amount | Decimal | Specifies any reduction applied to the amount, for example discounts or contributions. via Page 6911 “Expense Report Lines” | |
| 36 | Starting Point | Text[50] | Specifies the starting point for mileage calculations. Available when the expense requires mileage details. via Page 6999 “Expense Report SubPage” | |
| 37 | Ending Point | Text[50] | Specifies the ending point for mileage calculations. Available when the expense requires mileage details. via Page 6999 “Expense Report SubPage” | |
| 38 | Non-Refundable Amount (LCY) | Decimal | Specifies any amount reduction in local currency. via Page 6911 “Expense Report Lines” | |
| 39 | Reimbursable Amount | Decimal | Specifies the portion of the expense that will be reimbursed to the employee. via Page 6911 “Expense Report Lines” | |
| 40 | Reimbursable Amount (LCY) | Decimal | Specifies the reimbursable amount in local currency. via Page 6911 “Expense Report Lines” | |
| 41 | VAT Amount (LCY) | Decimal | Specifies the VAT amount in local currency. via Page 6911 “Expense Report Lines” | not editable |
| 42 | Dimension Set ID | Integer | — | TableRelation Table 480 “Dimension Set Entry” (Dimension Set Entry); not editable |
| 43 | VAT Bus. Posting Group | Code[20] | Specifies the VAT business posting group used when posting VAT for this expense. via Page 6911 “Expense Report Lines” | TableRelation Table 323 “VAT Business Posting Group” (VAT Business Posting Group) |
| 44 | VAT Prod. Posting Group | Code[20] | Specifies the VAT product posting group used when posting VAT for this expense. via Page 6911 “Expense Report Lines” | TableRelation Table 324 “VAT Product Posting Group” (VAT Product Posting Group) |
| 45 | Expense Currency Factor | Decimal | — | |
| 46 | Expense Subcategory Code | Code[20] | — | TableRelation Table 6929 “Expense Subcategory” (“Expense SubCategory”.Code where(“Expense Category Code” = field(“Expense Category”), Inactive = const(false))) |
| 47 | Unit of Measure Code | Code[10] | Specifies the unit of measure for the expense amount, for example units or hours. via Page 6911 “Expense Report Lines” | TableRelation Table 204 “Unit of Measure” (Unit of Measure) |
| 48 | Expense Time | Time | — | |
| 49 | Itemized Amount | Decimal | Amount caption | FlowField: sum(“Expense Report Line Item”.“Amount” where(“Expense Report No.” = field(“Document No.”), “Expense Report Line No.” = field(“Line No.”))); not editable |
| 50 | Mileage | Decimal | Specifies the distance traveled for mileage reimbursement. Available when the expense requires mileage details. via Page 6999 “Expense Report SubPage” | |
| 67 | Round Trip | Boolean | Specifies whether the mileage expense is a round trip. When enabled, the distance is doubled for reimbursement calculation. | |
| 68 | Vehicle Type | Code[20] | Specifies the vehicle type used for this mileage expense. The mileage rate matching this vehicle type is applied, or the generic rate when no vehicle-specific rate exists. | TableRelation Table 7108 “Expense Vehicle Type” (Expense Vehicle Type) |
| 51 | Credit Card Feed No. | Integer | — | |
| 52 | Applied Rule Id | Guid | — | |
| 53 | Amount without VAT (LCY) | Decimal | Specifies the value of the Amount without VAT (LCY) field. via Page 6999 “Expense Report SubPage” | not editable |
| 54 | Expense Detail Required | Enum “Expense Detail Needed” | — | enum Enum 6905 “Expense Detail Needed” |
| 55 | Rule Violations | Boolean | Specifies if there are any rule violations for the expense line. via Page 6999 “Expense Report SubPage” | FlowField: exist(“Expense Report Rule Violation” where(“Expense Report No.” = field(“Document No.”), “Report Line No.” = field(“Line No.”))); not editable |
| 56 | Job No. | Code[20] | Specifies the value of the Project No. field. via Page 6961 “Expense Billing Information” | TableRelation Job.“No.” where(Status = filter(<> Completed)) |
| 57 | Job Task No. | Code[20] | Specifies the value of the Project Task No. field. via Page 6961 “Expense Billing Information” | TableRelation Table 1001 “Job Task” (“Job Task”.“Job Task No.” where(“Job No.” = field(“Job No.”))) |
| 58 | VAT % | Decimal | — | not editable |
| 59 | VAT Difference | Decimal | — | not editable |
| 60 | Calculated VAT Amount | Decimal | — | not editable |
| 62 | Expense Vendor No. | Code[20] | Specifies the expense vendor record created for accountant review and matching to a Business Central vendor. | TableRelation Table 6937 “Expense Vendor” (Expense Vendor); not editable |
| 65 | Refundable Amount | Decimal | Specifies the portion of the expense that will be refundable. Calculated from amount, VAT, and reductions. via Page 6999 “Expense Report SubPage” | |
| 66 | Refundable Amount (LCY) | Decimal | Specifies the portion of the expense that will be refundable in local currency. Calculated from amount, VAT, and reductions. via Page 6999 “Expense Report SubPage” | |
| 77 | VAT Calculation Type | Enum “Tax Calculation Type” | — | enum Enum 254 “Tax Calculation Type”; not editable |
| 81 | Expense Ext. Doc. No. | Code[30] | Specifies the value of the Receipt No. field. via Page 6961 “Expense Billing Information” | |
| 85 | Merchant Registration No. | Text[50] | Specifies the company registration number of the merchant. via Page 6961 “Expense Billing Information” | |
| 86 | Merchant VAT Registration No. | Text[20] | Specifies the VAT registration number of the merchant. via Page 6961 “Expense Billing Information” | |
| 90 | Created By Exp. User Id | Guid | Created By Expense User Id caption | not editable; DataClassification EndUserIdentifiableInformation |
| 91 | Modified By Exp. User Id | Guid | Modified By Expense User Id caption | not editable; DataClassification EndUserIdentifiableInformation |
| 92 | User Confirmed | Boolean | — | |
| 100 | Spend Request No. | Code[20] | Specifies the travel request number that is associated with this expense report line. The travel request must be approved and released before it can be selected. | TableRelation Table 6840 “Spend Request” (“Spend Request” where(Status = const(Approved), “Document Type” = const(“Travel Request”))) |
| 101 | Spend Request Close | Boolean | Specifies that the travel request will be closed when the expense report is posted. | |
| 102 | Policies Evaluated At | DateTime | — | not editable |
| 103 | Policy Eval Version | Integer | — | not editable; DataClassification SystemMetadata |
| 104 | Evaluated Policy Version | Integer | — | not editable; DataClassification SystemMetadata |
| 105 | Has Policy Violation | Boolean | — | FlowField: exist(“Expense Policy Evaluation” where(“Subject System Id” = field(SystemId), “Subject Type” = const(“Expense Report Line”), “Subject Version” = field(“Evaluated Policy Version”), “Compliant” = const(false))); not editable |
Keys
- PK: Document No., Line No. (clustered)
Trigger event subscribers
- OnAfterDeleteEvent: Codeunit 6989 “Expense Attachment Mgt.” DeleteAttachedDocumentsOnAfterDeleteExpenseReportLine
Procedures
CopyFromVATPostingSetup(var VATPostingSetupFrom: Record "VAT Posting Setup")(internal)ClearVATPostingValues()(internal)DeleteAssociatedRecords()SetHideValidationDialog(NewHideValidationDialog: Boolean)GetHideValidationDialog(): BooleanGetPolicyStatus(): Enum "Expense Policy Status"(internal)IsPolicyEvaluationComplete(var PolicyStatus: Enum "Expense Policy Status"; var FailedCount: Integer; var PassedCount: Integer): Boolean(internal): Returns counts only for a complete current policy set. Uses the caller’s line read isolation for policy and evaluation reads, preserving stable snapshots without strengthening ordinary reads. Completion requires confirmation at or after every result; a never-confirmed empty policy set is complete.HasCurrentPolicyViolation(): Boolean(internal)MarkPoliciesEvaluated(EvaluatedSubjectVersion: Integer)(internal)InvalidatePolicyEvaluation()(internal)ShowDimensions(): BooleanShowLineComments()ValidateShortcutDimCode(FieldNumber: Integer; var ShortcutDimCode: Code[20])CreateDimFromDefaultDim(FieldNo: Integer)UpdatePostingDescription(): Text[100]UpdatePostingDescription(ExpenseCategoryCode: Code[20]; ExpenseSubcategoryCode: Code[20]): Text[100](internal)CreateDefaultDim(DefaultDimSource: List of [Dictionary of [Integer, Code[20]]])IsDefaultDimDefinedForTable(TableValuePair: Dictionary of [Integer, Code[20]]): BooleanInitHeaderDefaults(ExpReportHeader: Record "Expense Report Header")UpdateAmounts()CheckVATDifference(Currency: Record Currency)GetReimbursementConversionDate(): DateApplyRule(ApplyAndValidateRuleOnExpense: Boolean; ValidateRuleOnly: Boolean)ApplyRule()GetReimbursementCurrencyCode(): Code[10]SetSkipRuleApplication(NewSkipRuleApplication: Boolean)TestStatusOpen()GetExpenseReportHeader()GetExpenseReportHeader(var OutExpenseReportHeader: Record "Expense Report Header"; var OutCurrency: Record Currency)SetExpenseReportHeader(NewExpenseReportHeader: Record "Expense Report Header")Initialize(NewExpenseReportHeader: Record "Expense Report Header")ShowItemization()ShowParticipants()ShowPerDiem()ShowExpenseBillingInformation(): Shows the expense billing information page and validates the expense report line against the rules.MoveToExpenseReport(TargetExpenseReportNo: Code[20])(internal)GetNextExpenseReportLineNo(ExpenseReportNo: Code[20]): Integer(internal)SetSkipSpendRequestClose(NewSkipSpendRequestClose: Boolean)(internal): Sets whether the confirmation to close the related spend request should be skipped during validation.
Plus 34 local procedures.
Triggers
OnInsert, OnModify, OnDelete
Relations
- drill-down page Page 6911 “Expense Report Lines”
- lookup page Page 6911 “Expense Report Lines”
- Job Task No.: TableRelation Table 1001 “Job Task”
- Posted Purch. Invoice No.: TableRelation Table 122 “Purch. Inv. Header”
- Account No.: TableRelation Table 15 “G/L Account” (conditional)
- Account No.: TableRelation Table 156 “Resource” (conditional)
- Unit of Measure Code: TableRelation Table 204 “Unit of Measure”
- Account No.: TableRelation Table 270 “Bank Account” (conditional)
- VAT Bus. Posting Group: TableRelation Table 323 “VAT Business Posting Group”
- VAT Prod. Posting Group: TableRelation Table 324 “VAT Product Posting Group”
- Shortcut Dimension 1 Code: TableRelation Table 349 “Dimension Value”
- Shortcut Dimension 2 Code: TableRelation Table 349 “Dimension Value”
- Dimension Set ID: TableRelation Table 480 “Dimension Set Entry”
- Account No.: TableRelation Table 5600 “Fixed Asset” (conditional)
- Spend Request No.: TableRelation Table 6840 “Spend Request”
- Document No.: TableRelation Table 6906 “Expense Report Header”
- Rule Violations: CalcFormula Table 6910 “Expense Report Rule Violation”
- Itemized Amount: CalcFormula Table 6911 “Expense Report Line Item”
- Payment Method Code: TableRelation Table 6913 “Expense Payment Method”
- Expense Category: TableRelation Table 6921 “Expense Category”
- Expense User No.: TableRelation Table 6923 “Expense User”
- Expense Location: TableRelation Table 6925 “Expense Location”
- Expense Subcategory Code: TableRelation Table 6929 “Expense Subcategory”
- Expense Vendor No.: TableRelation Table 6937 “Expense Vendor”
- Account No.: TableRelation Table 7 “Standard Text” (conditional)
- Has Policy Violation: CalcFormula Table 7096 “Expense Policy Evaluation”
- Vehicle Type: TableRelation Table 7108 “Expense Vehicle Type”
Referenced by
11 fields in 4 objects relate to this table (TableRelation or CalcFormula).
- Table 6906 “Expense Report Header”: Amount (LCY), Amount without VAT (LCY), Non-Refundable Amount (LCY), Refundable Amount, Refundable Amount (LCY), Reimbursable Amount, Reimbursable Amount (LCY), VAT Amount (LCY)
- Table 6908 “Expense Report Line Particip.”: Expense Report Line No.
- Table 6909 “Expense Report Line Per Diem”: Expense Report Line No.
- Table 6911 “Expense Report Line Item”: Expense Report Line No.
Pages and codeunits on this table
- Page 6911 “Expense Report Lines” (source table)
- Page 6929 “Expense Report Lines API” (source table)
- Page 6961 “Expense Billing Information” (source table)
- Page 6999 “Expense Report SubPage” (source table)
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 408 “DimensionManagement” (7 calls:
CreateDefaultDim → GetRecDefaultDimID,CreateDefaultDim → UpdateGlobalDimFromDimSetID,CreateDimFromDefaultDim → IsDefaultDimDefinedForTable, …) - Codeunit 6910 “Expense Report” (5 calls:
MoveToExpenseReport → CopyReportLineAttachments,MoveToExpenseReport → CopyReportLineComments,MoveToExpenseReport → CopyReportLineItemizations, …) - Codeunit 7107 “Exp. Policies To Eval Builder” (3 calls:
GetPolicyStatus → GetEvaluationState,IsPolicyEvaluationComplete → GetEvaluationState,MarkPoliciesEvaluated → HasOutstandingPolicies) - Codeunit 1281 “Update Currency Exchange Rates” (2 calls:
UpdateCurrencyFactor → ExchangeRatesForCurrencyExist,UpdateCurrencyFactor → ShowMissingExchangeRatesNotification) - Codeunit 6902 “Expense Rule Validation” (2 calls:
ApplyRule → ValidateExpenseReportLineAgainstRule,ShowExpenseBillingInformation → ValidateExpenseReportLineAgainstRule) - Codeunit 6993 “Expense Agent API Validation” (2 calls:
SetExpenseUserOnCreate → IsCurrentUserExpenseAgent,UpdateExpenseUserOnModify → IsCurrentUserExpenseAgent) - Codeunit 27 “Confirm Management” (1 call:
ConfirmAndDeleteAssociatedRecords → GetResponseOrDefault) - Codeunit 6926 “Expense Activity Log Mgt.” (1 call:
MarkPoliciesEvaluated → LogPolicyEvaluationIfReady) - Codeunit 6987 “Expense Report-Post” (1 call:
UpdateVATAmount → UpdateVATAmount) - Page 6912 “Expense Report Line Particips” (1 call:
ShowParticipants → (object)) - Page 6931 “Expense Report Line Items” (1 call:
ShowItemization → (object)) - Page 6934 “Expense Report Line Per Diems” (1 call:
ShowPerDiem → (object))
Recent changes
- 2026-10-02 #12074 Expense Agent: travel request expense location, per-traveler reports, activity log and submitter comment (main, BC30, feature)
- 2026-10-01 #11628 Expense Agent: capture submission policy evaluation history (main, BC30, feature)
- 2026-09-09 #11007 Add Travel Request API lifecycle to Expense Agent (main, BC30, feature)
- 2026-08-31 #10312 Update expense VAT specification source (main, BC30, feature)
- 2026-08-27 #10561 Mileage Rate Setup (main, BC30, feature)
- 2026-08-26 #10631 Integration/main to releases 29.x 31a860b5 (releases/29.x, BC29, feature)
- 2026-08-24 #10017 [Master] - Bug 644751 Moving an expense report line to another report wrongly reports a duplicate (main, BC30, fix)
- 2026-08-21 #10031 Add AI-assisted policy evaluation backend to Expense Agent (main, BC30, feature)
- 2026-08-10 #9391 [Master] - Slice 616928: [Expense Management] [App part] Expense Managements Travel Requisitions 💸 (main, BC30, feature)
- 2026-08-04 #9859 [Master] - Move Expense Agent (Preview) app into BCApps (main, BC30, feature, added)
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: "table", object_name: "Expense Report Line"), then bcatlas_get_procedure_body or bcatlas_get_neighbors on the returned id.