Your application
Defines campaigns, earning rules, eligibility, redemption choices, and the customer experience.
Reward and loyalty points
Issue, redeem, schedule, and expire point balances while keeping each movement attached to a business transfer.
{
"transfer_id": "reward_1001",
"scene": "top_up",
"from_accounts": [
{ "account_id": "-1", "asset": "points", "action": "top_up", "amount": "250" }
],
"to_accounts": [
{ "account_id": "member_42", "asset": "points", "action": "top_up", "amount": "250",
"expire_at": 4102444800 }
]
}Replace expire_at with a future Unix-second boundary for the reward campaign.
Clear product boundary
Defines campaigns, earning rules, eligibility, redemption choices, and the customer experience.
Stores point balances and executes balanced, traceable movements between accounts and platform accounts.
Move points from a configured platform account to a member, then back to a spending or settlement destination.
Give a grant a future start or an exclusive expiry boundary in Unix seconds.
Read the transfer status and per-account records when a reward or redemption needs investigation.
These answers describe the balance layer. Your app remains responsible for the surrounding reward program.
No. It provides accounts, point balances, transfers, time boundaries, and records. Campaign design and customer experiences stay in your application.
Yes. A destination entry may have a Unix-second expire_at value. At that boundary the value is no longer available; physical cleanup happens lazily.
Request reversal for the complete transfer ID and scene. XferAPI applies the inverse balance changes and moves the existing records to their reversal state.
Create a ledger, issue a scoped service key, and test an earn or redemption transfer against the same API contract you will use in production.