March 09, 2017

Announcing Plaid Link for iOS

Paolo Bernasconi

Updated on November 21, 2018

We want to make it as easy as possible to work with financial data, and today, we're thrilled to share Link iOS, a native iOS SDK that makes connecting with user bank accounts even better on mobile. We launched Link in 2015 to help developers focus on building great applications—not on the intricacies of connecting with banks. With just a few lines of code, Link makes it possible to connect with the thousands of financial institutions we support, making it the best way to integrate with Plaid and interact with financial data.

This launch brings to iOS all the same features and functionality as Link’s Javascript SDK: great UI, thousands of banks pre-configured, end-to-end tokenization of sensitive data, and seamless MFA and error handling. Best of all, Link iOS requires zero changes to your backend integration.

We wrote LinkKit with modern iOS applications in mind. It can be integrated into Objective-C and Swift applications as an embeddable framework (so it requires at least iOS 8.0). It fully supports VoiceOver, which also helps to make Plaid Link accessible to a wider audience.

Integrating Plaid Link into your iOS applications using LinkKit takes only 3 steps and mirrors Link’s configuration on the web. Here’s how to get started:


Create an instance of PLKConfiguration to set up Plaid Link iOS with your public_key,

the Plaid product you’d like to add, and the Plaid environment you’re working in.

1PLKConfiguration* linkConfiguration;
2linkConfiguration = [[PLKConfiguration alloc] initWithKey:@"<#YOUR_PLAID_PUBLIC_KEY#>"
3 env:PLKEnvironmentDevelopment
4 product:PLKProductAuth];


We recommend initializing Link with your public_key upon application startup. In the background, this will also retrieve the latest institution data from Plaid's servers, ultimately creating a better experience for your users:

1[PLKPlaidLink setupWithConfiguration:linkConfiguration completion:^(BOOL success, NSError * _Nullable error) {
2 if (success) {
3 // Handle success here, e.g. by posting a notification
4 NSLog(@"Plaid Link setup was successful");
5 }
6 else {
7 NSLog(@"Unable to setup Plaid Link due to: %@", [error localizedDescription]);
8 }
9 }];


Create an instance of PLKPlaidLinkViewController, passing in an object that adopts the PLKPlaidLinkViewDelegate protocol (see below) and present the PLKPlaidLinkViewController object on screen:

1id<PLKPlaidLinkViewDelegate> linkViewDelegate = self;
2PLKPlaidLinkViewController* linkViewController = [[PLKPlaidLinkViewController alloc] initWithConfiguration:linkConfiguration delegate:linkViewDelegate];
3[self presentViewController:linkViewController animated:YES completion:nil];

Delegate protocol implementation

Adopt the PLKPlaidLinkViewDelegate protocol and implement the following delegate methods, which will be called when Plaid Link iOS finishes. Note that you’ll want to dismiss the PLKPlaidLinkViewController and account for the exit or errors that might come up.

1- (void)linkViewController:(PLKPlaidLinkViewController*)linkViewController
2 didSucceedWithPublicToken:(NSString*)publicToken
3 metadata:(NSDictionary<NSString*,id>* _Nullable)metadata {
4[self dismissViewControllerAnimated:YES completion:nil];
5 // Handle successful item creation here
8- (void)linkViewController:(PLKPlaidLinkViewController*)linkViewController
9 didExitWithError:(NSError* _Nullable)error
10 metadata:(NSDictionary<NSString*,id>* _Nullable)metadata {
11 [self dismissViewControllerAnimated:YES completion:nil];
12 // Handle pre-mature exit or error here

Start building

You can integrate Link iOS into your app today! Head to our docs to get started, or jump right to our example Swift and Objective-C integrations. As always, let us know what you think!