Skip to main content

Plaid Integration (/api/v1/plaid)

Connect financial institutions via Plaid. All endpoints require authentication via X-API-Key.


Generate a Plaid Link token to initialize the Link flow for connecting a bank account.

  • Method: POST
  • Endpoint: /api/v1/plaid/link

Request Body (optional)

{
"itemId": "uuid", // Optional: for update-mode (re-authenticate existing item)
"products": ["auth", "transactions"] // Optional: override default products
}

Response

{ "linkToken": "link-sandbox-..." }

2. Exchange Public Token

Exchange the public token from Plaid Link for an access token and store the connection.

  • Method: POST
  • Endpoint: /api/v1/plaid/exchange_public_token

Request Body

{ "publicToken": "public-sandbox-..." }

Response

{
"itemId": "uuid",
"institutionName": "Chase Bank",
"products": ["auth", "transactions", "identity"]
}

3. List Plaid Items

List all connected bank accounts for the user.

  • Method: GET
  • Endpoint: /api/v1/plaid/items

Response

{
"items": [
{
"id": "uuid",
"institutionId": "ins_123",
"institutionName": "Chase Bank",
"products": ["auth", "transactions"],
"status": "ACTIVE",
"lastWebhookAt": null,
"createdAt": "2025-01-01T00:00:00.000Z"
}
]
}

4. Remove a Plaid Item

Disconnect a bank account.

  • Method: DELETE
  • Endpoint: /api/v1/plaid/items/:itemId

Response

{ "message": "Bank connection removed" }

5. Get Accounts

Retrieve account details for a connected Plaid item.

  • Method: GET
  • Endpoint: /api/v1/plaid/accounts
  • Query: itemId (optional — uses latest active item if omitted)

6. Get Balances

Get current and available balances.

  • Method: GET
  • Endpoint: /api/v1/plaid/balance

7. Get Transactions

Retrieve transaction data within a date range.

  • Method: GET
  • Endpoint: /api/v1/plaid/transactions

Query Parameters

ParameterTypeDefaultDescription
itemIdStringLatest activePlaid item ID
startDateString30 days agoStart date (YYYY-MM-DD)
endDateStringTodayEnd date (YYYY-MM-DD)
countNumber100Number of transactions
offsetNumber0Pagination offset

8. Sync Transactions

Incrementally sync new, modified, and removed transactions using Plaid's cursor-based sync.

  • Method: GET
  • Endpoint: /api/v1/plaid/transactions/sync

Response

{
"added": [...],
"modified": [...],
"removed": [...],
"cursor": "next-cursor-string"
}

9. Get Recurring Transactions

Identify recurring inflow and outflow streams.

  • Method: GET
  • Endpoint: /api/v1/plaid/transactions/recurring

Response

{
"inflow_streams": [...],
"outflow_streams": [...]
}

10. Get Identity

Retrieve verified identity data (names, addresses, emails, phone numbers) from the connected bank.

  • Method: GET
  • Endpoint: /api/v1/plaid/identity

11. Get Liabilities

Retrieve liabilities (credit cards, student loans, mortgages) from the connected bank.

  • Method: GET
  • Endpoint: /api/v1/plaid/liabilities

12. Get Investments

Retrieve investment holdings and securities.

  • Method: GET
  • Endpoint: /api/v1/plaid/investments

13. Get Investment Transactions

Retrieve investment transaction history.

  • Method: GET
  • Endpoint: /api/v1/plaid/investments/transactions

14. Get Item Info

Retrieve Plaid Item and institution information.

  • Method: GET
  • Endpoint: /api/v1/plaid/item

15. Get Income

Retrieve income verification data (paystubs).

  • Method: GET
  • Endpoint: /api/v1/plaid/income

16. List Statements

List available statements for a connected item.

  • Method: GET
  • Endpoint: /api/v1/plaid/statements

17. Download Statement

Download a specific statement as PDF.

  • Method: GET
  • Endpoint: /api/v1/plaid/statements/:statementId/download

18. Asset Reports

Create and fetch asset reports.

ActionMethodEndpoint
Create asset reportPOST/api/v1/plaid/assets/report
Get asset reportGET/api/v1/plaid/assets/report

19. User Plaid Data

Get a summary of all connected bank items for the user.

  • Method: GET
  • Endpoint: /api/v1/plaid/user-data

Response

{
"userId": "uuid",
"items": [
{ "id": "uuid", "institutionName": "Chase Bank", "status": "ACTIVE" }
]
}

20. Auth

Get account and routing numbers for ACH transfers.

  • Method: POST
  • Endpoint: /api/v1/plaid/auth

21. Get Categories

Retrieve the full list of Plaid transaction categories.

  • Method: GET
  • Endpoint: /api/v1/plaid/categories

22. Sandbox Public Token (Development Only)

Create a sandbox public token for testing. Not available in production.

  • Method: POST
  • Endpoint: /api/v1/plaid/sandbox/public_token

Request Body

{
"institutionId": "ins_109508",
"products": ["auth", "transactions"]
}

Response

{ "publicToken": "public-sandbox-..." }