A Plaid API library for Dart developers.


A simple usage example:

import 'package:chopper/chopper.dart';
import 'package:dart_plaid/dart_plaid.dart';

Future<void> main() async {
  /// Checks for errors in an api response and throws if found
  checkResponse(Response response) {
    if (!response.isSuccessful || response.error != null) {
      throw Exception('${response.statusCode}: ${response.base.reasonPhrase}');

  // Create an instance of the Plaid service using a clientId and secret
  PlaidService plaid = Plaid.create(
    environment: PlaidEnvironment.sandbox,

  // Create a new institution instance and get the public token
  final publicTokenRes = await plaid.sandboxPublicTokenCreatePost(
    body: SandboxPublicTokenCreateRequest(
      institutionId: 'ins_10',
      initialProducts: [Products.assets],

  // Check for errors in the response
  final publicToken = publicTokenRes.body?.publicToken;
  if (publicToken == null) throw Exception('No public token was returned');

  // Exchange public token for private access token
  final accessTokenRes = await plaid.itemPublicTokenExchangePost(
    body: ItemPublicTokenExchangeRequest(publicToken: publicToken),

  // Check for errors in the response
  final accessToken = accessTokenRes.body?.accessToken;
  if (accessToken == null) throw Exception('No access token was returned');

  // Use the access token to get a list of accounts
  final accountsRes = await plaid.accountsGetPost(
    body: AccountsGetRequest(accessToken: accessToken),

  // Check for errors in the response

  // Print out the accounts
  for (AccountBase a in accountsRes.body?.accounts ?? []) {

Features and bugs

Please file feature requests and bugs at the issue tracker.