---
id: object/table/6840
type: object
title: Table 6840 "Spend Request"
summary: Table 6840 "Spend Request" in Base Application (Microsoft.Finance.SpendRequest). 22 fields, 18 public procedures. Introduced in BC29, still in BC30.
tier: official
language: en
tags:
  - table
  - base application
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: 5b46107f07fac8825a5a7c8f7bff7c86575a603ab26b6eb647ca70804fb8cbc5
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Finance/SpendRequest/SpendRequest.Table.al
    title: src/Layers/W1/BaseApp/Finance/SpendRequest/SpendRequest.Table.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn:
    - https://learn.microsoft.com/dynamics365/business-central/expense-management/expense-management-travel-requisitions
  objects: []
  features: []
  topics:
    - topic/business-central/business-functionality/expense-management-preview/work-with-expenses-in-business-central
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/11595
    - change/bcapps/11593
    - change/bcapps/11333
    - change/bcapps/11150
    - change/bcapps/11153
    - change/bcapps/10404
    - change/bcapps/10049
    - change/bcapps/9391
    - change/bcapps/8959
object_type: table
object_id: 6840
name: Spend Request
namespace: Microsoft.Finance.SpendRequest
app: Base Application
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: 22
  procedures: 20
  events: 0
  subscribers: 0
relations:
  out: 8
  referenced_by: 16
  pages: 6
  extended_by: 1
  event_subscribers: 0
  calls: 3
  called_by: 0
  implements: 0
---

# Table 6840 "Spend Request"

> Table 6840 "Spend Request" in Base Application (Microsoft.Finance.SpendRequest). 22 fields, 18 public procedures. Introduced in BC29, still in BC30.

Base Application · Microsoft.Finance.SpendRequest · BC29-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Finance/SpendRequest/SpendRequest.Table.al) · facts from BC29

Learn documents this table through its pages: [Page 7129 "Travel Request Card"](../page/7129.md) (1 Learn page), [Page 7136 "Travel Request List"](../page/7136.md) (1).

## Properties

| Property | Value |
|---|---|
| Caption | Spend Request |
| DataClassification | CustomerContent |
| Permissions | tabledata "Spend Request" = m, tabledata "Spend Request Detail" = rimd, tabledata "Spend Request To G/L Link" = rimd |

## 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 | No. | Code[20] | Specifies the unique identifier of the spend request. |  |
| 2 | Document Type | Enum "Spend Request Document Type" | Specifies the document type of the spend request. | enum [Enum 6840 "Spend Request Document Type"](../enum/6840.md) |
| 3 | Requested By | Code[20] | Specifies the employee who requested the spend request. | TableRelation [Table 5200 "Employee"](../table/5200.md) |
| 6 | Status | Enum "Spend Request Status" | Specifies the approval status of the spend request. | enum [Enum 6841 "Spend Request Status"](../enum/6841.md); not editable |
| 7 | G/L Account No. | Code[20] | The G/L Account that the expenses will primarily be posted to. | TableRelation [Table 15 "G/L Account"](../table/15.md) (G/L Account) |
| 8 | Purpose | Text[1000] | Specifies the purpose of the spend request. |  |
| 9 | Currency Code | Code[10] | Specifies the currency used for estimation. The currency amount will automatically be converted into Total Expected Amount (LCY) | TableRelation [Table 4 "Currency"](../table/4.md) |
| 10 | Total Expected Amount | Decimal | Specifies the total expected amount of the spend request in the currency specified. |  |
| 11 | Currency Exchange Rate | Decimal | Specifies the most recent exchange rate for the specified currency (1 = pari). | not editable |
| 12 | Total Expected Amount (LCY) | Decimal | Specifies the total expected amount of the spend request. | not editable |
| 13 | Expected Start Date | Date | Specifies the expected start date of the spend request. |  |
| 14 | Expected End Date | Date | Specifies the expected end date of the spend request. |  |
| 15 | Approved/Rejected by User ID | Guid | Specifies the user ID who approved or rejected the spend request. | TableRelation User."User Security ID"; not editable; DataClassification EndUserIdentifiableInformation |
| 16 | Approved/Rejected by User Name | Code[50] | Specifies the user name who approved or rejected the spend request. | not editable; DataClassification EndUserIdentifiableInformation |
| 17 | Approved/Rejected At | DateTime | Specifies the time when the spend request was approved or rejected. | not editable |
| 18 | Closed At | DateTime | Specifies the time when the spend request was closed. | not editable |
| 19 | Closed By Document No. | Code[20] | Specifies the document no. of the transaction that closed the spend request. | not editable |
| 20 | Total Spent Amount (LCY) | Decimal | Specifies the total spent amount of the spend request. | FlowField: sum("Spend Request To G/L Link".Amount where("Spend Request No." = field("No."))); not editable |
| 21 | Total Line Amount (LCY) | Decimal | Specifies the total amount in local currency for all the detail lines. | FlowField: sum("Spend Request Detail"."Expected Amount (LCY)" where("Spend Request No." = field("No."))); not editable |
| 29 | Shortcut Dimension 1 Code | Code[20] | Specifies the code for Shortcut Dimension 1, which is one of two global dimension codes that you set up in the General Ledger Setup page. | TableRelation [Table 349 "Dimension Value"](../table/349.md) ("Dimension Value".Code where("Global Dimension No." = const(1), Blocked = const(false))); not editable |
| 30 | Shortcut Dimension 2 Code | Code[20] | Specifies the code for Shortcut Dimension 2, which is one of two global dimension codes that you set up in the General Ledger Setup page. | TableRelation [Table 349 "Dimension Value"](../table/349.md) ("Dimension Value".Code where("Global Dimension No." = const(2), Blocked = const(false))); not editable |
| 480 | Dimension Set ID | Integer | — | TableRelation [Table 480 "Dimension Set Entry"](../table/480.md) (Dimension Set Entry); not editable |

## Keys

- Key1: No. (clustered)
- Key2: Status
- Key3: Requested By

## Procedures

- `GetRemainingAmountLCY(): Decimal`: Returns the difference between estimated amount and actually spent amount
- `GetDocumentTypeDescription(): Text`
- `AssistEditNo(): Boolean`: Allows the user to select a number from another no. series.
- `TestStatusOpen()`: Ensures the spend request is still in the Open status, which is required before any field can be modified.
- `TestStatus(ExpectedStatus: Enum "Spend Request Status")`: Verifies the request has the expected status, using the document type in the error message.
- `ShowDocDim()`: Opens a page for editing dimensions for the sales header. If dimensions are changed, they're updated on the sales lines as well.
- `Approve()` (internal): Sets status to Approved and updates when and who approved.
- `Reject()` (internal): Sets status to Rejected and updates when and who rejected.
- `ValidateShortcutDimCode(FieldNumber: Integer; var ShortcutDimCode: Code[20])`: Verifies whether the provided shortcut dimension code and value are valid. If valid, assigns it to the sales document.
- `CreateDimFromDefaultDim(FieldNo: Integer)`: Initializes the dimensions for the document from default dimensions for the related entry specified in the field.
- `CreateDim(DefaultDimSource: List of [Dictionary of [Integer, Code[20]]])`: Creates and assigns dimensions for the sales header based on the provided default dimension sources.
- `AddToTotalExpectedAmount(DeltaLCY: Decimal)` (internal): Applies an incremental change to the Total Expected Amount and refreshes the LCY total using the document currency factor. Called by detail tables (generic or layer-specific) when their amounts change.
- `ChangeCurrency(xCurrencyCode: Code[10])` (internal)
- `UpdateCurrencyExchangeRate()` (internal)
- `ValidateSpendRequest(SpendRequestNo: Code[20]; var SpendRequestclose: Boolean; NewAmountLCY: Decimal)`: Validates that the spendrequest is approved, asks if should be closed and checks if there's room for the new amount
- `ValidateSpendRequest(SpendRequestNo: Code[20]; var SpendRequestclose: Boolean)`: Validates that the spendrequest is approved and asks if should be closed
- `SetSkipSpendRequestClose(NewSkipSpendRequestClose: Boolean)`: Sets whether the confirmation to close the spend request should be skipped during validation. When set to true, ValidateSpendRequest does not prompt to close the spend request.
- `CheckSpendRequestAmount(SpendRequestNo: Code[20]; NewAmountLCY: Decimal)`: Checks if there's room for the new amount (absolute value)

Plus 2 local procedures.

## Triggers

OnInsert, OnDelete

## Relations

- G/L Account No.: TableRelation [Table 15 "G/L Account"](../table/15.md)
- Shortcut Dimension 1 Code: TableRelation [Table 349 "Dimension Value"](../table/349.md)
- Shortcut Dimension 2 Code: TableRelation [Table 349 "Dimension Value"](../table/349.md)
- Currency Code: TableRelation [Table 4 "Currency"](../table/4.md)
- Dimension Set ID: TableRelation [Table 480 "Dimension Set Entry"](../table/480.md)
- Requested By: TableRelation [Table 5200 "Employee"](../table/5200.md)
- Total Line Amount (LCY): CalcFormula [Table 6841 "Spend Request Detail"](../table/6841.md)
- Total Spent Amount (LCY): CalcFormula [Table 6845 "Spend Request To G/L Link"](../table/6845.md)

## Referenced by

16 fields in 16 objects relate to this table (TableRelation or CalcFormula).

- [Table 122 "Purch. Inv. Header"](../table/122.md): Spend Request No.
- [Table 123 "Purch. Inv. Line"](../table/123.md): Spend Request No.
- [Table 124 "Purch. Cr. Memo Hdr."](../table/124.md): Spend Request No.
- [Table 181 "Posted Gen. Journal Line"](../table/181.md): Spend Request No.
- [Table 38 "Purchase Header"](../table/38.md): Spend Request No.
- [Table 39 "Purchase Line"](../table/39.md): Spend Request No.
- [Table 5109 "Purchase Header Archive"](../table/5109.md): Spend Request No.
- [Table 5110 "Purchase Line Archive"](../table/5110.md): Spend Request No.
- [Table 6841 "Spend Request Detail"](../table/6841.md): Spend Request No.
- [Table 6845 "Spend Request To G/L Link"](../table/6845.md): Spend Request No.
- [Table 6906 "Expense Report Header"](../table/6906.md): Spend Request No.
- [Table 6907 "Expense Report Line"](../table/6907.md): Spend Request No.
- [Table 6915 "Posted Expense Report Header"](../table/6915.md): Spend Request No.
- [Table 6916 "Posted Expense Report Line"](../table/6916.md): Spend Request No.
- [Table 6938 "Traveler"](../table/6938.md): Spend Request No.
- [Table 81 "Gen. Journal Line"](../table/81.md): Spend Request No.

## Pages and codeunits on this table

- [Page 6840 "Spend Request List"](../page/6840.md) (source table)
- [Page 6841 "Spend Request Card"](../page/6841.md) (source table)
- [Page 7099 "Spend Requests API"](../page/7099.md) (source table)
- [Page 7129 "Travel Request Card"](../page/7129.md) (source table)
- [Page 7134 "Travel Requests API"](../page/7134.md) (source table)
- [Page 7136 "Travel Request List"](../page/7136.md) (source table)
- [Codeunit 6840 "Release Spend Request"](../codeunit/6840.md) (codeunit runs on it)

## Extended by

- [Table extension 6908 "Expense Spend Request"](../tableextension/6908.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 408 "DimensionManagement"](../codeunit/408.md) (4 calls: `CreateDim → GetRecDefaultDimID`, `InitDefaultDimensionSources → AddDimSource`, `ShowDocDim → EditDimensionSet`, …)
- [Page 456 "No. Series"](../page/456.md) (2 calls: `AssistEditNo → (object)`, `OnInsert → (object)`)
- [Codeunit 1511 "Notification Lifecycle Mgt."](../codeunit/1511.md) (1 call: `CheckSpendRequestAmount → SendNotification`)

## Recent changes

- 2026-09-23 [#11595 [Master] Bug 650348: [Expense Agent] Closed travel requests are editable and are missing approver info.](../../changes/bcapps/11595.md) (main, BC30, fix)
- 2026-09-23 [#11593 [29.x] - Bug 650481[Expense Agent] Closed travel requests are editable and are missing approver info.](../../changes/bcapps/11593.md) (releases/29.x, BC29, fix)
- 2026-09-17 [#11333 Align travel request APIs with employee travelers and expense report lifecycle](../../changes/bcapps/11333.md) (main, BC30, feature)
- 2026-09-09 [#11150 Deliverable 638799: Requisitions in Base App: Missed dataclassification on user field](../../changes/bcapps/11150.md) (main, BC30, fix)
- 2026-09-08 [#11153 Bug 649312: [29.x] Backport expense request report layout and dataclassification on userid field](../../changes/bcapps/11153.md) (releases/29.x, BC29, fix)
- 2026-09-03 [#10404 Deliverable 638799: Requisitions in Base App - add layout to report + minor fixes](../../changes/bcapps/10404.md) (main, BC30, feature)
- 2026-08-12 [#10049 Removed the ReplicateData=false property](../../changes/bcapps/10049.md) (main, BC30, fix)
- 2026-08-10 [#9391 [Master] - Slice 616928: [Expense Management] [App part] Expense Managements Travel Requisitions 💸](../../changes/bcapps/9391.md) (main, BC30, feature)
- 2026-07-31 [#8959 Deliverable 638799: Spend Requests in Base App](../../changes/bcapps/8959.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: "table", object_name: "Spend Request")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
