Send USDC to anyone on Telegram. No wallet needed.
Built with Stylus (Rust) on Arbitrum for the Open House NYC Buildathon
95% of people will never download MetaMask. Remittances cost 5-10%. Splitting bills still means Venmo—even though crypto is cheaper.
/send @alice 50
Alice gets 50 USDC. No wallet, no seed phrase, no gas fees visible.
- Send —
/send @user amountvia Telegram or web dashboard - Store — PayoVault contract holds funds mapped to
keccak256("telegram:<userId>") - Claim — Recipient claims via Telegram bot or phone verification
User A PayoVault (Stylus) User B
│ │ │
│─── /send @userB 50 ───────▶│ │
│ │── balance[hashA] -= 50 │
│ │── pending[tid] = {B, 50} │
│ │ │
│ │◀─── claim(tid) ────────────│
│ │── balance[hashB] += 50 │
| Layer | Stack |
|---|---|
| Contracts | Stylus (Rust) → WASM on Arbitrum Sepolia |
| Bot | Node.js, Grammy, viem |
| Web | Next.js 14, wagmi v3, GSAP |
| Design | Hand-drawn UI (Kalam + Patrick Hand fonts) |
- Sub-cent fees — micro-payments actually viable
- Rust contracts — memory safety, no reentrancy footguns
- EVM compatible — seamless USDC
transferFrom - Production-grade — same infra trusted by BlackRock, Robinhood
| Contract | Address |
|---|---|
| PayoVault | 0xab141b97c3c589b6213cc64e634bfdf4dc8e091b |
| TestUSDC | 0x16cae166b4358fb2f15f8ddce059afbac90ab676 |
- Gasless UX — Relayer pays gas, users just Telegram
- Pending transfers — Send to users who haven't registered yet
- Wallet linking — Connect external wallet to your Telegram balance
- Faucet — 100 tUSDC per hour for testing
Arbitrum Open House NYC Buildathon 🏗️
Three weeks to build something that matters.