Oxagen Docs

Plaid

Connect bank and credit-card accounts via Plaid Link. Transactions, accounts, and merchants land as typed `financial.*` nodes with the edges that make money-movement graph-traversable.

Plaid logo

Plaid

Bank + card transactions → `financial.*` nodes with money-movement edges.

The Plaid connector ingests transaction history from bank, credit card, and investment accounts via Plaid Link. The flow is delegate-to-Plaid: you authenticate with your bank inside Plaid's UI, and Oxagen never sees the bank credentials — Plaid exchanges that auth for a long-lived access_token that the worker uses to pull cursor-paged transaction deltas.

Mapping is the same five-node-type shape used by the Financial Goals work: accounts, transactions, and merchants are first-class nodes with the edges between them that make money-movement queryable.

What gets ingested

SourceNode typeProperties
Accountfinancial.accountplaid_account_id, name, mask, type, subtype
Transactionfinancial.transactionplaid_transaction_id, amount, iso_currency_code, date, category, pfc_primary, pfc_detailed
Merchantfinancial.merchantname (normalized), plaid_merchant_id
EdgeDirectionMeaning
posted_toAccount → TransactionWhere the transaction landed
billed_byMerchant → TransactionWho charged it
funded_byTransaction → AccountReverse of posted_to
paid_toTransaction → MerchantReverse of billed_by
counterpart_ofTransaction ↔ TransactionLinks transfer pairs across accounts in the same workspace (e.g. wire-out + wire-in within ±3 days, opposite-sign amounts of the same magnitude). Reads as "one money move" instead of two unrelated events.

Removed transactions (Plaid issued a correction) are tombstoned via properties.plaid_removed = true rather than hard-deleted — append-only audit posture.

Real use cases

  • Categorize spend across accountsMATCH (m:financial.merchant)-[:billed_by]->(t:financial.transaction) WHERE t.date >= date() - duration('P30D') groups every transaction by merchant across every connected account in one query.
  • Cross-domain edges — pair with the BigQuery connector and a vendor CSV: stamp vendor_of edges from financial.merchant to existing organization nodes so "every dollar we paid to Acme" is one traversal.
  • Reconcile wires — the counterpart_of heuristic links wire-out / wire-in pairs automatically; downstream agents can flag unmatched transfers as anomalies.

Settings

KeyTypeDefaultDescription
backfill_daysnumber730How far back to pull transaction history. Plaid supports up to 24 months by default.

Authentication

Plaid uses its own OAuth-like flow (Plaid Link), not raw OAuth 2.0. The connection wizard pops the Plaid Link iframe; you select your bank, authenticate there, and Plaid returns a short-lived public_token that Oxagen exchanges server-side for an access_token. The access token is encrypted at rest; refresh is handled by Plaid (the token doesn't expire for normal usage).

Cost notes

Plaid charges per institution-month and per transaction. The connector cursor-pages /transactions/sync for incremental deltas, so the per-sync cost is bounded by what actually changed — not the size of your history. The deliberate omission of LLM extraction (transactions are already structured) keeps Oxagen's per-sync embedding cost flat.


Get started free · Connectors overview

On this page