API-Only Implementation
Create a User
Get an API Token
This endpoint returns an api_token which can then be used to open a Nexus session. The user_id must match the id specified when creating a the user.
Each api_token is one-time use and expires in ten minutes. A fresh api_token must be requested each time a Nexus session is initiated.
Open a Nexus Session
Use this endpoint to get a session token. This session token must be sent as a header with each Nexus request. Each Nexus session is opened in the context of a single user associated with that session token.
When using the verification endpoints the create session request body should contain skip_aggregation:true, as shown in the example below. This will prevent automatic aggregation being initiated for the user's existing members when the session is opened. Partners can then choose to aggregate the existing member, or to proceed directly to the verify member endpoint.
Get Institution Information
Information about available institutions can be found in several ways. This example uses the search method.
Search criteria is specified in the request body; pagination is specified by appending it to the request URL.
Either a name or url must be sent in the request body for this endpoint to work properly. An empty request body will result in a 400 error.
Get the Institution's Required Credentials Using the Institution GUID
This endpoint returns information about what type of credentials the institution requires for authentication.
Create a Member Using Institution GUID and Required Credentials
Creating a member automatically starts a standard aggregation which is not necessary for verification. To prevent this unnecessary aggregation, set the skip_aggregation parameter to true when making your request.
Verify a member
The verify member endpoint begins a verification process for an already-existing member. Use this endpoint when normal aggregation does not return account and routing numbers for the member.
The verification workflow is similar to that shown above: Start the verification, poll the member, answer MFA if necessary by using the list member MFA challenges endpoint and the update member endpoint, poll the status again, then read the member's account numbers.
Check the member's verification status
Several fields on the member give important information about the state of the verification including connection_status, is_being_aggregated, successfully_aggregated_at. These fields are also used for standard aggregation jobs, hence the reference in their names.
A connection status of CONNECTED means that the member was successfully authenticated and verification has begun. The is_being_aggregated field will tell you whether the verification job has completed; the field will be true while verification is taking place and returns to false when verification is complete. The successfully_aggregated_at field will tell you the exact time that the verification job has completed.
You may need to repeatedly poll this endpoint until either an end state or an actionable state is reached.
Get MFA challenges
Update member with answers to challenges
Updating a member will kick off an automatic standard aggregation. Set the skip_aggregation parameter to true in your request body to prevent this.
Check the member status again for completion
Read the member's account numbers
Testing Verification
For the most robust end-to-end testing of verification, MX will need to set up test accounts for a partner. Please contact MX to perform this kind of testing.
However, MX provides simple, static-data test endpoints for verification.
In order to use these test endpoints, you must:
- Make requests through the MX integration environment; test endpoints will not function in the production environment.
- Use the following Nexus session token: test_session.
- Use the following Nexus endpoint paths:
- Get account numbers (no data exists):
GET /members/unverified/account_numbers/ - Get account numbers (data does exist):
GET /members/test_nexus_member/account_numbers - Verify:
POST /members/test_nexus_member/verify
- Get account numbers (no data exists):