Docs/Reference/Redeem action

Redeem action

A developer-focused reference for constructing and signing a tokenized-points redemption.

When to use#

Redeem when a customer offramps tokenized loyalty value into a brand-defined benefit.

A redemption burns the exact signed tokenized amount from the selected expiry bucket after validation succeeds. deadline can limit how long the signed redemption remains executable.

Fields#

FieldTypeRequiredMeaning
issueraddressyesBrand wallet that signs the redemption.
fromaddressyesCustomer wallet whose tokenized loyalty balance is redeemed.
loyaltyIdbytes32yesBrand-scoped program ID.
amountuint256 stringyesTokenized loyalty amount to redeem. Must be greater than zero.
expiresAtuint256 stringyesThe exact bucket to redeem. Use 0 for non-expiring rewards.
deadlineuint256 stringyesLast Unix timestamp when the redemption can be submitted. Use 0 for no execution deadline.
noncebytes32yesUnique per issuer. Replays are rejected.
chainIduint256 stringyesExpected chain ID. Production uses Base mainnet 8453; non-production uses Base Sepolia 84532.
verifyingContractaddressyesThe Loyfin factory that will execute the action.
operationHashbytes32optionalBrand reference hash for correlating this action with an internal database row. Defaults to zero bytes when omitted.
datahex bytesoptionalBrand-defined fulfillment data. Defaults to 0x. Max 2048 bytes.

Example#

RedemptionActionjson
{
  "redemption": {
    "issuer": "0x1111111111111111111111111111111111111111",
    "from": "0x2222222222222222222222222222222222222222",
    "loyaltyId": "0x4242424242424242424242424242424242424242424242424242424242424242",
    "amount": "250",
    "expiresAt": "0",
    "deadline": "0",
    "nonce": "0x7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a",
    "chainId": "8453",
    "verifyingContract": "0x3333333333333333333333333333333333333333",
    "operationHash": "0x9999999999999999999999999999999999999999999999999999999999999999",
    "data": "0x"
  },
  "signature": "0xababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab"
}