Configure Reward Redemption
Overview
After you create a reward earn rule, you can configure how to redeem rewards. You can do this by using redemption configurations. Each redemption configuration contains units for conversion. For example, you can redeem reward points for an equivalent statement credit. In addition to conversion units, you can configure redemption timelines. They dictate when an account holder can start redeeming rewards.
Create reward redemption configuration
Once your rewards program is approved, the Highnote team will assist with creating your reward redemptions in the Live environment.
Reward redemption configurations are used to create reward redemption configurations. You can create a single reward redemption configuration, or multiple configurations of the same type.
For example, you can create one reward redemption configuration for 1x and another for 0.5x. Then, you can use these configurations to offer different redemption rules, with both remaining active at the same time. When redeeming rewards in this scenario, you will reference the REWARD_REDEMPTION_CONFIGURATION_ID for each reward redemption configuration.
Use the following mutation to create a reward redemption configuration in the Test environment. Use the rate input field to create your reward unit conversion rate:
CreateRewardRedemptionConfiguration
Query
mutation CreateRewardRedemptionConfiguration(
$input: CreateRewardRedemptionConfigurationInput!
) {
createRewardRedemptionConfiguration(input: $input) {
__typename
... on RewardRedemptionConfiguration {
id
type
name
rewardPointRedemption {
rate
}
attachments {
... on RewardRedemptionConfigurationAttachmentConnection {
pageInfo {
hasNextPage
hasPreviousPage
endCursor
startCursor
}
edges {
node {
effectiveFrom
effectiveThrough
redemptionConfiguration {
id
}
... on RewardRedemptionConfigurationProductAttachment {
cardProduct {
id
}
}
}
}
}
}
createdAt
updatedAt
}
... on UserError {
errors {
errorPath
code
description
}
}
}
}
Variables
{ "input": { "name": "configName", "rewardPointRedemption": { "rate": "1.0" } } }
Result
{
"data": {
"createRewardRedemptionConfiguration": {
"__typename": "RewardRedemptionConfiguration",
"id": "REWARD_REDEMPTION_CONFIGURATION_ID",
"type": "STATEMENT_CREDIT",
"name": "configName",
"rewardPointRedemption": {
"rate": "1.0"
},
"attachments": {
"__typename": "RewardRedemptionConfigurationAttachmentConnection",
"edges": [],
"pageInfo": {
"hasNextPage": false,
"endCursor": "",
"hasPreviousPage": false,
"startCursor": ""
}
},
"createdAt": "1970-01-01T00:00:00.000Z",
"updatedAt": "1970-01-01T00:00:00.000Z"
}
},
"extensions": {
"requestId": "REQUEST_ID"
}
}
Attach reward redemption to card product
Once your rewards program is approved, the Highnote team will assist with attaching your reward redemptions to your card product(s) in the Live environment.
You must attach redemption configurations to card products. This enables account holders to redeem rewards.
Use the following mutation to attach a redemption configuration to a card product in the Test environment:
AttachRewardRedemptionConfigurationToProduct
Query
mutation AttachRewardRedemptionConfigurationToProduct(
$input: AttachRewardRedemptionConfigurationToProductInput!
) {
attachRewardRedemptionConfigurationToProduct(input: $input) {
__typename
... on RewardRedemptionConfigurationProductAttachment {
redemptionConfiguration {
id
}
cardProduct {
id
}
effectiveFrom
effectiveThrough
}
... on UserError {
errors {
errorPath
code
description
}
}
}
}
Variables
{ "input": { "redemptionConfiguration": { "id": "REWARD_REDEMPTION_CONFIGURATION_ID" }, "cardProductId": "CARD_PRODUCT_ID", "effectiveFrom": "2023-01-01T00:00:00.000Z", "effectiveThrough": "2023-01-02T00:00:00.000Z" } }
Result
{
"data": {
"attachRewardRedemptionConfigurationToProduct": {
"__typename": "RewardRedemptionConfigurationProductAttachment",
"redemptionConfiguration": {
"id": "REWARD_REDEMPTION_CONFIGURATION_ID"
},
"cardProduct": {
"id": "CARD_PRODUCT_ID"
},
"effectiveFrom": "2023-01-01T00:00:00.000Z",
"effectiveThrough": "2023-01-02T00:00:00.000Z"
}
},
"extensions": {
"requestId": "REQUEST_ID"
}
}
Update reward redemption configuration
The updated effectiveThrough date must be now or in the future.
If a reward redemption configuration needs deactivating, you can update the attachment's effectiveThrough date to end the configuration's availability. Use the following mutation to update the attachment between reward redemption configuration attachment in the Test environment:
UpdateRewardRedemptionConfigurationAttachment
Query
mutation UpdateRewardRedemptionConfigurationAttachment(
$input: UpdateRewardRedemptionConfigurationAttachmentInput!
) {
updateRewardRedemptionConfigurationAttachment(input: $input) {
__typename
... on RewardRedemptionConfigurationProductAttachment {
id
cardProduct {
id
}
redemptionConfiguration {
id
}
effectiveFrom
effectiveThrough
}
... on UserError {
errors {
errorPath
code
description
}
}
... on AccessDeniedError {
message
}
}
}
Variables
{ "input": { "attachmentId": "REWARD_REDEMPTION_ATTACHMENT_ID", "effectiveThrough": "2023-03-24T00:00:00.000Z" } }
Result
{
"data": {
"updateRewardRedemptionConfigurationAttachment": {
"__typename": "RewardRedemptionConfigurationProductAttachment",
"id": "REWARD_REDEMPTION_ATTACHMENT_ID",
"cardProduct": {
"id": "CARD_PRODUCT_ID"
},
"redemptionConfiguration": {
"id": "configId"
},
"effectiveFrom": "2023-01-01T00:00:00.000Z",
"effectiveThrough": "2023-03-24T00:00:00.000Z"
}
},
"extensions": {
"requestId": "REQUEST_ID",
"rateLimit": {
"cost": 12
}
}
}
Find reward redemption configuration
You can query for a reward redemption configuration to display it in your website or application. You can query for a reward earn rule using the following methods:
- via reward redemption configuration ID
- via card product ID
- via organization ID
via reward redemption configuration ID
Use the following query to find a reward redemption configuration using the redemption configuration ID:
FindRewardRedemptionConfigurationById
Query
query FindRewardRedemptionConfigurationById($id: ID!) {
node(id: $id) {
__typename
... on RewardRedemptionConfiguration {
id
type
name
rewardPointRedemption {
rate
}
attachments {
... on RewardRedemptionConfigurationAttachmentConnection {
pageInfo {
hasNextPage
hasPreviousPage
endCursor
startCursor
}
edges {
node {
effectiveFrom
effectiveThrough
redemptionConfiguration {
id
}
... on RewardRedemptionConfigurationProductAttachment {
cardProduct {
id
}
}
}
}
}
}
createdAt
updatedAt
}
}
}
Variables
{
"id": "REWARD_REDEMPTION_CONFIGURATION_ID"
}
Result
{
"data": {
"node": {
"__typename": "RewardRedemptionConfiguration",
"id": "REWARD_REDEMPTION_CONFIGURATION_ID",
"type": "STATEMENT_CREDIT",
"name": "configName",
"rewardPointRedemption": {
"rate": "1.0"
},
"attachments": {
"__typename": "RewardRedemptionConfigurationAttachmentConnection",
"edges": [
{
"node": {
"__typename": "RewardRedemptionConfigurationProductAttachment",
"redemptionConfiguration": {
"id": "REWARD_REDEMPTION_CONFIGURATION_ID"
},
"cardProduct": {
"id": "CARD_PRODUCT_ID"
},
"effectiveFrom": "2023-01-01T00:00:00.000Z",
"effectiveThrough": "2023-01-02T00:00:00.000Z"
}
}
],
"pageInfo": {
"hasNextPage": false,
"endCursor": "",
"hasPreviousPage": false,
"startCursor": ""
}
},
"createdAt": "1970-01-01T00:00:00.000Z",
"updatedAt": "1970-01-01T00:00:00.000Z"
}
},
"extensions": {
"requestId": "REQUEST_ID"
}
}
via card product ID
Use the following query to find a reward redemption configuration via card product ID:
FindCardProductWithRewardRules
Query
query FindCardProductWithRewardRules($id: ID!) {
node(id: $id) {
__typename
... on CardProduct {
attachedRewardRedemptionConfigurations {
... on RewardRedemptionConfigurationAttachmentConnection {
pageInfo {
startCursor
hasNextPage
}
edges {
node {
__typename
effectiveFrom
effectiveThrough
redemptionConfiguration {
... on RewardRedemptionConfiguration {
id
type
name
rewardPointRedemption {
rate
}
attachments {
... on RewardRedemptionConfigurationAttachmentConnection {
pageInfo {
hasNextPage
hasPreviousPage
endCursor
startCursor
}
edges {
cursor
node {
effectiveFrom
effectiveThrough
redemptionConfiguration {
id
}
... on RewardRedemptionConfigurationProductAttachment {
cardProduct {
id
}
}
}
}
}
}
createdAt
updatedAt
}
}
}
}
}
}
}
}
}
Variables
{
"id": "CARD_PRODUCT_ID"
}
Result
{
"data": {
"node": {
"__typename": "CardProduct",
"attachedRewardRedemptionConfigurations": {
"pageInfo": {
"startCursor": "dD0yMDI0LTAxLTIzVDA2JTNBNTUlM0E0MC44NTgwMDAwMDBaJmk9cndkcm1fNWE2MTQ5MzYwY2Q4NDBlZmI5OGIzNWIzOTAwZDg5ZjE",
"hasNextPage": false
},
"edges": [
{
"node": {
"__typename": "RewardRedemptionConfigurationProductAttachment",
"cardProduct": {
"id": "CARD_PRODUCT_ID"
},
"effectiveFrom": "2023-01-01T00:00:00.000Z",
"effectiveThrough": "2023-01-02T00:00:00.000Z",
"redemptionConfiguration": {
"__typename": "RewardRedemptionConfiguration",
"id": "REWARD_REDEMPTION_CONFIGURATION_ID",
"type": "STATEMENT_CREDIT",
"name": "configName",
"rewardPointRedemption": {
"rate": "1.0"
},
"attachments": {
"__typename": "RewardRedemptionConfigurationAttachmentConnection",
"edges": [
{
"cursor": "cursor",
"node": {
"attachRewardRedemptionConfigurationToProduct": {
"__typename": "RewardRedemptionConfigurationProductAttachment",
"redemptionConfiguration": {
"id": "REWARD_REDEMPTION_CONFIGURATION_ID"
},
"cardProduct": {
"id": "CARD_PRODUCT_ID"
},
"effectiveFrom": "2023-01-01T00:00:00.000Z",
"effectiveThrough": "2023-01-02T00:00:00.000Z"
}
}
}
],
"pageInfo": {
"hasNextPage": false,
"endCursor": "",
"hasPreviousPage": false,
"startCursor": ""
}
},
"createdAt": "1970-01-01T00:00:00.000Z",
"updatedAt": "1970-01-01T00:00:00.000Z"
}
}
}
]
}
}
},
"extensions": {
"requestId": "REQUEST_ID",
"rateLimit": {
"cost": 503
}
}
}
via organization ID
Use the following query to find a reward redemption configuration via organization ID:
FindOrganizationWithRedemptionConfigurations
Query
query FindOrganizationWithRedemptionConfigurations(
$id: ID!
$first: Int
$after: String
) {
node(id: $id) {
__typename
... on Organization {
rewardRedemptionConfigurations(first: $first, after: $after) {
... on RewardRedemptionConfigurationConnection {
edges {
node {
__typename
... on RewardRedemptionConfiguration {
id
rewardPointRedemption {
rate
}
attachments {
... on RewardRedemptionConfigurationAttachmentConnection {
pageInfo {
hasNextPage
hasPreviousPage
endCursor
startCursor
}
edges {
node {
effectiveFrom
effectiveThrough
redemptionConfiguration {
id
}
... on RewardRedemptionConfigurationProductAttachment {
cardProduct {
id
}
redemptionConfiguration {
id
}
effectiveFrom
effectiveThrough
}
}
}
}
}
createdAt
updatedAt
}
}
}
}
}
}
}
}
Variables
{
"id": "ORGANIZATION_ID"
}
Result
{
"data": {
"node": {
"__typename": "Organization",
"rewardRedemptionConfigurations": {
"pageInfo": {
"startCursor": "startCursor",
"hasNextPage": false
},
"edges": [
{
"node": {
"__typename": "RewardRedemptionConfiguration",
"id": "configId",
"type": "STATEMENT_CREDIT",
"name": "configName",
"rewardPointRedemption": {
"rate": "1.0"
},
"attachments": {
"pageInfo": {
"hasNextPage": false,
"hasPreviousPage": false,
"endCursor": "endCursor",
"startCursor": "startCursor"
},
"edges": [
{
"node": {
"redemptionConfiguration": {
"id": "REDEMPTION_CONFIGURATION_ID"
},
"cardProduct": {
"id": "CARD_PRODUCT_ID"
},
"effectiveFrom": "2023-01-01T00:00:00.000Z",
"effectiveThrough": "2023-01-02T00:00:00.000Z"
}
}
]
},
"createdAt": "1970-01-01T00:00:00.000Z",
"updatedAt": "1970-01-01T00:00:00.000Z"
}
}
]
}
}
},
"extensions": {
"requestId": "REQUEST_ID",
"rateLimit": {
"cost": 1263
}
}
}