ChainPass Documentation

Everything you need to know to sell — and buy — access to Telegram channels with on-chain crypto payments. If anything is unclear, open @ChainPassBot and tap 📩 Support.

Introduction

ChainPass is a non-custodial crypto payment gateway for private Telegram channels. It lets a channel owner sell subscriptions (weekly, monthly, lifetime — any duration) that are paid on-chain and delivered automatically.

Three principles drive the design:

  • Non-custodial. Buyers pay directly to the owner's wallet. ChainPass watches the blockchain to confirm the payment; it never holds, forwards or freezes anyone's funds.
  • Fully automatic. Invoicing, payment matching, invites, renewal reminders, expiry removal, referrals and support tickets all run inside the bot with no manual work.
  • Transparent. Service fees are simple (see Fees), collected on-chain to public treasury addresses anyone can audit, and never billed as an invoice to the owner.

The whole product lives in one Telegram bot: @ChainPassBot. There is no web dashboard to sign up for and no API keys to manage.

Quick start — sellers

You need: a private Telegram channel you administer, and a wallet address to receive payouts. Setup takes about two minutes.

1. Start the wizard

Open @ChainPassBot and send /sell.

2. Connect your channel

Add the bot as an administrator of your private channel with at least these permissions:

  • Invite users via link — so paid members receive their one-time invite
  • Ban users — so expired members can be removed

The wizard verifies the admin rights automatically and moves on.

3. Set your payout wallet

Paste the address where you want to be paid — an EVM address (0x…) to sell on Ethereum, Base, BNB Smart Chain and Robinhood Chain, or a Solana address to sell in SOL. Every sale is sent by the buyer directly to this address — double-check it. You can change it later from your dashboard.

4. Choose networks

Pick which networks you accept (see Supported networks). You can enable one or several — the list shows the networks compatible with your payout address.

5. Define your plans

Enter plans as <days> <usd> pairs, one per line, using life for lifetime:

7 15
30 40
life 75

That creates a $15 weekly, a $40 monthly and a $75 lifetime plan. Prices are set in USD; buyers pay the equivalent in crypto at the live market rate when the invoice is created.

6. Share your sale link

The wizard gives you a personal link in the form:

https://telegram.me/ChainPassBot?start=c_<your-slug>

Anyone who opens it lands on your channel's sales page with your plans and can pay immediately. Put it in your channel bio, pinned messages, ads and cross-promos.

Tip: pause sales at any time from your dashboard (buyers see the channel as unavailable), and resume with one tap. Existing subscriptions are unaffected.

Quick start — buyers

Buying access takes under a minute:

  1. Open the channel's sale link (or send /buy in the bot if you've visited it before).
  2. Pick a plan. You'll see the price in USD and the exact crypto amount at the current rate.
  3. Pick a currency & network — the chain's native coin (ETH, BNB, SOL) at the live rate, or a USDT / USDC stablecoin for a fixed dollar amount with zero volatility.
  4. Choose a payment method✅ Wallet payment if you're sending from your own wallet, or 🏦 CEX payment if you're withdrawing from an exchange like Binance or Bybit. Details in Payment methods.
  5. Send the shown amount to the shown address on the shown network. Sending on a different network means the funds are lost — always check.
  6. Get your invite. As soon as the transaction is confirmed on-chain, the bot sends you a one-time invite link to the channel. This is usually a matter of seconds after confirmation.

After buying, use /status to see your plan, expiry date and a one-tap 🔄 Renew button, and /ref to get your referral link (see Referral program).

Important: each invoice is valid for 6 hours. If it expires, just start again — a new invoice with a fresh rate will be generated. Never reuse an amount or address from an old expired invoice.

Plans & limits

LimitValue
Plans per channel6 — any mix of durations, e.g. 7d / 30d / 90d / lifetime
Channels per owner5 (unlimited with No-Fee Lifetime)
Plan pricingAny USD amount; converted to crypto at live market rate per invoice
Plan durationAny number of days, or life for lifetime
  • Renewals extend. Buying again before expiry adds the new period on top of the remaining days — subscribers never lose time by renewing early.
  • Lifetime is forever. A lifetime subscription never expires and is never downgraded, even if the member later buys a shorter plan.
  • Editable any time. Change plan names, durations and prices from your dashboard; changes apply to new purchases only.

Owner dashboard

Send /mychannels and pick a channel to open its dashboard. From there you can:

  • 📈 Analytics — revenue over 7d / 30d / all-time, active & lifetime subscribers, upcoming expirations, churn, renewals vs new sales, and the sales mix per plan.
  • 📥 Export CSV — download your full subscriber list (plan, expiry, total paid) as a spreadsheet-ready CSV, from Analytics or Subscribers.
  • 💎 Edit plans — add, change or remove plans (same days usd format as the wizard).
  • 👛 Edit wallet — update your payout address. Applies to all new invoices immediately.
  • 🎁 Grant — give a user free access for N days (or lifetime) without a payment — useful for mods, promos and giveaways.
  • 👥 Subscribers — list of active subscribers with plan and expiry.
  • 📣 Broadcast — message all your subscribers (see Broadcasts).
  • 🛒 Stop / start new sales — hide your sales page so nobody new can subscribe. People who already paid are not affected: they keep their access and their days keep counting down.
  • 🏖 Freeze / unfreeze subscribers — the opposite side: your sales page stays open, but the clock stops for everyone who already paid (see Holiday mode).
  • 📩 Support contact — choose who receives your buyers' support tickets (see Support system).
  • 💸 Fees — your current fee rate, accrued balance, and the No-Fee Lifetime upgrade.

Your sales page

When someone opens your channel's link they land on a page with your text on top and your plans below. You write that text from the dashboard: 📝 VIP page text. Prices, network and the plan buttons are added underneath automatically — you only write the part that convinces people.

Formatting and links

Format the message the way you normally would in Telegram: select a few words and make them bold, italic or a link. It carries over to the page as-is — you never type any code.

Links are the tidy way around the length limit: instead of explaining every payment method on the page, write “Complete payment guide” and point it at a post in your own channel.

Link addresses don’t count towards the 1200-character limit — only what your buyers actually read. A long channel URL never eats your space.

For safety only text formatting and normal links (https:// and tg://) are kept; anything else is shown as plain text.

Right after you save, the bot shows you the finished page exactly as buyers will see it. Not happy? Send it again, or reset it to go back to the standard layout.

Broadcasts

From your dashboard you can send a message to every subscriber of your channel — announcements, renewal promos, migration notices. You'll see a preview and a confirmation step before anything is sent, and a delivery report when the broadcast finishes.

Broadcasts go to people who bought (or were granted) access through ChainPass — the bot can only message users who have started it, which every buyer has.

Support system

ChainPass includes a per-channel ticket system so buyers never have to hunt for the right person to DM.

For buyers

Tap 📩 Support in the menu (or send /support), pick which channel your question is about — or "ChainPass bot" for platform questions — and type your message. You'll get the reply right in the bot, marked "Reply from … support".

For owners

By default, tickets about your channel come to you as a DM from the bot, with a one-tap ✍️ Reply button. You can delegate this: in the dashboard, set 📩 Support contact to any teammate (by @username or ID — they must have started the bot once). Platform-level questions are handled by the ChainPass team.

Payment methods

Every invoice offers two ways to pay. Both end the same way — an on-chain transfer to the owner's wallet — but they're matched differently, so pick the one that matches how you're actually sending:

Stablecoins supported. On every network you can pay in the native coin or in USDT / USDC (Base: USDC). Stablecoin invoices are denominated 1:1 in dollars — what you see is what you send, no exchange-rate movement. The token transfer is detected on-chain like any native payment and goes straight to the owner's wallet.

✅ Wallet payment

For payments sent from a wallet you control (MetaMask, Rabby, Trust, hardware wallets, …).

  • Send the shown amount from your own address.
  • A small tolerance (±0.3%) absorbs rounding, so minor precision differences are fine.
  • Matched by amount and timing against the invoice; the closest matching transfer wins.

🏦 CEX payment

For withdrawals sent directly from an exchange (Binance, Bybit, OKX, …), where you can't control the sending address.

  • The invoice shows a unique exact amount (the last decimals are specific to your invoice).
  • Withdraw exactly that amount — the unique amount is how the payment is attributed to you, since exchange withdrawals come from shared addresses.
  • If your exchange charges the withdrawal fee on top (most do), you're fine. If it deducts the fee from the amount, add the fee so the received amount is exact.
Network matters. The invoice states which network to use. Sending the right coin on the wrong network cannot be detected or recovered — those funds are lost. This is especially easy to get wrong with ETH, which exists on Ethereum, Base and Robinhood Chain: always send on the exact network the invoice shows. Every payment page repeats this warning for a reason.

Matching & timing

  • The bot scans new blocks continuously while any invoice is pending; confirmation-to-invite is typically seconds.
  • Invoices expire after 6 hours. Payment method is locked once chosen — if you picked CEX but want to pay from a wallet (or vice versa), start a fresh purchase instead of reusing the old invoice.
  • Creating a new invoice for the same channel cancels your previous pending one, so you can safely restart.

Supported networks

NetworkCurrenciesStatusExplorer
EthereumETH · USDC · USDT✅ Live etherscan.io
BaseETH · USDC✅ Live basescan.org
BNB Smart ChainBNB · USDT · USDC✅ Live bscscan.com
Robinhood ChainETH · USDC · USDT✅ Live explorer.mainnet.chain.robinhood.com
SolanaSOL · USDC · USDT✅ Live solscan.io

Owners choose which networks each channel accepts; a network's stablecoins are available automatically — tokens arrive at the same payout wallet, nothing extra to configure. The network family follows your payout address: an EVM wallet (0x…) sells on the EVM networks, a Solana wallet sells on Solana. Prices are always set in USD: native-coin amounts are computed at the live market rate when the invoice is generated, stablecoin amounts are simply the USD price 1:1 — either way, neither side carries exchange-rate risk during the payment window.

Stablecoin invoices only match the exact canonical USDT/USDC contract of that chain (the token contract is shown on the payment page). Look-alike tokens with the same ticker from other contracts are ignored.

Subscription lifecycle

  1. Purchase confirmed → the buyer receives a one-time invite link and joins the channel. The owner gets a sale notification.
  2. Active → the buyer can check plan and expiry with /status, renew any time (renewals extend the current expiry), and open support tickets.
  3. 3 days before expiry → automatic reminder with a renew button.
  4. 1 day before expiry → final reminder.
  5. Expiry → if not renewed, the member is automatically removed from the channel. They can come back any time by buying again.
  6. If the channel goes on a break → the clock stops for everyone and the missed days are given back (see Holiday mode).

Lifetime subscriptions skip steps 3–5: they never expire and are never removed.

Holiday mode

Channels go quiet sometimes — holidays, illness, a week off. Without protection, subscribers keep burning days they paid for while nothing is being posted. Holiday mode stops that.

For owners

In your dashboard, tap 🏖 Holiday mode. From that moment, for every non-lifetime subscriber of that channel:

  • nobody expires and nobody is removed from the channel;
  • no renewal reminders are sent;
  • everyone is told the channel is on a break and their time is safe.

When you come back, tap ▶️ End holiday. Every frozen subscription has its expiry pushed forward by exactly the number of days the channel was on hold, and each subscriber gets a message telling them how many days they got back.

It resumes on its own. If you forget to end it, holiday mode lifts automatically after 30 days — so nobody stays frozen forever, and no more than 30 days are ever given away in one break.

Details worth knowing

  • Lifetime subscriptions are untouched — they never expire anyway.
  • Someone who subscribes during the break is credited only from the day they joined, not for the whole break.
  • It is not automatic. Only the channel owner decides when a break starts and ends: many channels post rarely by design, so "no posts" is not a reliable signal for a machine to act on.

The two switches, side by side

Your dashboard has two switches that sound similar and do opposite things. They sit next to each other, and each one names who it affects:

🛒 Stop new sales🏖 Freeze subscribers
Who it affectsPeople who have not paid yetPeople who already paid
Sales pageHidden — nobody can buyStill open — buyers can subscribe
Existing subscribersUntouched — their days keep counting downClock stopped — days are given back
Use it whenYou are full, retiring the channel, or reworking your plansYou are away and not posting
Freezing asks you to confirm first, and tells you how many subscribers it will affect — because it also sends each of them a message.

Buyers can see this at any time in 📊 My Access: a frozen subscription is marked “Frozen — channel on a break” with the number of days that will be returned.

Custom notifications

ChainPass sends your subscribers a handful of automatic messages. By default they are in English; you can rewrite any of them in your own language, per channel. Dashboard → 🌐 Notifications.

What you can customise

  • Payment confirmed — sent the moment a purchase clears.
  • Access granted — when you hand someone access yourself.
  • Reminder, 3 days and Reminder, under 24h — renewal nudges before expiry.
  • Access expired — when a subscription lapses.
  • Channel paused and Channel back — the holiday-mode freeze and resume.

These are the only messages that carry your voice to your buyers. The bot's own menus, buttons and error messages stay in the shared interface language and are not part of this — a channel is not a place to redefine the whole app.

Placeholders

Some messages include values the bot fills in at send time, written in curly braces:

PlaceholderBecomes
{channel}your channel's name
{expiry}the access-until date
{plan}the plan name
{days}days credited back after a holiday

Not every message gets every placeholder. {plan} only exists on Payment confirmed; {expiry} on Payment confirmed and Access granted; {days} only on Channel back. Used where it doesn’t belong, a placeholder would reach your subscribers as literal text — so the editor refuses it and tells you which ones are available in that message.

Keep the required placeholders in your text — the editor refuses to save a message that drops one, so a reminder can never go out missing its channel name or a holiday-resume without the day count. Leave a message untouched to use the English default, and reset any customised one back to default at any time.

Right after you save, the bot shows you a preview of the message filled in with example values, so you see exactly what your subscribers will get.

Referral program

Every user has a personal referral link, available via /ref. When someone joins through it and buys:

  • the referrer earns +7 days on their own subscription;
  • the new user gets +3 bonus days on the plan they buy.

How often the +7 days are paid

Every purchase, with no cap. The 7 days are paid per purchase — not once per person and not once per month. If someone you referred is on a weekly plan and renews every week, you receive +7 days every week, for as long as they keep renewing. It stacks across people too: two referrals buying in the same week is +14 days.

The +3 days for the new user work differently: that one is a welcome bonus, paid only on their first purchase.

Where the days go

  • If you have an active subscription to the channel they bought, the 7 days are added to it straight away and you get a message.
  • If you don't have one there — or your access to that channel is lifetime — the days are banked and applied automatically to your next purchase. Nothing is lost either way.

Bonus days only apply to time-based plans: a lifetime plan never expires, so there is nothing to extend — which is why those days are banked instead.

For owners this is free, built-in growth: your existing subscribers are rewarded for bringing in new paying members, and the bonus days cost you nothing in fees.

Fees & No-Fee Lifetime

The price list

PlanCostNotes
Standard3% per sale+1% for each additional active channel under the same owner (e.g. 2 channels = 4% on each sale)
No-Fee Lifetime$250 one-time0% forever, unlimited channels, wipes any outstanding fee balance

There are no monthly costs, setup costs or minimums. Buyers never pay extra — the fee is on the seller's side only.

How fees are collected — you're never billed

Because ChainPass is non-custodial, we can't (and don't want to) skim each payment. Instead:

  1. Each sale accrues its fee (e.g. 3% of $40 = $1.20) to your fee balance. Nothing is charged; the full sale went to your wallet.
  2. When your accrued balance grows to cover the price of a plan a buyer is purchasing, that single sale is routed to the ChainPass treasury instead of your wallet.
  3. The buyer's experience is identical — they pay, they get access. You receive the usual sale notification, marked "collected by ChainPass", and your balance is settled (any overshoot is credited back against future fees).

Net effect: over time you keep 97% of revenue (at the 3% rate) without ever receiving an invoice, sending a payment, or having funds pass through a third party.

You can see your current rate, accrued balance and full history any time with /fees or from My channels → 💸 Fees.

No-Fee Lifetime

A one-time $250 payment (in crypto, to the treasury) that permanently sets your fee rate to 0%, removes the 5-channel limit, and clears any accrued fee balance. If you're doing steady volume, it typically pays for itself within weeks. Upgrade from the /fees page.

Treasury transparency

All ChainPass service revenue — fee settlements and No-Fee Lifetime purchases — lands on fixed, public treasury addresses. Nothing else ever touches them: owner payouts go directly from buyer to owner and never pass through the treasury. That means anyone can audit exactly what ChainPass earns, on-chain, at any time.

EVM Treasury

Ethereum Base BNB Smart Chain Robinhood Chain
0x757B188cfA96E2Ea40Bf61c21884aae602ECAea6

Solana Treasury

Solana
FoPD7UELNPnsVXXtiP7GiXruE2J56ddseXj6yzh2ctUU
Verify, don't trust: when a fee-settlement sale is routed to the treasury, the payment address on the buyer's invoice is one of the addresses above — you can check it yourself in real time. Any other address is not ChainPass.

Command reference

CommandWhoWhat it does
/startEveryoneOpen the main menu (or a channel's sales page via a c_… link)
/menuEveryoneBack to the main menu from anywhere
/buyBuyersReopen the last sales page, or pick among your subscribed channels
/statusBuyersYour subscriptions: plan, expiry, renew buttons
/refEveryoneYour referral link and bonus stats
/sellOwnersConnect a new channel (guided wizard)
/mychannelsOwnersDashboards for your connected channels
/feesOwnersFee rate, accrued balance, No-Fee Lifetime upgrade
/supportEveryoneOpen a support ticket
/helpEveryoneShort built-in guide
/cancelEveryoneAbort the current wizard/input

Troubleshooting

"I paid but didn't get the invite"

  • Check you sent on the network shown in the invoice — right coin, wrong network is the #1 cause and is unrecoverable.
  • CEX method: the received amount must be exact. If your exchange deducted its withdrawal fee from the amount, the payment can't match — contact support with your transaction hash.
  • Wallet method: amounts far outside the ±0.3% tolerance won't match automatically — contact support with the tx hash.
  • If the invoice expired (6 h) before you paid, contact support with the tx hash; payments are kept on record for matching review.

"The invite link doesn't work"

Invite links are one-time. If it was consumed or expired before you joined, open /status and contact support — access can be re-issued since your subscription is already active.

"My buyers pay but don't get invited" (owners)

Almost always: the bot lost (or never had) admin rights in your channel. Re-add it as admin with invite users + ban users permissions.

Anything else

Tap 📩 Support in the bot — tickets about a channel go to that channel's team, platform questions go to ChainPass staff.

What's new

Everything we ship to the bot — newest first. Dates are the day the change went live. Everything listed here is already running; this is not a roadmap.

August 2026

26 Aug 2026New

Links in your sales page

Your VIP page text can now carry links — and you don't write any code for it: format the message the normal Telegram way, select a few words, add the link. So “Complete payment guide” can point straight at a post in your own channel instead of cramming every payment method onto the page. Bold, italic and code work the same way. Link addresses don't count towards the 1200-character limit, only what buyers actually read — a long URL never eats your space. Your sales page.

25 Aug 2026Fixed

The notification editor no longer lets you break a message

A placeholder only works in the messages that actually carry that value — {plan}, for instance, exists on Payment confirmed but not on Access granted. Used in the wrong message it reached subscribers as literal text, and the preview didn't reveal it: it filled in every placeholder regardless of the message. Now the editor refuses a placeholder the message never receives and tells you which ones are available there, and the preview fills in only what will really arrive — what you see is what your subscribers get. Custom notifications.

21 Aug 2026New

Notifications in your own language

The automatic messages your subscribers receive — payment confirmed, renewal reminders, expiry, the holiday freeze and resume — can now be rewritten by you, in any language. In the dashboard tap 🌐 Notifications, pick a message, and type your own version; leave one untouched to keep the English default. Placeholders in curly braces like {channel}, {expiry} and {days} are filled in automatically, and the editor won't let you save a message that drops a required one. How it works.

20 Aug 2026New

Holiday mode — your subscribers stop losing days when you go quiet

Channels take breaks: holidays, illness, a week off. Until today the clock kept running, and people burned days they had paid for while nothing was posted. Now an owner can tap 🏖 Freeze subscribers in the dashboard: nobody expires, nobody is removed, no renewal reminders go out, and every subscriber is told their time is safe. When you come back, each subscription is pushed forward by exactly the days you were away — and each person gets a message saying how many days they got back. It lifts on its own after 30 days if you forget, so nobody stays frozen forever. The two dashboard switches now sit side by side and each says who it affects — 🛒 Stop new sales is about people who haven't paid yet, 🏖 Freeze subscribers about the ones who have. Lifetime subscriptions are untouched, and anyone who joins mid-break is credited only from the day they joined. How it works.

15 Aug 2026New

USDG accepted on Robinhood Chain

Buyers on Robinhood Chain can now pay in USDG (Global Dollar) as well as USDC and USDT. It's the stablecoin most people actually hold on that chain, so it should have been there from the start — it is now, and payments sent in it confirm like any other.

15 Aug 2026Improved

Payments confirm the moment they land

Until now we asked each network every few seconds whether anything had arrived. Now the networks tell us: incoming transfers are pushed to ChainPass as they happen, so an invoice can clear in the same breath the transaction confirms. The old checks still run underneath as a safety net — if a notification is ever missed, the payment is still found, exactly as before.

02 Aug 2026Improved

Shorter, clearer payment window

Invoices now give 10 minutes when the buyer pays from their own wallet and 1 hour when they pay from an exchange, and the countdown starts when the payment method is chosen — not before. Transfers that land after the window are still matched behind the scenes, so a slow exchange withdrawal doesn't cost anyone the sale.

01 Aug 2026Fixed

Stablecoin payments on every EVM network

Our node provider started rejecting the log queries we used to spot token transfers, which made USDT/USDC payments invisible on the EVM chains. Detection moved to a different provider and stablecoin invoices confirm normally again.

July 2026 — the first month

22 Jul 2026New

Automatic removal at expiry

When a subscription ends, the member is now removed from the channel automatically — and can rejoin the moment they renew. Owners can leave it off if they'd rather handle expirations by hand.

14 Jul 2026Fixed

Invite links repaired

Telegram's short link domain stopped resolving, which broke the one-time invites the bot hands out after a payment. Every link the bot generates was migrated to the long domain.

13 Jul 2026Fixed

Native payments on Robinhood Chain

Payments in the chain's native coin could be missed while the node lagged behind the explorer, leaving a paid invoice pending. The scanner now reads those transfers from the explorer directly — same-block detection, no more waiting.

12 Jul 2026Improved

Stablecoins matched by contract, not by name

Explorers are full of memecoins that call themselves "USDC". ChainPass only accepts the verified contract addresses of the stablecoins it supports, so a lookalike token can never be mistaken for a real payment.

11 Jul 2026Launch

ChainPass goes live

The first channels went on sale on 11 July 2026, the first payment landed two days later. From day one the design hasn't changed: non-custodial (buyers pay the owner's wallet directly), fully automatic (invoice → on-chain match → invite → reminders → expiry), and self-service — set up a channel in about two minutes with /sell, no approval, no API keys.