SnapTrade Accounts Table Documentation
Table: snaptrade_accounts
Complete documentation for the SnapTrade accounts table structure, data flow, and column usage.
Column Structure
Identity & Relationships
Account Information
Account Type & Categorization ⭐ NEW SYSTEM
Type Column Relationships:
Financial Data
Sync Status
Metadata
Data Flow
1. Account Creation (First Connection)
2. User Changes Type (UI Override)
3. Webhook Updates (Balances/Positions)
4. Daily Snapshot Processing
Example Data Flow
Scenario: Fidelity 401(k) Account
Step 1: Initial Connection
Step 2: User Changes to “Checking” (Wrong, but allowed)
Step 3: Daily Snapshot Calculation
Step 4: User Realizes Mistake, Resets
Important Rules
✅ DO:
- Always use
type/subtypefor current effective categorization - Use
source_*columns for “Reset to Default” functionality - Use
getEffectiveAccountType()for calculations - Keep
account_typein sync withtypefor backward compatibility
❌ DON’T:
- Never modify
source_account_type,source_type, orsource_subtype - Never use
account_typedirectly - usetypeinstead - Don’t assume all SnapTrade accounts are investments
- Don’t update type columns in webhook handler
Migration Notes
Before Migration:- Single column:
account_type="401K"(SnapTrade format) - No subtype information
- No way to override or reset
- Six columns for complete tracking
- User can override type/subtype
- “Reset to Default” functionality
- Backward compatibility maintained via
account_typeauto-sync
sql-queries/add-account-type-override-support.sql
Related Tables
snaptrade_account_balances- Currency balances (USD, CAD, etc.)snaptrade_account_positions- Holdings/securities positionssnaptrade_account_daily_snapshots- Historical snapshots (includes type/subtype for tracking changes)snaptrade_institutions- Broker/institution information
Code References
Creates accounts:app/api/snaptrade/process-connection/route.ts
app/api/accounts/update-type/route.ts
app/api/snaptrade/webhook/route.ts
app/api/cron/process-daily-snapshot/route.ts
hooks/queries/use-accounts.ts
lib/account-type-mappings.ts(SNAPTRADE_TO_PLAID_MAPPING)