MX Statements API
With Statements, you can retrieve a user's monthly account statements in PDF format. This data can be used for solutions like personal financial management or risk analysis.
With Statements, you can retrieve a user's monthly account statements in PDF format. This data can be used for solutions like personal financial management or risk analysis.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/mx-statements-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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 Statements API
version: '20250224'
servers:
- url: https://int-api.mx.com
- url: https://api.mx.com
security:
- basicAuth: []
tags:
- name: statements
description: 'With Statements, you can retrieve a user''s monthly account statements in PDF format. This data can be used for solutions like personal financial management or risk analysis.
'
paths:
/users/{user_identifier}/members/{member_identifier}/fetch_statements:
post:
description: Use this endpoint to fetch the statements associated with a particular member.
operationId: fetchStatements
parameters:
- $ref: '#/components/parameters/acceptVersion'
- $ref: '#/components/parameters/memberIdentifier'
- $ref: '#/components/parameters/userIdentifier'
responses:
'202':
content:
application/json:
schema:
$ref: '#/components/schemas/MemberResponseBody'
description: Accepted
summary: Fetch statements
tags:
- statements
/users/{user_guid}/members/{member_guid}/statements:
get:
description: Use this endpoint to get an array of available statements.
operationId: listStatementsByMember
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/StatementsResponseBody'
description: OK
summary: List statements by member
tags:
- statements
/users/{user_guid}/members/{member_guid}/statements/{statement_guid}:
get:
description: Use this endpoint to read a JSON representation of the statement.
operationId: readStatementByMember
parameters:
- $ref: '#/components/parameters/acceptVersion'
- $ref: '#/components/parameters/memberGuid'
- $ref: '#/components/parameters/statementGuid'
- $ref: '#/components/parameters/userGuid'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/StatementResponseBody'
description: OK
summary: Read statement by member
tags:
- statements
/users/{user_guid}/members/{member_guid}/statements/{statement_guid}.pdf:
get:
description: Use this endpoint to download a specified statement PDF.
operationId: downloadStatementPDF
parameters:
- $ref: '#/components/parameters/acceptVersion'
- $ref: '#/components/parameters/memberGuid'
- $ref: '#/components/parameters/statementGuid'
- $ref: '#/components/parameters/userGuid'
responses:
'200':
content:
application/vnd.mx.api.v1+pdf:
schema:
format: binary
type: string
description: OK
summary: Download statement pdf
tags:
- statements
components:
parameters:
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
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
statementGuid:
description: The unique id for a `statement`.
example: STA-737a344b-caae-0f6e-1384-01f52e75dcb1
in: path
name: statement_guid
required: true
schema:
type: string
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
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
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
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:
StatementResponseBody:
properties:
statement:
$ref: '#/components/schemas/StatementResponse'
type: object
MemberResponse:
properties:
aggregated_at:
description: 'The date and time the most recent aggregation-type job was started, given in ISO 8601 format with a time component.
A job will automatically be started when a member is created or its credentials are updated, unless the `skip_aggregation` parameter is used.
Jobs can also be started via manual aggregations, background aggregations, API endpoints, or when opening an MX widget.
A job can be a normal aggregation, or a premium job such as identification, verification, fetching statements, or fetching an extended transaction history.
If a member is deleted and then re-created with the `skip_aggregation` parameter set to `true` or if it is re-created within the throttle window (typically three hours), the previous value will be returned.
'
example: '2016-10-13T18:07:57.000Z'
type:
- string
- 'null'
background_aggregation_is_disabled:
description: Indicates whether background aggregation is disabled for the `member`.
example: false
type: boolean
connection_status:
description: The status of a user's connection to an institution. See [Member Connection Status](/api-reference/platform-api/reference/members#member-connection-statuses).
example: CONNECTED
type:
- string
- 'null'
enum:
- null
- CREATED
- PREVENTED
- DENIED
- CHALLENGED
- REJECTED
- LOCKED
- CONNECTED
- IMPEDED
- RECONNECTED
- DEGRADED
- DISCONNECTED
- DISCONTINUED
- CLOSED
- DELAYED
- FAILED
- UPDATED
- DISABLED
- IMPORTED
- RESUMED
- EXPIRED
- IMPAIRED
- PENDING
connection_status_message:
description: A human-readable message describing the connection status. See [Member Connection Status](/api-reference/platform-api/reference/members#member-connection-statuses).
example: Connected to MX Bank
type:
- string
- 'null'
error:
type:
- object
- 'null'
guid:
description: The unique identifier for the member. Defined by MX.
example: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b
type:
- string
- 'null'
id:
description: The unique partner-defined identifier for the member.
example: unique_id
type:
- string
- 'null'
institution_code:
description: The code identifying a financial institution.
example: mxbank
type:
- string
- 'null'
institution_guid:
description: The unique identifier for the institution. Defined by MX.
example: INST-12345678-90ab-cdef-1234-567890abcdef
type: string
is_being_aggregated:
description: Indicates whether the member was being aggregated at the time of the request.
example: false
type:
- boolean
- 'null'
is_managed_by_user:
description: 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'
is_manual:
description: Indicates whether the transaction was manually created or belongs to a manual account.
example: false
type:
- boolean
- 'null'
is_oauth:
description: Indicates whether the member uses OAuth to authenticate. Defaults to `false`.
example: false
type:
- boolean
- 'null'
metadata:
description: Additional information you stored about the `member`.
example: '\"credentials_last_refreshed_at\": \"2015-10-15\'
type:
- string
- 'null'
most_recent_job_detail_code:
description: (Deprecated) This field is no longer used and will be removed at a future date.
example: null
type:
- integer
- 'null'
most_recent_job_detail_text:
description: (Deprecated) This field is no longer used and will be removed at a future date.
example: null
type:
- boolean
- 'null'
most_recent_job_guid:
description: The unique identifier for the most recent job. Defined by MX.
example: JOB-12345678-90ab-cdef-1234-567890abcdef
type:
- string
- 'null'
name:
description: The name of the `member`.
example: MX Bank
type:
- string
- 'null'
needs_updated_credentials:
description: Internal field used by MX in some circumstances. When set to `true`, MX will not attempt to aggregate the member. It will be set to `false` automatically when the member's credentials are updated.
example: false
type:
- boolean
- 'null'
oauth_window_uri:
description: When connecting a member using OAuth, this field will contain the URL to send the user to in order to authenticate, otherwise it will be blank.
example: https://mxbank.mx.com/oauth/authorize?client_id=b8OikQ4Ep3NuSUrQ13DdvFuwpNx-qqoAsJDVAQCyLkQ&redirect_uri=https%3A%2F%2Fint-app.moneydesktop.com%2Foauth%2Fredirect_from&response_type=code&scope=openid&state=d745bd4ee6f0f9c184757f574bcc2df2
type:
- string
- 'null'
successfully_aggregated_at:
description: The date and time when the member was last successfully aggregated, represented in ISO 8601 format with a timestamp.
example: '2016-10-13T17:57:38.000Z'
type:
- string
- 'null'
use_cases:
type: array
description: The use case associated with the member. Valid values are `PFM` and/or `MONEY_MOVEMENT`. Only set this if you've met with MX and have opted in to using this field.
items:
type: string
enum:
- MONEY_MOVEMENT
- PFM
example:
- PFM
user_guid:
description: The unique identifier for the user. Defined by MX.
example: USR-fa7537f3-48aa-a683-a02a-b18940482f54
type:
- string
- 'null'
user_id:
description: The unique partner-defined identifier for the user.
example: u-1234
type:
- string
- 'null'
type: object
StatementsResponseBody:
properties:
statements:
items:
$ref: '#/components/schemas/StatementResponse'
type: array
pagination:
$ref: '#/components/schemas/PaginationResponse'
type: object
PaginationResponse:
properties:
current_page:
description: The page delivered by the current response.
example: 1
type: integer
per_page:
description: The number of records delivered with each page.
example: 25
type: integer
total_entries:
description: The total number of records available.
example: 1
type: integer
total_pages:
description: The total number of pages available.
example: 1
type: integer
type: object
MemberResponseBody:
properties:
member:
$ref: '#/components/schemas/MemberResponse'
type: object
StatementResponse:
properties:
account_guid:
description: The unique identifier for an account. Defined by MX.
example: ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1
type: string
content_hash:
description: An SHA-256 hash value of the statement's byte payload.
example: ca53785b812d00ef821c3d94bfd6e5bbc0020504410589b7ea8552169f021981
type:
- string
- 'null'
created_at:
description: The date and time the statement was created, represented in ISO 8601 format with a timestamp.
example: '2025-02-13T18:08:00+00:00'
type:
- string
- 'null'
guid:
description: The unique identifier for the `statement`. Defined by MX.
example: STA-737a344b-caae-0f6e-1384-01f52e75dcb1
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'
updated_at:
description: 'The date and time the resource was last updated in ISO 8601 format with a timestamp.
For categories, this field will always be `null` when `is_default` is `true`.
'
example: '2025-02-13T18:09:00+00:00'
type:
- string
- 'null'
uri:
description: A URI for accessing the byte payload of the `statement`.
example: uri/to/statement
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
securitySchemes:
basicAuth:
scheme: basic
type: http
description: 'The MX Platform API requires basic access authentication using your `client_id` and `api_key`. These credentials must be Base64 encoded and included in the Authorization header of each API request to ensure secure access.
Here''s an example using curl to access `v20250224`. Replace `https://int-api.mx.com/endpoint` with the actual API endpoint you wish to access and your Base64 encoded `client_id` and `api_key`.
```
curl -L -X POST `https://int-api.mx.com/endpoint'' \
-H ''Content-Type: application/json'' \
-H ''Accept: application/json'' \
-H ''Accept-Version: v20250224''
-H ''Authorization: Basic BASE_64_ENCODING_OF{client_id:api_key}''
```
'
bearerAuth:
type: http
scheme: bearer