Features

API

Transactions

  • As a client, I can get cached transactions from our database.

  • As a client, I can get transactions directly from plaid.

Accounts

  • As a client, I can get cached account information from our database.

  • As a client, I can get live account information directly from plaid.

  • As a client, I can get a live balance check directly from plaid.

Items

  • As a client, I can link a new item to a user with a plaid public_token.

    • This will create a new item in the database, encrypt the account and routing numbers and activate the user.

  • As a client, I can retrieve all items that a user has linked.

    • I can also filter by item status, such as "ACTIVE", "REMOVED", "ERROR".

    • I can also get account information for each item.

    • I can also get bank logos for each item.

  • As a client, I can retrieve information about a specific item.

  • As a client, I can update the main account_id within an item.

  • As a client, I can remove an item for a user as long as they do not have an active float.

  • As a client, I can force remove an item for a user, even if they have an active float.

  • As a client, I can check if a user is able to change their plaid item.

  • As a client, I can reset an item to ITEM_LOGIN_REQUIRED in the test environment / plaid sandbox.

  • As a client, I can queue an items accounts and transactions to be remined.

  • As a client, I can retrieve a link_token for a user.

    • If the user already has an account, the access_token is used in creation of the link_token

Institutions

  • As a client, I can get up to date institution info, such as connection status, from plaid.

Plaid Mining

Institutions

  • We routinely query plaid for updated institution information and save it in our database for easy access.

Listener

  • When a user logs in, we check to see if they are up to date on their cached accounts and transactions. If they are not, we generate a fake plaid webhook to trigger the plaid mining process.

Webhooks

  • When plaid sends us any webhook, we store the webhook contents.

  • We handle the following types of TRANSACTION webhooks:

    • DEFAULT_UPDATE - Fetches transactions and accounts from plaid and saves them.

    • HISTORICAL_UPDATE - A webhook that indicates that we can get up to two years of transactions from plaid. We page through the available transactions and save them.

    • INITIAL_UPDATE - The initial webhook from plaid with the first 30 days of transactions. We fetch the available transactions and accounts and save them.

    • TRANSACTIONS_REMOVED - We mark the transactions that plaid says have been removed in our database.

  • We handle the following types of ITEM webhooks:

    • ITEM_REPAIRED - Send item repaired segment event

    • ERROR - Send item errored segment event

    • USER_PERMISSION_REVOKED - Send item errored segment event

    • WEBHOOK_UPDATE_ACKNOWLEDGED - Log only

  • We output both the raw plaid transactions/accounts and our refined transactions/accounts onto kinesis streams.