API Keys and Environments
There are two different MoneyKit API environments that both live within a single URL, and each environment will have its own pair of API keys for authenticating your requests.The environment you use will be determined by which pair of API keys you use to authenticate your API request.
MoneyKit API URL
api.moneykit.com
Environments
Sandbox
Sandbox
The Sandbox environment allows you to get testing quickly, providing three different test institutions that return rich data.
Credentials Bank
The Credentials Bank allows you to test a standard credential entry linking flow.Test credentials:- Username:
user_good - Password:
pass_good
Instant Bank
Instant Bank will get you testing the fastest, bypassing any credential entry and linking instantly.OAuth Bank
The OAuth Bank will help to get your OAuth flow setup and tested in the sandbox environment, so you’re ready to redirect live institutions back to your application when the time comes.Live
Live
The Live environment allows for linking with live banks, this is the environment you want to use with your production application.For testing the Live environment, you can request a pair of trial API keys. Trial keys contain a limited number of live links that can be created free of charge. When you hit the limit of free links you can create with your Trial keys, you can disconnect those links to get testing again.
Front End SDKs
MoneyKit’s front end SDK for linking bank accounts is called Connect. Connect SDK is currently available for: The Connect SDK will take in your various configurations for the bank linking experience like your theme and product requirements, and will keep you informed of the end user’s linking experience through event callbacks. A successful linking experience will return you a temporaryexchangeable_token in the success callback, that you will then exchange with the MoneyKit API for a long-lived link_id.
Creating your first MoneyKit Link
A Link is what is created when one of your end users successfully links their bank accounts with your MoneyKit integration.Every Link has a
link_id, and this is what you will use to identify those accounts when fetching product data from
the MoneyKit API.- Create a Bearer token to authenticate your requests to
api.moneykit.com - Create a
link_session_tokenwith your custom configurations for the linking session - Pass the
link_session_tokento the Connect SDK in your front end application to launch the linking experience - Pass the temporary
exchangeable_tokenreceived from the SDK’s success callback to the MoneyKit API to receive alink_idfor the new Link. - Use the
link_idwith your requests to the MoneyKit product endpoints to fetch data for the link
Walkthrough
Walkthrough
1. Create a Bearer token for API request authentication
Create anaccess_token to use MoneyKit.
POST your client_id and client_secret to /auth/token to receive an access_token for API authentication.2. Create a link_session_token
A link_session_token is required for opening MoneyKit Connect in your front end application.
POST your session settings to /link-session to create a link_session_token.3. Launch the Connect SDK with your link_session_token
- Open MoneyKit Connect with the
link_session_token. To use MoneyKit Connect in your iOS app: - Install MoneyKit Connect via package manager or manual linking.
- Create a
MKConfigurationwith thelink_session_token. - Create a
MKLinkHandlerwith the previously initializedMKConfiguration. The handler must be retained for the duration of the Money Link flow. - Open MoneyKit Connect by calling
presentInstitutionSelectionFlow(using:)on the handler object. This will usually be done in a button’s target action. - Use the
onSuccessconfiguration callback to determine the link type and for new links extract theMKExchangeableTokenfrom the linked institution.
4. Swap exchangeable_token for a link_id
Exchange for link_id. POST the exchangeable_token from the successful link session to /link-session/exchange-token in order to receive the link_id for the link.5. Use the link_id with requests to MoneyKit API product endpoints
Use the link_id to fetch data (for example, /accounts, /transactions) for the link.Open Connect Directly to an Institution’s Login Screen
In some cases you might want to bypass the Connect institution search screen, and launch the Connect SDK directly to a specific institution’s login screen. To do this you want to include theinstitution_id in your request to https://api.moneykit.com/link-session.
Re-authenticate a broken Link
If you receive anauth_expired error with one of your Links, this means the Link needs to be re-authenticated by the owner of those accounts. In order to launch the Connect SDK directly to that institution for a re-authentication flow, just include the respective link_id in your request to https://api.moneykit.com/link-session.
When re-authenticating a Link, there will be no
exchangable_token returned by the Connect SDK success callback, and
thus no need to call the MoneyKit exchange endpoint. Once the user successfully authenticates their accounts, you will
be able to resume using the existing link_id.Handle OAuth redirect
In order to successfully complete an OAuth linking experience, you will need to pass a redirect_uri with your request tohttps://api.moneykit.com/link-session. Whatever URI you include is where MoneyKit will return the end user after they successfully complete an OAuth Link.
It is imperative that the page in your application that is redirected to has implemented the
continue() method for
the Connect SDK. This ensures that the OAuth flow is completed.