Skip to main content

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:

  1. Always use type/subtype for current effective categorization
  2. Use source_* columns for “Reset to Default” functionality
  3. Use getEffectiveAccountType() for calculations
  4. Keep account_type in sync with type for backward compatibility

❌ DON’T:

  1. Never modify source_account_type, source_type, or source_subtype
  2. Never use account_type directly - use type instead
  3. Don’t assume all SnapTrade accounts are investments
  4. 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
After Migration:
  • Six columns for complete tracking
  • User can override type/subtype
  • “Reset to Default” functionality
  • Backward compatibility maintained via account_type auto-sync
Migration Script: sql-queries/add-account-type-override-support.sql
  • snaptrade_account_balances - Currency balances (USD, CAD, etc.)
  • snaptrade_account_positions - Holdings/securities positions
  • snaptrade_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
Updates types:
  • app/api/accounts/update-type/route.ts
Updates balances (doesn’t touch types):
  • app/api/snaptrade/webhook/route.ts
Daily calculations:
  • app/api/cron/process-daily-snapshot/route.ts
Frontend display:
  • hooks/queries/use-accounts.ts
Type mapping:
  • lib/account-type-mappings.ts (SNAPTRADE_TO_PLAID_MAPPING)