Asynchronous Support Gifting
Allows an admin to gift a single entity (points, visits, currency or rewards) to a specific user. This API can handle higher volumes of support gifting requests, as it processes them in the background rather than immediately.
For bulk gifting use cases (points or rewards), we recommend using this API, which supports up to 4,000 requests per minute (RPM) and is optimized for high-volume gifting scenarios.
Authentication Note: This is a Dashboard API endpoint. It uses a business admin API key. The business admin must have "Dashboard API access" permission.
Recurring Redeemable Behavior
If the gifted redeemable is configured with a recurrence cycle, the following behavior applies:
- Gifting activates the native recurrence cycle automatically.
- No repeated API calls are needed from the brand.
- The original administrator identity is carried forward across all subsequent recurrences.
- A reward notification is triggered on every recurrence cycle, not just the initial gift.
- All recurrence cycles are grouped under the same original reward entry in the guest's activity timeline.
Membership Tier Boost
Membership Tier gifting is also supported through this API. Administrators can gift a temporary membership tier boost to users directly through the Asynchronous Support Gifting API.
The API accepts two request parameters: tier_id to specify the membership tier to be gifted and duration to specify the gift duration in days.
The specified tier must be a valid, active tier configured under the program. The gift duration must be within the program's configured minimum and maximum gift duration limits.
All existing parameters and behavior remain unchanged. On success, the gift is applied immediately, with the expiry calculated as the start time plus the specified duration. The loyalty member's effective tier is recalculated immediately to reflect the gifted tier.
To gift a membership tier to a user for a specified duration, the business admin must have "Gift & force redeem" permission. Additionally, the "Membership Levels" and "Membership Tier Boost" features must be enabled for the business. Contact your Punchh representative to update this Punchh platform configuration.
Validation and Error Handling
The following error messages are returned when the request fails validation:
- If
tier_iddoes not match a valid program tier: "The specified tier does not exist for this program." - If
durationis outside the allowed range: "Validity must be between {min} and {max} days as configured for this program." - If the selected tier is lower than or equal to the member's current effective tier: "The selected tier is equal to or lower than the member's current effective tier. Please select a higher tier."
- If Membership Levels or Tier Boost is not enabled for the program: "Tier Boost is not enabled for this program."
- If the admin lacks the required permission: "You do not have permission to perform this action. Contact your Punchh representative to update this Punchh platform configuration."
- Type: stringContent
- Type requiredThe media type of the request body. Must be
application/json. - Type: stringAcceptrequired
The media type the client expects in the response. Must be
application/json. - Type: stringAuthorizationrequired
Bearer token for admin authorization. Send the API key in the following format: "Authorization: Bearer BUSINESS_ADMIN_KEY_GOES_HERE".
- Type: integerdurationrequired
The duration of the gift, in days. Must be within the program-configured minimum and maximum gift duration. Required when
tier_idis provided. - Type: integeruser
_id requiredUnique ID of the user who will receive the gift or message. This is a unique ID assigned to the user by Punchh.
- Type: string Format: dateend
_date Expiration date for the gifted redeemable. If provided, the redeemable will expire on the earlier of this date or the default configuration’s expiration date. The actual expiration will be whichever is earlier: the date you provide, or the system’s default expiration for that reward.
- Type: integergift
_count In a points-based business, gift_count represents the number of points to be gifted to guests. In a visit-based business, it is the number of visits to be gifted. Gifting is optional. You can include either
gift_count(for points or visits) orredeemable_id(for rewards) in the request. At least one of these parameters must be provided.- If both gift_count and redeemable_id are blank, the system returns: "Please specify any one entity for gifting".
- If both gift_count and redeemable_id are present, the system returns: "Please specify a single entity for gifting".
- Type: stringgift
_reason Reason these points or rewards are being gifted to the user. If no value is provided, the default system value of "Support Activity" will be provided.
- Type: integerlocation
_id Unique ID of the location associated with the gift. This is for reference purposes. If no location ID is provided, the ID of the headquarters location will be used.
- Type: stringmessage
Message that will be sent to the user
- Type: integerredeemable
_id Unique ID of the redeemable that you want to gift to the user. To send a gift, include either
gift_count(for points) orredeemable_id(for rewards) in the request. At least one of these parameters must be provided.- If both
gift_countandredeemable_idare blank, the system returns: "Please specify any one entity for gifting". - If both
gift_countandredeemable_idare present, the system returns: "Please specify a single entity for gifting".
Note: Recurring Redeemables - If the
redeemable_idrefers to a redeemable configured with a recurrence cycle, gifting it via this API will activate the native recurrence cycle. The reward will automatically re-issue on each recurrence interval without requiring additional API calls. The administrator identity from the initial gift is carried forward to all subsequent recurrence entries, and the guest receives a reward notification on each recurrence. - If both
- Type: booleanreset
_guest _last _activity Resets the guest's last activity timestamp to the current time
- Type: integerreward
_amount Currency amount that will be gifted to the user.
- Type: stringsubject
Subject of the message that you want to send to the user. If no value is provided, the default system value will be used.
- Type: stringtier
_id The ID of the tier to be gifted as a tier boost. The value must be a valid, active tier configured for the program. When
tier_idis provided,durationmust also be provided.
- 202
OK - Request was accepted and processed successfully.
- application/json
- application/json
curl https://SERVER_NAME_GOES_HERE.punchh.com/api2/dashboard/users/support_gifting \
--request POST \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: ' \
--data '{
"user_id": 111111111,
"subject": "Gifts from us.",
"message": "Thank you for contacting us. Here are 50 extra points to make your day.",
"gift_reason": "Admin Generosity",
"gift_count": 50,
"location_id": 310969,
"tier_id": "708",
"duration": 3330
}'