MX

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.

Operations 4

POST /users/{user_identifier}/members/{member_identifier}/fetch_statements Fetch statements #
GET /users/{user_guid}/members/{member_guid}/statements List statements by member #
GET /users/{user_guid}/members/{member_guid}/statements/{statement_guid} Read statement by member #
GET /users/{user_guid}/members/{member_guid}/statements/{statement_guid}.pdf Download statement pdf #

Work with this as data

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-statements-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 Specification

mx-statements-api-openapi.yml Raw ↑
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