After several caffeine-fueled battles and head-smashing debugging loops, we finally pulled it off. Our new system now lets clients pay in crypto and get access to our private Telegram group automatically — no recurring traps, no shady charges, and no gatekeeping. Just clean code and good signals.
Here's the setup we built
⚙️ Split Architecture
We went full split-stack to keep things modular and bulletproof.
-
Frontend (Vercel)
Our marketing site and the crypto payment system live here. It handles all the client-side logic and hits our backend through webhooks. -
Backend (Railway)
This is where the real work happens. Our Telegram bot, user access logic, and the database all sit here. Everything is automated server-side. Once payment is confirmed, access is granted. -
Private Telegram Group Access
After payment, users are issued a single-use, time-limited invite link. If they don’t use it in time — tough luck. We don’t do spammy retries or baby anyone. This ensures the system stays clean and users stay sharp.
💡 How It Works (for those who want to copy it)
If you’re looking to replicate what we did — here’s the general workflow:
-
Website hosted on Vercel
You collect crypto payments (we use NOWPayments). The frontend hits a webhook when the payment is confirmed. -
Webhook to Railway
Railway runs a simple Node.js serverless function (or Express API) that:- Validates payment payload
- Matches the user to an intended product/subscription
- Generates a unique Telegram invite link
- Sends the link via email or directly via bot
-
Telegram Bot (also on Railway)
- Manages group access
- Cleans up expired invite links
- Can revoke or grant roles if needed
- Logs everything for sanity
-
Post-payment actions
The user joins the Telegram group via the time-limited link. Done. All automated.
🧨 Why We Avoid Recurring Payments
We could’ve set up recurring payments. We didn’t. Why?
Because we’re not running a SaaS startup, we’re running a trading operation.
We don’t want our users to:
- Forget they're subscribed
- Get charged during a personal crisis
- Complain about refund policies
This is not a gym membership.
If you want to join again, you pay again — when you’re ready.
If you want recurring? Contact us. We’ll set it up manually — only if you ask.
People should be in control of their own money. We trade like that, we live like that, and we run our systems like that.
🛠️ What was the hard part?
Pretty much everything.
-
Getting Vercel webhooks to work without timing out?
Pain in the ass. -
Getting NOWPayments to talk to a Railway backend reliably?
Pain in the ass. -
Generating Telegram invite links with proper expiration and revocation?
Pain in the ass.
But here we are. The system is live. Clean. Modular. Minimalist. And working daily.
🚪 Want in?
Pay once. Get access. No strings. No rebills. Just real signals.