# Expense Lines _(Realtime-enabled)_

`GET` `POST` `PATCH` `DELETE` _(Table: EONE Transaction Line)_

```
eOne/core/v1.0/expenseLines
```

The detail lines of an [expense](https://eonesolutions.github.io/eone-bc-integration/core-expenses.md) document. Each line is one amount charged to an expense G/L account (`glAccountNumber`), with its own [dimensions](https://eonesolutions.github.io/eone-bc-integration/dimensions.md). A **nested collection** addressed under a parent: `expenses({id})/expenseLines`. Bank/G/L entries carry their own [bankGLEntryLines](https://eonesolutions.github.io/eone-bc-integration/core-bankGLEntryLines.md) collection; they used to reuse this one.

> **Note:** The parent supplies the document key via the sub-page link and `lineNumber` is stamped for you. `description` falls back to the header description when left blank. There are no resolver fields. The account is given directly as `glAccountNumber`.

## What the line captures

`expenseDate`, `merchantName` and `receiptNo` record what was actually bought. None of them affects posting. They are carried so an approver can review the report inside Business Central without going back to your expense system. The detail also survives in history after the staging document is cleared. See [Processed Documents](https://eonesolutions.github.io/eone-bc-integration/core-processedDocuments.md).

`expenseDate` is when the money was spent, which is why it sits on the line and not the header. A report submitted at month end routinely mixes expenses from several weeks.

## Line grain: one line per charge

Send one line per amount you want charged to a G/L account, and set the line `integrationId` to match that grain:

- **`<entryId>`.** The expense entry becomes a single line.
- **`<entryId>-<itemizationId>`.** One itemized entry is flattened into several lines, for example a hotel bill split into room, meals and parking.

Keeping the itemization id in the key means a re-sent report maps line for line. It also means a line in history can still be traced to the charge it came from.

## Expense Lines fields

_API column → BC field._

**Legend**

- _(req)_ required on create
- _(res)_ resolver
- _(cur)_ currency-translated
- _(ro)_ read-only
- _(ext)_ added to this endpoint by another extension (BC field name shown; its API column name is not known here)

| API | BC field | Notes |
| --- | --- | --- |
| `id` | SystemId | BC record GUID. _(ro)_ |
| `bcCompanyId` | bcCompanyId | The company this row belongs to - the same GUID that appears in the request URL. Present on every endpoint so a store pooling several companies can keep them apart without relying on which URL it called. _(ro)_ |
| `bcCompanyName` | bcCompanyName | The name of the company this row belongs to. _(ro)_ |
| `lineNumber` | Line No. | Stamped automatically on insert. _(ro)_ |
| `expenseId` | Transaction Id | GUID of the parent expense document. _(ro)_ |
| `expenseIntegrationId` | EONE Txn Integration Id | The parent expense's Integration Id (your external key), for mapping back to the header without a lookup. Filterable. _(ro)_ |
| `accountType` | Account Type | The kind of account this line posts to: G/L Account (the default), Bank Account, Customer, Vendor, Employee or Fixed Asset. |
| `accountNumber` | Account No. | The account this line debits - an expense G/L account unless accountType says otherwise. |
| `amount` | Amount | The expense amount (debit). |
| `taxAmount` | Tax Amount | Tax on this line, as your source system calculated it. Sent as a positive magnitude; Business Central posts it as its own journal line on the same side as this one and never recalculates it. Whether it sits on top of amount or inside it is the header's pricesIncludeTax. Leave it out for a line that carries no tax - a donation, a fee, an intra-group transfer. See Journal Wrappers. |
| `taxAccountNumber` | Tax Account No. | G/L account the tax on this line posts to. Optional - falls back to the Default Tax Account on this endpoint's setup row. Set it per line when one document carries tax for several jurisdictions that file to different accounts. |
| `description` | Description | Line description; falls back to the header description if blank. |
| `comment` | Comment | Free-text note (e.g. merchant/purpose); carried onto the journal line description. |
| `expenseDate` | Expense Date | When the money was actually spent. A report submitted at month end usually mixes dates, so this is per line and is not the header posting date. |
| `merchantName` | Merchant Name | Who was paid - the airline, hotel or restaurant. Free text; an expense merchant is rarely a vendor record. |
| `receiptNo` | Receipt No. | The receipt or expense-entry reference in your expense system, so the line can be traced back to the receipt that supports it. |
| `shortcutDimension1Code` | Shortcut Dimension 1 Code | Dimension for this expense line. See Dimensions. |
| `shortcutDimension2Code` | Shortcut Dimension 2 Code | Dimension for this expense line. See Dimensions. |
| `shortcutDimension3Code` | Shortcut Dimension 3 Code | Dimension for this expense line. See Dimensions. |
| `shortcutDimension4Code` | Shortcut Dimension 4 Code | Dimension for this expense line. See Dimensions. |
| `shortcutDimension5Code` | Shortcut Dimension 5 Code | Dimension for this expense line. See Dimensions. |
| `shortcutDimension6Code` | Shortcut Dimension 6 Code | Dimension for this expense line. See Dimensions. |
| `shortcutDimension7Code` | Shortcut Dimension 7 Code | Dimension for this expense line. See Dimensions. |
| `shortcutDimension8Code` | Shortcut Dimension 8 Code | Dimension for this expense line. See Dimensions. |
| `integrationId` | EONE Integration Id | Your external key for the line: the expense entry id, or entryId-itemizationId when you flatten one itemized entry into several lines. |
| `lastModifiedDateTime` | SystemModifiedAt | _(ro)_ |

## Related pages

Nested under [Expenses](https://eonesolutions.github.io/eone-bc-integration/core-expenses.md).
