# plaid_ex v1.0.0 - Table of Contents

> Production-grade Plaid API client for Elixir/OTP. Full API coverage,
typed schemas, resilient HTTP with circuit breakers, webhook orchestration,
cursor-based transaction sync pipelines, multi-tenant support, and deep
OpenTelemetry observability. Built for enterprise fintech systems.

## Pages

- [PlaidEx](readme.md)
- [Changelog](changelog.md)
- [LICENSE](license.md)

- Guides
  - [Getting Started with PlaidEx](getting_started.md)
  - [Configuration Reference](configuration.md)
  - [Multi-Tenant Deployments](multi_tenant.md)
  - [Webhooks](webhooks.md)
  - [Transaction Sync](transaction_sync.md)
  - [OAuth Flows](oauth_flows.md)
  - [Observability](observability.md)
  - [Testing](testing.md)
  - [Production Hardening](production.md)
  - [Upgrade Guide](upgrade.md)

## Modules

- [PlaidEx.API.Base](PlaidEx.API.Base.md): Shared aliases for `PlaidEx.API.*` modules.
- [PlaidEx.API.IdentityVerification](PlaidEx.API.IdentityVerification.md): Plaid Identity Verification (IDV) API — KYC/AML identity verification.

- [PlaidEx.API.PaymentInitiation](PlaidEx.API.PaymentInitiation.md): Plaid Payment Initiation API — bank-to-bank payments (UK/EU).

- [PlaidEx.Config.TenantRegistry](PlaidEx.Config.TenantRegistry.md): ETS-backed registry for multi-tenant Plaid configurations.
- [PlaidEx.Error](PlaidEx.Error.md): Typed Plaid error struct with retry classification, suggested actions,
and structured metadata for logging and observability.
- [PlaidEx.HTTP.Client](PlaidEx.HTTP.Client.md): Core HTTP client for all Plaid API requests.
- [PlaidEx.HTTP.ClientBehaviour](PlaidEx.HTTP.ClientBehaviour.md): Behaviour for the HTTP client. Define a Mox mock against this for testing.
- [PlaidEx.HTTP.Middleware](PlaidEx.HTTP.Middleware.md): Namespace for PlaidEx HTTP middleware modules.
- [PlaidEx.HTTP.RateLimiter](PlaidEx.HTTP.RateLimiter.md): ETS-backed token bucket rate limiter with per-tenant isolation.
- [PlaidEx.Support.DynamicSupervisorBase](PlaidEx.Support.DynamicSupervisorBase.md): Shared boilerplate for `:one_for_one` `DynamicSupervisor`s that need no
custom `init/1` options. Used by `PlaidEx.MultiTenant.TenantSupervisor`
and `PlaidEx.Reliability.CircuitBreakerSupervisor`, which are otherwise
identical aside from their child-management functions.
- [PlaidEx.Support.EtsGenServer](PlaidEx.Support.EtsGenServer.md): Shared boilerplate for GenServers that own a single named, public ETS
table (`:set`, `:public`, `:named_table`, with read/write concurrency).
- [PlaidEx.Support.HandlerResult](PlaidEx.Support.HandlerResult.md): Normalizes the return value of a user-supplied handler callback
(webhook handlers, sync page handlers) into a consistent
`:ok | {:error, term()}` shape.
- [PlaidEx.Sync.CursorStore.Behaviour](PlaidEx.Sync.CursorStore.Behaviour.md): Behaviour for pluggable cursor persistence backends.
- [PlaidEx.Sync.CursorStore.EtsBackend](PlaidEx.Sync.CursorStore.EtsBackend.md): Default `Behaviour` implementation — an ETS-backed GenServer that
owns the cursor table. Cursors are LOST on application restart; see
`PlaidEx.Sync.CursorStore` moduledoc for how to plug in durable
storage instead.

- [PlaidEx.Webhooks.Handler](PlaidEx.Webhooks.Handler.md): Behaviour for Plaid webhook handlers.
- [PlaidEx.Webhooks.ObanWorker](PlaidEx.Webhooks.ObanWorker.md): Oban worker for durable webhook processing.
- [PlaidEx.Webhooks.Schemas](PlaidEx.Webhooks.Schemas.md): Typed structs for all Plaid webhook event payloads.
- [PlaidEx.Webhooks.Schemas.AssetsEvent](PlaidEx.Webhooks.Schemas.AssetsEvent.md): ASSETS webhook payload (PRODUCT_READY, ERROR).
- [PlaidEx.Webhooks.Schemas.AuthEvent](PlaidEx.Webhooks.Schemas.AuthEvent.md): AUTH webhook payload (AUTOMATICALLY_VERIFIED, VERIFICATION_EXPIRED).
- [PlaidEx.Webhooks.Schemas.BeaconEvent](PlaidEx.Webhooks.Schemas.BeaconEvent.md): BEACON webhook payload.
- [PlaidEx.Webhooks.Schemas.IdentityVerificationEvent](PlaidEx.Webhooks.Schemas.IdentityVerificationEvent.md): IDENTITY_VERIFICATION webhook payload.
- [PlaidEx.Webhooks.Schemas.IncomeEvent](PlaidEx.Webhooks.Schemas.IncomeEvent.md): INCOME.INCOME_VERIFICATION webhook payload.
- [PlaidEx.Webhooks.Schemas.InvestmentsEvent](PlaidEx.Webhooks.Schemas.InvestmentsEvent.md): INVESTMENTS_TRANSACTIONS.DEFAULT_UPDATE webhook payload.
- [PlaidEx.Webhooks.Schemas.ItemErrorEvent](PlaidEx.Webhooks.Schemas.ItemErrorEvent.md): ITEM.ERROR webhook payload — includes structured Plaid error.
- [PlaidEx.Webhooks.Schemas.ItemEvent](PlaidEx.Webhooks.Schemas.ItemEvent.md): Generic ITEM webhook (PENDING_EXPIRATION, USER_PERMISSION_REVOKED, etc.).
- [PlaidEx.Webhooks.Schemas.LiabilitiesEvent](PlaidEx.Webhooks.Schemas.LiabilitiesEvent.md): LIABILITIES.DEFAULT_UPDATE webhook payload.
- [PlaidEx.Webhooks.Schemas.PaymentStatusEvent](PlaidEx.Webhooks.Schemas.PaymentStatusEvent.md): PAYMENT_INITIATION.PAYMENT_STATUS_UPDATE webhook payload.
- [PlaidEx.Webhooks.Schemas.SignalEvent](PlaidEx.Webhooks.Schemas.SignalEvent.md): SIGNAL.DEFAULT_UPDATE webhook payload.
- [PlaidEx.Webhooks.Schemas.StatementsEvent](PlaidEx.Webhooks.Schemas.StatementsEvent.md): STATEMENTS.READY webhook payload.
- [PlaidEx.Webhooks.Schemas.TransactionsEvent](PlaidEx.Webhooks.Schemas.TransactionsEvent.md): TRANSACTIONS.INITIAL_UPDATE / HISTORICAL_UPDATE / DEFAULT_UPDATE webhook.
- [PlaidEx.Webhooks.Schemas.TransactionsSyncEvent](PlaidEx.Webhooks.Schemas.TransactionsSyncEvent.md): TRANSACTIONS.SYNC_UPDATES_AVAILABLE webhook payload.
- [PlaidEx.Webhooks.Schemas.TransferEvent](PlaidEx.Webhooks.Schemas.TransferEvent.md): TRANSFER.TRANSFER_EVENTS_UPDATE webhook payload.

- Public API
  - [PlaidEx](PlaidEx.md): PlaidEx — Production-grade Plaid API client for Elixir/OTP.
  - [PlaidEx.API.Accounts](PlaidEx.API.Accounts.md): Plaid Accounts API — retrieve account and balance information.

  - [PlaidEx.API.Assets](PlaidEx.API.Assets.md): Plaid Assets API — generate Asset Reports for income verification.

  - [PlaidEx.API.Auth](PlaidEx.API.Auth.md): Plaid Auth API — retrieve ACH account and routing numbers.
  - [PlaidEx.API.Beacon](PlaidEx.API.Beacon.md): Plaid Beacon API — fraud and risk intelligence network.

  - [PlaidEx.API.CreditReport](PlaidEx.API.CreditReport.md): Plaid Consumer Report API — credit and risk reports.
  - [PlaidEx.API.Enrich](PlaidEx.API.Enrich.md): Plaid Enrich API — transaction enrichment for non-Plaid data sources.
  - [PlaidEx.API.Identity](PlaidEx.API.Identity.md): Plaid Identity API — retrieve owner identity information.

  - [PlaidEx.API.Income](PlaidEx.API.Income.md): Plaid Income API — employment and income verification.

  - [PlaidEx.API.Institutions](PlaidEx.API.Institutions.md): Plaid Institutions API — search and retrieve institution metadata.

  - [PlaidEx.API.Investments](PlaidEx.API.Investments.md): Plaid Investments API — holdings, transactions, and securities.

  - [PlaidEx.API.Items](PlaidEx.API.Items.md): Plaid Items API — manage connected financial institution Items.
  - [PlaidEx.API.Liabilities](PlaidEx.API.Liabilities.md): Plaid Liabilities API — loan, mortgage, and credit card details.

  - [PlaidEx.API.Link](PlaidEx.API.Link.md): Plaid Link Token API.
  - [PlaidEx.API.Monitor](PlaidEx.API.Monitor.md): Plaid Monitor API — watchlist screening and compliance.

  - [PlaidEx.API.Processor](PlaidEx.API.Processor.md): Plaid Processor API — pass-through data to payment processors.
  - [PlaidEx.API.Sandbox](PlaidEx.API.Sandbox.md): Plaid Sandbox API — sandbox-only test utilities.
  - [PlaidEx.API.Signal](PlaidEx.API.Signal.md): Plaid Signal API — ACH return risk scoring.

  - [PlaidEx.API.Statements](PlaidEx.API.Statements.md): Plaid Statements API — retrieve bank statements.

  - [PlaidEx.API.Transactions](PlaidEx.API.Transactions.md): Plaid Transactions API.
  - [PlaidEx.API.Transfer](PlaidEx.API.Transfer.md): Plaid Transfer API — ACH and RTP transfer orchestration.

  - [PlaidEx.API.User](PlaidEx.API.User.md): Plaid User API — manage Plaid-hosted user identities.

  - [PlaidEx.API.Wallet](PlaidEx.API.Wallet.md): Plaid Wallet API — e-money wallet management (UK/EU).

- Webhooks
  - [PlaidEx.Webhooks.Deduplicator](PlaidEx.Webhooks.Deduplicator.md): ETS-based webhook deduplication with sliding expiry window.
  - [PlaidEx.Webhooks.Dispatcher](PlaidEx.Webhooks.Dispatcher.md): Routes typed webhook events to handler callbacks.
  - [PlaidEx.Webhooks.Plug](PlaidEx.Webhooks.Plug.md): Phoenix Plug for Plaid webhook ingestion.
  - [PlaidEx.Webhooks.Verifier](PlaidEx.Webhooks.Verifier.md): Plaid webhook signature verification.

- Sync Pipelines
  - [PlaidEx.Sync.BroadwayPipeline](PlaidEx.Sync.BroadwayPipeline.md): Broadway pipeline for high-throughput transaction synchronization.
  - [PlaidEx.Sync.CursorStore](PlaidEx.Sync.CursorStore.md): Pluggable store for Plaid transaction sync cursors.
  - [PlaidEx.Sync.SyncSupervisor](PlaidEx.Sync.SyncSupervisor.md): DynamicSupervisor managing transaction sync workers.
  - [PlaidEx.Sync.TransactionSync](PlaidEx.Sync.TransactionSync.md): Durable cursor-based transaction synchronization worker.

- Multi-Tenant
  - [PlaidEx.MultiTenant.Tenant](PlaidEx.MultiTenant.Tenant.md): GenServer representing an active tenant context.
  - [PlaidEx.MultiTenant.TenantSupervisor](PlaidEx.MultiTenant.TenantSupervisor.md): DynamicSupervisor managing per-tenant process subtrees.

- OAuth
  - [PlaidEx.OAuth.Flow](PlaidEx.OAuth.Flow.md): High-level OAuth flow orchestration for Plaid Link.
  - [PlaidEx.OAuth.PKCE](PlaidEx.OAuth.PKCE.md): PKCE (Proof Key for Code Exchange) implementation for OAuth 2.0.
  - [PlaidEx.OAuth.StateStore](PlaidEx.OAuth.StateStore.md): ETS-backed store for OAuth state parameters.

- Reliability
  - [PlaidEx.Reliability.Bulkhead](PlaidEx.Reliability.Bulkhead.md): Bulkhead isolation using bounded process pools.
  - [PlaidEx.Reliability.CircuitBreaker](PlaidEx.Reliability.CircuitBreaker.md): Per-environment GenServer circuit breaker.
  - [PlaidEx.Reliability.CircuitBreakerSupervisor](PlaidEx.Reliability.CircuitBreakerSupervisor.md): DynamicSupervisor managing per-environment circuit breakers.
  - [PlaidEx.Reliability.Retry](PlaidEx.Reliability.Retry.md): Retry classification and scheduling utilities.

- Observability
  - [PlaidEx.Telemetry.Handler](PlaidEx.Telemetry.Handler.md): Telemetry event handlers and attachment helpers.
  - [PlaidEx.Telemetry.Metrics](PlaidEx.Telemetry.Metrics.md): `Telemetry.Metrics` definitions for PlaidEx.
  - [PlaidEx.Telemetry.OpenTelemetry](PlaidEx.Telemetry.OpenTelemetry.md): OpenTelemetry span wrappers for distributed tracing.

- Schemas
  - [PlaidEx.Schemas.AccessToken](PlaidEx.Schemas.AccessToken.md): Response from /item/public_token/exchange.
  - [PlaidEx.Schemas.Account](PlaidEx.Schemas.Account.md): A financial account returned by Plaid.
  - [PlaidEx.Schemas.IdentityData](PlaidEx.Schemas.IdentityData.md): Identity data returned by /identity/get.
  - [PlaidEx.Schemas.Institution](PlaidEx.Schemas.Institution.md): A financial institution from Plaid's institution database.
  - [PlaidEx.Schemas.InvestmentHolding](PlaidEx.Schemas.InvestmentHolding.md): An investment holding (position) from Plaid Investments.
  - [PlaidEx.Schemas.Item](PlaidEx.Schemas.Item.md): A Plaid Item — represents a user's connection to a financial institution.
  - [PlaidEx.Schemas.LinkToken](PlaidEx.Schemas.LinkToken.md): Response from /link/token/create.
  - [PlaidEx.Schemas.Security](PlaidEx.Schemas.Security.md): A security (asset) referenced by investment holdings and transactions.
  - [PlaidEx.Schemas.Transaction](PlaidEx.Schemas.Transaction.md): A financial transaction from Plaid's Transactions product.
  - [PlaidEx.Schemas.TransactionSyncPage](PlaidEx.Schemas.TransactionSyncPage.md): A single page from the `/transactions/sync` endpoint.
  - [PlaidEx.Schemas.Transfer](PlaidEx.Schemas.Transfer.md): A Plaid Transfer object.

- Configuration
  - [PlaidEx.Config](PlaidEx.Config.md): Validated runtime configuration for PlaidEx.

