Registry / payments / plaid-python

plaid-python

JSON →
library38.3.0pypypi✓ verified 34d ago

Official Python client for the Plaid API (bank account linking, transactions, identity, income verification). Auto-generated from OpenAPI spec. Updated monthly, major versions contain breaking changes. Only supports the 2020-09-14 API version (no version selection in client — API version is fixed per SDK release).

paymentshttp-networkingauth-security
Install & Compatibility
Where this runs
tested against v39.2.0 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.103.925 runs
installs and imports cleanly · install 0.0s · import 0.398s · 77.4MB
glibc
py 3.103.925 runs
installs and imports cleanly · install 8.0s · import 0.346s · 78MB
78MB installed
● package 78MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

from plaid import Configuration
from plaid import ApiClient
from plaid.api_client import PlaidApi

Plaid uses strongly-typed request/response models. Each endpoint has its own request model (e.g. TransactionsSyncRequest). Import the specific model for each call.

import plaid from plaid.api import plaid_api from plaid.model.transactions_sync_request import TransactionsSyncRequest import json configuration = plaid.Configuration( host=plaid.Environment.Sandbox, # or Production api_key={ 'clientId': 'your_client_id', 'secret': 'your_secret' } ) api_client = plaid.ApiClient(configuration) client = plaid_api.PlaidApi(api_client) # Sync transactions request = TransactionsSyncRequest(access_token='access-sandbox-...') response = client.transactions_sync(request) transactions = response.added # Error handling try: response = client.transactions_sync(request) except plaid.ApiException as e: error = json.loads(e.body) print(error['error_code']) # e.g. 'ITEM_LOGIN_REQUIRED'
Debug
Known footguns
breakingv8.0.0 (August 2021) completely removed the old Client class and all previous import patterns. Any tutorial using 'from plaid import Client' or 'Client(client_id=..., secret=..., environment=...)' fails with ImportError.
breakingplaid-python ships a major version (x.0.0) roughly monthly. Major versions may include breaking changes — new required fields, renamed parameters, or removed endpoints. Unpinned installs will auto-upgrade.
breakingEach endpoint requires importing its specific request model. Passing a plain dict instead of the typed request object raises a TypeError. Old-style dict-based calls from pre-v8 tutorials do not work.
gotchaSandbox and Production have separate API secrets. The client_id is shared but the secret differs per environment. Using the wrong secret for an environment returns 401.
gotchaPlaid API responses are typed objects, not dicts. Code trying to access response['transactions'] fails with TypeError. Attributes are accessed as response.added, response.modified, etc.
gotchaBeta product APIs (e.g. Assets, CRA) are subject to breaking changes without versioning, with 30 days notice. GA products are versioned but the SDK fixes to a single API version — there is no per-request API version override.
Upgrade
Version history

Breaking-change detection hasn't run for this library yet.

Audit
Security & dependencies

CVE tracking and dependency tree are planned for a later release.

Agent activity
33 hits · last 30 days
dotbot
5
gptbot
4
claudebot
4
ahrefsbot
3
petalbot
1
bytedance
1
chatgpt-user
1
perplexity-bot
1
Resources