US sweepstakes casinos run on a legal loophole. Real-money online casinos are only legal in a handful of states, so these sites sell you “Gold Coins” that are worth nothing, and give away “Sweeps Coins” (SC) for free as a promotional sweepstakes. Sweeps Coins can be redeemed for cash, usually at 1 SC = $1. Because US sweepstakes law says you cannot require a purchase to enter, every one of these sites must hand out free SC: on sign-up, every day you log in, and to anyone who mails them a handwritten postcard.

The sites price this expecting you to buy Gold Coin packs and lose the free SC playing slots. A bonus farmer does the opposite: collect free SC on 30 or more sites, play it through once on the lowest-edge game allowed, and redeem whenever a balance crosses the cash-out minimum. No purchases, or only purchases that are mathematically positive.

It is a real grey area. The model itself is legally contested, several states have banned it outright since 2025, and every site bans multi-accounting. This guide covers the math, a Python tracker that turns 30 sites into a 25-minute daily routine, honest earnings (smaller than the YouTube thumbnails promise), and the risks.

Who this works for (read first)

  • US residents in states the sites still serve. Each site publishes a restricted-states list in its terms. In 2025, Montana, Connecticut, New Jersey, California (AB 831, effective 1 January 2026) and New York passed laws banning online sweepstakes casinos. In 2026 the wave continued: Tennessee (in force 22 May), Indiana (1 July), Maine (July), Louisiana (1 August) and Oklahoma (1 November 2026), while Iowa gave its regulator power to shut operators down. Washington, Idaho, Michigan and Nevada were already excluded by most operators. As of October 2026 that is roughly 14 states where you realistically cannot play, with bills moving in Pennsylvania, Virginia, Washington D.C. and elsewhere. Check every site list again before you sign up. If your state is restricted, stop here.
  • 18+ or 21+, depending on site and state.
  • Not for anyone outside the US. That includes Indonesia. Signing up over a VPN fails at the redemption KYC step (government ID, proof of US address, sometimes SSN), and when a site catches it they close the account and void the balance. Online gambling is also illegal under Indonesian law. The tracker code is fine to read; do not play.

How the money works

There are four sources of free SC, plus one kind of purchase worth making:

  1. No-purchase sign-up bonus. Usually a few SC plus a pile of Gold Coins, sometimes more on launch promos. One per person, household and device.
  2. Daily login bonus. Typically 0.2 to 1 SC per site per day, sometimes on a streak that resets if you miss a day.
  3. Mail-in requests (AMOE, “alternative method of entry”). The legally required free entry. You hand-write a request on a postcard or in an envelope following the exact format in the site sweepstakes rules, and they credit a few SC per valid request. The rules are strict: wrong card size, typed text or a missing code means zero.
  4. Social and email promos. Giveaways on Facebook, X, Discord and in promo emails. Small, but free.
  5. First-purchase offers. Some sites sell a first Gold Coin pack where the bundled free SC is worth more than the price (for example, a $10 pack that includes 20+ SC). Those are positive EV. Regular packs are roughly 1:1 and become negative once you play the SC through.

The playthrough

Free SC usually must be wagered 1x before it is redeemable. That means a 10 SC bonus needs 10 SC of bets. Your expected loss is the house edge times the amount wagered:

expected_cost = sc_wagered x (1 - RTP)
  • A 96% RTP slot: 10 SC playthrough costs 0.40 SC on average.
  • A 99% game (blackjack with basic strategy, or a 1% edge dice game where the site offers one and counts it toward playthrough): 0.10 SC.

So the playthrough costs you 1% to 4% of the bonus, not 50%. The real enemy is variance: with small balances you will often bust a 10 SC bonus to zero, and other times hit a 3x. Over hundreds of bonuses it averages out to the RTP. Bet small (1% to 2% of balance per spin), use the lowest-edge eligible game, and do not chase.

The cash-out minimum

This is where most of the friction is. Cash redemptions commonly need 50 to 100 SC in redeemable balance (some sites allow lower minimums for gift cards), and money cannot move between sites. Spreading dailies across 30 sites means each balance grows slowly. That is why you need a tracker: to know which sites are close to the threshold, and which are not worth the daily click.

Worked example: a site gives 0.5 SC/day plus a 5 SC sign-up and has a 100 SC cash minimum. Free SC alone takes about 190 days to reach 100. If you also send one mail-in request a week worth 4 SC, that drops to roughly 90 days. If the minimum is 50 SC as well, it is about 42 days. The tracker below does this math for every site and ranks them.

What you need

ItemCostNotes
US residency in an eligible state-Check every site restricted-states list
Government ID, proof of addressFreeNeeded for KYC before your first redemption
A dedicated email addressFreePromo emails are a source of SC; keep them out of your main inbox
Bank account or crypto walletFreeRedemption method depends on site (ACH, Skrill, gift cards, some sites crypto)
Python 3.10+FreeStandard library only, no pip installs
Telegram botFreeCreate with @BotFather for the daily digest
Postcards and stamps (optional)about $0.70 to $1 per requestSince 12 July 2026 USPS charges $0.65 for a postcard stamp and $0.82 for a Forever (letter) stamp; use whichever format the site rules require
Starting bankroll$0 to $200$0 for pure free play; up to $200 if you take positive-EV first-purchase offers

Operators to look at (all run SC promos at time of writing; availability changes by state, so verify): Chumba Casino, LuckyLand Slots and Global Poker (all VGW), Stake.us, Pulsz, McLuck, WOW Vegas, High 5 Casino, Crown Coins, Fortune Coins and Modo. Several of these pulled out of individual states in 2026 (High 5 and Modo left Indiana, Pulsz left Maine, for example), so a brand being “available” says nothing about your state. Reported cash minimums vary: about 100 SC at Chumba, Pulsz and High 5, 75 SC at McLuck, 50 SC at WOW Vegas, Crown Coins and LuckyLand, and a variable crypto minimum at Stake.us. Confirm in each cashier, they change. Aggregator sites and sweepstakes communities on Reddit and Discord keep running lists of new launches and current sign-up offers. New sites launch often and usually have the biggest sign-up bonuses, but also the highest risk of slow or failed payouts.

Step 1: Sign up the boring, correct way

One account per site, in your own legal name, at your real address, from your home IP, on your normal device. Complete KYC before you have a balance worth caring about; some sites take days to verify, and it is better to find out a site will not verify you when you have 5 SC there, not 95.

Read three things in each site terms and write them down (the tracker needs them): the cash redemption minimum, the playthrough multiple for free SC (usually 1x), and which games count toward playthrough. Also note how many days unplayed SC can sit before it expires; many sites expire SC after a period of account inactivity.

Step 2: The tracker

Save as sweeps.py. It keeps every site in SQLite, logs claims and balances, ranks sites by days to cash-out, and sends a Telegram digest.

#!/usr/bin/env python3
"""Track sweepstakes casino bonuses: daily claims, balances, days to cash-out."""
import os
import sqlite3
import sys
import webbrowser
from datetime import date
from urllib.parse import urlencode
from urllib.request import urlopen

DB = os.path.join(os.path.dirname(os.path.abspath(__file__)), "sweeps.db")
TG_TOKEN = os.getenv("TG_TOKEN")
TG_CHAT = os.getenv("TG_CHAT")


def db():
    con = sqlite3.connect(DB)
    con.execute("""CREATE TABLE IF NOT EXISTS sites (
        name TEXT PRIMARY KEY, url TEXT, daily REAL, mailin_week REAL,
        min_redeem REAL, balance REAL DEFAULT 0, active INTEGER DEFAULT 1)""")
    con.execute("""CREATE TABLE IF NOT EXISTS claims (
        day TEXT, name TEXT, sc REAL, kind TEXT)""")
    return con


def add(name, url, daily, mailin_week, min_redeem):
    with db() as con:
        con.execute("INSERT OR REPLACE INTO sites (name, url, daily, mailin_week, min_redeem)"
                    " VALUES (?, ?, ?, ?, ?)",
                    (name, url, float(daily), float(mailin_week), float(min_redeem)))


def claim(name, sc, kind="daily"):
    with db() as con:
        con.execute("INSERT INTO claims VALUES (?, ?, ?, ?)",
                    (date.today().isoformat(), name, float(sc), kind))
        con.execute("UPDATE sites SET balance = balance + ? WHERE name = ?", (float(sc), name))


def balance(name, sc):
    """Set the real balance after playing through or redeeming."""
    with db() as con:
        con.execute("UPDATE sites SET balance = ? WHERE name = ?", (float(sc), name))


def unclaimed_today(con):
    today = date.today().isoformat()
    rows = con.execute("SELECT name, url FROM sites WHERE active = 1").fetchall()
    done = {r[0] for r in con.execute(
        "SELECT name FROM claims WHERE day = ? AND kind = ?", (today, "daily"))}
    return [(n, u) for n, u in rows if n not in done]


def ranking(con):
    out = []
    for name, daily, mailin, minr, bal in con.execute(
            "SELECT name, daily, mailin_week, min_redeem, balance FROM sites WHERE active = 1"):
        per_day = daily + mailin / 7
        left = max(minr - bal, 0)
        days = 0 if left == 0 else (left / per_day if per_day else float("inf"))
        out.append((days, name, bal, minr, per_day))
    return sorted(out)


def report():
    con = db()
    lines = ["SWEEPS DIGEST " + date.today().isoformat()]
    todo = unclaimed_today(con)
    lines.append(f"Unclaimed dailies: {len(todo)}")
    total = 0.0
    for days, name, bal, minr, per_day in ranking(con):
        total += bal
        flag = "REDEEM NOW" if days == 0 else f"{days:.0f}d to cash-out"
        lines.append(f"{name}: {bal:.2f}/{minr:.0f} SC, +{per_day:.2f}/day, {flag}")
    month = con.execute("SELECT COALESCE(SUM(sc), 0) FROM claims WHERE day >= ?",
                        (date.today().replace(day=1).isoformat(),)).fetchone()[0]
    lines.append(f"Total SC across sites: {total:.2f} | claimed this month: {month:.2f}")
    return "\n".join(lines)


def send(text):
    if TG_TOKEN and TG_CHAT:
        urlopen(f"https://api.telegram.org/bot{TG_TOKEN}/sendMessage",
                data=urlencode({"chat_id": TG_CHAT, "text": text}).encode(), timeout=20)
    print(text)


def open_all():
    """Open every unclaimed site in your normal browser. You click the bonus yourself."""
    for name, url in unclaimed_today(db()):
        webbrowser.open_new_tab(url)


if __name__ == "__main__":
    cmd, args = sys.argv[1], sys.argv[2:]
    {"add": add, "claim": claim, "balance": balance,
     "report": lambda: send(report()), "open": open_all}[cmd](*args)

Load your sites with the numbers you wrote down in step 1 (the values below are placeholders, use what each site actually gives you):

mkdir -p ~/sweeps && cd ~/sweeps   # put sweeps.py here
python3 sweeps.py add Chumba https://www.chumbacasino.com 0.3 0 100
python3 sweeps.py add StakeUS https://stake.us 1.0 0 50
python3 sweeps.py add Pulsz https://www.pulsz.com 0.3 4 100
python3 sweeps.py add McLuck https://www.mcluck.com 0.3 0 75
python3 sweeps.py claim Pulsz 5 signup
python3 sweeps.py report

Step 3: The daily routine (about 25 minutes for 30 sites)

  1. python3 sweeps.py open opens a tab for every site you have not claimed today.
  2. In each tab, click the daily bonus, then log it: python3 sweeps.py claim McLuck 0.3.
  3. Any site whose redeemable balance is above the minimum: play it through if needed, redeem, then python3 sweeps.py balance McLuck 0.
  4. Once a week: write mail-in requests for the sites where they pay, and log them when they are credited (claim Pulsz 4 mailin).

Put the digest on cron so you get a Telegram message every morning. Cron needs the environment, so use a small wrapper ~/sweeps/run.sh:

#!/bin/sh
export TG_TOKEN="123456:ABC..." TG_CHAT="your_chat_id"
python3 "$HOME/sweeps/sweeps.py" report >> "$HOME/sweeps/run.log" 2>&1

Then chmod 700 ~/sweeps/run.sh and add 0 8 * * * /home/you/sweeps/run.sh with crontab -e.

Why the bot does not click the bonus for you: auto-claim scripts with Playwright or Selenium are easy to write, and that is exactly why sites look for them. Nearly every sweepstakes site prohibits “automated means” in its terms, and the penalty is account closure plus a voided balance, usually discovered at redemption time when the stakes are highest. Clicking a button yourself costs seconds per site. Automate the tracking, the math and the reminders, not the clicking.

Honest cost breakdown

CostMonthlyNotes
Tracker, Telegram, Python$0Runs on any PC
Mail-in requests$0 to $40About $0.70 to $1 each; only worth it where a request pays 3+ SC
Playthrough losses1% to 4% of SC playedLower on 99% RTP games, higher on slots
First-purchase offers$0 to $200 onceOnly the ones where bonus SC exceeds the price
Your time12 to 20 hoursAbout 25 minutes a day plus weekly mail-ins and redemptions

Realistic earnings

Nobody publishes verified data on this, so these are scenarios built from the math above, not promises:

  • The sign-up haul (one-time): 30 sites, each with a few free SC, plus a handful of positive-EV first-purchase offers. A plausible result is $100 to $400 over the first two to three months, after variance and minus what you spent on offers. Much of it sits below cash-out minimums for a while, and some never gets there.
  • The daily grind (ongoing): 30 sites averaging 0.4 SC/day is 12 SC/day, about 360 SC/month on paper. After missed days, busts, sites that leave your state and balances stuck below the minimum, a more realistic cash result is $150 to $300/month. Mail-ins and social promos can add to that, at the cost of more time and postage. Many daily bonuses are closer to 0.2 SC than 0.4, which halves these numbers.
  • The real scale play is not farming, it is referrals and affiliate traffic. Most sites pay SC for referred friends who buy, and sweepstakes affiliate programs pay per depositing customer. The people posting big-income screenshots usually run comparison sites, YouTube channels and Discords that send sign-ups, not farm bonuses. That is a content business with its own rules (FTC disclosure, platform bans on gambling-adjacent ads, geo-targeting only eligible states), it takes months to build, and it carries its own legal risk: Louisiana’s 2026 law explicitly reaches affiliates, not just operators.

Translated honestly: farming is roughly a $150 to $300/month side income for about 15 hours a month, which is $10 to $20/hour, and the number of states where you can do it shrank every quarter of 2026. Fine as a side hustle, not life-changing. If someone sells you “$5k/month from sweeps bonuses” with no audience behind it, they are earning from your referral sign-up.

Risks: what can actually go wrong

State bans and sudden exits. This is the biggest risk. When a state bans sweepstakes casinos, operators geo-block it, sometimes with a few days or weeks notice. Redeem balances regularly instead of letting them pile up, and do not sit on 90 SC at a site that has announced it is leaving your state.

Account closure and voided balances. Multi-accounting (a second account for your partner on the same device, IP or bank account), VPNs, bonus-only behavior on some sites, and automation all trigger closures. Sites can and do void “bonus abuse” balances. One person, one account, own details, every time. That is the line between grey area and fraud: creating fake or borrowed identities to farm extra sign-up bonuses is no longer a loophole.

Slow or failed payouts. Established operators generally pay within days. New launches sometimes delay redemptions for weeks, demand repeated KYC, or shut down. Cash out at the first opportunity on new sites and keep the balance low.

Legal status. The sweepstakes model relies on the “no purchase necessary” rule. Several states and class-action lawyers argue it is illegal gambling, and the law is changing fast. Players have generally not been the target of enforcement, but you are relying on a legal theory that is actively being dismantled state by state.

Taxes. SC redemptions are taxable income in the US from the first dollar. For 2026, sites issue a 1099-MISC once your prizes from that site pass $2,000 in the year (raised from $600 by the 2025 One Big Beautiful Bill Act). Below that you get no form but the income is still taxable; report it either way. The tracker claims table is your record.

Getting hooked. These sites are built to turn free players into buyers. If you notice yourself buying regular Gold Coin packs “to keep a streak going”, you have become the customer. Turn on purchase limits in each site responsible-gaming settings on day one.

Reality check: what does not work

  • Buying regular packs to “boost” farming. A 1:1 pack played through at 96% RTP loses money on average. Only buy offers where the free SC is clearly worth more than the price.
  • Big bets to hit the minimum faster. Betting 20% of your balance per spin turns a 1% to 4% cost into a high chance of busting to zero. Small bets, every time.
  • Playing on games that do not count. Some sites exclude table games or low-edge originals from playthrough. Read the rules, or you play through twice.
  • Ignoring expiry. SC on inactive accounts expires. A site you stop visiting can quietly wipe your balance.
  • Sloppy mail-ins. Typed text, the wrong envelope size or a missing request code gets you nothing. Follow the format exactly.
  • Farming 80 sites. Past 30 to 40, the extra sites give 0.2 SC/day each and add minutes to every session. Cut sites that are 300+ days from cash-out.

Start today

  1. Check your state against the restricted-states list of five big operators. If you are excluded, stop.
  2. Sign up on five established sites, complete KYC, and write down the minimum, playthrough rules and eligible games for each.
  3. Save sweeps.py, add your sites, and put the morning digest on cron.
  4. Claim dailies every day for 30 days, logging every claim. Add five more sites per week up to about 30.
  5. After a month, look at the claims table: cut the sites that are not worth the click, and redeem from the first one that crosses its minimum. That first cash-out proves the whole loop works for you.