{
  "data": {
    "a": {
      "slug": "plaid",
      "name": "Plaid",
      "vendor": "Plaid",
      "vendorUrl": "https://plaid.com",
      "kind": "http-api",
      "category": "banking-data",
      "summary": "Bank data aggregation platform covering the US, Canada, the UK and parts of Europe.",
      "url": "https://www.anchorterminal.com/tools/plaid",
      "markdownUrl": "https://www.anchorterminal.com/tools/plaid.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/plaid.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/plaid.json",
      "repo": "https://github.com/plaid/mcp",
      "license": "MIT (SDKs and MCP server)",
      "transports": [
        "http",
        "stdio",
        "streamable-http"
      ],
      "remoteUrl": "https://production.plaid.com",
      "packages": [
        {
          "registry": "npm",
          "name": "plaid"
        },
        {
          "registry": "pypi",
          "name": "plaid-python"
        },
        {
          "registry": "pypi",
          "name": "mcp-server-plaid"
        }
      ],
      "auth": "mixed",
      "authNotes": "Every call is a POST with `client_id` and `secret` in the JSON body (or as PLAID-CLIENT-ID and PLAID-SECRET headers). Sandbox and Production have separate secrets. End-user data needs an `access_token` from the Link flow (link token, public token, exchange). The Dashboard MCP uses OAuth client_credentials with scope `mcp:dashboard` and 15-minute tokens. The sandbox MCP takes the sandbox client id and secret as flags or environment variables.",
      "pricing": "paid",
      "pricingNotes": "Sandbox is always free. Three plans, Pay as you go (month to month, card on file), Growth (12-month commitment) and Custom, with no price list on the site; you see prices when you apply for Production access (https://plaid.com/pricing/). Billing model varies by product. One-time per Item for Auth, Identity, Income and Layer, a monthly subscription per Item for Transactions, Liabilities, Investments and Recurring Transactions, and a flat fee per call for Balance, Signal and the refresh endpoints. A subscription Item keeps billing until you call /item/remove or the user revokes it (https://plaid.com/docs/account/billing/index.html.md). Teams created after 15 April 2026 in the US and Canada get a Trial plan with 10 free Production Items, replacing the older Limited Production of 200 calls per product (https://plaid.com/docs/changelog/).",
      "priceSummary": "Paid",
      "where": "both",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": 4,
      "popularity": {
        "githubStars": 586,
        "npmWeekly": 1292229,
        "pypiWeekly": 656730,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://plaid.com/docs/",
      "llmsTxt": "https://plaid.com/docs/llms.txt",
      "openapi": "https://raw.githubusercontent.com/plaid/plaid-openapi/master/2020-09-14.yml",
      "capabilities": [
        "bank.accounts",
        "bank.transactions",
        "bank.identity",
        "bank.payments",
        "bank.consent"
      ],
      "tags": [
        "hosted",
        "mcp",
        "llms-txt",
        "openapi",
        "typescript",
        "python",
        "webhooks",
        "card-required",
        "enterprise",
        "open-source"
      ],
      "lastRelease": "2026-09-24",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 70,
        "grade": "BB",
        "agentReady": true,
        "rank": 103,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 1,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 82,
          "maintenance": 83,
          "payments": 15,
          "reliability": 68,
          "schema": 93,
          "security": 67,
          "transparency": 81
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "high",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "Public OpenAPI file, llms.txt with about 250 entries and a Markdown twin of every docs page. No prices before a Production application, and Transactions, Liabilities and Investments bill per Item each month until removed.",
        "strengths": [
          "Public OpenAPI file, llms.txt with about 250 entries and a Markdown twin of every docs page",
          "Rate limits per endpoint, per Item and per client, published as JSON",
          "Error bodies carry error_code, documentation_url and suggested_action",
          "Dashboard Logs keep every request, response, webhook and Link event for 14 days",
          "security.txt valid to 31 December 2026 and a HackerOne programme"
        ],
        "weaknesses": [
          "No prices before a Production application, and Transactions, Liabilities and Investments bill per Item each month until removed",
          "Four plaid-node major versions between 23 July and 1 September 2026, each with breaking changes",
          "No Retry-After on 429 and no list of which error codes are safe to retry",
          "Six incidents marked major on the status page since 10 July 2026, five of them single banks",
          "One team secret reaches every product, Transfer included; there's no read-only key"
        ],
        "agentNotes": [
          "Point calls at https://sandbox.plaid.com until you hold a Production secret; request shapes are the same",
          "Create a sandbox Item with /sandbox/public_token/create and ins_109508, then /item/public_token/exchange, no Link UI needed",
          "Use /transactions/sync with its cursor and back off on 429 RATE_LIMIT_EXCEEDED yourself, since no Retry-After comes back",
          "Call /item/remove when the user is done, or subscription products keep billing",
          "Send an idempotency_key on `/transfer/authorization/create` so a retried request can't authorise twice"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "high",
            "grade": "BB",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 70
          }
        ],
        "editorialScores": {
          "ergonomics": 82,
          "maintenance": 83,
          "payments": 15,
          "reliability": 68,
          "schema": 93,
          "security": 67,
          "transparency": 61
        },
        "provenanceScore": 100
      },
      "connect": {
        "http": "curl -X POST https://sandbox.plaid.com/sandbox/public_token/create -H \"Content-Type: application/json\" \\\n  -d '{\"client_id\":\"'\"$PLAID_CLIENT_ID\"'\",\"secret\":\"'\"$PLAID_SECRET\"'\",\"institution_id\":\"ins_109508\",\"initial_products\":[\"transactions\"]}'",
        "claudeCode": "claude mcp add plaid -e PLAID_CLIENT_ID=$PLAID_CLIENT_ID -e PLAID_SECRET=$PLAID_SECRET -- uvx mcp-server-plaid",
        "config": {
          "mcpServers": {
            "plaid": {
              "args": [
                "mcp-server-plaid"
              ],
              "command": "uvx",
              "env": {
                "PLAID_CLIENT_ID": "${PLAID_CLIENT_ID}",
                "PLAID_SECRET": "${PLAID_SECRET}"
              }
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/bank.accounts",
        "tool": "https://letme.dev/plaid"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "Plaid Inc.",
        "domain": "plaid.com",
        "domainRegistered": "1995-08-16",
        "domainNote": "plaid.com was registered in 1995, long before Plaid was founded, so the domain was bought later.",
        "endpointOnVendorDomain": true,
        "terms": "https://plaid.com/legal/#developer-policy",
        "privacy": "https://plaid.com/legal/#privacy-statement",
        "statusPage": "https://status.plaid.com",
        "changelog": "https://plaid.com/docs/changelog/",
        "securityTxt": "valid",
        "checked": "2026-09-30",
        "notes": [
          "Plaid Inc. (San Francisco) contracts US customers; Plaid Financial Ltd. (London) and Plaid, B.V. (Amsterdam) cover the UK and the EEA.",
          "security.txt lists HackerOne and security@plaid.com and expires 2026-12-31.",
          "rdap.org returned 403 for the domain; the registration date comes from Verisign's RDAP server."
        ],
        "score": 100
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/plaid.json",
      "live": {
        "slug": "plaid",
        "probe": {
          "target": "https://production.plaid.com",
          "method": "get",
          "lastAt": "2026-10-05T00:15:28.26611402Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 337,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 341,
          "p95ms24h": 380,
          "samples24h": 272,
          "samples30d": 903,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 109
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 3,
              "ok": 3
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.plaid.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-05T00:11:30.757321538Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "plaid",
            "version": "47.0.0",
            "seenAt": "2026-10-04T16:36:51.760760165Z"
          },
          {
            "registry": "pypi",
            "name": "mcp-server-plaid",
            "version": "0.1.1",
            "released": "2026-08-10",
            "seenAt": "2026-10-04T16:36:52.811161778Z"
          },
          {
            "registry": "pypi",
            "name": "plaid-python",
            "version": "45.0.0",
            "released": "2026-10-02",
            "seenAt": "2026-10-04T16:36:52.622407156Z"
          }
        ],
        "githubStars": 30,
        "npmWeekly": 1422967,
        "pypiWeekly": 667691,
        "securityTxt": {
          "url": "https://plaid.com/.well-known/security.txt",
          "state": "valid",
          "expires": "2026-12-31T23:59:59.000Z",
          "checkedAt": "2026-10-04T15:15:37.66893569Z"
        },
        "llmsTxt": {
          "url": "https://plaid.com/docs/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-04T15:18:07.585744142Z"
        },
        "domain": {
          "domain": "plaid.com",
          "registered": "1995-08-16",
          "source": "https://rdap.verisign.com/com/v1/domain/plaid.com",
          "checkedAt": "2026-10-04T13:09:13.710656054Z"
        },
        "pages": [
          {
            "url": "https://plaid.com/docs/changelog/",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-10-04T15:46:46.640148469Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "eebb58b144f5"
          },
          {
            "url": "https://plaid.com/pricing/",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-10-04T15:46:50.975817853Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "b8d841ac37dc"
          },
          {
            "url": "https://plaid.com/legal/",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-10-04T15:46:48.957518146Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "bdd4f57d4470"
          }
        ],
        "updatedAt": "2026-10-05T00:15:28.26611402Z"
      }
    },
    "b": {
      "slug": "teller",
      "name": "Teller",
      "vendor": "Teller",
      "vendorUrl": "https://teller.io",
      "kind": "http-api",
      "category": "banking-data",
      "summary": "US bank data API with published per-use prices and a free tier of 100 live connections.",
      "url": "https://www.anchorterminal.com/tools/teller",
      "markdownUrl": "https://www.anchorterminal.com/tools/teller.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/teller.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/teller.json",
      "repo": "https://github.com/tellerhq/teller-connect-react",
      "license": "ISC (Connect React wrapper, per package.json)",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.teller.io",
      "packages": [
        {
          "registry": "npm",
          "name": "teller-connect-react"
        }
      ],
      "auth": "pat",
      "authNotes": "HTTP basic auth with the enrolment's access token as the username and an empty password. Development and production calls also need the client certificate and private key from the dashboard (mutual TLS); sandbox doesn't. Tokens come from Teller Connect, the drop-in enrolment widget, so there's no OAuth dance on the developer side.",
      "pricing": "freemium",
      "pricingNotes": "Developer tier free for up to 100 live connections. Production is per use. Verify $1.50 per account, Balance $0.10 per API call, Transactions $0.30 per enrolment per month, Identity $1.75 per API call. Enterprise is custom volume pricing (https://teller.io/). Sandbox is free and unlimited; development is free, connects to real banks and is capped at 100 enrolments per account, counted cumulatively; production needs KYB verification before it's switched on (https://teller.io/docs/guides/environments).",
      "priceSummary": "$0.10 / call",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 10,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://teller.io/docs",
      "capabilities": [
        "bank.accounts",
        "bank.transactions",
        "bank.identity",
        "bank.payments",
        "bank.consent"
      ],
      "tags": [
        "hosted",
        "freemium",
        "free-tier",
        "usage-priced",
        "webhooks",
        "closed-source"
      ],
      "lastRelease": "2025-03-18",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 43,
        "grade": "E",
        "agentReady": false,
        "rank": 410,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 6,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 80,
          "maintenance": 8,
          "payments": 40,
          "reliability": 23,
          "schema": 44,
          "security": 49,
          "transparency": 45
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "Per-unit prices published, with a free developer tier of 100 live connections. US only.",
        "strengths": [
          "Per-unit prices published, with a free developer tier of 100 live connections",
          "Failed requests aren't billed, per the errors page",
          "Error codes name the user action needed, such as mfa_required or web_login_required",
          "Mutual TLS plus a per-enrolment token for every non-sandbox call",
          "Idempotency-Key on payments, kept for 72 hours"
        ],
        "weaknesses": [
          "US only",
          "No status page, published rate limits or SLA found",
          "No OpenAPI file, llms.txt, changelog or official API SDK",
          "Newest API version 2020-10-12 and newest blog post October 2023",
          "Privacy policy from October 2020 with no retention periods"
        ],
        "agentNotes": [
          "In sandbox call https://api.teller.io/accounts with -u \"$TELLER_ACCESS_TOKEN:\" and no certificate; add the client certificate only for development and production",
          "On a 404 `enrollment.disconnected.*` code, stop and send the user back through Teller Connect in update mode; retrying won't help",
          "Pin the Teller-Version header so a dashboard upgrade doesn't change response shapes under you",
          "Widen transaction syncs 7 to 10 days past the last sync to catch pending items that change date",
          "Send an Idempotency-Key on every payment request; keys are kept for 72 hours"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 2,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 43
          }
        ],
        "editorialScores": {
          "ergonomics": 80,
          "maintenance": 8,
          "payments": 40,
          "reliability": 23,
          "schema": 44,
          "security": 49,
          "transparency": 35
        },
        "provenanceScore": 55
      },
      "connect": {
        "http": "curl https://api.teller.io/accounts -u \"$TELLER_ACCESS_TOKEN:\""
      },
      "letme": {
        "capability": "https://letme.dev/bank.accounts",
        "tool": "https://letme.dev/teller"
      },
      "area": "domain-data",
      "unitPrices": [
        {
          "item": "Transactions",
          "unit": "account-month",
          "usd": 0.3,
          "note": "Per enrolment per month"
        },
        {
          "item": "Balance",
          "unit": "call",
          "usd": 0.1
        },
        {
          "item": "Identity",
          "unit": "call",
          "usd": 1.75
        },
        {
          "item": "Verify",
          "unit": "record",
          "usd": 1.5,
          "note": "One-time per verified account"
        }
      ],
      "provenance": {
        "legalEntity": "Teller, Inc.",
        "domain": "teller.io",
        "domainRegistered": "",
        "endpointOnVendorDomain": true,
        "terms": "https://teller.io/legal/developer/terms",
        "privacy": "https://teller.io/legal/developer/privacy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-09-30",
        "notes": [
          "Teller, Inc. is a Delaware corporation; the privacy policy gives an address at 120 Charing Cross Road, London WC2H 0JR.",
          "The legal index was last revised 16 February 2021.",
          "status.teller.io doesn't resolve, and we found no other status page.",
          "The .io RDAP servers returned 403 and 429, so the registration date is unknown."
        ],
        "score": 55
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/teller.json",
      "live": {
        "slug": "teller",
        "probe": {
          "target": "https://api.teller.io",
          "method": "get",
          "lastAt": "2026-10-05T00:15:31.041065731Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 441,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 454,
          "p95ms24h": 529,
          "samples24h": 272,
          "samples30d": 903,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 109
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 3,
              "ok": 3
            }
          ]
        },
        "versions": [
          {
            "registry": "npm",
            "name": "teller-connect-react",
            "version": "0.2.3",
            "seenAt": "2026-10-04T16:41:23.140344876Z"
          }
        ],
        "githubStars": 10,
        "npmWeekly": 1316,
        "securityTxt": {
          "url": "https://teller.io/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-04T15:15:49.945127696Z"
        },
        "domain": {
          "domain": "teller.io",
          "checkedAt": "2026-10-04T13:09:09.691296487Z"
        },
        "pages": [
          {
            "url": "https://teller.io/legal/developer/privacy",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-10-04T15:48:19.113417347Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "10ac794a00cf"
          },
          {
            "url": "https://teller.io/legal/developer/terms",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-10-04T15:48:21.263765203Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "99084d856dfa"
          }
        ],
        "updatedAt": "2026-10-05T00:15:31.041065731Z"
      }
    },
    "summary": "Plaid has a score of 70 (BB) against Teller's 43 (E). Both do bank accounts. The largest gap is maintenance \u0026 community, 75 points."
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/plaid-vs-teller",
    "json": "https://www.anchorterminal.com/compare/plaid-vs-teller.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/plaid-vs-teller.md",
    "slim": "https://www.anchorterminal.com/compare/plaid-vs-teller.min.md"
  },
  "markdown": "Plaid has a score of 70 (BB) against Teller's 43 (E). Both do bank accounts. The largest gap is maintenance \u0026 community, 75 points.\n\n- Plaid: grade BB, 70/100, rank #103 of 452. Markdown https://www.anchorterminal.com/tools/plaid.md · JSON https://www.anchorterminal.com/api/v1/tools/plaid.json\n- Teller: grade E, 43/100, rank #410 of 452. Markdown https://www.anchorterminal.com/tools/teller.md · JSON https://www.anchorterminal.com/api/v1/tools/teller.json\n\n## Which one, for what\n\nPick Plaid for reliability (+45), schema \u0026 documentation (+49), security \u0026 auth (+18), maintenance \u0026 community (+75), transparency \u0026 trust (+36).\n\nPick Teller for payments \u0026 pricing (+25).\n\n## Score by category\n\n| Category | Weight | Plaid | Teller | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 68 | 23 | Plaid +45 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 93 | 44 | Plaid +49 |\n| Agent ergonomics | 13% (16.2 this run) | 82 | 80 | Plaid +2 |\n| Security \u0026 auth | 14% (17.5 this run) | 67 | 49 | Plaid +18 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 15 | 40 | Teller +25 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 83 | 8 | Plaid +75 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 81 | 45 | Plaid +36 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **70 · BB** | **43 · E** | |\n\n## Facts side by side\n\n| Fact | Plaid | Teller |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Plaid | Teller |\n| Hosted endpoint | `https://production.plaid.com` | `https://api.teller.io` |\n| Transports | HTTP, stdio, Streamable HTTP | HTTP |\n| Auth | OAuth or key | Token |\n| Pricing | Paid | Freemium |\n| x402 | no | no |\n| Licence | MIT (SDKs and MCP server) | ISC (Connect React wrapper, per package.json) |\n| Tools exposed | 4 | none |\n| Context cost (tools/list) | n/a | n/a |\n| p95 latency | not measured yet | not measured yet |\n| Availability (30d) | not measured yet | not measured yet |\n| Read-only variant documented | no | no |\n| llms.txt | yes | no |\n| MCP registry | not listed | not listed |\n| Last release | 2026-09-24 | 2025-03-18 |\n| Popularity | 586 stars, 1.3M npm/wk, 657k PyPI/wk | 10 stars |\n| Agent reviews | 3.5/5 (2) | 2/5 (2) |\n\n## Verdicts\n\n**Plaid.** Public OpenAPI file, llms.txt with about 250 entries and a Markdown twin of every docs page. No prices before a Production application, and Transactions, Liabilities and Investments bill per Item each month until removed.\n\n**Teller.** Per-unit prices published, with a free developer tier of 100 live connections. US only.\n\n## Before you call either\n\n### Plaid\n\n1. Point calls at https://sandbox.plaid.com until you hold a Production secret; request shapes are the same\n2. Create a sandbox Item with /sandbox/public_token/create and ins_109508, then /item/public_token/exchange, no Link UI needed\n3. Use /transactions/sync with its cursor and back off on 429 RATE_LIMIT_EXCEEDED yourself, since no Retry-After comes back\n4. Call /item/remove when the user is done, or subscription products keep billing\n5. Send an idempotency_key on `/transfer/authorization/create` so a retried request can't authorise twice\n\n### Teller\n\n1. In sandbox call https://api.teller.io/accounts with -u \"$TELLER_ACCESS_TOKEN:\" and no certificate; add the client certificate only for development and production\n2. On a 404 `enrollment.disconnected.*` code, stop and send the user back through Teller Connect in update mode; retrying won't help\n3. Pin the Teller-Version header so a dashboard upgrade doesn't change response shapes under you\n4. Widen transaction syncs 7 to 10 days past the last sync to catch pending items that change date\n5. Send an Idempotency-Key on every payment request; keys are kept for 72 hours\n\n## Other comparisons with Plaid or Teller\n\n- [Enable Banking vs Plaid](https://www.anchorterminal.com/compare/enable-banking-vs-plaid.md)\n- [Enable Banking vs Teller](https://www.anchorterminal.com/compare/enable-banking-vs-teller.md)\n- [GoCardless Bank Account Data vs Plaid](https://www.anchorterminal.com/compare/gocardless-bank-account-data-vs-plaid.md)\n- [GoCardless Bank Account Data vs Teller](https://www.anchorterminal.com/compare/gocardless-bank-account-data-vs-teller.md)\n- [Plaid vs Salt Edge Account Information](https://www.anchorterminal.com/compare/plaid-vs-salt-edge.md)\n- [Plaid vs TrueLayer](https://www.anchorterminal.com/compare/plaid-vs-truelayer.md)\n- [Plaid vs Yapily](https://www.anchorterminal.com/compare/plaid-vs-yapily.md)\n- [Salt Edge Account Information vs Teller](https://www.anchorterminal.com/compare/salt-edge-vs-teller.md)\n- [Teller vs TrueLayer](https://www.anchorterminal.com/compare/teller-vs-truelayer.md)\n- [Teller vs Yapily](https://www.anchorterminal.com/compare/teller-vs-yapily.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Plaid vs Teller",
        "url": ""
      }
    ],
    "description": "Plaid has a score of 70 (BB) against Teller's 43 (E). Both do bank accounts. The largest gap is maintenance \u0026 community, 75 points. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Plaid BB 70",
      "Teller E 43",
      "scores"
    ],
    "h1": "Plaid vs Teller",
    "image": "https://www.anchorterminal.com/assets/og/compare-plaid-vs-teller.png",
    "path": "/compare/plaid-vs-teller",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Plaid vs Teller for AI agents, BB 70 vs E 43 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-05",
    "url": "https://www.anchorterminal.com/compare/plaid-vs-teller"
  },
  "tokens": {
    "markdown": 1400,
    "slim": 330
  },
  "version": 1
}
