MX
Bank-grade aggregation API with investment holdings billed as its own product.
Last updated
What it is
MX Technologies sells account aggregation to banks, credit unions and fintechs, and the Platform API is the developer surface for it — five resources (institution, user, member, account, transaction) where a member is one user's relationship with one institution.
Holdings are not part of aggregation. MX bills them as their own product, Investment Data (the API reference still calls it Investment Data Enhancement), and a user is enrolled in it the moment you call any of its read or list endpoints for them; a separate deactivate endpoint is the documented way out and is explicitly non-billable. Everything else MX puts its name on — the PFM widgets, Customer Analytics, the Financial AI Assistant — is a different purchase and is not this card.
Pricing
Not published, and unusually there is nothing to read: the vendor has no pricing page, /pricing
is a 404, and the only call to action anywhere on the site is a demo request.
The docs do publish the shape. Billing is per product and per enrolled user rather than per API call, which is why the deactivate endpoint exists and why the docs mark it free. Account Aggregation, Extended Transaction History, Investment Data and Data Enhancement are separately sold, and a quote assembles from whichever set you ask for.
There is no free tier and no self-serve key. Development credentials come from the Client Dashboard, which you get by becoming a customer, and the development environment reaches only MX's own test institutions — so you cannot evaluate a real brokerage connection before you have signed.
Data & coverage
A holding carries cost_basis, purchase_price, current_price with a current_price_as_of
timestamp, market_value, quantity, symbol, daily and total unrealised gain and loss, and
vested_quantity, unvested_quantity and their values for equity compensation. holding_type is
a fourteen-value enum covering equity and ADRs, ETFs, money market, mutual funds, hedge funds,
annuities, unit investment trusts, cash, fixed income split six ways, options with employee stock
options and RSUs beneath them, alternative investments, CDs and loans. Prices are whatever the
institution reported; nothing here is a market feed.
Investment activity comes through the ordinary transactions resource, classified as Buy, Sell, Income, Fees, Corporate Actions or a generic Investment.
Refresh is daily at best. MX background-aggregates each member about every 24 hours, and a standard foreground aggregation is throttled to one per three hours per member.
The docs claim "tens of thousands of financial institutions" and the marketing page for Investment Data claims 50-plus account types including brokerage, retirement, 529 plans and HSAs. Canada is in scope: the holding-type enum carries segregated funds, labour-sponsored investments and GICs, and the Insights library ships Canadian tax content. MX publishes no institution list, so you cannot check whether a particular broker is reachable before you are a customer.
Integrations
REST and JSON, basic authentication over the base64 of client_id:api_key, and a versioned
Accept header. Generated client libraries for Node, Python, Ruby, Java, C# and Go live under the
mxenabled GitHub organisation and were regenerated in one batch on 29 January 2026;
mx-platform-python on PyPI is MX's own, at 1.12.0 from that date, and mx-platform-ruby carries
the same date. There is a Connect Widget with web and React Native SDKs, and webhooks for holdings,
accounts, transactions, members, connection status and jobs.
Limitations
- No published price at any volume, no free tier, no trial and no way to get a key without a commercial relationship.
- Every request must originate from an allowlisted IP, and MX says addresses outside the United States are "normally not permissible" and are investigated by hand before approval.
- Three-hour aggregation throttle per member, and background aggregation only runs if the member has not been aggregated in the last 20 hours. Nothing here supports an intraday portfolio view.
- Ninety days of transactions unless you buy Extended Transaction History; 24 months is the ceiling even then.
- No CUSIP, no ISIN, no tax lots. Symbol and a description string are what you reconcile on.
- Read-only. No order placement, no transfers out of the aggregation product.
- No public institution directory, so broker coverage is unverifiable from outside.
Alternatives
Plaid Investments publishes a coverage file and a tax-lot array, which makes it far easier to evaluate before signing. Akoya refuses to scrape and covers fewer institutions as a result. SnapTrade is the only one of the four that will sell to a two-person shop or place an order. MX competes on being the platform a bank already runs — a reason to end up here rather than a reason to choose it.
Specs
- Interfaces
- API, webhooks, Python
- Export
- JSON
- Asset classes
- Stocks, ETF, Mutual funds, Bonds, Options
- Markets
- US, CA
- Platforms
- Web, Library
- AI features
- None
- Capabilities
- Broker import
- Pricing verified
- Capabilities verified
- Coverage verified
Also worth comparing
- Akoya — Bank-owned API network for consumer-permissioned account and holdings data. No scraping.
- Plaid Investments — Read-only holdings, cost basis and investment transactions from 3,200 brokerages.
- Wealthica Business — Canadian wealth aggregation — 125 published providers, positions, transactions, CUSIP.
- Yodlee — Long-running aggregation platform whose holdings carry CUSIP, ISIN and SEDOL.
- Mastercard Open Finance — The old Finicity API under Mastercard's name, with holdings on the account object.
- SnapTrade — One API for reading brokerage holdings and placing orders at supported brokers.
FAQ
Can a developer sign up for MX and get an API key?
No. There is no self-serve signup, no sandbox you can register for and no free tier. Both development and production credentials come from the Client Dashboard, which you reach by becoming a customer, and every request must also come from an IP address you have allowlisted there. The development environment connects only to MX's own test institutions.
What does MX cost?
Nothing is published. MX has no pricing page at all and the site offers only a demo request. The docs do publish the billing shape — Investment Data is a billable product a user is enrolled in the moment you call any holdings read or list endpoint for them, deactivating that user is free, and Extended Transaction History is a separate purchase from Account Aggregation.
Does MX return cost basis and tax lots for investment holdings?
Cost basis yes, tax lots no. A holding carries cost_basis, purchase_price, current_price with a current_price_as_of timestamp, market value, quantity, symbol, daily and total unrealised gain/loss, and vested and unvested quantity and value for equity compensation. There is no per-lot array and no CUSIP or ISIN field — you reconcile on symbol and description.
How much investment transaction history does MX return?
Ninety days under Account Aggregation. Buys, sells, investment income, fees and corporate actions arrive through the ordinary transactions resource with an investment classification rather than through a separate endpoint. Up to 24 months requires Extended Transaction History, which is a separate billable product.