Skip to main content
Related Spec: FA-20

Quick Start

Choose Your Environment

Recommendation: Start with sandbox to test the flow, then move to development for real bank testing.

Step 1: Get Plaid Credentials

  1. Sign up at Plaid Dashboard
  2. Go to Team SettingsKeys in Dashboard
  3. Note your:
    • Client ID (e.g., 5f8c1b2a3d4e5f6a7b8c9d0e)
    • Secret (per environment - sandbox, development, production)
  4. Go to DevelopersWebhooks
  5. Add a webhook endpoint: https://your-project.supabase.co/functions/v1/plaid-webhook

Step 2: Configure Supabase Secrets

  1. Go to your Lovable project → SettingsCloudSecrets
  2. Add the following secrets:

Option B: Using CLI

Verify Secrets

You should see:

Step 3: Enable Feature Flag

  1. Navigate to Finance & AccountingSettings
  2. Go to the Integrations tab
  3. Toggle Enable Plaid Integration to ON
  4. Click Save Changes
The Plaid option will now appear in the bank connection flow.

Step 4: Test the Connection

  1. Navigate to FinanceBank Accounts
  2. Click Connect Bank Account
  3. If both Teller and Plaid are enabled, select Plaid from the provider dialog
  4. Plaid Link modal opens
  5. In Sandbox mode:
    • Select any institution (e.g., “First Platypus Bank”)
    • Use test credentials (see below)
    • Select accounts to connect
  6. Verify the account appears with a “Plaid” provider badge

Sandbox Test Credentials

Use these credentials when connecting banks in sandbox mode: Test Institution ID: ins_109508 (First Platypus Bank) For MFA testing:
  • Username: user_good
  • Password: mfa_device (triggers device-based MFA)
  • Code: 1234 (any 4-digit code works in sandbox)

Step 5: Sync Transactions

  1. After connecting, click the Sync button on the account card
  2. Transactions will be imported into Bank Statement Lines
  3. A toast notification shows the sync results:
    • Transactions added
    • Transactions modified
    • Transactions removed
For Plaid sandbox accounts, use user_transactions_dynamic credentials to generate new transactions daily.

Troubleshooting

🚨 “Invalid client_id” Error

Cause: PLAID_CLIENT_ID secret not configured or incorrect. Fix:
  1. Verify the secret exists: supabase secrets list
  2. Check the value matches your Plaid Dashboard
  3. Secrets are case-sensitive

🚨 “Plaid integration is not enabled”

Cause: Feature flag not enabled in FA Module Settings. Fix:
  1. Navigate to Finance → Settings → Integrations
  2. Enable “Plaid Integration”
  3. Save changes
Cause: Link token creation failed. Check:
  1. Browser console for errors
  2. Edge function logs in Supabase Dashboard
  3. Verify all three secrets are set (CLIENT_ID, SECRET, ENVIRONMENT)

🚨 “Institution not supported”

Cause: The selected institution isn’t available in sandbox mode. Fix:
  • Use sandbox-supported institutions (any from the Plaid Link flow)
  • Switch to development environment for real institutions

🚨 Webhook Events Not Processing

Cause: Webhook endpoint not configured or signature verification failing. Check:
  1. Webhook URL is correct in Plaid Dashboard
  2. Edge function logs for signature errors
  3. Function is deployed: supabase functions list

🚨 Rate Limiting (429 Error)

Cause: Too many API requests in a short period. Fix:
  • Wait 60 seconds and retry
  • Plaid has rate limits per client ID
  • The edge functions have built-in exponential backoff

Environment-Specific Setup

  • Uses simulated bank data
  • No real bank connections
  • Test credentials work (see above)
  • Transactions are generated synthetically

Development Mode (Real Banks, Limited)

  • Connects to real bank OAuth flows
  • Limited to 100 Items (bank connections)
  • Free tier
  • Real transaction data

Production Mode

  • Full production access
  • Requires Production access approval from Plaid
  • Paid based on usage
  • Contact Plaid for pricing

Webhook Events Handled

The plaid-webhook edge function processes these events:

Required Secrets Summary


Provider Comparison


See Also