Banking Data APIs arenaBanking Data APIs
Bank-data aggregation and open-banking platforms — permissioned APIs over consumers' bank accounts for linking, balances, ownership, transactions, and pay-by-bank — judged on account linking and repair, transaction data and enrichment, balance and ownership checks, payment initiation, institution coverage stated honestly by geography, data freshness, integration DX, and consent machinery. Market reality, modeled honestly: Finicity now sells as Mastercard Open Finance US ('provided by Finicity, a Mastercard company') with a self-serve Test Drive sandbox and gated production; Stripe Financial Connections is GA with published per-call pricing but connects US bank accounts only; Plaid publishes tiers without numbers; Teller publishes real prices on its homepage with Payments and Institutions still marked BETA; TrueLayer (UK/EU, acquired Zimpler and in3 in 2025-26) and Yapily (2000+ UK/EU institutions) carry the European side. Excluded: Yodlee (sold by Envestnet to STG in 2025 — enterprise aggregation suite), Flinks (Canada-centric, National Bank-backed), MX judged with its demo-gated sales motion on the record.
53 user stories · 371 judged cells · updated 2026-09-15 · Evidence as of 2026-09-15
Leaderboard — every product ranked by evidenceLeaderboard
| 1 | enterprise-custom vs TrueLayer ↗ | 43/100 | 19/100 | 44/100 | 18/100 | 10/100 | ★ 9▲ 2/yrnpm 1.3k/wkpypi 1.5k/wk | 11/28 verified | 0/100 integrity | ||
| 2 | enterprise-custom vs MX ↗ | 55/100 | 22/100 | 4/100 | 14/100 | 19/100 | ★ 24▲ 5/yrnpm 6.2k/wk | 9/27 verified | 8/100 integrity | ||
| 3 | enterprise-custom vs MX ↗ | 48/100 | 10/100 | 34/100 | 10/100 | 0/100 | ★ 62▲ 13/yrnpm 11.7k/wk | 7/24 verified | 0/100 integrity | ||
| 4 | usage-based vs MX ↗ | 54/100 | 16/100 | 10/100 | 9/100 | 0/100 | 23/31 verified | 80/100 integrity | |||
| 5 | enterprise-custom vs MX ↗ | 45/100 | 8/100 | 15/100 | 10/100 | 15/100 | ★ 15▲ 3/yrnpm 57/wk | 8/27 verified · 1 disputed | 7/100 integrity | ||
| 6 | usage-based vs MX ↗ | 34/100 | 14/100 | 11/100 | 9/100 | 10/100 | ★ 586▲ 43/yrnpm 828.5k/wk | 9/29 verified · 1 disputed | 15/100 integrity | ||
| 7 | free-tier vs MX ↗ | 20/100 | 8/100 | 11/100 | 16/100 | 0/100 | ★ 10▲ 3/yrnpm 1k/wk | 8/23 verified | 20/100 integrity |
Best by user type — persona-weighted winnersBest by user type
Per persona, the product with the highest persona-weighted coverage over just that persona's stories — not the same ranking as the overall PA Score leaderboard above.
Best for developer
Plaid
53/100
Runner-up:
Stripe Financial Connections (48/100)
15 developer stories scored
Best for finance-lead
Mastercard Open Finance (Finicity)
36/100
Runner-up:
Stripe Financial Connections (0/100)
1 finance-lead story scored
Best for founder
TrueLayer
30/100
Runner-up:
Stripe Financial Connections (24/100)
1 founder story scored
Story matrix — every product × every judged storyStory matrix
Account linking — stories about account linking in this arenaAccount linking
Hosted flows
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Account linking — stories about account linking in this arenaLet a user connect their bank with a drop-in hosted flow — create a session server-side, open the widget, and get back a token for the connected account — without building institution UI myself | developer | fullX 8/10 | fullC 8/10 | fullC 8/10 | partialC 3/10 | partialC 6/10 | none 0/10 | fullC 7/10 |
Oauth
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Account linking — stories about account linking in this arenaConnections to major institutions use bank-hosted OAuth rather than screen-scraped credentials — the platform documents its OAuth coverage and how legacy credential flows are being retired | developer | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | partialC 4/10 |
Repair
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Account linking — stories about account linking in this arenaBroken connections are repairable — expired or revoked links surface as documented statuses, and users can re-authenticate in an update flow without starting over | ops | partialC 6/10 | partialC 3/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 |
Agenticness — how well agents can access and operate the productAgenticness
Agent access
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Agenticness — how well agents can access and operate the productPoint an agent at llms.txt or agent-oriented docs | ai-native | fullT 8/10 | partialT 6/10 | fullT 9/10 | fullT 8/10 | none 0/10 | fullT 9/10 | fullT 9/10 |
| Agenticness — how well agents can access and operate the productRun the product headlessly / in CI for automation | ai-native | partialT 4/10 | partialC 6/10 | partialC 5/10 | partialC 6/10 | partialX 5/10 | partialC 5/10 | partialC 5/10 |
| Agenticness — how well agents can access and operate the productPlug MCP servers into this product so it can use their tools | ai-native | n/a | n/a | none 0/10 | n/a | n/a | n/a | n/a |
| Agenticness — how well agents can access and operate the productConnect an agent via an official MCP server | ai-native | fullT 8/10 | partialT 7/10 | fullT 7/10 | fullT 7/10 | none 0/10 | fullT 7/10 | partialT 6/10 |
| Agenticness — how well agents can access and operate the productUse an official CLI | ai-native | fullT 7/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 |
| Agenticness — how well agents can access and operate the productDrive the product through a documented public API | ai-native | partialT 6/10 | partialT 7/10 | fullT 8/10 | fullT 8/10 | partialT 6/10 | fullT 8/10 | fullT 8/10 |
| Agenticness — how well agents can access and operate the productIssue scoped/least-privilege API credentials for an agent | ai-native | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 |
| Agenticness — how well agents can access and operate the productBuild against official SDKs | ai-native | fullT 7/10 | partialC 6/10 | partialC 4/10 | partialC 3/10 | partialT 5/10 | fullC 7/10 | partialT 5/10 |
| Agenticness — how well agents can access and operate the productSubscribe to events via webhooks | ai-native | fullC 7/10 | fullC 7/10 | fullC 8/10 | fullC 7/10 | fullC 7/10 | fullC 8/10 | fullC 8/10 |
Agentic features
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Agenticness — how well agents can access and operate the productGet AI-generated insights and suggestions from my data inside the product | ai-native | partialT 3/10 | none 0/10 | partialC 5/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 |
| Agenticness — how well agents can access and operate the productSet up automations that run autonomously in the background | ai-native | partialC 5/10 | partialC 3/10 | partialT 3/10 | none 0/10 | partialC 4/10 | partialT 5/10 | partialC 4/10 |
| Agenticness — how well agents can access and operate the productDelegate tasks to a built-in AI assistant inside the product | ai-native | none 0/10 | n/a | none 0/10 | n/a | n/a | n/a | n/a |
| Agenticness — how well agents can access and operate the productOperate the product with natural-language commands | ai-native | partialT 4/10 | partialT 4/10 | partialT 6/10 | partialT 5/10 | none 0/10 | partialT 6/10 | none 0/10 |
Api quality
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Agenticness — how well agents can access and operate the productExplore an interactive API reference with runnable examples | ai-native | none 0/10 | none 0/10 | partialT 5/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 |
| Agenticness — how well agents can access and operate the productDownload a machine-readable API spec (OpenAPI or equivalent) | ai-native | none 0/10 | none 0/10 | fullT 9/10 | fullT 8/10 | none 0/10 | none 0/10 | disputedD 4/10 |
| Agenticness — how well agents can access and operate the productTest against a sandbox environment without touching production data | ai-native | fullC 7/10 | fullC 8/10 | fullC 7/10 | fullC 8/10 | fullC 8/10 | partialT 5/10 | fullC 8/10 |
| Agenticness — how well agents can access and operate the productRely on versioned APIs with a documented deprecation policy | ai-native | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 |
Automation depth — how much of the product can run unattendedAutomation depth
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Automation depth — how much of the product can run unattendedPerform bulk operations across many items at once | ai-native | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | partialC 4/10 |
| Automation depth — how much of the product can run unattendedDefine rules that trigger actions automatically on events | ai-native | none 0/10 | partialC 4/10 | partialC 4/10 | none 0/10 | none 0/10 | partialC 4/10 | none 0/10 |
| Automation depth — how much of the product can run unattendedSchedule recurring jobs or workflows | ai-native | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | partialC 5/10 | partialC 5/10 |
| Automation depth — how much of the product can run unattendedVersion, review, and roll back my automations | ai-native | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Balance ownership — stories about balance ownership in this arenaBalance ownership
Ach details
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Balance ownership — stories about balance ownership in this arenaObtain verified account and routing numbers (or tokenized equivalents) from a linked account to fund ACH or bank-debit payments without micro-deposits | developer | fullX 8/10 | fullC 8/10 | fullC 9/10 | partialC 6/10 | partialC 7/10 | none 0/10 | none 0/10 |
Balances
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Balance ownership — stories about balance ownership in this arenaFetch a real-time balance for a connected account before initiating a payment — a documented balance endpoint intended for NSF and risk checks | developer | fullX 7/10 | fullC 8/10 | partialC 6/10 | fullC 7/10 | fullC 9/10 | partialC 5/10 | fullC 7/10 |
Ownership
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Balance ownership — stories about balance ownership in this arenaRetrieve account-holder details — names, addresses, contact data on file at the bank — to match the account owner against my customer | ops | fullX 8/10 | fullC 8/10 | fullC 8/10 | fullC 8/10 | fullC 8/10 | partialC 5/10 | fullC 7/10 |
Processor tokens
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Balance ownership — stories about balance ownership in this arenaLinked accounts plug into my payment processor — documented integrations or token exchange that hand verified account credentials to third-party processors and platforms | developer | fullX 8/10 | fullC 8/10 | partialC 6/10 | partialC 5/10 | none 0/10 | partialC 6/10 | none 0/10 |
Banking agent access — stories about banking agent access in this arenaBanking agent access
Agent data
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Banking agent access — stories about banking agent access in this arenaThe data comes back agent-consumable — clean structured JSON, documented schemas, and enrichment an automated financial workflow can reason over without heuristic parsing | ai-native | partialT 6/10 | partialT 5/10 | fullT 8/10 | partialT 6/10 | partialT 6/10 | partialT 7/10 | partialT 5/10 |
Agent operations
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Banking agent access — stories about banking agent access in this arenaAn agent can operate the platform — create link sessions, retrieve balances and transactions, and manage connections through the API or an MCP surface with scoped credentials | ai-native | partialT 6/10 | partialT 6/10 | partialT 6/10 | partialT 6/10 | partialT 4/10 | partialT 6/10 | partialT 4/10 |
Consent security — stories about consent security in this arenaConsent security
Consent
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Consent security — stories about consent security in this arenaEnd users can see and revoke what they've shared — a documented consent surface or portal where a user manages which apps hold access to their bank data | ops | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 |
Deletion
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Consent security — stories about consent security in this arenaSever and clean up — a documented way to delete a connection or user and have the platform stop collecting and purge held data | ops | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 |
Scopes
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Consent security — stories about consent security in this arenaI request only the data scopes I need — product-scoped consents and documented data-minimization controls, not an all-or-nothing grant | developer | partialC 6/10 | disputedD 4/10 | partialC 4/10 | partialC 4/10 | none 0/10 | partialC 5/10 | partialC 5/10 |
Data freshness — stories about data freshness in this arenaData freshness
Refresh
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Data freshness — stories about data freshness in this arenaTrigger an on-demand refresh of a connected account's data through the API when my use case needs now-fresh data, with the refresh semantics documented | developer | partialX 5/10 | partialC 4/10 | none 0/10 | none 0/10 | partialC 4/10 | none 0/10 | none 0/10 |
Webhooks
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Data freshness — stories about data freshness in this arenaData changes arrive as signed webhooks — new transactions, balance updates, connection state changes — so my system stays current without polling | developer | partialC 6/10 | fullC 8/10 | fullC 8/10 | partialC 6/10 | partialC 5/10 | partialC 5/10 | partialC 6/10 |
Institution coverage — stories about institution coverage in this arenaInstitution coverage
Coverage
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Institution coverage — stories about institution coverage in this arenaThe platform documents how many institutions it reaches and where — published coverage numbers and geographies I can check against where my users actually bank | founder | partialX 4/10 | partialC 3/10 | none 0/10 | none 0/10 | partialX 3/10 | partialC 5/10 | none 0/10 |
Status
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Institution coverage — stories about institution coverage in this arenaPer-institution health is visible — documented institution statuses, outage or degradation signals, and error codes that distinguish a bank problem from my problem | ops | partialC 3/10 | partialT 4/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 |
Integration dx — sandboxes, test modes, webhooks, and how fast a developer gets to a working integrationIntegration dx
Multi product
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Integration dx — sandboxes, test modes, webhooks, and how fast a developer gets to a working integrationOne link session can power multiple data products — auth, balances, transactions, identity — without forcing the user through separate connection flows per product | developer | fullX 8/10 | partialC 5/10 | fullC 7/10 | none 0/10 | fullC 7/10 | fullC 7/10 | partialC 6/10 |
Quickstart
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Integration dx — sandboxes, test modes, webhooks, and how fast a developer gets to a working integrationGo from signup to my first linked sandbox account fast — self-serve API keys, a runnable quickstart, and client libraries in my language | developer | partialT 6/10 | partialT 7/10 | partialT 4/10 | partialC 5/10 | partialC 5/10 | fullC 7/10 | partialT 4/10 |
Sandbox
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Integration dx — sandboxes, test modes, webhooks, and how fast a developer gets to a working integrationA sandbox with test institutions and documented test credentials lets me exercise linking, data retrieval, and error states end-to-end before touching a real bank account | developer | fullC 7/10 | fullC 9/10 | partialC 7/10 | partialC 6/10 | fullC 8/10 | partialC 3/10 | partialC 6/10 |
Openness — open source, data portability, and self-hosting storiesOpenness
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Openness — open source, data portability, and self-hosting storiesDo everything through the API that I can do in the UI | ai-native | partialT 5/10 | partialT 5/10 | partialT 6/10 | partialC 6/10 | partialC 5/10 | partialT 6/10 | partialT 6/10 |
| Openness — open source, data portability, and self-hosting storiesExport all of my data in open formats and leave | ai-native | none 0/10 | none 0/10 | partialC 3/10 | none 0/10 | partialX 3/10 | none 0/10 | none 0/10 |
| Openness — open source, data portability, and self-hosting storiesRead the product's source under an open license | ai-native | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | partialC 2/10 | none 0/10 |
| Openness — open source, data portability, and self-hosting storiesSelf-host the core product | ai-native | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
Payment initiation — stories about payment initiation in this arenaPayment initiation
Pay by bank
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Payment initiation — stories about payment initiation in this arenaInitiate a bank payment from a connected account — a documented pay-by-bank or payment-initiation product with its live geographies stated honestly | developer | partialX 4/10 | partialC 6/10 | none 0/10 | none 0/10 | partialC 5/10 | fullC 8/10 | partialC 6/10 |
Recurring
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Payment initiation — stories about payment initiation in this arenaRecurring bank payments are supported — variable recurring payments, standing consents, or documented recurring debit flows built on the connection | developer | partialX 4/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | fullC 8/10 | fullC 8/10 |
Privacy posture — data-handling and privacy storiesPrivacy posture
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Privacy posture — data-handling and privacy storiesChoose where my data is stored (region/residency) | ai-native | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 |
| Privacy posture — data-handling and privacy storiesPrevent my data from being used to train AI models | ai-native | n/a | n/a | none 0/10 | none 0/10 | n/a | n/a | n/a |
| Privacy posture — data-handling and privacy storiesControl data retention and deletion | ai-native | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 | none 0/10 |
| Privacy posture — data-handling and privacy storiesOpt out of telemetry and usage tracking | ai-native | n/a | none 0/10 | none 0/10 | none 0/10 | n/a | none 0/10 | none 0/10 |
Transactions enrichment — stories about transactions enrichment in this arenaTransactions enrichment
Cashflow
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Transactions enrichment — stories about transactions enrichment in this arenaThe platform derives income and cash-flow signals from connected accounts — recurring streams, payroll detection, or documented income verification products built on the same data | finance-lead | none 0/10 | none 0/10 | none 0/10 | partialC 6/10 | none 0/10 | none 0/10 | none 0/10 |
Enrichment
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Transactions enrichment — stories about transactions enrichment in this arenaRaw bank transactions come back enriched — cleaned merchant names, categories, and logos — documented as a capability of the platform, not left as an exercise for me | developer | none 0/10 | none 0/10 | none 0/10 | partialC 4/10 | partialC 4/10 | none 0/10 | partialC 6/10 |
Transactions
| Story | Persona | |||||||
|---|---|---|---|---|---|---|---|---|
| Transactions enrichment — stories about transactions enrichment in this arenaPull transaction history for a connected account through the API — paginated, with documented history depth and a sync pattern for fetching only what changed | developer | partialX 5/10 | fullC 8/10 | partialC 7/10 | partialC 5/10 | partialX 6/10 | partialC 3/10 | partialC 4/10 |
Adjacent arenas — categories often shopped togetherAdjacent arenas
Shopping this category often means shopping these too.
Startup Banking arenaStartup Banking
5 products · leader: Mercury
Online Payments arenaOnline Payments
10 products · leader: Stripe
Banking as a Service arenaBanking as a Service
6 products · leader: Column
Identity Verification & KYC arenaIdentity Verification & KYC
6 products · leader: Entrust Identity Verification (Onfido)
shares: Integration dx