# CashEntry

object type

ONE posted cash-drawer ledger fact: the SIGN is the direction (positive = cash INTO the drawer). sysId-LESS (the class); IMMUTABLE — NO update or doom op exists (corrections are NEW compensating entries); posted ONLY by openTillSession (float_in), recordCashEntry (the manual subset), closeTillSession (count_adjust), and the tender writers (cash_sale/cash_refund/change_given) — each in ONE transaction with the drawerTotals cache stamp.

## Fields

| Field | Type | Notes |
| --- | --- | --- |
| `id` | [ID](/types/#scalars) `ID!` | No further notes. |
| `type` | [String](/types/#scalars) `String!` | No further notes. |
| `caption` | [String](/types/#scalars) `String!` | The derived display caption — entryType + currency + signed minor; never editable. |
| `status` | [String](/types/#scalars) `String!` | The FSM state: active \| doomed (doomed = VOIDED, reserved for a future void-family flow). |
| `parentId` | [ID](/types/#scalars) `ID!` | The parent TillSession. |
| `rootId` | [ID](/types/#scalars) `ID!` | No further notes. |
| `entryType` | [CashEntryType](/types/CashEntryType/) `CashEntryType!` | The canned entry type (SPEC_REGISTRY — the sign law rides it). |
| `currency` | [String](/types/#scalars) `String!` | The entry currency (the per-currency drawer; FX capture fields arrive with the writers). |
| `amountMinor` | [Int](/types/#scalars) `Int!` | The SIGNED minor-unit amount — the sign IS the drawer direction. |
| `reason` | [String](/types/#scalars) | The reason — REQUIRED on the manual ops; auto-generated on float_in/count_adjust. |
| `glCategory` | [String](/types/#scalars) | The GL expense/income category — rides paid_in/paid_out only. |
| `refs` | [String](/types/#scalars) `[String!]` | Provenance document refs (bounded free strings — typed refs land with their writers). |
| `fx` | [CashEntryFx](/types/CashEntryFx/) | The FX capture (foreign cash_sale entries only). |
| `overdrawn` | [Boolean](/types/#scalars) | Present (true) EXACTLY when this entry drove its currency's drawer total negative. |
| `createdAt` | [String](/types/#scalars) `String!` | No further notes. |
| `updatedAt` | [String](/types/#scalars) `String!` | No further notes. |
| `revision` | [ID](/types/#scalars) `ID!` | No further notes. |
| `revisionNum` | [Int](/types/#scalars) `Int!` | No further notes. |

## Used by

- [drawerLedger](/reference/reading-your-records/drawerLedger/)
- [recordCashEntry](/reference/till-and-cash-management/recordCashEntry/)
