io.github.Sean-Bravo/taxformatter
Parse crypto CSVs and bank PDFs into clean transaction data for Koinly, TurboTax, CoinLedger.
Ask AI about io.github.Sean-Bravo/taxformatter
Powered by Claude Β· Grounded in docs
I know everything about io.github.Sean-Bravo/taxformatter. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
π TaxFormatter
Crypto CSVs and bank statement PDFs, parsed into tax-ready data.
REST API Β· MCP Server Β· Node SDK Β· Python SDK Β· Consumer Dashboard
π What It Does
TaxFormatter turns messy financial exports into structured, tax-ready data β for humans and for AI agents.
Drop a CSV from Coinbase, a ZIP from Kraken, a .tar.gz from Binance, or a PDF statement from Chase, and get back a clean, normalized transaction set you can pipe into Koinly, TurboTax, CoinLedger, ZenLedger β or straight into your own software.
Exchange CSV Clean, normalized
Bank PDF β transactions (JSON / CSV)
XLSX / ZIP / TAR.GZ + AI-generated insights
β¨ Features
π Developer REST API
Ship a crypto-tax or bank-ingestion feature into your product in an afternoon.
POST /v1/parseβ upload a CSV or PDF, get structured JSON backGET /v1/sourcesβ list every supported exchange, bank, and output formatGET /v1/usageβ monthly quota, RPM limit, current consumptionGET /v1/healthβ liveness probe- Auth:
X-API-Keyheader withtf_live_*keys (SHA-256 hashed at rest) - Host:
https://api.taxformatter.com
π€ MCP Server for AI Agents
Give Claude, Cursor, Windsurf, or any MCP-compatible agent the ability to parse crypto and bank data directly.
npx @taxformatter/mcp-server
| Tool | What it does |
|---|---|
parse_crypto_csv | Auto-detects the exchange, returns normalized transactions |
parse_bank_statement | Extracts transactions from bank statement PDFs |
list_supported_sources | Queries every supported source + output format |
π¦ Official SDKs
- Node.js β
@taxformatter/sdkβ promise-based, fully typed - Python β
taxformatterβ idiomatic, type-hinted
π¦ 14 Exchanges Β· 7+ Banks Β· 4 Tax Software Formats
Exchanges: Coinbase Β· Kraken Β· Gemini Β· Binance Β· Robinhood Β· Crypto.com Β· PayPal Β· Cash App Β· Venmo Β· KuCoin Β· Bybit Β· FTX Β· Bitfinex Β· OKX
Banks: Chase Β· Mercury Β· Navy Federal Β· Bank of America Β· Wells Fargo Β· Citi Β· Capital One
Export formats: Koinly Β· TurboTax (Form 8949) Β· CoinLedger Β· ZenLedger
π§ Tiered AI Insights
Every parsed file comes back with actionable analysis β scaled to your plan.
| Tier | Model | Output |
|---|---|---|
| Free / Starter | Gemini 2.5 Flash | Quick stats + basic flagging |
| Growth | Claude Sonnet 4.6 | Balanced analysis, breakdowns |
| Business | Claude Opus 4.7 | Deep analysis + tax suggestions |
π₯οΈ Consumer Dashboard
Not a developer? The web app at taxformatter.com is a full drag-and-drop experience with real-time job status, exchange auto-detection, transformation previews, and one-click downloads.
ποΈ Tech Stack
| Layer | Technology |
|---|---|
| Frontend | Next.js 16 Β· React 19 Β· TypeScript Β· Tailwind v4 |
| Auth | NextAuth (Google OAuth + email/password + 2FA) |
| Database | Neon (serverless PostgreSQL) |
| Storage | AWS S3 (presigned URLs) |
| Queue | AWS SQS + DLQ |
| Compute | AWS Lambda Γ 4 (scanner, processor, webhook, api) |
| Edge | AWS API Gateway + WAF + CloudFront |
| Payments | Stripe (consumer + developer tiers) |
| AWS SES / Nodemailer | |
| Monitoring | Sentry + CloudWatch |
| IaC | Terraform |
π Repo Layout
trw/
βββ app/ # Next.js App Router (marketing, dashboard, /v1 admin)
β βββ api/ # Internal API routes (NextAuth, uploads, jobs, dev keys)
β βββ dashboard/ # Authenticated user area + /dashboard/developer
β βββ docs/ # MDX-powered docs site
β βββ upload/ # Anonymous bank statement β CSV landing page
β
βββ backend/ # Python processing layer (AWS Lambda)
β βββ handlers/ # scanner Β· processor Β· webhook Β· api
β βββ services/
β β βββ engine.py # CSV parsing (14 exchange parsers)
β β βββ format_converter.py # Koinly β TurboTax/CoinLedger/ZenLedger
β β βββ fingerprinting.py # Exchange auto-detection
β β βββ ai_insights.py # Tiered AI analysis
β β βββ api_auth.py # API key validation + rate limiting
β β βββ bank_statement/ # PDF extraction pipeline
β βββ configs/banks/*.yaml # YAML-driven bank configs
β βββ terraform/ # Infra as code
β
βββ packages/
β βββ mcp-server/ # @taxformatter/mcp-server (npm)
β βββ sdk-node/ # @taxformatter/sdk (npm)
β βββ sdk-python/ # taxformatter (PyPI)
β
βββ components/ # React components (marketing, dashboard, ui)
βββ lib/ # Business logic (auth, api-keys, stripe, email)
βββ db/ # PostgreSQL schema + migrations
βββ docs/ # Setup guides
Full architectural reference: ARCHITECTURE.md
β‘ Quick Start
Run the web app
npm install
npm run dev
Open http://localhost:3000.
Try the API
curl -X POST https://api.taxformatter.com/v1/parse \
-H "X-API-Key: tf_live_..." \
-F "file=@coinbase.csv"
Use the MCP server with Claude Code
{
"mcpServers": {
"taxformatter": {
"command": "npx",
"args": ["@taxformatter/mcp-server"],
"env": { "TAXFORMATTER_API_KEY": "tf_live_..." }
}
}
}
Install the Node SDK
npm install @taxformatter/sdk
import { TaxFormatter } from "@taxformatter/sdk";
const tf = new TaxFormatter({ apiKey: process.env.TF_API_KEY! });
const result = await tf.parse({ file: fs.createReadStream("./coinbase.csv") });
π§ͺ Testing
npm test # Jest unit tests (160+ across API, MCP, keys, UI)
npm run test:e2e # Playwright end-to-end tests
npm run typecheck # TypeScript strict mode
npm run lint # ESLint
π³ Pricing
One plan, two ways to use it β drop a file in the dashboard or call our API. Same quota, same AI insights.
| Tier | Price | Quota | RPM | AI Insights | Highlights |
|---|---|---|---|---|---|
| Free | $0 | 25 files | 10 | Gemini 2.5 Flash | All 14 exchanges Β· No credit card |
| Starter | $29/mo | 100 files | 30 | Gemini 2.5 Flash | All 14 exchanges |
| Growth | $99/mo | 500 files | 60 | Claude Sonnet 4.6 | + Bank PDF parsing |
| Business | $249/mo | 2,000 files | 120 | Claude Opus 4.7 | + Custom integrations Β· SLA |
π Security Highlights
- Stateless API processing β file content lives in Lambda RAM only, never written to disk
- Zero payload logging β
api_requestsstores metadata only (hash, status, bytes, timing) - API keys SHA-256 hashed at rest, prefixed
tf_live_for easy identification - TLS 1.3 enforced everywhere
- AES-256 encryption on all stored uploads
- AWS WAF β DDoS shield, SQL injection, XSS mitigation
- User-controlled retention β 1 year default, or delete-after-download
Full disclosure at taxformatter.com/security.
π Documentation
- ARCHITECTURE.md β Full system design
- content/docs/api/index.md β API reference
- packages/mcp-server/README.md β MCP setup guide
- RELIABILITY.md β SLOs, incident playbooks
- docs/ β Stripe, Sentry, and deployment guides
License
Private β Quantum Transfer Group. All rights reserved.
