Permissionless payout protocol on Solana
Your order
is free.
Add about 1% at checkout. Sometimes the receipt ends on 0.00. The odds are on-chain, the bank is shared, and the merchant is paid in full.
- 1 order in 100, free
- Half price, 1 in 50
- Your swap, won back
- 10x cashback
Three seconds,
three steps.
-
01
Tick the box
The ticket rides with the payment. One signature, no account.
-
02
The draw
A verifiable oracle, on a block that did not exist when you paid.
-
03
Paid in full
The winner gets the order back. The shared bank pays, not the shop.
For merchants and apps
Every order can come back free.
Paid in full, every time. The vault pays the winner, never the shop.
Your share, 0 to 5%. Zero for a promotion, a few percent to earn on every ticket.
Your offer. The order free, half price or 10% off: pick the odds, Fade checks the math.
One call. No capital, no deposit, no registration.
Ticket
1.05 USDC
If you win
+101.05
Example with the merchant's share at 2%. Try it for real at app.fade.finance.
For liquidity providers
Every ticket pays the bank.
At least 1% of every ticket, from every app at once. Move the volume and see the arithmetic.
24%APR
On average at the 1% floor. Worked example, not a forecast: returns follow volume and the luck of the draws.
For builders
One call opens a payout.
A program, a server or a wallet. Up to 32 outcomes, checked on-chain before any money moves.
Quickstartconst ticket = await getOpenTicketInstructionAsync({
...accounts,
price: 1_000_000n, // 1 USDC
payoutTable: [
{ p: 96_500_000n, m: 100_000n }, // 10x, 9.65%
{ p: 903_500_000n, m: 0n },
],
appShareBps: 0n,
nonce, // the app's next ticket number
});
// One transaction, one approval for the user.
// payment: your existing transfer
await send(user, [payment, ticket]);