npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

n8n-nodes-plaid

v2.0.0

Published

The definitive Plaid financial integration node for n8n - Zero Dependencies for Cloud Verification

Readme

n8n-nodes-plaid

Tests Coverage The definitive Plaid financial integration node for n8n

🚨 Important Update: Modern Authentication Flow

Version 2.0+ now supports the modern Plaid authentication flow!

What Changed

  • Added Link Token creation for proper Plaid Link flow
  • Removed access_token from credentials (access tokens are now per-operation)
  • Enhanced documentation with step-by-step authentication guide
  • Test token generator for easy development setup

Migration Guide

If you're upgrading from v1.x:

  1. Update your credentials - remove access token, keep Client ID and Secret
  2. Use Link Token operations to start authentication flows
  3. Pass access tokens per operation instead of storing in credentials

🎯 Quick Start

1. Install the Node

# Via n8n Community Nodes
# Go to Settings → Community Nodes → Install: n8n-nodes-plaid

# Or via npm
npm install n8n-nodes-plaid

2. Get Plaid Credentials

  1. Sign up at Plaid Dashboard
  2. Get your credentials:
    • Client ID
    • Secret Key
    • Environment: sandbox (for testing) or production

3. Set Up n8n Credentials

  1. Go to Settings → Credentials → Add Credential
  2. Select Plaid API
  3. Fill in:
    • Environment: sandbox (for testing)
    • Client ID: Your Plaid Client ID
    • Secret: Your Plaid Secret Key
    • ⚠️ No access token needed - these are handled per operation now!

🔐 Understanding Plaid's Authentication Flow

The Modern Way (2024+)

Plaid uses a secure multi-step authentication flow:

1. Your App → Create Link Token (n8n)
2. User → Complete Plaid Link UI (your frontend)  
3. User → Gets Public Token (your frontend)
4. Your App → Exchange Public Token for Access Token (your backend)
5. Your App → Use Access Token in n8n operations

What Each Token Does

  • 🔗 Link Token: Short-lived (4 hours) token to initialize Plaid Link UI
  • 🔑 Public Token: Temporary token from user completing authentication
  • 🎯 Access Token: Permanent token for API calls (what n8n operations need)

🚀 Step-by-Step Usage Guide

Step 1: Create Link Token (n8n)

{
  "node": "Plaid",
  "resource": "Link Token", 
  "operation": "Create",
  "userId": "user_12345",
  "clientName": "My Financial App",
  "products": ["transactions", "auth"],
  "countryCodes": ["US"]
}

Output:

{
  "link_token": "link-sandbox-abc123...",
  "expiration": "2024-01-15T14:30:00Z",
  "instructions": {
    "next_steps": [
      "1. Use this link_token to initialize Plaid Link in your frontend",
      "2. User completes authentication in Plaid Link UI", 
      "3. Plaid Link returns a public_token",
      "4. Exchange public_token for access_token",
      "5. Use access_token in other n8n Plaid operations"
    ]
  }
}

Step 2: Implement Plaid Link (Your Frontend)

<!-- Include Plaid Link SDK -->
<script src="https://cdn.plaid.com/link/v2/stable/link-initialize.js"></script>

<script>
const handler = Plaid.create({
  token: 'link-sandbox-abc123...', // from n8n Step 1
  onSuccess: function(public_token, metadata) {
    // Send public_token to your backend
    console.log('Public token:', public_token);
    // Next: exchange this for access_token
  },
  onExit: function(err, metadata) {
    console.log('User exited Link flow');
  }
});

// Open Plaid Link when user clicks connect button
document.getElementById('connect-button').onclick = function() {
  handler.open();
};
</script>

Step 3: Exchange Tokens (Your Backend)

// Your backend API endpoint
const { Configuration, PlaidApi, PlaidEnvironments } = require('plaid');

const client = new PlaidApi(new Configuration({
  basePath: PlaidEnvironments.sandbox, // or production
  baseOptions: {
    headers: {
      'PLAID-CLIENT-ID': 'your_client_id',
      'PLAID-SECRET': 'your_secret',
    },
  },
}));

// Exchange public_token for access_token
const response = await client.itemPublicTokenExchange({
  public_token: public_token_from_frontend
});

const access_token = response.data.access_token;
// Store this access_token securely - you'll use it in n8n operations

Step 4: Use Access Token in n8n Operations

{
  "node": "Plaid",
  "resource": "Transaction",
  "operation": "Sync", 
  "accessToken": "access-sandbox-xyz789..." // from Step 3
}

🧪 For Development: Get Test Access Tokens

We've included a helper script to generate test access tokens for development:

Quick Test Token

# Set your sandbox credentials
export PLAID_CLIENT_ID=your_sandbox_client_id
export PLAID_SECRET=your_sandbox_secret

# Generate test access token
node scripts/get-test-access-token.js

# Output: access-sandbox-abc123... (use this in n8n)

Different Test Banks

node scripts/get-test-access-token.js ins_3  # Chase
node scripts/get-test-access-token.js ins_4  # Bank of America  
node scripts/get-test-access-token.js ins_5  # Wells Fargo

This bypasses the Link UI and gives you test access tokens for immediate n8n testing.


📋 Complete Operations Reference

🔗 Link Token Operations (No access token needed)

| Operation | Description | Use Case | |-----------|-------------|----------| | Create | Create link token for Plaid Link | Start user authentication flow |

🏦 Institution Operations (No access token needed)

| Operation | Description | Use Case | |-----------|-------------|----------| | Search | Find financial institutions | Let users search for their bank | | Get by ID | Get institution details | Display bank information |

💰 Account Operations (Requires access token)

| Operation | Description | Use Case | |-----------|-------------|----------| | Get All | Get connected accounts | Display user's accounts | | Get Balances | Get real-time balances | Show current balances |

💳 Transaction Operations (Requires access token)

| Operation | Description | Use Case | |-----------|-------------|----------| | Sync | Get new/updated transactions | Real-time transaction updates | | Get Range | Get transactions in date range | Historical transaction analysis |

🔐 Auth Operations (Requires access token)

| Operation |