# ReceiptLineInput

input type

One caller-supplied Receipt line (create · wholesale draft edit · the line ops — lineNo assigned from the header nextLineNo by the kit, never reused).

## Fields

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `poLineNo` | [Int](/types/#scalars) `Int!` | yes | The PO line being received (1-based on the PARENT PO; must name a line destined to this receipt's LF). |
| `quantityReceived` | [String](/types/#scalars) | no | The quantity arriving NOW (decimal string, strictly positive). UNIT entry — exactly ONE of {quantityReceived, the pack pair} per line. |
| `disposition` | [ReceiptDisposition](/types/ReceiptDisposition/) `ReceiptDisposition!` | yes | The canned arrival routing (accept / hold / damage). |
| `heldReason` | [String](/types/#scalars) | no | The canned held reason — required iff disposition is hold (strict both ways). |
| `binId` | [ID](/types/#scalars) | no | Optional landing bin. |
| `purchasePackId` | [ID](/types/#scalars) | no | PACK entry: the pack the arrival is counted in — tenant + ACTIVE + must package the ADDRESSED PO line's variant; quantityReceived derives as packQuantity x unitsPerPack. Comes as a pair with packQuantity. |
| `packQuantity` | [Int](/types/#scalars) | no | The pack count (1..999999) — present iff purchasePackId is. |
