Registry / payments / plaid-python

plaid-python

JSON →
library38.3.0pypypi✓ verified 51d 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
pip install plaid-python
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.

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

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 issues
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.
fix
Use Configuration + ApiClient + PlaidApi pattern. See README for current quickstart.
affects: < 8.0.0
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.
fix
Pin to a specific version in production: pip install plaid-python==38.3.0. Monitor changelog before upgrading major versions.
affects: all
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.
fix
Import the model for each endpoint: from plaid.model.transactions_sync_request import TransactionsSyncRequest, then pass an instance.
affects: >= 8.0.0
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.
fix
Get environment-specific secrets from Plaid Dashboard > Team Settings > Keys. Store separately as PLAID_SECRET_SANDBOX and PLAID_SECRET_PRODUCTION.
affects: all
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.
fix
Access typed attributes: response.added for new transactions, response.next_cursor for pagination cursor, etc.
affects: >= 8.0.0
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.
fix
Monitor Plaid changelog for beta product changes. For GA products, upgrade SDK major versions intentionally, not automatically.
affects: all
Upgrade
Version history
39.2.0latest on PyPI
Audit
Dependencies
urllib3requiredHTTP client used internally.
Agent activity
80 hits · last 30 days
node
16
seranking-bot
4
ahrefsbot
2
Amazon
1
applebot
1
OpenAI (training)
1
Resources