# Vendor Ledger Entries

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

```
eOne/core/v1.0/vendorLedgerEntries
```

"Read-only vendor ledger, Business Central's payables subledger. One row per posted vendor document, with the remaining amount Business Central itself maintains as payments are applied."

## Use this for aging

`remainingAmount` and `open` are maintained by Business Central when a payment is applied, and entries here are never purged. That makes an aging built on this feed exact, and it keeps being exact.

The [posted vendor feeds](https://eonesolutions.github.io/eone-bc-integration/core-postedVendorInvoices.md) are not a substitute. They project onto a short-lived staging table that Business Central purges by posting date after 7, 14 or 28 days, whether or not the document is still open, so a supplier invoice on normal terms drops out of them while unpaid.

```
GET vendorLedgerEntries?$filter=open eq true and dueDate lt 2026-09-01
```

## Amounts come in both currencies

`amount` and `remainingAmount` are in the transaction currency; `amountLcy` and `remainingAmountLcy` are the same figures in the company local currency. A multi-currency AP total needs no rate lookup at all, which is the single most common reason a warehouse aging disagrees with Business Central.

Both are FlowFields over the detailed entries, so Business Central computes them as the page reads each row. That is worth knowing when sizing a first load.

## Watermark on lastModifiedDateTime

An entry is modified after it is written: settling it updates `open`, `remainingAmount` and `closedByEntryNumber`. A cursor on `entryNumber` would read each invoice once, while it was still open, and never see it settle.

## Where the applications are

This feed says how much is left. [`detailedVendorLedgerEntries`](https://eonesolutions.github.io/eone-bc-integration/core-detailedVendorLedgerEntries.md) says which payment settled which invoice, when, and for how much. Use that one for a cash-application audit trail or a days-to-pay calculation.

## Reaching the G/L

`transactionNumber` groups every entry written by one posting across ledgers, so it joins this subledger to [`generalLedgerEntries`](https://eonesolutions.github.io/eone-bc-integration/core-generalLedgerEntries.md). `vendorPostingGroup` names the control account through [`vendorPostingGroups`](https://eonesolutions.github.io/eone-bc-integration/core-vendorPostingGroups.md), which is what a subledger-to-G/L tie-out needs.

## Volume

This is a real subledger and can reach millions of rows. Filter a first load by `postingDate`, then run incrementally.

## Vendor 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. Monotonic, and the value the detailed entries point back to. _(ro)_ |
| `vendorNumber` | Vendor No. | The vendor this entry is for. _(ro)_ |
| `vendorName` | Vendor Name | The vendor name as it stood when the document posted. _(ro)_ |
| `postingDate` | Posting Date | The date the entry posted. Aging by document date buckets on this. _(ro)_ |
| `documentDate` | Document Date | The date on the source document. _(ro)_ |
| `dueDate` | Due Date | When the document falls due. Standard aged receivables and payables bucket on this. _(ro)_ |
| `documentType` | Document Type | Invoice, Credit Memo, Payment, Refund, Finance Charge Memo or Reminder. _(ro)_ |
| `documentNumber` | Document No. | The posted document number. _(ro)_ |
| `externalDocumentNumber` | External Document No. | The counterparty's own document number, when one was recorded. _(ro)_ |
| `description` | Description | The entry description. _(ro)_ |
| `currencyCode` | Currency Code | The transaction currency. Blank means the company local currency. _(cur)_ |
| `amount` | Amount | The entry amount in the transaction currency. A FlowField over the detailed entries, computed on read. _(ro)_ |
| `amountLcy` | Amount (LCY) | The entry amount in the company local currency. Use this to total across currencies without an exchange rate lookup. _(ro)_ |
| `remainingAmount` | Remaining Amount | How much of the entry is still outstanding, in the transaction currency. Maintained by Business Central as payments are applied - this is what makes aging exact rather than reconstructed. _(ro)_ |
| `remainingAmountLcy` | Remaining Amt. (LCY) | The outstanding amount in the company local currency. _(ro)_ |
| `originalAmount` | Original Amount | The entry amount as first posted, before any application. _(ro)_ |
| `originalAmountLcy` | Original Amt. (LCY) | The originally posted amount in the company local currency. _(ro)_ |
| `debitAmount` | Debit Amount | The debit side of the entry, in the transaction currency. _(ro)_ |
| `creditAmount` | Credit Amount | The credit side of the entry, in the transaction currency. _(ro)_ |
| `debitAmountLcy` | Debit Amount (LCY) | The debit side in the company local currency. _(ro)_ |
| `creditAmountLcy` | Credit Amount (LCY) | The credit side in the company local currency. _(ro)_ |
| `open` | Open | Whether the entry is still unsettled. Business Central closes it when it is fully applied. _(ro)_ |
| `positive` | Positive | Whether the entry increases the balance. Distinguishes invoices from payments without reading documentType. _(ro)_ |
| `closedByEntryNumber` | Closed by Entry No. | The entry that closed this one, when it was closed by a single application. _(ro)_ |
| `closedAtDate` | Closed at Date | When the entry was closed. _(ro)_ |
| `closedByAmount` | Closed by Amount | The amount that closed the entry. _(ro)_ |
| `onHold` | On Hold | A hold code, when one is set. Held entries are excluded from payment suggestions. _(ro)_ |
| `appliesToDocumentType` | Applies-to Doc. Type | The document type this entry was applied to on posting. _(ro)_ |
| `appliesToDocumentNumber` | Applies-to Doc. No. | The document this entry was applied to on posting. _(ro)_ |
| `purchaserCode` | Purchaser Code | The purchaser on the source document. _(ro)_ |
| `vendorPostingGroup` | Vendor Posting Group | The posting group that directed this entry to its control account. Join it to the vendorPostingGroups endpoint for that account. _(ro)_ |
| `paymentMethodCode` | Payment Method Code | The payment method on the source document. _(ro)_ |
| `transactionNumber` | Transaction No. | Groups every entry posted by the same transaction, across ledgers. Join it to generalLedgerEntries to reach the G/L side of this posting. _(ro)_ |
| `sourceCode` | Source Code | What kind of posting produced the entry. _(ro)_ |
| `reversed` | Reversed | Whether this entry has been reversed. _(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)_ |
| `lastModifiedDateTime` | SystemModifiedAt | The last date and time the record was modified. Use it as the watermark for an incremental pull. _(ro)_ |
