# Item Ledger Entries

`GET` _(Table: Item Ledger Entry)_

```
eOne/core/v1.0/itemLedgerEntries
```

"Read-only item ledger. One row per inventory movement, with quantity, location and tracking, which is the perpetual stock transaction history behind every on-hand figure."

## Quantity lives here, cost does not

Every receipt, shipment, adjustment, transfer and consumption is a row. `quantity` is in the item base unit and is negative for outbound movements.

Cost is on [`valueEntries`](https://eonesolutions.github.io/eone-bc-integration/core-valueEntries.md), joined by `entryNumber`. That split is not an accident: one movement can be costed several times, at expected cost when goods arrive, at actual cost when the invoice does, then again by revaluation. There is no single cost column that could sit on this row honestly.

## Open and remaining quantity

`remainingQuantity` is non-zero only while an inbound entry still has quantity left to apply against. It is how Business Central tracks which receipt an issue drew from, and it is not a stock figure. On-hand per item and location is the sum of `quantity`.

## invoicedQuantity is the costing signal

Cost is only final once `invoicedQuantity` equals `quantity`. A movement received but not yet invoiced carries expected cost, which later changes. Margin reported over not-yet-invoiced shipments moves after the fact.

## Volume

Among the largest tables in Business Central, reaching tens of millions of rows at a customer with real history. Bound the first load:

```
GET itemLedgerEntries?$filter=postingDate ge 2025-01-01&$orderby=entryNumber
```

Then run incrementally on `lastModifiedDateTime`.

## Item Ledger Entries 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 | The Business Central record id. Unique on its own, and the key this feed is written against. _(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)_ |
| `entryNumber` | Entry No. | Business Central's own entry number. The key valueEntries joins back on. _(ro)_ |
| `itemNumber` | Item No. | The item that moved. _(ro)_ |
| `variantCode` | Variant Code | The item variant, when one is used. _(ro)_ |
| `postingDate` | Posting Date | The date the movement posted. _(ro)_ |
| `documentDate` | Document Date | The date on the source document. _(ro)_ |
| `entryType` | Entry Type | Purchase, Sale, Positive Adjmt., Negative Adjmt., Transfer, Consumption, Output or Assembly. _(ro)_ |
| `documentType` | Document Type | The kind of posted document behind the movement. _(ro)_ |
| `documentNumber` | Document No. | The posted document behind the movement. _(ro)_ |
| `documentLineNumber` | Document Line No. | Which line of that document produced this movement. _(ro)_ |
| `externalDocumentNumber` | External Document No. | The counterparty's document number, when one was recorded. _(ro)_ |
| `description` | Description | The entry description. _(ro)_ |
| `locationCode` | Location Code | Where the movement happened. _(ro)_ |
| `quantity` | Quantity | The quantity moved, in the item base unit. Negative for outbound movements. _(ro)_ |
| `remainingQuantity` | Remaining Quantity | How much of an inbound entry has not yet been applied against. Non-zero only while the entry is open. _(ro)_ |
| `invoicedQuantity` | Invoiced Quantity | How much of the movement has been invoiced. Cost is only final once this equals quantity. _(ro)_ |
| `reservedQuantity` | Reserved Quantity | How much of the entry is reserved against demand. _(ro)_ |
| `open` | Open | Whether the entry still has remaining quantity to apply against. _(ro)_ |
| `positive` | Positive | Whether the movement increased stock. _(ro)_ |
| `unitOfMeasureCode` | Unit of Measure Code | The unit the movement was posted in. _(ro)_ |
| `quantityPerUnitOfMeasure` | Qty. per Unit of Measure | How many base units one posted unit represents. _(ro)_ |
| `itemCategoryCode` | Item Category Code | The item category as it stood when the movement posted. _(ro)_ |
| `sourceType` | Source Type | Whether the counterparty was a customer, vendor or item. _(ro)_ |
| `sourceNumber` | Source No. | The customer or vendor behind the movement. _(ro)_ |
| `orderType` | Order Type | The kind of order that generated the movement. _(ro)_ |
| `orderNumber` | Order No. | The order that generated the movement. _(ro)_ |
| `serialNumber` | Serial No. | The serial number, when the item is serial tracked. _(ro)_ |
| `lotNumber` | Lot No. | The lot number, when the item is lot tracked. _(ro)_ |
| `packageNumber` | Package No. | The package number, when the item is package tracked. _(ro)_ |
| `expirationDate` | Expiration Date | The expiration date carried by the tracked quantity. _(ro)_ |
| `warrantyDate` | Warranty Date | The warranty date carried by the tracked quantity. _(ro)_ |
| `correction` | Correction | Whether the entry is a correction of another posting. _(ro)_ |
| `completelyInvoiced` | Completely Invoiced | Whether the movement has been fully invoiced, and therefore fully costed. _(ro)_ |
| `countryRegionCode` | Country/Region Code | The country on the movement, used in intrastat reporting. _(ro)_ |
| `returnReasonCode` | Return Reason Code | Why the goods came back, on a return movement. _(ro)_ |
| `dimensionSetId` | Dimension Set ID | The dimension set this record carries. Join it to the dimensionSetEntries endpoint to resolve the full set of dimension codes and values, including any beyond the eight shortcut dimension columns. _(ro)_ |
| `integrationId` | EONE Integration Id | The external key eOne integration maps store on this entry. _(ro)_ |
| `lastModifiedDateTime` | SystemModifiedAt | The last date and time the record was modified. Use it as the watermark for an incremental pull. _(ro)_ |
