Fee Model
Date: 2026-07-11
Authority: docs/00-product-constitution.md + XEL LOCKED-MODEL
Plane: XEL-152 / XEL-168
Product decision 2026-07-11 (mav): performance skim = 5% (500 bps).
This freezes how Open Yield charges vs Superform / Yearn / Beefy / Giza / OpenRouter.
1. Market scan (how peers charge)
Section titled “1. Market scan (how peers charge)”| Protocol | What they charge | When | Notes |
|---|---|---|---|
| Superform | Performance + some management / vault skims | Realized yield / vault events | Fees often shared with strategists; modest protocol-kept $ |
| Yearn | Classic ~2% mgmt + ~20% performance (vault-dependent) | On yield | Established, heavy performance cut |
| Beefy | Performance + small withdrawal fee | Harvest / exit | Withdrawal fee is common but we reject it |
| Giza / agent optimizers | Performance on yield | On yield | Agent-focused, often less open |
| OpenRouter | ~5.5% on credit top-ups | When buying credits | Not a yield model — flat tax on spend |
Lesson: DeFi yield protocols earn mainly when users earn. Credit-platform % markups (OpenRouter) are a different business.
2. Open Yield fee model (MVP — locked)
Section titled “2. Open Yield fee model (MVP — locked)”Two rails only
Section titled “Two rails only”| Rail | Rate | When charged | Purpose | Onchain? |
|---|---|---|---|---|
| A. Yield performance skim | 5% of gross harvested yield (protocol_yield_skim_bps = 500) | Every harvest / waterfall | Main protocol revenue | Yes |
| B. Data / API (optional) | x402 pay-per-call (market rate, e.g. ~$0.001–0.002 class if we host discovery) | When agent hits paid discovery/data endpoints | Cover data + spam | Via x402, not a hidden yield tax |
Explicitly not in MVP
Section titled “Explicitly not in MVP”| Rejected fee | Why |
|---|---|
| Fee on deposits / tips / top-ups | Constitution + XEL locked model |
| Fee on principal withdrawal | “Always withdraw”; no Beefy-style exit tax |
| Management fee on idle AUM as primary revenue | Prefer earn-when-user-earns |
| 5.5% on credit purchases as core model | OpenRouter-style; not yield-aligned |
| Second Auto Pay % on residual (0.5–1%) | Double-charges after yield skim; Auto Pay is a feature of residual, not a new fee stack |
| Ad-hoc 5–8% marketing rate | MVP locked at 500 bps (5%); change only by explicit product decision |
Waterfall (canonical)
Section titled “Waterfall (canonical)”gross_yield (venue claim) → protocol_skim (~5%) // Open Yield revenue — ONCHAIN → survival bills (storage, etc.) → residual → compound and/or Auto Pay (no extra protocol % by default)Gas, bridge venue costs, and card processor fees are pass-through costs, not protocol performance fees. Disclose them in plans.
3. Why not the “hybrid $0.001 + 5–8%” as written
Section titled “3. Why not the “hybrid $0.001 + 5–8%” as written”| Proposal piece | Verdict |
|---|---|
| $0.001 per API call | OK as x402 data pricing if we host paid discovery — not a substitute for yield skim |
| 5–8% band | MVP locked at 5% (500 bps); raise only with product decision unless policy overrides protocol_yield_skim_bps |
| Hybrid as main story | Fine if framed as: (1) yield skim onchain + (2) optional x402 for data — not two competing “performance” fees |
Open Yield product default is 500 bps (5%). Align XEL DEFAULT_PROTOCOL_YIELD_SKIM_BPS / policy config to 500 for Open Yield characters.
4. Comparison table (decision)
Section titled “4. Comparison table (decision)”| Aspect | Superform / Yearn / Beefy | Open Yield MVP |
|---|---|---|
| Main revenue | Performance on yield | ~5% harvest skim |
| Flat / usage | Rare (or withdraw fee) | Optional x402 on data APIs only |
| Withdraw principal | Sometimes small fee (Beefy) | $0 protocol fee |
| Deposit | Usually full value | Full value always |
| Agent cost to query | Medium | Very low if discovery free or $0.001-class x402 |
| Token fee-share | Often ($UP, etc.) | Not required for MVP |
| Transparency | High | Gross + net APY + feeBps in every position API |
5. Agent-friendly economics
Section titled “5. Agent-friendly economics”| Action | Cost to agent/character |
|---|---|
| Deposit USDC | 0 protocol fee |
| previewRoute / public venues | Free or x402 dust |
| Stake / unstake | Gas (sponsored path) only |
| Harvest | ~5% of that harvest’s yield (onchain) |
| Withdraw principal | 0 protocol fee |
| Auto Pay send | 0 extra protocol % (uses post-skim residual) |
Agents can poll often; we don’t need OpenRouter-style markup on every thought.
6. Optional later (not MVP)
Section titled “6. Optional later (not MVP)”| Idea | When to consider |
|---|---|
| Lower skim to 5–8% for growth | Explicit product decision + update constitution |
| Fee share to $TOKEN buyback | After product-market fit |
| Tiny Auto Pay routing fee | Only if x402 facilitator costs demand it — disclose separately |
| Management fee on staked AUM | Generally avoid; conflicts with pure performance alignment |
7. Implementation checklist (XEL-168)
Section titled “7. Implementation checklist (XEL-168)”- Harvest path always applies
protocol_yield_skim_bps - top_up / withdraw unit tests: zero protocol skim
- API:
feeBps,grossApyBps,netApyBpsalways paired - UI: never “fee-free yield” if skim > 0
- x402 discovery (if paid): separate line item, not mixed into yield skim
- No withdrawal fee parameter in product API
8. One-sentence product fee story
Section titled “8. One-sentence product fee story”Open Yield is free to fund and free to exit; it takes about 5% of yield when your capital earns, and may charge tiny x402 fees only for optional paid data calls.
Related
Section titled “Related”- Constitution:
docs/00-product-constitution.md - Superform revenue:
docs/08-superform-github-sdk-revenue.md - Steal list:
docs/07-superform-steal-list.md - Agent API harvest response:
docs/02-agent-api.md