Duplicate line items in LEDES invoices: the two shapes a duplicate actually takes
There are two separate duplicate checks here, not one, and they catch different mistakes.
DUPLICATE_LINE_ITEM_NUMBER: the same LINE_ITEM_NUMBER shows up more than once inside one invoice.
invoice 96542: line item number 3 appears 2 times
DUPLICATE_LINE_ITEM: two or more line items in the same invoice share the same date, timekeeper, and description, all three at once.
invoice 96542: 2 line items on 19990115 by 22547 share the description 'Research attorney's fees, Trial pleading' — possible duplicate billing
Both are scoped to one invoice at a time. A line item number that repeats across two different invoices in the same file is fine, since invoice numbering resets per invoice. And the content check only fires when date, timekeeper, and description all match; two lines from the same timekeeper on the same day with different descriptions never trigger it, even if everything else about them looks similar.
Why line item numbers repeat
Usually a tooling problem, not a billing one. An export script that numbers line items sequentially but restarts the counter partway through (a batch that got split and rejoined, or a template that copy-pasted a block without renumbering it) produces this exact symptom. It's less often "the same work billed twice" and more often "the same slot number used twice," which is worth knowing before you go looking for double billing that might not be there.
Why content actually duplicates
This is the one closer to a real accounting problem. The usual path: a line item got entered, then re-entered because it wasn't clear the first entry saved (a form resubmitted, an import run twice against the same source data). Since the check requires date, timekeeper, and description to match exactly, a genuine coincidence (same timekeeper doing conceptually similar work on the same day, described slightly differently) won't trip it, so when it does fire, the two entries are usually word-for-word identical, which is exactly what you'd expect from an accidental double-submit.
What to check first
For DUPLICATE_LINE_ITEM_NUMBER, look at how your export tool assigns numbers. If two DIFFERENT line items (different work, different amounts) share a number, it's a numbering bug, not duplicate billing, and the fix is in the export logic.
For DUPLICATE_LINE_ITEM, compare the full rows. If every field matches, not just the three this check looks at, it's almost certainly one entry billed twice and one of the two should be removed. If some fields differ (different LINE_ITEM_TOTAL, say), it's worth a closer look before assuming it's a duplicate at all.
Try it
Tier 2 (consistency), same as the rest of this series, part of a Day Pass or Ledger subscription. Like the timekeeper rate check, this one is BriefCheck's own validator rather than the underlying parser's, so there's no pre-built sample fixture behind the account page's lookup for it yet — two line items with the same LINE_ITEM_NUMBER, or matching date/timekeeper/description, in a real file will trigger it directly.