# NewLoyaltyProgramInput

input type

Create-input for a LoyaltyProgram. The tenant is derived SERVER-SIDE; currency is EXPLICIT + IMMUTABLE (ISO-4217, minor-unit-registered); startAt is kit-stamped NOW when omitted; the ACTIVE cap (≤ 8 per group) gates the create; rule arrays are each ≤ 8 rows with sane predicates and unique tier names.

## Fields

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `caption` | [String](/types/#scalars) | no | Optional: when omitted the per-type default applies — the phrase `loyalty program <currency>`; when supplied it must be non-blank. |
| `currency` | [String](/types/#scalars) `String!` | yes | IMMUTABLE at birth — the earn/redeem currency anchor. |
| `earnRate` | [LoyaltyRateInput](/types/LoyaltyRateInput/) `LoyaltyRateInput!` | yes | No further notes. |
| `redeemRate` | [LoyaltyRateInput](/types/LoyaltyRateInput/) `LoyaltyRateInput!` | yes | No further notes. |
| `earnMultipliers` | [LoyaltyEarnMultiplierInput](/types/LoyaltyEarnMultiplierInput/) `[LoyaltyEarnMultiplierInput!]` | no | No further notes. |
| `bonusWindows` | [LoyaltyBonusWindowInput](/types/LoyaltyBonusWindowInput/) `[LoyaltyBonusWindowInput!]` | no | No further notes. |
| `tiers` | [LoyaltyTierInput](/types/LoyaltyTierInput/) `[LoyaltyTierInput!]` | no | No further notes. |
| `organizationIds` | [ID](/types/#scalars) `[ID!]` | no | The canned-pool selection — ABSENT = every org in the group. |
| `startAt` | [String](/types/#scalars) | no | Omitted = kit-stamped NOW; IMMUTABLE once born. |
| `endAt` | [String](/types/#scalars) | no | ABSENT = evergreen; must lie strictly after the window start. |

## Used by

- [createLoyaltyProgram](/reference/loyalty-program/createLoyaltyProgram/)
