# Customer Ledger Entries

`GET` _(Table: Cust. Ledger Entry)_

```
eOne/core/v1.0/custLedgerEntries
```

"Read-only customer ledger, Business Central's receivables subledger. One row per posted customer 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 customer feeds](https://eonesolutions.github.io/eone-bc-integration/core-postedCustomerInvoices.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 Net-30 invoice drops out of them while unpaid.

```
GET custLedgerEntries?$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 AR 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. [`detailedCustLedgerEntries`](https://eonesolutions.github.io/eone-bc-integration/core-detailedCustLedgerEntries.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). `customerPostingGroup` names the control account through [`customerPostingGroups`](https://eonesolutions.github.io/eone-bc-integration/core-customerPostingGroups.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.

## Customer 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)_ |
| `customerNumber` | Customer No. | The customer this entry is for. _(ro)_ |
| `customerName` | Customer Name | The customer 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)_ |
| `salespersonCode` | Salesperson Code | The salesperson on the source document. _(ro)_ |
| `customerPostingGroup` | Customer Posting Group | The posting group that directed this entry to its control account. Join it to the customerPostingGroups 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)_ |
