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 processor token API version: '20250224' servers: - url: https://int-api.mx.com - url: https://api.mx.com security: - basicAuth: [] tags: - name: processor token paths: /authorization_code: post: description: Clients use this endpoint to request an authorization code according to the parameters specified in the scope. Clients then pass this code to processors. Processor access is scoped only to the GUIDs and features specified in this request. Before requesting an authorization code which includes a member in the scope, clients must have verified that member. operationId: requestAuthorizationCode parameters: - $ref: '#/components/parameters/acceptVersion' requestBody: content: application/json: schema: $ref: '#/components/schemas/AuthorizationCodeRequestBody' description: The scope for the authorization code. required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/AuthorizationCodeResponseBody' description: OK summary: Request an authorization code tags: - processor token /tokens: parameters: - $ref: '#/components/parameters/acceptVersion' get: tags: - processor token operationId: listTokens summary: View a List of Tokens description: View a list of tokens that exist for a user, member, or account. requestBody: content: application/json: schema: $ref: '#/components/schemas/TokenRequestBody' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TokenResponseBody' description: OK /account/account_numbers: parameters: - $ref: '#/components/parameters/acceptVersion' get: security: - bearerAuth: [] tags: - processor token operationId: requestAccountNumber summary: Request an account number (Processors Only) description: Get account information such as routing number and account number, scoped to your access token. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ProcessorAccountNumberBody' /account/check_balance: parameters: - $ref: '#/components/parameters/acceptVersion' post: security: - bearerAuth: [] tags: - processor token operationId: checkRealTimeAccountBalance summary: Check Real Time Account Balance (Processors Only) description: Check the real-time account balance using your access token. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/MemberResponseBody' /payment_account: parameters: - $ref: '#/components/parameters/acceptVersion' get: security: - bearerAuth: [] tags: - processor token operationId: readAccountBalance summary: Read the account balance (Processors Only) description: Read the account balance (Processors Only) responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/PaymentAccountBody' /account/transactions: parameters: - $ref: '#/components/parameters/acceptVersion' get: security: - bearerAuth: [] tags: - processor token operationId: getAccountOwnerInfo summary: Get account owner information (Processors Only) description: Get account owner information (Processors Only) responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ProcessorOwnerBody' components: schemas: TokenResponse: properties: payment_processor_guid: description: The unique identifier for the payment processor. Defined by MX. example: PPR-084aa709-8218-4b5a-b3ab-70ffc7483daf type: string expires_at: description: The date and time the access token expires in ISO 8601 format with a timestamp. example: 2023-04-19T15:38:2800:00 type: string access_token: description: The access token you'll use to retrieve data. Every `access_token` expires after 60 days. To get a new token after an old one has expired, you must get a new code from the client. See [How-to Guide for Processors](/products/connectivity/instant-account-verification/processor-token/processor-guide/#1-request-an-access-token). example: eyJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE2NDk3NjQ4MTMsImV4cCI6MTY0OTc2ODQxMywidXNlcl9ndWlkIjoiVVNSLWZhNzUzN2YzLTQ4YWEtYTY4My1hMDJhLWIxODk0MDQ4MmY1NCIsIm9yaWdfaWF0IjoxNjQ5NzY0ODEzfQ.wnhdUerhFIGgwb9OJaKRfW2uTxJ9z7TJ0l2HLqvAMWs type: - string - 'null' active: description: Indicates whether the token is active. example: true type: boolean TokenRequestBody: properties: scope: $ref: '#/components/schemas/MemberElements' type: object AuthorizationCodeRequest: properties: scope: example: user-guid:USR-101ad774-288b-44ed-ad16-da87d522ea20 member-guid:MBR-54feffb9-8474-47bd-8442-de003910113a account-guid:ACT-32a64160-582a-4f00-ab34-5f49cc35ed35 read-protected type: - string - 'null' 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 ProcessorOwner: properties: guid: description: The unique identifier for an account owner. Defined by MX. example: AOW-e9f9cd45-7d14-4fbf-b23c-7f4a6d7671d6 type: string owner_name: description: The account owner's name. example: Janita Pollich type: string address: description: The account owner's street address. example: 3541 Adrian Street type: string city: description: The account owner's city. example: North Kishaberg type: string state: description: The account owner's state. example: Maine type: string postal_code: description: The account owner's postal code. example: 45054-7764 type: string country: description: The country name. example: US type: - string - 'null' email: description: The email address associated with the account. example: example@example.com type: string phone: description: The phone number associated with the account owner. example: 676-932-5861 type: string PaymentAccount: properties: account_name: description: The human-readable name for the account. example: My test account type: string account_number: description: The banking account number associated with a particular account. example: 6366816006 account_type: description: The type of account. Some account types may include subtypes. example: CHECKING type: - string - 'null' enum: - ANY - CASH - CHECKING - CHECKING_LINE_OF_CREDIT - CREDIT_CARD - LOAN - LINE_OF_CREDIT - SAVINGS - INVESTMENT - MORTGAGE - INSURANCE - PREPAID - PROPERTY 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 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 created_at: description: The date and time the resource was created, represented in ISO 8601 format with a timestamp. example: '2025-02-13T18:08:00+00:00' type: string routing_number: description: The routing number for the `account`. example: 242722023 transit_number: description: The five-digit number identifying the branch of a Canadian financial institution. example: 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' 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 AuthorizationCodeResponseBody: properties: authorization_code: $ref: '#/components/schemas/AuthorizationCodeResponse' type: object MemberResponseBody: properties: member: $ref: '#/components/schemas/MemberResponse' type: object ProcessorOwnerBody: properties: account_owners: items: allOf: - $ref: '#/components/schemas/MemberElements' - $ref: '#/components/schemas/ProcessorOwner' pagination: $ref: '#/components/schemas/PaginationResponse' type: object AuthorizationCodeRequestBody: properties: authorization_code: $ref: '#/components/schemas/AuthorizationCodeRequest' type: object PaymentAccountBody: properties: payment_account: allOf: - $ref: '#/components/schemas/MemberElements' - $ref: '#/components/schemas/PaymentAccount' type: object AuthorizationCodeResponse: properties: code: example: 9nN-9D8_4Z3WYazx7-zXfmqsD3jwgL_2W927Sb3otI type: - string - 'null' type: object TokenResponseBody: properties: tokens: items: $ref: '#/components/schemas/TokenResponse' type: object ProcessorAccountNumberBody: properties: account_numbers: items: allOf: - $ref: '#/components/schemas/MemberElements' - $ref: '#/components/schemas/ProcessorAccountNumber' type: object MemberElements: properties: account_guid: description: The unique identifier for an account. Defined by MX. example: ACT-06d7f44b-caae-0f6e-1384-01f52e75dcb1 type: string member_guid: description: The unique identifier for the member. Defined by MX. example: MBR-7c6f361b-e582-15b6-60c0-358f12466b4b type: string user_guid: description: The unique identifier for the user. Defined by MX. example: USR-fa7537f3-48aa-a683-a02a-b18940482f54 type: string ProcessorAccountNumber: properties: account_number: description: The banking account number associated with a particular account. example: 6366816006 type: integer guid: description: The unique identifier for the account number. Defined by MX. example: ACN-68c0b681-78c2-4731-9b41-d6e8ae2846cf type: string institution_number: description: The three-digit number identifying a Canadian banking institution. example: null loan_guarantor: description: The guarantor of the student loan. example: null loan_reference_number: description: The reference number for the student loan. example: null passed_validation: description: Indicates whether the account number has passed validation. example: true routing_number: description: The routing number for the `account`. example: 242564563 type: integer sequence_number: description: The sequence number for the account. example: null transit_number: description: The five-digit number identifying the branch of a Canadian financial institution. example: null parameters: acceptVersion: name: Accept-Version in: header required: true schema: type: string default: v20250224 example: v20250224 description: MX Platform API version. 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