Skip to content

Pricing

X Bot is free for most communities. Heavier users have two paths — credit-card subscription (recurring; cheaper at any chat hitting roughly 1 000+ posts/month) or ETH credit pack (one-shot, never expires). They layer cleanly. 1 credit = 1 X post returned by the API.

TL;DR — start FREE (100 posts/month, no card). When you outgrow it: subscribe via Stripe ($19/month, first 1 000 posts free, then $0.02/post metered overage), or buy an ETH credit pack ($0.02/credit, packs from 1 000 to 100 000, never expire). The two layer cleanly — a chat can hold ETH credits and a Stripe subscription; per-fetch billing drains ETH credits first, then the subscription's monthly grant, then metered overage.

How buying works

The whole purchase flow lives inside Telegram. You never leave the bot to check pricing or balances.

From the chat

  1. Open /setup💳 Buy Credits.
  2. Tap 💰 Buy credits / upgrade.
  3. The bot replies with a payment-options card. The options shown depend on your current plan:
Current planOptions shown
FREEBoth — Stripe subscription or ETH credit pack
PRO · credits (existing ETH balance)Both — keep topping up via ETH, or layer a Stripe subscription on top (your ETH credits stay and are spent first per fetch)
PRO · subscription (existing Stripe sub)Card-management hand-off — already on the metered plan, no additional purchase needed
  1. Pick a path:

Path A — Stripe subscription (FREE chat → PRO subscription)

  1. Tap 💳 Pay with Credit Card.
  2. The bot creates a Stripe Checkout session and replies with a checkout-link button.
  3. Tap the button; Stripe Checkout opens in your browser.
  4. Enter card details, complete payment.
  5. Stripe redirects you back to Telegram (https://t.me/BWS_X_Bot?start=payment_success_<chatId>).
  6. Stripe's webhook fires the bot's activation handler within seconds — /setup → 💳 Buy Credits now shows PRO ✓ (subscription).
  7. The bot DMs the chat's designated admins confirming activation.

What you're billed:

  • $19 base every month while the subscription is active (charged on the first day of the next month, prorated thereafter).
  • $0.02 per post for every fetched post above 1 000 in the current month — Stripe-metered, added to that month's invoice.
  • The first 1 000 posts each month are included in the base — they're a free threshold, not a credit balance you can carry over.

Cancel any time/setup → 💳 Buy Credits → 🛠 Manage subscription opens the Stripe Customer Portal. Cancellation takes effect at the end of the current paid period; until then you stay PRO with the same metering rules.

Path B — ETH credit pack (FREE → PRO·credits, or PRO·credits → top up)

  1. Tap 🪙 Pay with ETH.

  2. The bot creates a short-lived purchase session and replies with a link button valid for ~15 min.

  3. Tap; opens xbot.ninja/buy-ethereum.html in your browser.

  4. Connect your wallet (MetaMask, WalletConnect, etc.).

  5. Pick a credit pack from the dropdown:

    Pack sizePrice (USD)
    1 000 credits$20
    2 000 credits$40
    3 000 credits$60
    4 000 credits$80
    5 000 credits$100
    10 000 credits$200
    50 000 credits$1 000
    100 000 credits$2 000
  6. The page quotes the equivalent in ETH at the current spot rate.

  7. Sign the transaction. Funds go to the BWS treasury contract on Ethereum mainnet.

  8. Once the on-chain confirmation lands, the backend grants the credits to your chat. Visible in /setup → 💳 Buy Credits as Credits remaining: <balance>.

What you're billed: nothing recurring. You pay once per pack, ETH is the only payment method.

Top up later: same flow — pick another pack from the same dropdown. Existing credits add to the new pack's amount. Credits never expire.

Path A and Path B layer cleanly

A chat can hold both at the same time. Per-fetch billing drains buckets in order:

  1. ETH credits first (atomic decrement of LICENSES.REMAINING_CREDITS).
  2. Subscription's monthly grant (1 000 free posts on PRO·sub).
  3. Stripe metered overage ($0.02/post above the grant).

If you have 5 000 ETH credits and you subscribe, the next 5 000 fetches consume credits (no Stripe charge); fetches 5 001–6 000 use the subscription's monthly grant; fetches 6 001+ are metered. The ETH balance survives the upgrade.

The one constraint that remains: a chat already on PRO·subscription can't add an ETH pack today (the buy flow blocks it). Cancel the subscription first if you need to switch to credits-only billing.

After purchase

Credit balance + plan visible at any time:

/setup → 💳 Buy Credits

💳 Buy Credits & Plan

Plan:               PRO ✓ (credits)
Credits remaining:  4 152
Total purchased:    5 000

[💰 Buy credits / upgrade]
[🛠 Manage subscription]
[📊 Usage this month]

(For Stripe subscription chats, the line shows Plan: PRO (subscription) ✓ with no credit balance — usage is metered, not debited from a stored count. 📊 Usage this month shows the running fetched_posts counter that drives the metering threshold.)

Plans at a glance

FREEPRO subscriptionPRO credits (ETH)
Recurring cost$0$19 / month$0
Per-post costn/a — hard cap at 100/month$0 first 1 000/month, $0.02/post above (metered)$0.02 / credit flat
Credit balancen/a — STATS counter onlyn/a — STATS counter + Stripe meterREMAINING_CREDITS ledger
Card requiredNoYes (Stripe checkout)No (ETH wallet)
Auto-renewn/aMonthly, cancel anytimen/a (one-shot)
Credits expireResets monthly to 100n/aNever
Behaviour at exhaustionBot pauses fetches; admin DMn/a (unlimited, just billed)Auto-downgrades to FREE; bot re-applies the 100/month cap
Best forTrial groups, small communities, solo KOLsSteady production communities, predictable monthly volumeBursty / one-off / crypto-native teams; credits as a non-expiring budget

Credit math, the honest version

A credit equals one X post returned by the API. If your filter pulls back 47 posts in a daily report, that's 47 credits debited (PRO·credits) or 47 posts ticked toward this month's threshold (PRO·sub) or toward the 100/month cap (FREE).

What counts:

  • Every distinct tweet returned by the X API call counts, even if it ends up off-topic and gets dropped post-fetch.
  • X Posts Auto-relay polls return 0 posts most ticks (free) and 1–10 on a tick where the user actually posted (one credit per forwarded post).
  • Quote tweets count: the X API has no exclude=quotes, so the bot fetches them and filters client-side. Saves chat noise but not credits.

What doesn't count:

  • Server-side exclude=retweets / exclude=replies — those posts never come back from the API, so they don't debit anything.
  • Failed fetches that 4xx before returning data.
  • Cached posts re-served by /setup → 📊 Reports → 📰 Show last report.

Sizing your monthly need

Common shapes:

ShapeVolumeBest plan
Solo-account portfolio, 1–2 posts/day~50 posts/monthFREE
Small community, 30 followers, mild $TOKEN traffic100–300FREE — or 1 000-credit ETH pack ($20) for an occasional spike month
5-KOL agency, daily 24 h reports + on-topic only800–1 500Edge of FREE → PRO·sub. If you regularly cross 1 000 → subscribe; if a one-off month → ETH pack
Big project, hashtag campaign, 50+ posters3 000–8 000PRO·sub: $19 + ($0.02 × ~5 000 over) ≈ $119/month — predictable
Heavy auto-relay (5 accounts × 5 posts/day × 30)750/month from relays aloneIf just relays: stay FREE if everything else is light. With reports too: PRO·sub.

When to choose which

Stay on FREE

  • Community has ≤ 100 on-topic posts/month.
  • Solo-KOL portfolio (one account, low cadence).
  • Evaluating the product with zero commitment.
  • Test/staging groups.

Move to PRO subscription ($19/month)

  • Steady production community — predictable monthly post volume.
  • Multiple campaigns or named filters running concurrently — easier to absorb spikes via metering than constantly buying ETH packs.
  • Active KOL agency — daily reports for many clients.
  • You'd rather not think about credit balances; "just bill me what I use".

Buy ETH credit pack

  • Bursty: a launch / contest / campaign window where you'll spike then quiet down.
  • One-off projects — buy 5 000 credits, use them across N months.
  • Crypto-native team that prefers on-chain payment, no recurring card auth.
  • Compliance / accounting requirement that disallows recurring card billing.
  • Non-expiring budget: credits bought today are still spendable a year from now.
  • Cap-bound contracts — "client capped this campaign at $400, no overage": buy a 20 000 pack, hard stop when the wallet's empty.

Billing FAQ

Q. Can I have both a Stripe subscription AND ETH credits on the same chat?Yes — they layer. A PRO·credits chat that subscribes via Stripe keeps its ETH balance; per-fetch billing drains the ETH balance first, then the subscription's monthly grant, then meters the rest. The one current constraint: a chat already on an active Stripe subscription can't add an ETH pack in the same flow (buy.mjs blocks the second purchase). Cancel the subscription first if you need to switch back to credits-only.

Q. What happens to my chat when PRO·credits hits zero? The license is automatically downgraded to FREE; the next fetch falls under the 100-posts/month cap (which still includes any FREE-tier counter for the current month). The bot then offers both Stripe and ETH options on the next /buy.

Q. What happens on PRO·subscription if I exceed 1 000 posts in a month? You're metered. Stripe receives a record_usage call for each post above the 1 000 threshold, and the next monthly invoice includes $0.02 × overage. There is no hard cap and no surprise pause — the bot keeps fetching and the bill grows.

Q. Are credits per-chat or per-user? Per-chat. Each Telegram group has its own balance and license. Adding the bot to a second group means a second FREE 100/month allowance.

Q. Can I share one subscription across multiple chats? No — each chat has its own Stripe customer + subscription.

Q. Do credits roll over month-to-month?

  • FREE: no, each month is fresh 100. Unused 100-tier credits don't accumulate.
  • PRO·subscription's 1 000 included: no — the threshold resets on your billing cycle.
  • ETH-purchased credits: yes, never expire. A pack bought in March still has its remainder in November.

Q. Bought credits, balance unchanged?

  • Stripe: webhook usually fires within seconds. If 5+ minutes later credits are still missing, contact support with your Stripe receipt + chat ID (/setup → ℹ️ About).
  • ETH: the on-chain confirmation can take 1–3 minutes. If after 10 min the credits don't show, contact support with the transaction hash + chat ID.

Q. Can I get a refund? For unused subscription time: yes, contact support — we'll prorate. For credit packs already partially consumed: case-by-case, but generally only when the bot was clearly malfunctioning. ETH purchases are non-refundable once the transaction confirms (the protocol doesn't reverse).

Q. The "lifetime paid" total in the admin doesn't match my receipts. Stripe groups payments differently for subscriptions vs charges. The admin sums successful charges + paid invoices. ETH purchases aren't included (they're tracked via the on-chain treasury, not Stripe). Refunds aren't subtracted (flagged separately). For an audit trail, use Stripe Dashboard → Customers → search by chat ID.

Q. I cancelled my subscription mid-month — when do I lose PRO? End of the current billing period. Stripe sets cancel_at_period_end: true; the bot's webhook reverts the license to FREE on the actual cancel event (customer.subscription.deleted), which fires at period end.

Q. Is there a free trial of PRO? The FREE plan is your trial. 100 posts/month is generous for evaluation; if you outgrow it during testing, the smallest ETH pack (1 000 credits = $20) is the cheapest path to extend.

Where to go next

X Bot Documentation