Back

How It Works

Pendle has no endpoint for per-wallet epoch rewards. We reconstruct them from three independent data sources and on-chain transfer history.

Pendle API REST

Primary source for epoch boundaries, fee revenue, buyback amounts, airdrop breakdowns, and global stake totals. Polled via /core/v1/sPendle/global-data. Can lag several days after a distribution — fees appear immediately but buyback amounts populate later.

epoch timestampsfeesbuyback amountsairdrop breakdownsglobal stake
Blockscout on-chain

On-chain ground truth for distribution timing and amounts. Reads ERC-20 transfer events from the distributor contract to the sPENDLE token. Provides the actual distribution timestamp (typically 3 days after the API epoch-close date) and real sPENDLE amounts. Overrides API timestamps and fills missing buyback values.

real timestampsactual sPENDLE amountstx hashes
Pendle Merkle Repo GitHub

Distribution proofs from the pendle-finance/merkle-distributions repo. Contains campaign files with exact per-epoch sPENDLE totals and co-distributed airdrop tokens (sENA, FF, RE, RESOLV). Supplements the API for epochs where buyback data hasn't populated yet.

exact sPENDLE totalsairdrop tokensepoch boundaries

The three sources above give us global distribution data. To compute what a specific wallet earned, we reconstruct their share from on-chain history:

numeratortime-weighted avg sPENDLE balance per epoch
+virtual sPENDLE from vePENDLE lock
denominatortotalStakedInSpendle + virtualSpendleFromVependle
resultuser share = numerator / denominator
user reward = global distribution × user share
The denominator is a live snapshot of today's global stake, not a per-epoch historical value. This means proportional shares for early epochs are slightly underestimated as the pool has grown over time.
Why we build this ourselves

Pendle's API provides global totals per epoch but has no endpoint for wallet-level rewards. There's no way to ask “how much did 0x... earn in epoch 5.” So we pull the user's full Transfer event history from Alchemy, compute their time-weighted balance across each epoch window, and divide by the global stake to attribute their share of each distribution.

How It Works — sPENDLE.APR