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.
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.
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.
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 temporary exchangeable_token in the success callback, that you will then exchange with the MoneyKit API for a long-lived link_id.
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 MKConfiguration with the link_session_token.
Create a MKLinkHandler with the previously initialized MKConfiguration. 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 onSuccess configuration callback to determine the link type and for new links extract the MKExchangeableToken from the linked institution.
Copy
import UIKitimport MoneyKitclass StartViewController: UIViewController { let linkSessionToken: String = "c7318ff7-257c-490e-8242-03a815b223b7" var moneykitLinkHandler: MKLinkHandler? func presentMoneyKitConnect() { do { let config = try MKConfiguration( sessionToken: linkSessionToken, onSuccess: { [self] successType in switch successType { case let .linked(linkedInstitution): print("ready to exchange token") exchangeTokenForLinkId(exchangeableToken: linkedInstitution.token) case let .relinked(relinkedInstitution): print("Did relink \(relinkedInstitution.institution.name) in MoneyKit ") @unknown default: print("unknown mk link success type") } }, onExit: { print("MoneyKit flow was dismissed") }, onEvent: { eventType in print("MoneyKit event: \(eventType.name)") }, onError: { errorType in print("MoneyKit event: \(errorType.name)") }) moneykitLinkHandler = MKLinkHandler(configuration: config) let presentationMethod = MKPresentationMethod.modal(presentingViewController: self) moneykitLinkHandler?.presentInstitutionSelectionFlow(using: presentationMethod) } catch let error { print("MoneyKit error: \(error.localizedDescription)") } } func exchangeTokenForLinkId(exchangeableToken: MKExchangeableToken) { print("MoneyKit exchangable_token: \(exchangeableToken.value)") // Pass the MKExchangeableToken to your server and call // POST /exchange-token to exchange it for a link_id } public func handleCallback(url: URL) { if let moneykitLinkHandler = moneykitLinkHandler { moneykitLinkHandler.continueFlow(from: url) } }}
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.
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 the institution_id in your request to https://api.moneykit.com/link-session.
If you receive an auth_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.
In order to successfully complete an OAuth linking experience, you will need to pass a redirect_uri with your request to https://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.