# NoSaleInput

input type

No-sale input: open the drawer WITHOUT a sale; moves NO money — the write is the noSaleCount/lastNoSaleAt stamp (the audit/fraud feed reads the stream).

## Fields

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `tillSessionId` | [ID](/types/#scalars) `ID!` | yes | No further notes. |
| `expectedRevision` | [ID](/types/#scalars) `ID!` | yes | The doc revision the caller read. |
| `reason` | [String](/types/#scalars) `String!` | yes | REQUIRED — why the drawer opened without a sale ('change for a customer'). |

## Used by

- [noSale](/reference/gated-floor-actions/noSale/)
