# LoyaltyPointsEntry

object type

ONE immutable points fact: the SIGNED points figure IS the balance direction; the parent member's pointsBalance was stamped in the SAME transaction. Corrections are NEW adjust entries, never edits.

## Fields

| Field | Type | Notes |
| --- | --- | --- |
| `id` | [ID](/types/#scalars) `ID!` | No further notes. |
| `parentId` | [ID](/types/#scalars) `ID!` | The parent LoyaltyMember. |
| `entryType` | [LoyaltyPointsEntryType](/types/LoyaltyPointsEntryType/) `LoyaltyPointsEntryType!` | No further notes. |
| `points` | [Int](/types/#scalars) `Int!` | The SIGNED points figure — the sign is the balance direction (earn/redeem_reversal +, redeem/clawback/expire −, adjust either). |
| `reason` | [String](/types/#scalars) | The reason text — REQUIRED on adjust (the reason-coded stance), optional narration otherwise. |
| `orderId` | [ID](/types/#scalars) | The driving Order. |
| `returnId` | [ID](/types/#scalars) | The driving Return (the return clawback/restore arms; return-driven entries carry BOTH refs). |
| `lines` | [LoyaltyEntryLineDetail](/types/LoyaltyEntryLineDetail/) `[LoyaltyEntryLineDetail!]` | The per-line split. |
| `caption` | [String](/types/#scalars) `String!` | No further notes. |
| `createdAt` | [String](/types/#scalars) `String!` | No further notes. |

## Used by

- [loyaltyLedger](/reference/reading-your-records/loyaltyLedger/)
