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#
| Field | Type | Required | Meaning |
|---|---|---|---|
issuer | address | yes | Brand wallet that signs the redemption. |
from | address | yes | Customer wallet whose tokenized loyalty balance is redeemed. |
loyaltyId | bytes32 | yes | Brand-scoped program ID. |
amount | uint256 string | yes | Tokenized loyalty amount to redeem. Must be greater than zero. |
expiresAt | uint256 string | yes | The exact bucket to redeem. Use 0 for non-expiring rewards. |
deadline | uint256 string | yes | Last Unix timestamp when the redemption can be submitted. Use 0 for no execution deadline. |
nonce | bytes32 | yes | Unique per issuer. Replays are rejected. |
chainId | uint256 string | yes | Expected chain ID. Production uses Base mainnet 8453; non-production uses Base Sepolia 84532. |
verifyingContract | address | yes | The Loyfin factory that will execute the action. |
operationHash | bytes32 | optional | Brand reference hash for correlating this action with an internal database row. Defaults to zero bytes when omitted. |
data | hex bytes | optional | Brand-defined fulfillment data. Defaults to 0x. Max 2048 bytes. |
Example#
{
"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"
}