Built like a bank, priced like software
ActuaTrades started as a question: what would a crypto investment platform look like if every balance had to prove itself against a ledger? This is our answer.
100%
Ledger-backed balances
$0
Real funds accepted
Live
Market prices
2-sided
Double-entry ledger
These are facts about how Actuatrades is built, not traction metrics.
Design principles
What we optimised for
Booked, not invented
Balances are derived from double-entry journals. A credit to a wallet always has a matching debit somewhere, and the trial balance is checked on the admin screen.
Labelled honestly
No invented user counts, no unverifiable volume claims and no guaranteed-return language. Every rate we publish is a target, not a promise.
Operator controls
Deposits and withdrawals sit in an approval queue, withdrawals reserve funds before review, and every privileged action lands in an audit trail.
Small, readable stack
Next.js, Postgres via Drizzle, and a handful of focused modules for money, the ledger, trading and plans. Nothing hidden behind a vendor.
Stack
- Framework
- Next.js App Router, React 19
- Data
- Postgres + Drizzle ORM
- Money
- Integer-cent arithmetic, no floats in balances
- Auth
- HMAC-signed HTTP-only cookies, scrypt hashes
- Prices
- CoinGecko public API, 60s cache, offline fallback
- Jobs
- /api/cron/accrue, protected by CRON_SECRET
Deliberately not built
We would rather say what is not built yet.
- –Real payment rails or custody — nothing leaves the sandbox.
- –Self-serve account deletion (support handles it so the audit trail stays intact).
- –Two-factor authentication and device history.
- –Automated document checks — verification is reviewed by our team.
- –Copy-trading and bot-trading (planned, not shipped).
Try the whole workflow
Create an account, get your opening balance, trade at live prices, fund a plan, request a withdrawal, then sign in as an admin and approve it. The books stay balanced the whole way.