Crypto-to-Card Platform
Users load crypto and spend it through virtual cards. The backend had to exist first: KYC, compliance, transactions, card issuance.
- 5 months
- zero to live
- 300
- users at launch
- 2k
- transactions a month at launch
- Region
- Region withheld
- Role
- Backend engineer, finance → tech lead, backend
- Duration
- 2024 – 2025 · ~1 year
- Status
- Handed off.
- Team
- 1–2 front-end engineers, QA. No DevOps.
What they needed
A payment backend from zero. Users deposit crypto, it becomes a balance, the balance is spent through a virtual card. Around that: a KYC flow, compliance checks, transaction processing and integration with more than one card issuer.
I joined as the backend engineer responsible for finance. When the other backend engineer left, I became tech lead for the backend. There was no DevOps. I wrote the deploy configs myself.
Details of the compliance and KYC setup stay with the client. What follows is the part I can talk about.
What I did
Transactions and reconciliation first, everything else on top
Deposits, balance changes and card transactions were built and reconciled against the issuer before anything user-facing got attention.
WhyAt the time I understood money better than I understood architecture. I spent the design budget on the one part where a mistake cannot be undone.
Move custody to Telegram Wallet
We started with our own custody and a deposit provider. Deposits got stuck at the provider. When Telegram Wallet became viable we moved deposits there.
WhyStuck deposits disappeared with the move. Custody is a liability. The fewer places money waits, the fewer support tickets you own.
The card lives inside Telegram too
A Python bot lets a user top up and move money without leaving Telegram.
WhyThat is where the users already were.
Double-spends happened. They got fixed.
Early on, concurrent requests could spend the same balance twice. We found it, fixed it, and added the test.
WhyIt is the one bug in a money system that costs real money every time it fires. Since then it is the first thing I test on any money path, before any feature.
Proof
- 5 months
- zero to live
- 300
- users at launch
- 2k
- transactions a month at launch
Crypto in, card out.
What I would do differently
Custody. Start with a wallet provider instead of running our own.
This was before I understood architecture the way I do now. The money logic held. The structure around it would look different today.
Stack
- Node.js
- C#
- Rust
- Python
- Telegram Bot API
- Telegram Wallet
Tell me what is broken.
I will tell you what I see.
30 minutes. You describe the system, I ask questions. No pitch.