LoyaltyProgram
When updating, already existing fields omitted from the payload will generally not be deleted unless otherwise specified.
- accrualType: stringenum
_point _rounding _mode requiredDetermines how calculated earned points will be rounded. When rounding to nearest, X.5 will be rounded up.
Example: Earning 10 points/dollar on $3.51 = 35.1 points. Rounding
downornearestwould yield 35 points, whileupwould yield 36.This field defaults to
downwhen omitted.values- down
- up
- nearest
- accrualType: stringenum
_subtotal _rounding _mode requiredDetermines if/how eligible subtotals (total of item values less discounts) will be rounded to whole dollar values before calculating earned points. When rounding to nearest, $X.50 will be rounded up.
Example: Earning 10 points/dollar on $3.51. Rounding
upornearestwould result in $4.00 or 40 points. Roundingdownwould yield $3.00 or 30 points.nonewould result in 35.1 points, rounded according toaccrual_point_rounding_mode.This field defaults to
nonewhen omitted.values- none
- down
- up
- nearest
- nameType: stringrequired
- createdType: stringFormat: date-time
_at read-onlythe date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z
- descriptionType: string
- idType: integerread-only
Integer numbers.
- maxType: integer
_points _per _transaction min:0The maximum number of points that can be earned on a transaction. If this field is null or omitted, there is no limit.
- pointType: stringenum
_expiration _date _buffer _type Determines if and how calculated point expiration dates (after applying point_expiration_days) will be adjusted to align with a specific calendar boundary. When set to first_of_month, the computed expiration date will be moved forward to the first day of the following month. When set to none, the expiration date will remain exactly as calculated with no additional adjustment.
Example: If point_expiration_days results in an expiration date of March 18:
- none would keep the expiration date as March 18.
- first_of_month would adjust the expiration date to April 1.
This field defaults to
nonewhen omitted.values- none
- first
_of _month
- pointType: integer
_expiration _days min:0How many days after they are earned that points will expire, or 0 if they should never expire.
- pointType: string
_expiration _time An optional timestamp in the format of HH:00 (00:00 to 23:00) that will control the time of day at which points will expire after the expiration date is determined.
- required if point_expiration_time_zone is set
- when null or omitted, points will expire at the same UTC time of day
- any other value will be documented/interpreted as a local time
- pointType: string
_expiration _time _zone An optional string time zone to represent the locale of any explicit point_expiration_time
- required if point_expiration_time is set
- retroType: integer
_claim _days How many days transactions can be retro claimed after they occur. If this field is null or omitted, there is no time limitation.
- retroType: integer
_claim _limitation _days min:0Apply limitations to retro claims made over a certain number of days (e.g. if using a limitation type of "points" and this is set to 30, an enrollment may only earn 30 points from retro claims over a period of 30 days).
- All retro claims will count toward limitations when this field is omitted or null.
- Limited activity (retro claiming, point earn, etc.) will be prevented when set to 0.
- retroType: integer
_claim _limitation _max _points min:0Determines how many points can be earned through retro claims within the defined limitation period.
- This limitation will not be applied if field is omitted or null.
- This field only applies when using the "points" limitation type.
- retroType: integer
_claim _limitation _total _claims min:0Determines how many transactions can be retro claimed within the defined limitation period.
- This limitation will not be applied if field is omitted or null.
- This field only applies when using the "claims" limitation type.
- retroType: integer
_claim _limitation _total _claims _per _trans _date min:0Determines how many transactions placed on the same date can be retro claimed within the defined limitation period.
- This limitation will not be applied if field is omitted or null.
- This field only applies when using the "claims" limitation type.
- retroenum
_claim _limitation _type Determines what should be limited when retro claiming eligible transactions. Unrelated limitations such as
max_points_per_transactionandretro_claim_daysstill apply.none- no limitation (default)points- limit points earned through retro claims. See related settingsretro_claim_limitation_days&retro_claim_limitation_max_pointsfor more details.claims- limit number of retro claims allowed. See related settingsretro_claim_limitation_days,retro_claim_limitation_total_claims, &retro_claim_limitation_total_claims_per_trans_datefor more details
values- none
- points
- claims
- statusType: stringenumread-onlyvalues
- active
- suspended
- archived
- tierType: object · LoyaltyTierSystemsConfig
_system _config Determines how optional Loyalty Enrollment Tiering will work within a Loyalty Program, specifically how point earning activity is determined as qualifying (or not) toward meeting Tier requirements, and how long Enrollments are granted access to Tiers.
Specific criteria (e.g. how many lifetime points are needed) for earning into each Tier is configured at the Tier level (see Loyalty Tier Grant Rule).
- alignType: boolean
_renewal _with _tier _term _end requiredEnrollments are automatically evaluated for tiers whenever they earn points. By default, evaluation uses point threshold lookback windows and calculates the end of grant terms based on that evaluation date for both advancement (moving to a higher tier) and renewal (qualifying for the same or lower tier for an extended period).
When this setting is
true, renewal evaluations consider qualifying points as those earned during an enrollment's current "Tier Term" (seetier_term_start_timeandtier_term_end_dateon the Loyalty Enrollment). Renewal tier grants end a full grant term after the current Tier Term ends. "Tier Terms" typically (re)start when enrollments automatically advance tiers, end on the same date as the corresponding tier grants, and are extended a full grant term if they lapse.Example with anniversary-based renewal: An enrollment advances to "Silver" on June 1, 2025, making the end of their tier term June 1, 2026 (a 365-day grant term later). Throughout that year, renewal evaluation checks if they qualify for "Silver" based only on points earned during that time. If they do, a renewal grant is issued that ends on June 1, 2027 (365 days from their upcoming anniversary/term end). If the enrollment does not advance to "Gold" by June 1, 2026, their tier term would reset to end on June 1, 2027.
Note: Advancement always uses the current date for evaluation. This setting only affects renewal behavior.
- grantType: stringenum
_term _type requireddetermines if and if so how long an enrollment gets to remain in a tier (assuming inactivity) once they are granted access.
permanent- when automatically granted access to a tier, an enrollment's access does not expire.calendar_years- when automatically granted access to a tier, an enrollment retains access for n calendar years, inclusive of the current year (e.g. if "Gold Tier" is earned in June 2024, and a program configures a term type/length of "2 calendar years", the enrollment would remain at least in "Gold Tier" through December 31st, 2025).relative_days- when automatically granted access to a tier, access is retained for the following n days.
values- permanent
- calendar
_years - relative
_days
- pointType: integer
_threshold _length requiredquantifies
point_threshold_typeif applicable (e.g. 2 calendar years). - pointType: stringenum
_threshold _type requireddetermines which point values contribute toward meeting tier thresholds.
total_historical- enrollments are granted access to tiers upon reaching a lifetime earned point total. Since tiers would not be based on recency or frequency of activity, programs using this setting would generally be expected to award tiers permanently (grant_term_typeset topermanent).calendar_years- enrollments are granted access to tiers based on how many points they have earned over the course of the past n calendar years, inclusive of the current year.relative_days- enrollments are granted access to tiers based on how many points they have earned over the course of the past n relative days.
values- total
_historical - calendar
_years - relative
_days
- enabledType: boolean
determines whether tiering is enabled for the program.
- grantType: integer
_term _length quantifies
grant_term_typeif applicable. Ifgrant_term_typeispermanent, this will be set to 0.
- updatedType: stringFormat: date-time
_at read-onlythe date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z
{
"name": "Test Program 2",
"description": "An example Loyalty Program",
"default_point_accrual_rule": {
"name": "5 points per dollar plus 10 points per visit base rule ",
"accrual_multiplier": 0.05,
"accrual_fixed": 10,
"min_spend_amount": 0
}
}