Docs · Payouts
How streamers get paid
No login needed. Your payouts go only to an address you published yourself.
Fees for a streamer collect in their vault on their own. To send them anywhere, the vault needs a payout address: one Solana wallet bound to the vault. The payout address can only come from the streamer: an address they published, a code they placed on their own channel, a signature from the wallet that owns their pump.fun profile, or a proof that they control the account. We never pick one, and once it is bound the program only ever pays that address.
Supported platforms: Twitch · Kick · pump.fun live. Twitch and Kick accounts are not Solana wallets, so they prove control with Reclaim, a code or a login. A pump.fun profile already belongs to a Solana wallet, so a pump.fun streamer only signs a message with it.
In the order we suggest them. None of them asks for your password, and only the last one grants us anything at all.
01Verify with ReclaimAbout a minute, no access
You log in to Twitch or Kick inside Reclaim's flow. We receive only a zero-knowledge proof of your user ID. No access is granted to us.
Twitch · Kick · method 4
02Sign in with SolanaOne signature
You sign a free, readable message with the wallet that owns your pump.fun profile. The message names your payout wallet. No transaction, no funds move.
pump.fun · method 5
03Public payout addressNothing to do
A Solana address you already show in your Twitch or Kick channel description (or a tip page it links to), or the wallet shown on your pump.fun profile.
All three · method 2
04Channel codeAbout a minute, no login
A short code (like STK-7K3F) you or your manager put in the stream title or channel bio for a moment.
Twitch · Kick · method 3
05LoginOne login
Log in with Twitch or Kick. We read your user ID once and revoke the token.
Twitch · Kick · method 1
1. Verify with Reclaim
Reclaim is an open zero-knowledge (zkTLS) protocol. You log in to Twitch or Kick inside Reclaim's own flow, and it produces a proof that the account you logged in to has a specific user ID. We receive that proof and nothing else: no password, no token, no access to your account.
- 01
Start on the claim page
Open /claim, pick your platform and channel, enter the Solana wallet you want to be paid to and choose Verify with Reclaim. - 02
Prove your account
Scan the QR code with your phone (or tap the button on mobile) and log in to Twitch or Kick inside the Reclaim flow. - 03
We check the proof
Our server verifies the proof, checks that the user ID matches the channel, stores the proof hash as evidence and binds your wallet. The binding is active at once.
2. Sign in with Solana (pump.fun)
A pump.fun profile is owned by a Solana wallet, and pump.fun shows that wallet publicly on the profile. So the simplest proof that a pump.fun profile is yours is a signature from that wallet. It is a plain text message in the Sign-In With Solana format: no transaction, no fee, no approval of anything, and it names the payout wallet so the signature cannot be reused to bind a different one.
- 01
Start on the claim page
Open /claim, choose pump.fun and enter your username or profile link. By default the payout wallet is your profile wallet; you can enter a different one. - 02
Sign the message
Connect the wallet that owns the profile and sign. The message expires after 10 minutes and can be used once. - 03
We check it
Our server verifies the signature, re-reads your pump.fun profile to confirm the signer still owns it, stores the signed message as evidence and binds the payout wallet. The binding is active at once.
stacklive.xyz wants you to sign in with your Solana account:
E6HigQWBzqBUZxuTXRnnC6VXXtZp2WKwUBrsy8XL6PvV
Verify pump.fun profile dustledger for StackLive payouts. Signing is free and moves no funds.
URI: https://stacklive.xyz/claim
Version: 1
Chain ID: mainnet
Nonce: 3f9a61c20b7d4e58a1c6f0e2
Issued At: 2026-09-28T14:02:11.000Z
Expiration Time: 2026-09-28T14:12:11.000Z
Resources:
- https://pump.fun/profile/dustledger
- payout-wallet:DuJbzy1eboF82RrFBTdPD452diCXGA5mCcp6W6y6RKyK- Wrong wallet: if the signing wallet is not the one that owns the profile, we refuse the signature and tell you which wallet to use. Switch accounts in your wallet app and sign again.
- Wallet only inside pump.fun? Since 25 September 2026 pump.fun signs web users in with email or a social account, and new profiles get a wallet held inside pump.fun. You can only sign here if the profile wallet is also in a Solana wallet app such as Phantom, Solflare or Backpack. If it is not, use the public payout address below instead: your profile wallet becomes the payout address with no signature at all.
- Nothing else is asked: no pump.fun login, no Reclaim proof, no channel code. Those methods exist because Twitch and Kick accounts have no wallet.
3. Public payout address
If your channel already shows a Solana address for tips, you do not have to do anything. On pump.fun, the wallet that owns your profile is public on the profile itself, so it counts as a published address too.
- 01
Publish your address where you control it
Put your Solana address in your Twitch or Kick channel description (the About text), ideally labelledSOL. Or put it on a tip page that your description links to: streamlabs.com, streamelements.com, ko-fi.com, donatr.ee, buymeacoffee.com, tipeeestream.com, throne.com, linktr.ee. On pump.fun there is nothing to publish: we read the wallet that owns your profile. - 02
We see it on the first check
When anyone opens your streamer page, or when our scheduled check runs, we read your description and the linked tip page (or your public pump.fun profile). The address becomes a pending binding, shown publicly. - 03
It becomes active after 24 hours
If the same address is still there on a second check at least 24 hours later, the binding becomes active and payouts start.
4. Channel code
Twitch and Kick only. For streamers without a published address, or managers setting it up on their behalf. No login, no access to the account.
- 01
Request a code
On /claim, enter the channel and the payout wallet. You get a short code likeSTK-7K3F, valid for 30 minutes. - 02
Put it on the channel
Add the code to the stream title or the channel bio. Anyone with edit access to the channel can do this, including a manager or moderator. - 03
Check
Press Check. We read the title and bio through the platform's public API. When the code is there, the wallet you entered is bound and active. - 04
Remove the code
Take it out of the title or bio. It is single-use and expires anyway.
5. Login
Twitch and Kick only. The original method: log in with Twitch or Kick, connect a wallet, sign. It is the fastest if you are happy to log in.
We only read your user ID. We can't post, read DMs or change anything. The token is revoked immediately; you can revoke access anytime.
In your platform settings the app appears as StackLive Claims. Our login is optional; Reclaim, a published address and a channel code do the same job without it. pump.fun has no login for third-party apps, and none is needed.
Only public data, only from pages you control. Twitch and Kick through their official APIs; pump.fun, which has no official public API, through the same public endpoints its own website uses, with short caches and a link back to the profile.
| Source | How | Used for |
|---|---|---|
| Twitch channel description | Official Helix API (users.description) | Published address, code in bio |
| Kick channel description | Kick public API (channel_description) | Published address, code in bio |
| Stream title | Official Twitch and Kick APIs | Channel code only |
| Tip page | Only if linked from that description, only 8 allowlisted hosts | Published address |
| Reclaim proof | Verified on our server; reveals only user ID and login | Verify with Reclaim |
| pump.fun profile | pump.fun's public web endpoint for the profile (username, profile ID, profile wallet) | Profile wallet, Sign in with Solana |
| pump.fun live status | pump.fun's public list of live coins (title, viewers) | Live badge only |
| Signed message | Signed in your wallet; verified on our server | Sign in with Solana |
- Tip pages: one hop from your description, HTTPS only, at most 512 KB, 5-second timeout, no redirects to another host.
- Not read: Twitch panels. The official Twitch API does not expose the panels under your stream, and we do not scrape. Put the address in the description (or on a tip page it links to) instead.
- Address checks: a valid base58 Solana address of 32 bytes that is on the curve, meaning a real wallet and not a program or PDA address.
- Ambiguity: if your sources show two or more different valid addresses, we bind nothing automatically, unless exactly one of them is labelled
SOLorSolana. Otherwise we ask you to use Reclaim, a code or login. - We never read DMs, follower lists, subscriptions or anything behind a login.
Every observation becomes an evidence record, shown publicly on the streamer page. It holds text, never screenshots, and it is small enough to audit by hand.
| Field | Meaning |
|---|---|
| streamerId | platform:userId, e.g. 1:141981764 (Twitch) or 3:d0d0a1c34f2b4e6d8a1f00000000c001 (pump.fun) |
| method | reclaim_zktls, wallet_signature, public_address, channel_code or oauth |
| sourceKind | channel_description, tip_page, stream_title, channel_bio, pumpfun_profile, wallet_signature, reclaim_proof or oauth_identity |
| sourceUrl | The page or API endpoint we read (reclaim:<providerId> for a Reclaim proof, the pump.fun profile endpoint for pump.fun) |
| fetchedAt | Unix seconds when we read it |
| snippetHash | SHA-256 of the raw text around the match (Reclaim: the canonical proof; wallet signature: profile JSON + signed message + signature) |
| excerpt | Up to 280 characters of plain text around the match. No screenshots |
| address | The Solana address found (or bound, for code, login, Reclaim and wallet signature) |
| label | "SOL" or "Solana" if written next to the address |
| code | The channel code, for the code method only |
| evidenceHash | SHA-256 of the canonical record below; this is what the attestation carries |
evidenceHash = sha256(canonical JSON), hex
{"v":1,
"streamerId":"1:141981764",
"method":"public_address",
"sourceKind":"channel_description",
"sourceUrl":"https://www.twitch.tv/…",
"fetchedAt":1790553600,
"snippetHash":"9f2c…",
"address":"7xKX…9fQa",
"code":null}
// keys in exactly this order, no whitespace
// (wrapped here for reading), UTF-8, null when absentThe evidence hash goes into the signed attestation that binds the vault on-chain, so anyone can recompute it from the public record and check that the binding matches what we saw. For a Reclaim proof, the record commits to the proof hash, the provider ID and the proof timestamp. For Sign in with Solana, it commits to the profile we read, the exact signed message and the signature.
- Explicit proof beats passive evidence. A Reclaim proof, a profile-wallet signature, a channel code or a login prove control of the account. A published address (including the public pump.fun profile wallet) is passive evidence. When they disagree, explicit proof wins.
- Stability window. A published address becomes active only after it is seen on 2 checks at least 24 hours apart.
- Large vaults wait. If a vault holds more than 25 SOL, even an explicit first binding waits in a public pending state for 24 hours before it becomes active.
- Rebind delay. Changing the wallet of an active binding takes 72 hours. The new wallet is shown as pending on the streamer page; the old binding keeps working meanwhile, and an explicit proof can cancel the change.
- Ambiguity means no binding. Two different addresses and no clear SOL label: we wait for explicit proof.
- Opted-out streamers can still bind a payout address and receive their own money.
- Every state change is appended to the binding's public history.
Published addresses are checked again about every 6 hours: by a scheduled job, whenever the streamer page is viewed and the last check is stale, and when someone presses Re-check (rate-limited).
- Address removed or changed: the binding is frozen immediately. Auto-forward stops; the money stays in the vault.
- Source unreachable: after 3 failed fetches in a row, the binding freezes with the reason “source unreachable”.
- Unfreeze: the same address seen again on 2 checks at least 24 hours apart, or any explicit proof (Reclaim, profile-wallet signature, code, login).
- A freeze never moves funds and never changes the payout address. It only pauses payouts.
With an active binding, the streamer does not need to claim. Anyone can run the program's permissionless forward instruction for a vault, and it moves the claimable balance to the bound address.
- Only to the bound address. The instruction has no recipient argument. Funds never leave to anyone but the bound wallet.
- Only when active. Pending or frozen bindings do not forward.
- Rate-limited per vault. At most 50 SOL per rolling 24 hours, with a minimum interval between forwards. Above that, the streamer claims explicitly or waits.
- Every forward is a public transaction with a receipt, like any claim.
- 01
Remove the address
Delete the wrong address from the page. With the address gone or changed, the binding freezes automatically on the next check. - 02
Secure the account
Change the password and turn on two-factor authentication on the tip service and on Twitch or Kick. On pump.fun, only the profile wallet can sign for you: keep its keys safe. - 03
Re-verify
Bind your real wallet with Reclaim, a channel code, a login or (pump.fun) a profile-wallet signature. Explicit proof takes precedence over whatever is published, and the binding becomes active again.
Each binding is carried to the program by a signed attestation (kind 3, bind payout) that includes the method and the evidence hash. Our attestor key can also freeze a binding (kind 4), but it can never redirect one: a freeze must name the address that is already bound. Details in the security model.