Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/mx-accounts-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no email required.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
contact:
name: MX Platform API
url: https://www.mx.com/products/platform-api
description: 'The MX Platform API is a powerful, fully-featured API designed to make aggregating and enhancing financial data easy and reliable. It can seamlessly connect your app or website to tens of thousands of financial institutions.
## What''s Changed?
Several endpoints, headers, and fields changed in `v20250224`. For more on breaking changes, refer to our [versioning](/api-reference/platform-api/overview/versioning#v20250224) and [migration](/api-reference/platform-api/overview/migration) guides.
## Version Header
Versions are set in the `Accept-Version` header of API requests. Version numbers correspond with the date associated with that version. The example below uses the version `v20250224`.
```
-H ''Accept: application/json''
-H ''Accept-Version: v20250224''
```
---
'
title: MX Platform Accounts API
version: '20250224'
servers:
- url: https://int-api.mx.com
- url: https://api.mx.com
security:
- basicAuth: []
tags:
- name: accounts
description: 'The Accounts endpoints represent a user''s checking, savings, mortgage, 401(k), or other types of accounts held by a financial institution.
An account belongs to a `member`, which represents the user''s overall relationship with a particular financial institution. A checking account may be just one part of a larger relationship that could also include a car loan and a savings account.
Accounts—and the transactions associated with them—are updated every 24 hours, unless the associated `user` is disabled.
You can also create manual accounts. Since a manual account has no credentials tied to the member, the account will never aggregate or include data from a data feed. All manual accounts are automatically created under the Manual Institution member.
'
paths:
/users/{user_identifier}/accounts:
get:
description: 'This endpoint returns a list of all the accounts associated with the specified `user`.
<Warning>
This request will not return the full account number. It may return the last four digits of the account number if that information has been provided during aggregation. If you need the full account number, please refer to [List account numbers by member](/api-reference/platform-api/reference/list-account-numbers-by-member/) or [List account numbers by account](/api-reference/platform-api/reference/list-account-numbers-by-account/).
</Warning>
'
operationId: listUserAccounts
parameters:
- $ref: '#/components/parameters/acceptVersion'
- $ref: '#/components/parameters/acceptHeader'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/memberIsManagedByUser'
- $ref: '#/components/parameters/accountIsManual'
- $ref: '#/components/parameters/recordsPerPageMax1000'
- $ref: '#/components/parameters/userIdentifier'
- $ref: '#/components/parameters/useCase'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AccountsResponseBody'
description: OK
summary: List accounts
tags:
- accounts
post:
description: 'This endpoint can only be used to create manual accounts. Creating a manual account will automatically create it under the Manual Institution member. Since a manual account has no credentials tied to the member, the account will never aggregate or include data from a data feed.
<Warning>
You must use the user `guid` when setting `user_identifier` in the path.
</Warning>
'
operationId: createManualAccount
parameters:
- $ref: '#/components/parameters/acceptVersion'
- $ref: '#/components/parameters/userIdentifier'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AccountCreateRequestBody'
description: Manual account object to be created.
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AccountResponseBody'
description: OK
summary: Create manual account
tags:
- accounts
/users/{user_guid}/accounts/{account_guid}:
get:
description: This endpoint returns the specified `account` resource.
operationId: readAccount
parameters:
- $ref: '#/components/parameters/acceptVersion'
- $ref: '#/components/parameters/accountGuid'
- $ref: '#/components/parameters/userGuid'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AccountResponseBody'
description: OK
summary: Read account
tags:
- accounts
delete:
description: This endpoint deletes accounts that were manually created. The API will respond with an empty object and a status of `204 No Content`.
operationId: deleteManualAccount
parameters:
- $ref: '#/components/parameters/acceptVersion'
- $ref: '#/components/parameters/accountGuid'
- $ref: '#/components/parameters/acceptHeader'
- $ref: '#/components/parameters/userGuid'
responses:
'204':
description: No content.
summary: Delete manual account
tags:
- accounts
/users/{user_identifier}/accounts/{account_identifier}/account_numbers:
get:
description: This endpoint returns a list of account numbers associated with the specified `account`.
operationId: listAccountNumbersByAccount
parameters:
- $ref: '#/components/parameters/acceptVersion'
- $ref: '#/components/parameters/accountIdentifier'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/recordsPerPageMax1000'
- $ref: '#/components/parameters/userIdentifier'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AccountNumbersResponseBody'
description: OK
summary: List account numbers by account
tags:
- accounts
/users/{user_guid}/accounts/{account_guid}/block:
put:
description: 'This endpoint is used to delete existing data and block new data from being stored on the specified account. This may be necessary to comply with certain rules, regulations, or standards. This endpoint also:
- Immediately and permanently deletes most data from the account object. Certain information is retained that is necessary for MX to prevent the account from being re-added.
- Prevents MX from creating or storing any additional data associated with the account, for example transactions, holdings, statements, and so on.
- Immediately and permanently deletes all data associated with the account, for example transactions, holdings, statements, etc.
This action is scoped to the member the account belongs to. This means that if the real world account is connected or reconnected via another member, the block will have no effect on that account.
This action cannot be taken on accounts where `is_manual` is `true`.
Objects deleted as a result of blocking an account will issue a webhook for that object with the action set to deleted. For example, account deleted, transaction deleted, and so on. There is no special webhook or action for blocking.
'
operationId: blockAccount
parameters:
- $ref: '#/components/parameters/acceptVersion'
- $ref: '#/components/parameters/accountGuid'
- $ref: '#/components/parameters/userGuid'
responses:
'200':
description: OK
summary: Block an account
tags:
- accounts
/users/{user_guid}/accounts/merge:
post:
operationId: mergeAccounts
tags:
- accounts
summary: Merge accounts
description: "Merge two or more financial accounts that an end user has identified as duplicates. \nProvide at least two account GUIDs belonging to the same user. \n<Warning>\n\nThe response will return a single consolidated account. Any other accounts you provided that were not included in the response will be deleted.\nThis is a destructive action and can't be undone.\n\n</Warning>\n"
parameters:
- $ref: '#/components/parameters/acceptVersion'
- $ref: '#/components/parameters/userGuid'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AccountsMergeRequestBody'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AccountResponseBody'
/users/{user_guid}/accounts/{account_guid}/monthly_account_balances:
get:
description: Use this endpoint to list all monthly account balances associated with an account GUID. Setting `from_date` returns account balances starting from the set month. Setting `to_date` returns account balances ending with the set month.
operationId: listAccountBalancesByMonth
parameters:
- $ref: '#/components/parameters/acceptVersion'
- $ref: '#/components/parameters/userGuid'
- $ref: '#/components/parameters/accountGuid'
- $ref: '#/components/parameters/fromDateRequired'
- $ref: '#/components/parameters/toDateRequired'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/MonthlyAccountBalancesResponseBody'
description: OK
summary: List account balances by month
tags:
- accounts
/users/{user_guid}/members/{member_guid}/account_numbers:
get:
description: This endpoint returns a list of account numbers associated with the specified `member`.
operationId: listAccountNumbersByMember
parameters:
- $ref: '#/components/parameters/acceptVersion'
- $ref: '#/components/parameters/memberGuid'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/recordsPerPageMax1000'
- $ref: '#/components/parameters/userGuid'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AccountNumbersResponseBody'
description: OK
summary: List account numbers by member
tags:
- accounts
/users/{user_identifier}/members/{member_identifier}/account_owners:
get:
description: This endpoint returns an array with information about every account associated with a particular member.
operationId: listAccountOwnersByMember
parameters:
- $ref: '#/components/parameters/acceptVersion'
- $ref: '#/components/parameters/memberIdentifier'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/recordsPerPageMax1000'
- $ref: '#/components/parameters/userIdentifier'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AccountOwnersResponseBody'
description: OK
summary: List account owners by member
tags:
- accounts
/users/{user_identifier}/members/{member_identifier}/accounts:
get:
description: This endpoint returns a list of all the accounts associated with the specified `member`.
operationId: listMemberAccounts
parameters:
- $ref: '#/components/parameters/acceptVersion'
- $ref: '#/components/parameters/memberIsManagedByUser'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/recordsPerPageMax1000'
- $ref: '#/components/parameters/userIdentifier'
- $ref: '#/components/parameters/memberIdentifier'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AccountsResponseBody'
description: OK
summary: List member accounts
tags:
- accounts
/users/{user_identifier}/members/{member_identifier}/accounts/{account_identifier}:
get:
description: This endpoint allows you to read the attributes of an `account` resource.
operationId: readAccountByMember
parameters:
- $ref: '#/components/parameters/acceptVersion'
- $ref: '#/components/parameters/accountIdentifier'
- $ref: '#/components/parameters/memberIdentifier'
- $ref: '#/components/parameters/userIdentifier'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AccountResponseBody'
description: OK
summary: Read member account
tags:
- accounts
put:
description: This endpoint allows you to update certain attributes of an `account` resource, including manual accounts. For manual accounts, you can update every field listed. For aggregated accounts, you can only update `is_business`, `is_hidden` and `metadata`.
operationId: updateAccountByMember
parameters:
- $ref: '#/components/parameters/acceptVersion'
- $ref: '#/components/parameters/accountIdentifier'
- $ref: '#/components/parameters/memberIdentifier'
- $ref: '#/components/parameters/userIdentifier'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AccountUpdateRequestBody'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AccountResponseBody'
description: OK
summary: Update account by member
tags:
- accounts
components:
parameters:
memberIdentifier:
description: Use either the member `id` you defined or the MX-defined member `guid`. See [MX-Defined GUIDs vs IDs Defined by You](/products/connectivity/overview/held-data/#mx-defined-guids-vs-ids-defined-by-you).
name: member_identifier
in: path
required: true
schema:
type: string
useCase:
description: The use case associated with the member. Valid values are `PFM` and `MONEY_MOVEMENT`. For example, you can append either `?use_case=PFM` or `?use_case=MONEY_MOVEMENT`.
required: false
in: query
name: use_case
schema:
type: string
toDateRequired:
description: Filter transactions to this date (at midnight). This only supports ISO 8601 format without timestamp (YYYY-MM-DD). Defaults to 5 days forward from the day the request is made to capture pending transactions.
example: '2024-08-28'
in: query
required: true
name: to_date
schema:
type: string
accountIsManual:
description: List only accounts that were manually created.
example: true
in: query
name: is_manual
schema:
type: boolean
memberGuid:
description: The unique id for a `member`.
example: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
in: path
name: member_guid
required: true
schema:
type: string
acceptVersion:
name: Accept-Version
in: header
required: true
schema:
type: string
default: v20250224
example: v20250224
description: MX Platform API version.
page:
description: Results are paginated. Specify current page.
example: 1
in: query
name: page
schema:
type: integer
accountIdentifier:
description: Use either the account `id` you defined or the MX-defined account `guid`. See [MX-Defined GUIDs vs IDs Defined by You](/products/connectivity/overview/held-data/#mx-defined-guids-vs-ids-defined-by-you).
in: path
required: true
name: account_identifier
schema:
type: string
accountGuid:
description: The unique id for an `account`.
example: ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
in: path
name: account_guid
required: true
schema:
type: string
recordsPerPageMax1000:
description: This specifies the number of records to be returned on each page. Defaults to `25`. The valid range is from `10` to `1000`. If the value exceeds `1000`, the default value of `25` will be used instead.
example: 10
in: query
name: records_per_page
schema:
type: integer
acceptHeader:
description: Specifies the media type expected in the response.
in: header
name: Accept
required: true
schema:
type: string
example: application/json
fromDateRequired:
description: Filter transactions from this date. This only supports ISO 8601 format without timestamp (YYYY-MM-DD). Defaults to 120 days ago if not provided.
example: '2024-02-01'
required: true
in: query
name: from_date
schema:
type: string
memberIsManagedByUser:
description: List only accounts whose member is managed by the user.
example: true
in: query
name: member_is_managed_by_user
schema:
type: boolean
userGuid:
description: The unique identifier for a `user`, beginning with the prefix `USR-`.
example: USR-fa7537f3-48aa-a683-a02a-b18940482f54
in: path
name: user_guid
required: true
schema:
type: string
userIdentifier:
description: Use either the user `id` you defined or the MX-defined user `guid`. See [MX-Defined GUIDs vs IDs Defined by You](/products/connectivity/overview/held-data/#mx-defined-guids-vs-ids-defined-by-you).
in: path
required: true
name: user_identifier
schema:
type: string
schemas:
AccountNumbersResponseBody:
properties:
account_numbers:
items:
$ref: '#/components/schemas/AccountNumberResponse'
type: array
pagination:
$ref: '#/components/schemas/PaginationResponse'
type: object
AccountOwnersResponseBody:
properties:
account_owners:
items:
$ref: '#/components/schemas/AccountOwnerResponse'
type: array
pagination:
$ref: '#/components/schemas/PaginationResponse'
type: object
AccountNumberResponse:
properties:
account_guid:
description: The unique identifier for an account. Defined by MX.
example: ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
type: string
account_number:
description: The account number associated with the account. This will typically be a masked or partial account number.
example: '3331261'
type:
- string
- 'null'
guid:
description: Unique identifier for the account number. Defined by MX.
example: ACN-8899832e-e5b4-42cd-aa25-bbf1dc889a8f
type:
- string
- 'null'
institution_number:
description: The three-digit number identifying a Canadian banking institution.
example: '123'
type:
- string
- 'null'
loan_guarantor:
description: The guarantor of the student loan.
example: U.S. DEPARTMENT OF EDUCATION (123456)
type:
- string
- 'null'
loan_reference_number:
description: The reference number of the student loan.
example: '123456789012345'
type:
- string
- 'null'
member_guid:
description: The unique identifier for the member. Defined by MX.
example: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
type:
- string
- 'null'
passed_validation:
description: This indicates whether the account and routing numbers passed MX's internal validity checks. If true, the account and routing/transit numbers are likely (but not guaranteed) to be valid. If false, either the account number, routing/transit number, or both are likely invalid.
example: true
type:
- boolean
- 'null'
routing_number:
description: The routing number for the `account`.
example: '68899990000000'
type:
- string
- 'null'
sequence_number:
description: The sequence number of the student loan.
example: 1-01
type:
- string
- 'null'
transit_number:
description: The five-digit number identifying the branch of a Canadian financial institution.
example: '12345'
type:
- string
- 'null'
user_guid:
description: The unique identifier for the user. Defined by MX.
example: USR-fa7537f3-48aa-a683-a02a-b18940482f54
type:
- string
- 'null'
type: object
AccountResponse:
properties:
account_number:
description: The account number associated with the account. This will typically be a masked or partial account number.
example: '3331261'
type:
- string
- 'null'
account_ownership:
description: The type of ownership associated with the account. `NULL` is returned if not received in the data feed.
example: INDIVIDUAL
type:
- string
- 'null'
enum:
- UNKNOWN
- INDIVIDUAL
- JOINT
- MULTIPLE
- null
annuity_policy_to_date:
description: The date until which the policy is in effect.
example: '2025-12-31'
type:
- string
- 'null'
annuity_provider:
description: The provider of the insurance policy.
example: Metlife
type:
- string
- 'null'
annuity_term_year:
description: The effective duration of an insurance policy (one year, five years, etc.).
example: 30
type:
- integer
- 'null'
apr:
description: The annual percentage rate associated with the `account`.
example: 1
type:
- number
- 'null'
apy:
description: The annual percentage yield associated with the `account`.
example: 2.35
type:
- number
- 'null'
available_balance:
description: 'The balance that is available for use in asset accounts like checking and savings.
`PENDING` transactions are typically (not always) taken into account with the available balance.
`available_balance` will usually be a positive value for all account types, determined in the same way as the balance field.
'
example: 1000
type:
- number
- 'null'
available_credit:
description: 'The amount of credit available for use in liability accounts like credit cards and lines of credit.
`PENDING` transactions are typically (not always) taken into account with available credit.
`available_credit` will usually be a positive value for all account types, determined in the same way as the `balance` field.
'
example: 4000
type:
- number
- 'null'
balance:
description: "The current balance of the account.\n\n`PENDING` transactions are typically not taken into account with the current balance, but this may not always be the case.\n \nThe balance will usually be a positive value for all account types. Asset-type accounts (`CHECKING`, `SAVINGS`, `INVESTMENT`) may have a negative balance if they are in overdraft.\n\nDebt-type accounts (`CREDIT_CARD`, `LOAN`, `LINE_OF_CREDIT`, `MORTGAGE`) may have a negative balance if they are overpaid.\n"
example: 1000
type:
- number
- 'null'
cash_balance:
description: The cash balance of the `account`.
example: 2500
type:
- number
- 'null'
cash_surrender_value:
description: The sum of money paid to the policyholder or annuity holder in the event the policy is voluntarily terminated before it matures, or the insured event occurs.
example: 1000
type:
- number
- 'null'
created_at:
description: The date and time the account was created, represented in ISO 8601 format with a timestamp.
example: '2025-02-13T18:08:00+00:00'
type: string
credit_limit:
description: The credit limit associated with the `account`.
example: 5000
type:
- number
- 'null'
currency_code:
description: The three-character ISO 4217 currency code, for example, `USD`.
example: USD
type:
- string
- 'null'
day_payment_is_due:
description: The day of the month the payment is due. For example, the 14th is passed as `14`.
example: 14
type:
- integer
- 'null'
death_benefit:
description: The amount paid to the beneficiary of the account upon death of the account owner.
example: 1000
type:
- integer
- 'null'
federal_insurance_status:
description: 'The federal insurance status of the account. Indicates whether the account is insured by the FDIC (banks) or NCUA (credit unions).
Returns an integer (`UNKNOWN_INSURED` = 0, `INSURED` = 1, `NOT_INSURED` = 2).
'
example: INSURED
type:
- string
- 'null'
enum:
- UNKNOWN_INSURED
- INSURED
- NOT_INSURED
guid:
description: Unique identifier for the account. Defined by MX.
example: ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
type:
- string
- 'null'
id:
description: The unique partner-defined identifier for the account.
example: '1040434698'
type:
- string
- 'null'
imported_at:
description: The date and time at which the `account` was last successfully aggregated and received data.
example: '2015-10-13T17:57:37.000Z'
type:
- string
- 'null'
interest_rate:
description: The interest rate associated with the account.
example: 3.25
type:
- number
- 'null'
institution_code:
description: The code identifying a financial institution.
example: 3af3685e-05d9-7060-359f-008d0755e993
type:
- string
- 'null'
insured_name:
description: The name of the insured person.
example: Tommy Shelby
type:
- string
- 'null'
is_closed:
description: Indicates whether an account has been closed. Closed accounts will no longer update balance or transaction information.
example: false
type: boolean
is_hidden:
description: Indicates whether the account is hidden. Hidden accounts can still have an active balance and receive transactions. Defaults to `false`.
example: false
type:
- boolean
- 'null'
is_manual:
description: Indicates whether the transaction was manually created or belongs to a manual account.
example: false
type:
- boolean
- 'null'
last_payment:
description: The amount of the most recent payment on the `account`.
example: 100
type:
- number
- 'null'
last_payment_at:
description: The date and time when the last payment was made, represented in ISO 8601 format with a timestamp.
example: '2023-07-25T17:14:46Z'
type:
- string
- 'null'
loan_amount:
description: The amount of the loan associated with the `account`.
example: 1000
type:
- number
- 'null'
margin_balance:
description: Represents the amount of debt the investor owes to the broker for the use of margin. It can be positive or negative, depending on the performance of the investments made with the borrowed funds. A positive margin balance indicates that the securities purchased on margin have increased in value, whereas a negative margin balance signifies that the securities have decreased in value.
example: 1000
type:
- number
- 'null'
matures_on:
description: The date on which the `account` matures.
example: '2015-10-13T17:57:37.000Z'
type:
- string
- 'null'
member_guid:
description: The unique identifier for the member. Defined by MX.
example: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
type:
- string
- 'null'
member_id:
description: The unique, partner-defined, identifier for the member associated with this `account`.
example: member123
type:
- string
- 'null'
member_is_managed_by_user:
description: This indicates whether the member is managed by the user or the MX partner. Members created with the managed member feature will have this field set to `false`.
example: false
type:
- boolean
- 'null'
metadata:
description: Additional information you stored about the `account`.
example: some metadata
type:
- string
- 'null'
minimum_balance:
description: The minimum balance associated with the `account`.
example: 100
type:
- number
- 'null'
minimum_payment:
description: The minimum payment required for an account. This can apply to any debt account.
example: 10
type:
- number
- 'null'
name:
description: The human-readable name for the resource.
example: Test account 2
type:
- string
- 'null'
nickname:
description: An alternate name for the `account`.
example: My Checking
type:
- string
- 'null'
original_balance:
description: The original balance associated with the `account`. This will always be positive.
example: 10
type:
- number
- 'null'
pay_out_amount:
description: The amount paid out to the insured individual or beneficiary under the conditions of the insurance policy.
example: 10
type:
- number
- 'null'
payment_due_at:
description: The date and time at which the next payment is due on the `account`.
example: '2015-10-13T17:57:37.000Z'
type:
- string
- 'null'
payoff_balance:
description: The payoff balance for a debt `account`. This will normally be a positive number.
example: 10
type:
- number
- 'null'
premium_amount:
description: The insurance policy's premium amount.
example: 1
type:
- number
- 'null'
property_type:
description: Subtype if the account type is `PROPERTY`. This field should be ignored unless the type is set to PROPERTY.
example: VEHICLE
type:
- string
- 'null'
enum:
- APPLIANCES
- ART
- COMPUTER
- ELECTRONICS
- FURNITURE
- JEWELRY
- MISCELLANEOUS
- REAL_ESTATE
- SPORTS_EQUIPMENT
- VEHICLE
routing_number:
description: The routing number for the `account`.
example: '68899990000000'
type:
- string
- 'null'
# --- truncated at 32 KB (51 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mx/refs/heads/main/openapi/mx-accounts-api-openapi.yml