Skip to content

Instantly share code, notes, and snippets.

@MarwanRefaat
Created January 10, 2022 15:02
Show Gist options
  • Save MarwanRefaat/a7f5c70156f1794801eeefbfab58f56e to your computer and use it in GitHub Desktop.
Save MarwanRefaat/a7f5c70156f1794801eeefbfab58f56e to your computer and use it in GitHub Desktop.
Plaid OpenAPI
openapi: 3.0.0
servers:
- description: Production
url: https://production.plaid.com
- description: Development
url: https://development.plaid.com
- description: Sandbox
url: https://sandbox.plaid.com
info:
title: The Plaid API
version: 2020-09-14_1.61.0
description: The Plaid REST API. Please see https://plaid.com/docs/api for more details.
contact:
name: Plaid Developer Team
url: https://plaid.com
termsOfService: https://plaid.com/legal/
tags:
- name: plaid
description: The Plaid API
security:
- clientId: []
secret: []
plaidVersion: []
paths:
/item/application/list:
post:
tags:
- plaid
summary: List a user’s connected applications
operationId: itemApplicationList
description: List a user’s connected applications
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ItemApplicationListResponse"
default:
description: Error response.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ItemApplicationListRequest"
/item/application/scopes/update:
post:
tags:
- plaid
summary: Update the scopes of access for a particular application
operationId: itemApplicationScopesUpdate
description: Enable consumers to update product access on selected accounts for an application.
responses:
"200":
description: success
content:
application/json:
schema:
$ref: "#/components/schemas/ItemApplicationScopesUpdateResponse"
default:
description: Error response.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ItemApplicationScopesUpdateRequest"
/application/get:
post:
tags:
- plaid
summary: Retrieve information about a Plaid application
operationId: applicationGet
description: Allows financial institutions to retrieve information about Plaid clients for the purpose of building control-tower experiences
responses:
"200":
description: success
content:
application/json:
schema:
$ref: "#/components/schemas/ApplicationGetResponse"
default:
description: Error response.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ApplicationGetRequest"
description: ""
/item/get:
post:
tags:
- plaid
summary: Retrieve an Item
externalDocs:
url: /api/items/#itemget
operationId: itemGet
description: Returns information about the status of an Item.
responses:
"200":
description: success
content:
application/json:
schema:
$ref: "#/components/schemas/ItemGetResponse"
examples:
example-1:
value:
item:
available_products:
- balance
- auth
billed_products:
- identity
- transactions
error: null
institution_id: ins_109508
item_id: Ed6bjNrDLJfGvZWwnkQlfxwoNz54B5C97ejBr
update_type: background
webhook: https://plaid.com/example/hook
consent_expiration_time: null
status:
transactions:
last_successful_update: "2019-02-15T15:52:39Z"
last_failed_update: "2019-01-22T04:32:00Z"
last_webhook:
sent_at: "2019-02-15T15:53:00Z"
code_sent: DEFAULT_UPDATE
request_id: m8MDnv9okwxFNBV
default:
description: Error response.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ItemGetRequest"
description: ""
/auth/get:
post:
tags:
- plaid
summary: Retrieve auth data
externalDocs:
url: /api/products/#authget
operationId: authGet
description: |-
The `/auth/get` endpoint returns the bank account and bank identification numbers (such as routing numbers, for US accounts) associated with an Item's checking and savings accounts, along with high-level account data and balances when available.
Note: This request may take some time to complete if `auth` was not specified as an initial product when creating the Item. This is because Plaid must communicate directly with the institution to retrieve the data.
Also note that `/auth/get` will not return data for any new accounts opened after the Item was created. To obtain data for new accounts, create a new Item.
Versioning note: In API version 2017-03-08, the schema of the `numbers` object returned by this endpoint is substantially different. For details, see [Plaid API versioning](https://plaid.com/docs/api/versioning/#version-2018-05-22).
responses:
"200":
description: success
content:
application/json:
schema:
$ref: "#/components/schemas/AuthGetResponse"
examples:
example-1:
value:
accounts:
- account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D
balances:
available: 100
current: 110
limit: null
iso_currency_code: USD
unofficial_currency_code: null
mask: "9606"
name: Plaid Checking
official_name: Plaid Gold Checking
subtype: checking
type: depository
numbers:
ach:
- account: "9900009606"
account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D
routing: "011401533"
wire_routing: "021000021"
eft:
- account: "111122223333"
account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D
institution: "021"
branch: "01140"
international:
- account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D
bic: NWBKGB21
iban: GB29NWBK60161331926819
bacs:
- account: "31926819"
account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D
sort_code: "601613"
item:
available_products:
- balance
- identity
- payment_initiation
- transactions
billed_products:
- assets
- auth
consent_expiration_time: null
error: null
institution_id: ins_117650
item_id: DWVAAPWq4RHGlEaNyGKRTAnPLaEmo8Cvq7na6
update_type: background
webhook: https://www.genericwebhookurl.com/webhook
request_id: m8MDnv9okwxFNBV
default:
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Default error
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/AuthGetRequest"
examples: {}
description: ""
/transactions/get:
post:
tags:
- plaid
summary: Get transaction data
externalDocs:
url: /api/products/#transactionsget
operationId: transactionsGet
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/TransactionsGetResponse"
examples:
example-1:
value:
accounts:
- account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp
balances:
available: 110
current: 110
iso_currency_code: USD
limit: null
unofficial_currency_code: null
mask: "0000"
name: Plaid Checking
official_name: Plaid Gold Standard 0% Interest Checking
subtype: checking
type: depository
transactions:
- account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp
amount: 2307.21
iso_currency_code: USD
unofficial_currency_code: null
category:
- Shops
- Computers and Electronics
category_id: "19013000"
check_number: null
date: "2017-01-29"
datetime: null
authorized_date: "2017-01-27"
authorized_datetime: null
location:
address: 300 Post St
city: San Francisco
region: CA
postal_code: "94108"
country: US
lat: 40.740352
lon: -74.001761
store_number: "1235"
name: Apple Store
merchant_name: Apple
payment_meta:
by_order_of: null
payee: null
payer: null
payment_method: null
payment_processor: null
ppd_id: null
reason: null
reference_number: null
payment_channel: in store
pending: false
pending_transaction_id: null
account_owner: null
transaction_id: lPNjeW1nR6CDn5okmGQ6hEpMo4lLNoSrzqDje
transaction_code: null
transaction_type: place
item:
available_products:
- balance
- identity
- investments
billed_products:
- assets
- auth
- liabilities
- transactions
consent_expiration_time: null
error: null
institution_id: ins_3
item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6
update_type: background
webhook: https://www.genericwebhookurl.com/webhook
total_transactions: 1
request_id: 45QSn
default:
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Error response
description: |-
The `/transactions/get` endpoint allows developers to receive user-authorized transaction data for credit, depository, and some loan-type accounts (only those with account subtype `student`; coverage may be limited). For transaction history from investments accounts, use the [Investments endpoint](https://plaid.com/docs/api/products#investments) instead. Transaction data is standardized across financial institutions, and in many cases transactions are linked to a clean name, entity type, location, and category. Similarly, account data is standardized and returned with a clean name, number, balance, and other meta information where available.
Transactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift. Transactions are not immutable and can also be removed altogether by the institution; a removed transaction will no longer appear in `/transactions/get`. For more details, see [Pending and posted transactions](https://plaid.com/docs/transactions/transactions-data/#pending-and-posted-transactions).
Due to the potentially large number of transactions associated with an Item, results are paginated. Manipulate the `count` and `offset` parameters in conjunction with the `total_transactions` response body field to fetch all available transactions.
Data returned by `/transactions/get` will be the data available for the Item as of the most recent successful check for new transactions. Plaid typically checks for new data multiple times a day, but these checks may occur less frequently, such as once a day, depending on the institution. An Item's `status.transactions.last_successful_update` field will show the timestamp of the most recent successful update. To force Plaid to check for new transactions, you can use the `/transactions/refresh` endpoint.
Note that data may not be immediately available to `/transactions/get`. Plaid will begin to prepare transactions data upon Item link, if Link was initialized with `transactions`, or upon the first call to `/transactions/get`, if it wasn't. To be alerted when transaction data is ready to be fetched, listen for the [`INITIAL_UPDATE`](https://plaid.com/docs/api/webhooks#transactions-initial_update) and [`HISTORICAL_UPDATE`](https://plaid.com/docs/api/webhooks#transactions-historical_update) webhooks. If no transaction history is ready when `/transactions/get` is called, it will return a `PRODUCT_NOT_READY` error.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/TransactionsGetRequest"
examples: {}
/transactions/refresh:
post:
tags:
- plaid
summary: Refresh transaction data
externalDocs:
url: /api/products/#transactionsrefresh
operationId: transactionsRefresh
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/TransactionsRefreshResponse"
examples:
example-1:
value:
request_id: 1vwmF5TBQwiqfwP
default:
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Error response
description: |-
`/transactions/refresh` is an optional endpoint for users of the Transactions product. It initiates an on-demand extraction to fetch the newest transactions for an Item. This on-demand extraction takes place in addition to the periodic extractions that automatically occur multiple times a day for any Transactions-enabled Item. If changes to transactions are discovered after calling `/transactions/refresh`, Plaid will fire a webhook: [`TRANSACTIONS_REMOVED`](https://plaid.com/docs/api/webhooks#deleted-transactions-detected) will be fired if any removed transactions are detected, and [`DEFAULT_UPDATE`](https://plaid.com/docs/api/webhooks#transactions-default_update) will be fired if any new transactions are detected. New transactions can be fetched by calling `/transactions/get`.
Access to `/transactions/refresh` in Production is specific to certain pricing plans. If you cannot access `/transactions/refresh` in Production, [contact Sales](https://www.plaid.com/contact) for assistance.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/TransactionsRefreshRequest"
/transactions/recurring/get:
post:
tags:
- plaid
summary: Get streams of recurring transactions
operationId: transactionsRecurringGet
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/TransactionsRecurringGetResponse"
examples: {}
default:
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Error response
description: |-
The `/transactions/recurring/get` endpoint identifies and returns groups of transactions that occur on a regular basis for the inputted Item and accounts.
The product is currently in beta. To request access, contact transactions-feedback@plaid.com.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/TransactionsRecurringGetRequest"
examples: {}
/transactions/sync:
post:
tags:
- plaid
summary: Get incremental transaction updates on an item
externalDocs:
url: /api/products/#transactionssync
operationId: transactionsSync
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/TransactionsSyncResponse"
default:
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Error response
description: |-
The `/transactions/sync` endpoint returns item transactions as a set of delta updates.
Subsequent calls to the endpoint using the cursor returned in the response will return new added, modified, and removed transactions since the last call to the endpoint
The product is currently in beta. To request access, contact transactions-feedback@plaid.com.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/TransactionsSyncRequest"
examples: {}
/institutions/get:
post:
tags:
- plaid
summary: Get details of all supported institutions
externalDocs:
url: /api/institutions/#institutionsget
operationId: institutionsGet
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/InstitutionsGetResponse"
examples:
example-1:
value:
institutions:
- country_codes:
- US
institution_id: ins_1
name: Bank of America
oauth: false
products:
- assets
- auth
- balance
- transactions
- identity
- liabilities
routing_numbers:
- "011000138"
- "011200365"
- "011400495"
- "011500010"
- "011900254"
- "021000322"
- "021200339"
- "026009593"
- "031202084"
- "051000017"
- "052001633"
- "053000196"
- "053904483"
- "054001204"
- "061000052"
- "063100277"
- "064000020"
- "071214579"
- "072000805"
- "073000176"
- "081000032"
- "081904808"
- "082000073"
- "101100045"
- "103000017"
- "107000327"
- "111000025"
- "121000358"
- "122101706"
- "122400724"
- "123103716"
- "125000024"
- "323070380"
request_id: tbFyCEqkU774ZGG
total: 11384
default:
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Error response
description: |-
Returns a JSON response containing details on all financial institutions currently supported by Plaid. Because Plaid supports thousands of institutions, results are paginated.
If there is no overlap between an institution’s enabled products and a client’s enabled products, then the institution will be filtered out from the response. As a result, the number of institutions returned may not match the count specified in the call.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/InstitutionsGetRequest"
description: ""
/institutions/search:
post:
tags:
- plaid
summary: Search institutions
externalDocs:
url: /api/institutions/#institutionssearch
operationId: institutionsSearch
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/InstitutionsSearchResponse"
examples:
example-1:
value:
institutions:
- country_codes:
- US
institution_id: ins_118923
name: Red Platypus Bank - Red Platypus Bank
oauth: false
products:
- assets
- auth
- balance
- transactions
- identity
routing_numbers: []
request_id: Ggmk0enW4smO2Tp
default:
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Error response
description: |
Returns a JSON response containing details for institutions that match the query parameters, up to a maximum of ten institutions per query.
Versioning note: API versions 2019-05-29 and earlier allow use of the `public_key` parameter instead of the `client_id` and `secret` parameters to authenticate to this endpoint. The `public_key` parameter has since been deprecated; all customers are encouraged to use `client_id` and `secret` instead.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/InstitutionsSearchRequest"
/institutions/get_by_id:
post:
tags:
- plaid
summary: Get details of an institution
externalDocs:
url: /api/institutions/#institutionsget_by_id
operationId: institutionsGetById
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/InstitutionsGetByIdResponse"
examples:
example-1:
value:
institution:
country_codes:
- US
institution_id: ins_109512
name: Houndstooth Bank
products:
- auth
- balance
- identity
- transactions
routing_numbers:
- "110000000"
oauth: false
status:
item_logins:
status: HEALTHY
last_status_change: "2019-02-15T15:53:00Z"
breakdown:
success: 0.9
error_plaid: 0.01
error_institution: 0.09
transactions_updates:
status: HEALTHY
last_status_change: "2019-02-12T08:22:00Z"
breakdown:
success: 0.95
error_plaid: 0.02
error_institution: 0.03
refresh_interval: NORMAL
auth:
status: HEALTHY
last_status_change: "2019-02-15T15:53:00Z"
breakdown:
success: 0.91
error_plaid: 0.01
error_institution: 0.08
identity:
status: DEGRADED
last_status_change: "2019-02-15T15:50:00Z"
breakdown:
success: 0.42
error_plaid: 0.08
error_institution: 0.5
investments:
status: HEALTHY
last_status_change: "2019-02-15T15:53:00Z"
breakdown:
success: 0.89
error_plaid: 0.02
error_institution: 0.09
liabilities:
status: HEALTHY
last_status_change: "2019-02-15T15:53:00Z"
breakdown:
success: 0.89
error_plaid: 0.02
error_institution: 0.09
investments_updates:
status: HEALTHY
last_status_change: "2019-02-12T08:22:00Z"
breakdown:
success: 0.95
error_plaid: 0.02
error_institution: 0.03
refresh_interval: NORMAL
liabilities_updates:
status: HEALTHY
last_status_change: "2019-02-12T08:22:00Z"
breakdown:
success: 0.95
error_plaid: 0.02
error_institution: 0.03
refresh_interval: NORMAL
primary_color: "#004966"
url: https://plaid.com
logo: null
request_id: m8MDnv9okwxFNBV
default:
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Error response
description: "Returns a JSON response containing details on a specified financial institution currently supported by Plaid. \n\nVersioning note: API versions 2019-05-29 and earlier allow use of the `public_key` parameter instead of the `client_id` and `secret` to authenticate to this endpoint. The `public_key` has been deprecated; all customers are encouraged to use `client_id` and `secret` instead.\n"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/InstitutionsGetByIdRequest"
description: ""
/item/remove:
post:
tags:
- plaid
summary: Remove an Item
externalDocs:
url: /api/items/#itemremove
operationId: itemRemove
description: |-
The `/item/remove` endpoint allows you to remove an Item. Once removed, the `access_token` associated with the Item is no longer valid and cannot be used to access any data that was associated with the Item.
Note that in the Development environment, issuing an `/item/remove` request will not decrement your live credential count. To increase your credential account in Development, contact Support.
Also note that for certain OAuth-based institutions, an Item removed via `/item/remove` may still show as an active connection in the institution's OAuth permission manager.
API versions 2019-05-29 and earlier return a `removed` boolean as part of the response.
responses:
"200":
description: success
content:
application/json:
schema:
$ref: "#/components/schemas/ItemRemoveResponse"
examples:
example-1:
value:
request_id: m8MDnv9okwxFNBV
default:
description: Error response.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ItemRemoveRequest"
description: ""
/accounts/get:
post:
tags:
- plaid
summary: Retrieve accounts
externalDocs:
url: /api/accounts/#accountsget
operationId: accountsGet
description: |-
The `/accounts/get` endpoint can be used to retrieve a list of accounts associated with any linked Item. Plaid will only return active bank accounts — that is, accounts that are not closed and are capable of carrying a balance.
This endpoint only returns accounts that were permissioned by the user when they initially created the Item. If a user creates a new account after the initial link, you can capture this event through the [`NEW_ACCOUNTS_AVAILABLE`](https://plaid.com/docs/api/webhooks/#item-new_accounts_available) webhook and then use Link's [update mode](https://plaid.com/docs/link/update-mode/) to request that the user share this new account with you.
This endpoint retrieves cached information, rather than extracting fresh information from the institution. As a result, balances returned may not be up-to-date; for realtime balance information, use `/accounts/balance/get` instead. Note that some information is nullable.
responses:
"200":
description: success
content:
application/json:
schema:
$ref: "#/components/schemas/AccountsGetResponse"
examples:
example-1:
value:
accounts:
- account_id: blgvvBlXw3cq5GMPwqB6s6q4dLKB9WcVqGDGo
balances:
available: 100
current: 110
iso_currency_code: USD
limit: null
unofficial_currency_code: null
mask: "0000"
name: Plaid Checking
official_name: Plaid Gold Standard 0% Interest Checking
subtype: checking
type: depository
- account_id: 6PdjjRP6LmugpBy5NgQvUqpRXMWxzktg3rwrk
balances:
available: null
current: 23631.9805
iso_currency_code: USD
limit: null
unofficial_currency_code: null
mask: "6666"
name: Plaid 401k
official_name: null
subtype: 401k
type: investment
- account_id: XMBvvyMGQ1UoLbKByoMqH3nXMj84ALSdE5B58
balances:
available: null
current: 65262
iso_currency_code: USD
limit: null
unofficial_currency_code: null
mask: "7777"
name: Plaid Student Loan
official_name: null
subtype: student
type: loan
item:
available_products:
- balance
- identity
- payment_initiation
- transactions
billed_products:
- assets
- auth
consent_expiration_time: null
error: null
institution_id: ins_117650
item_id: DWVAAPWq4RHGlEaNyGKRTAnPLaEmo8Cvq7na6
update_type: background
webhook: https://www.genericwebhookurl.com/webhook
request_id: bkVE1BHWMAZ9Rnr
default:
description: Error response.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/AccountsGetRequest"
examples:
example-1:
value:
client_id: string
secret: string
access_token: string
options:
account_ids:
- string
/categories/get:
post:
security: []
tags:
- plaid
summary: Get Categories
externalDocs:
url: /api/products/#categoriesget
operationId: categoriesGet
description: Send a request to the `/categories/get` endpoint to get detailed information on categories returned by Plaid. This endpoint does not require authentication.
responses:
"200":
description: success
content:
application/json:
schema:
$ref: "#/components/schemas/CategoriesGetResponse"
examples:
example-1:
value:
categories:
- category_id: "10000000"
group: special
hierarchy:
- Bank Fees
- category_id: "10001000"
group: special
hierarchy:
- Bank Fees
- Overdraft
- category_id: "12001000"
group: place
hierarchy:
- Community
- Animal Shelter
request_id: ixTBLZGvhD4NnmB
default:
description: Error response.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CategoriesGetRequest"
/sandbox/processor_token/create:
post:
tags:
- plaid
summary: Create a test Item and processor token
externalDocs:
url: /api/sandbox/#sandboxprocessor_tokencreate
operationId: sandboxProcessorTokenCreate
description: Use the `/sandbox/processor_token/create` endpoint to create a valid `processor_token` for an arbitrary institution ID and test credentials. The created `processor_token` corresponds to a new Sandbox Item. You can then use this `processor_token` with the `/processor/` API endpoints in Sandbox. You can also use `/sandbox/processor_token/create` with the [`user_custom` test username](https://plaid.com/docs/sandbox/user-custom) to generate a test account with custom data.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SandboxProcessorTokenCreateResponse"
examples:
example-1:
value:
processor_token: processor-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d
request_id: Aim3b
default:
description: Error response.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/SandboxProcessorTokenCreateRequest"
/sandbox/public_token/create:
post:
tags:
- plaid
summary: Create a test Item
externalDocs:
url: /api/sandbox/#sandboxpublic_tokencreate
operationId: sandboxPublicTokenCreate
description: Use the `/sandbox/public_token/create` endpoint to create a valid `public_token` for an arbitrary institution ID, initial products, and test credentials. The created `public_token` maps to a new Sandbox Item. You can then call `/item/public_token/exchange` to exchange the `public_token` for an `access_token` and perform all API actions. `/sandbox/public_token/create` can also be used with the [`user_custom` test username](https://plaid.com/docs/sandbox/user-custom) to generate a test account with custom data. `/sandbox/public_token/create` cannot be used with OAuth institutions.
responses:
"200":
description: success
content:
application/json:
schema:
$ref: "#/components/schemas/SandboxPublicTokenCreateResponse"
examples:
example-1:
value:
public_token: public-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d
request_id: Aim3b
default:
description: Error response.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
requestBody:
required: true
description: ""
content:
application/json:
schema:
$ref: "#/components/schemas/SandboxPublicTokenCreateRequest"
/sandbox/item/fire_webhook:
post:
tags:
- plaid
summary: Fire a test webhook
externalDocs:
url: /api/sandbox/#sandboxitemfire_webhook
operationId: sandboxItemFireWebhook
description: The `/sandbox/item/fire_webhook` endpoint is used to test that code correctly handles webhooks. Calling this endpoint triggers a Transactions `DEFAULT_UPDATE` webhook to be fired for a given Sandbox Item. If the Item does not support Transactions, a `SANDBOX_PRODUCT_NOT_ENABLED` error will result. Note that this endpoint is provided for developer ease-of-use and is not required for testing webhooks; webhooks will also fire in Sandbox under the same conditions that they would in Production or Development.
responses:
"200":
description: success
content:
application/json:
schema:
$ref: "#/components/schemas/SandboxItemFireWebhookResponse"
examples:
example-1:
value:
webhook_fired: true
request_id: 1vwmF5TBQwiqfwP
default:
description: Error response.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
requestBody:
required: true
description: ""
content:
application/json:
schema:
$ref: "#/components/schemas/SandboxItemFireWebhookRequest"
/accounts/balance/get:
post:
tags:
- plaid
summary: Retrieve real-time balance data
externalDocs:
url: /api/products/#accountsbalanceget
operationId: accountsBalanceGet
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AccountsGetResponse"
examples:
example-1:
value:
accounts:
- account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp
balances:
available: 100
current: 110
iso_currency_code: USD
limit: null
unofficial_currency_code: null
mask: "0000"
name: Plaid Checking
official_name: Plaid Gold Standard 0% Interest Checking
subtype: checking
type: depository
- account_id: dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK
balances:
available: null
current: 410
iso_currency_code: USD
limit: 2000
unofficial_currency_code: null
mask: "3333"
name: Plaid Credit Card
official_name: Plaid Diamond 12.5% APR Interest Credit Card
subtype: credit card
type: credit
- account_id: Pp1Vpkl9w8sajvK6oEEKtr7vZxBnGpf7LxxLE
balances:
available: null
current: 65262
iso_currency_code: USD
limit: null
unofficial_currency_code: null
mask: "7777"
name: Plaid Student Loan
official_name: null
subtype: student
type: loan
item:
available_products:
- balance
- identity
- investments
billed_products:
- assets
- auth
- liabilities
- transactions
consent_expiration_time: null
error: null
institution_id: ins_3
item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6
update_type: background
webhook: https://www.genericwebhookurl.com/webhook
request_id: qk5Bxes3gDfv4F2
description: The `/accounts/balance/get` endpoint returns the real-time balance for each of an Item's accounts. While other endpoints may return a balance object, only `/accounts/balance/get` forces the available and current balance fields to be refreshed rather than cached. This endpoint can be used for existing Items that were added via any of Plaid’s other products. This endpoint can be used as long as Link has been initialized with any other product, `balance` itself is not a product that can be used to initialize Link.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/AccountsBalanceGetRequest"
examples:
example-1:
value:
access_token: string
secret: string
client_id: string
options:
account_ids:
- string
/identity/get:
post:
tags:
- plaid
summary: Retrieve identity data
externalDocs:
url: /api/products/#identityget
operationId: identityGet
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/IdentityGetResponse"
examples:
example-1:
value:
accounts:
- account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp
balances:
available: 100
current: 110
iso_currency_code: USD
limit: null
unofficial_currency_code: null
mask: "0000"
name: Plaid Checking
official_name: Plaid Gold Standard 0% Interest Checking
owners:
- addresses:
- data:
city: Malakoff
country: US
postal_code: "14236"
region: NY
street: 2992 Cameron Road
primary: true
- data:
city: San Matias
country: US
postal_code: 93405-2255
region: CA
street: 2493 Leisure Lane
primary: false
emails:
- data: accountholder0@example.com
primary: true
type: primary
- data: accountholder1@example.com
primary: false
type: secondary
- data: extraordinarily.long.email.username.123456@reallylonghostname.com
primary: false
type: other
names:
- Alberta Bobbeth Charleson
phone_numbers:
- data: "1112223333"
primary: false
type: home
- data: "1112224444"
primary: false
type: work
- data: "1112225555"
primary: false
type: mobile
subtype: checking
type: depository
- account_id: 3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr
balances:
available: 200
current: 210
iso_currency_code: USD
limit: null
unofficial_currency_code: null
mask: "1111"
name: Plaid Saving
official_name: Plaid Silver Standard 0.1% Interest Saving
owners:
- addresses:
- data:
city: Malakoff
country: US
postal_code: "14236"
region: NY
street: 2992 Cameron Road
primary: true
- data:
city: San Matias
country: US
postal_code: 93405-2255
region: CA
street: 2493 Leisure Lane
primary: false
emails:
- data: accountholder0@example.com
primary: true
type: primary
- data: accountholder1@example.com
primary: false
type: secondary
- data: extraordinarily.long.email.username.123456@reallylonghostname.com
primary: false
type: other
names:
- Alberta Bobbeth Charleson
phone_numbers:
- data: "1112223333"
primary: false
type: home
- data: "1112224444"
primary: false
type: work
- data: "1112225555"
primary: false
type: mobile
subtype: savings
type: depository
item:
available_products:
- balance
- investments
billed_products:
- assets
- auth
- identity
- liabilities
- transactions
consent_expiration_time: null
error: null
institution_id: ins_3
item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6
update_type: background
webhook: https://www.genericwebhookurl.com/webhook
request_id: 3nARps6TOYtbACO
description: |-
The `/identity/get` endpoint allows you to retrieve various account holder information on file with the financial institution, including names, emails, phone numbers, and addresses. Only name data is guaranteed to be returned; other fields will be empty arrays if not provided by the institution.
Note: This request may take some time to complete if identity was not specified as an initial product when creating the Item. This is because Plaid must communicate directly with the institution to retrieve the data.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/IdentityGetRequest"
description: ""
/processor/auth/get:
post:
tags:
- plaid
summary: Retrieve Auth data
externalDocs:
url: /api/processors/#processorauthget
operationId: processorAuthGet
responses:
"200":
description: success
content:
application/json:
schema:
$ref: "#/components/schemas/ProcessorAuthGetResponse"
examples:
example-1:
value:
account:
account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D
balances:
available: 100
current: 110
iso_currency_code: USD
limit: null
unofficial_currency_code: null
mask: "0000"
name: Plaid Checking
official_name: Plaid Gold Checking
subtype: checking
type: depository
numbers:
ach:
account: "9900009606"
account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D
routing: "011401533"
wire_routing: "021000021"
eft:
account: "111122223333"
account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D
institution: "021"
branch: "01140"
international:
account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D
bic: NWBKGB21
iban: GB29NWBK60161331926819
bacs:
account: "31926819"
account_id: vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D
sort_code: "601613"
request_id: 1zlMf
description: "The `/processor/auth/get` endpoint returns the bank account and bank identification number (such as the routing number, for US accounts), for a checking or savings account that''s associated with a given `processor_token`. The endpoint also returns high-level account data and balances when available. \n\nVersioning note: API versions 2019-05-29 and earlier use a different schema for the `numbers` object returned by this endpoint. For details, see [Plaid API versioning](https://plaid.com/docs/api/versioning/#version-2020-09-14).\n"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ProcessorAuthGetRequest"
/processor/bank_transfer/create:
post:
tags:
- plaid
summary: Create a bank transfer as a processor
externalDocs:
url: /api/processors/#bank_transfercreate
operationId: processorBankTransferCreate
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ProcessorBankTransferCreateResponse"
examples:
example-1:
value:
bank_transfer:
account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
ach_class: ppd
amount: "12.34"
cancellable: true
created: "2020-08-06T17:27:15Z"
custom_tag: my tag
description: Testing2
direction: outbound
failure_reason: null
id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
iso_currency_code: USD
metadata:
key1: value1
key2: value2
network: ach
origination_account_id: 11111111-1111-1111-1111-111111111111
status: pending
type: credit
user:
email_address: plaid@plaid.com
legal_name: John Smith
routing_number: "111111111"
request_id: saKrIBuEB9qJZno
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Use the `/processor/bank_transfer/create` endpoint to initiate a new bank transfer as a processor
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ProcessorBankTransferCreateRequest"
/processor/identity/get:
post:
tags:
- plaid
summary: Retrieve Identity data
externalDocs:
url: /api/processors/#processoridentityget
operationId: processorIdentityGet
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ProcessorIdentityGetResponse"
examples:
example-1:
value:
account:
account_id: XMGPJy4q1gsQoKd5z9R3tK8kJ9EWL8SdkgKMq
balances:
available: 100
current: 110
iso_currency_code: USD
limit: null
unofficial_currency_code: null
mask: "0000"
name: Plaid Checking
official_name: Plaid Gold Standard 0% Interest Checking
owners:
- addresses:
- data:
city: Malakoff
country: US
postal_code: "14236"
region: NY
street: 2992 Cameron Road
primary: true
- data:
city: San Matias
country: US
postal_code: 93405-2255
region: CA
street: 2493 Leisure Lane
primary: false
emails:
- data: accountholder0@example.com
primary: true
type: primary
- data: accountholder1@example.com
primary: false
type: secondary
- data: extraordinarily.long.email.username.123456@reallylonghostname.com
primary: false
type: other
names:
- Alberta Bobbeth Charleson
phone_numbers:
- data: "1112223333"
primary: false
type: home
- data: "1112224444"
primary: false
type: work
- data: "1112225555"
primary: false
type: mobile1
subtype: checking
type: depository
request_id: eOPkBl6t33veI2J
description: The `/processor/identity/get` endpoint allows you to retrieve various account holder information on file with the financial institution, including names, emails, phone numbers, and addresses.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ProcessorIdentityGetRequest"
/processor/balance/get:
post:
tags:
- plaid
summary: Retrieve Balance data
externalDocs:
url: /api/processors/#processorbalanceget
operationId: processorBalanceGet
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ProcessorBalanceGetResponse"
examples:
example-1:
value:
account:
account_id: QKKzevvp33HxPWpoqn6rI13BxW4awNSjnw4xv
balances:
available: 100
current: 110
limit: null
iso_currency_code: USD
unofficial_currency_code: null
mask: "0000"
name: Plaid Checking
official_name: Plaid Gold Checking
subtype: checking
type: depository
request_id: 1zlMf
description: "The `/processor/balance/get` endpoint returns the real-time balance for each of an Item's accounts. While other endpoints may return a balance object, only `/processor/balance/get` forces the available and current balance fields to be refreshed rather than cached. "
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ProcessorBalanceGetRequest"
description: |-
The `/processor/balance/get` endpoint returns the real-time balance for the account associated with a given `processor_token`.
The current balance is the total amount of funds in the account. The available balance is the current balance less any outstanding holds or debits that have not yet posted to the account.
Note that not all institutions calculate the available balance. In the event that available balance is unavailable from the institution, Plaid will return an available balance value of `null`.
/item/webhook/update:
post:
tags:
- plaid
summary: Update Webhook URL
externalDocs:
url: /api/items/#itemwebhookupdate
operationId: itemWebhookUpdate
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ItemWebhookUpdateResponse"
examples:
example-1:
value:
item:
available_products:
- balance
- identity
- payment_initiation
- transactions
billed_products:
- assets
- auth
consent_expiration_time: null
error: null
institution_id: ins_117650
item_id: DWVAAPWq4RHGlEaNyGKRTAnPLaEmo8Cvq7na6
update_type: background
webhook: https://www.genericwebhookurl.com/webhook
request_id: vYK11LNTfRoAMbj
description: The POST `/item/webhook/update` allows you to update the webhook URL associated with an Item. This request triggers a [`WEBHOOK_UPDATE_ACKNOWLEDGED`](https://plaid.com/docs/api/webhooks/#item-webhook-url-updated) webhook to the newly specified webhook URL.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ItemWebhookUpdateRequest"
/item/access_token/invalidate:
post:
tags:
- plaid
summary: Invalidate access_token
externalDocs:
url: /api/tokens/#itemaccess_tokeninvalidate
operationId: itemAccessTokenInvalidate
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ItemAccessTokenInvalidateResponse"
examples:
example-1:
value:
new_access_token: access-sandbox-8ab976e6-64bc-4b38-98f7-731e7a349970
request_id: m8MDnv9okwxFNBV
description: |
By default, the `access_token` associated with an Item does not expire and should be stored in a persistent, secure manner.
You can use the `/item/access_token/invalidate` endpoint to rotate the `access_token` associated with an Item. The endpoint returns a new `access_token` and immediately invalidates the previous `access_token`.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ItemAccessTokenInvalidateRequest"
/webhook_verification_key/get:
post:
tags:
- plaid
summary: Get webhook verification key
externalDocs:
url: /api/webhooks/webhook-verification/#webhook_verification_keyget
operationId: webhookVerificationKeyGet
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/WebhookVerificationKeyGetResponse"
examples:
example-1:
value:
key:
alg: ES256
created_at: 1560466150
crv: P-256
expired_at: null
kid: bfbd5111-8e33-4643-8ced-b2e642a72f3c
kty: EC
use: sig
x: hKXLGIjWvCBv-cP5euCTxl8g9GLG9zHo_3pO5NN1DwQ
"y": shhexqPB7YffGn6fR6h2UhTSuCtPmfzQJ6ENVIoO4Ys
request_id: RZ6Omi1bzzwDaLo
description: |-
Plaid signs all outgoing webhooks and provides JSON Web Tokens (JWTs) so that you can verify the authenticity of any incoming webhooks to your application. A message signature is included in the `Plaid-Verification` header.
The `/webhook_verification_key/get` endpoint provides a JSON Web Key (JWK) that can be used to verify a JWT.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/WebhookVerificationKeyGetRequest"
description: ""
/liabilities/get:
post:
tags:
- plaid
summary: Retrieve Liabilities data
externalDocs:
url: /api/products/#liabilitiesget
operationId: liabilitiesGet
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/LiabilitiesGetResponse"
examples:
example-1:
value:
accounts:
- account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp
balances:
available: 100
current: 110
iso_currency_code: USD
limit: null
unofficial_currency_code: null
mask: "0000"
name: Plaid Checking
official_name: Plaid Gold Standard 0% Interest Checking
subtype: checking
type: depository
- account_id: dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK
balances:
available: null
current: 410
iso_currency_code: USD
limit: 2000
unofficial_currency_code: null
mask: "3333"
name: Plaid Credit Card
official_name: Plaid Diamond 12.5% APR Interest Credit Card
subtype: credit card
type: credit
- account_id: Pp1Vpkl9w8sajvK6oEEKtr7vZxBnGpf7LxxLE
balances:
available: null
current: 65262
iso_currency_code: USD
limit: null
unofficial_currency_code: null
mask: "7777"
name: Plaid Student Loan
official_name: null
subtype: student
type: loan
- account_id: BxBXxLj1m4HMXBm9WZJyUg9XLd4rKEhw8Pb1J
balances:
available: null
current: 56302.06
iso_currency_code: USD
limit: null
unofficial_currency_code: null
mask: "8888"
name: Plaid Mortgage
official_name: null
subtype: mortgage
type: loan
item:
available_products:
- balance
- investments
billed_products:
- assets
- auth
- identity
- liabilities
- transactions
consent_expiration_time: null
error: null
institution_id: ins_3
item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6
update_type: background
webhook: https://www.genericwebhookurl.com/webhook
liabilities:
credit:
- account_id: dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK
aprs:
- apr_percentage: 15.24
apr_type: balance_transfer_apr
balance_subject_to_apr: 1562.32
interest_charge_amount: 130.22
- apr_percentage: 27.95
apr_type: cash_apr
balance_subject_to_apr: 56.22
interest_charge_amount: 14.81
- apr_percentage: 12.5
apr_type: purchase_apr
balance_subject_to_apr: 157.01
interest_charge_amount: 25.66
- apr_percentage: 0
apr_type: special
balance_subject_to_apr: 1000
interest_charge_amount: 0
is_overdue: false
last_payment_amount: 168.25
last_payment_date: "2019-05-22"
last_statement_issue_date: "2019-05-28"
last_statement_balance: 1708.77
minimum_payment_amount: 20
next_payment_due_date: "2020-05-28"
mortgage:
- account_id: BxBXxLj1m4HMXBm9WZJyUg9XLd4rKEhw8Pb1J
account_number: "3120194154"
current_late_fee: 25
escrow_balance: 3141.54
has_pmi: true
has_prepayment_penalty: true
interest_rate:
percentage: 3.99
type: fixed
last_payment_amount: 3141.54
last_payment_date: "2019-08-01"
loan_term: 30 year
loan_type_description: conventional
maturity_date: "2045-07-31"
next_monthly_payment: 3141.54
next_payment_due_date: "2019-11-15"
origination_date: "2015-08-01"
origination_principal_amount: 425000
past_due_amount: 2304
property_address:
city: Malakoff
country: US
postal_code: "14236"
region: NY
street: 2992 Cameron Road
ytd_interest_paid: 12300.4
ytd_principal_paid: 12340.5
student:
- account_id: Pp1Vpkl9w8sajvK6oEEKtr7vZxBnGpf7LxxLE
account_number: "4277075694"
disbursement_dates:
- "2002-08-28"
expected_payoff_date: "2032-07-28"
guarantor: DEPT OF ED
interest_rate_percentage: 5.25
is_overdue: false
last_payment_amount: 138.05
last_payment_date: "2019-04-22"
last_statement_issue_date: "2019-04-28"
loan_name: Consolidation
loan_status:
end_date: "2032-07-28"
type: repayment
minimum_payment_amount: 25
next_payment_due_date: "2019-05-28"
origination_date: "2002-08-28"
origination_principal_amount: 25000
outstanding_interest_amount: 6227.36
payment_reference_number: "4277075694"
pslf_status:
estimated_eligibility_date: "2021-01-01"
payments_made: 200
payments_remaining: 160
repayment_plan:
description: Standard Repayment
type: standard
sequence_number: "1"
servicer_address:
city: San Matias
country: US
postal_code: "99415"
region: CA
street: 123 Relaxation Road
ytd_interest_paid: 280.55
ytd_principal_paid: 271.65
request_id: dTnnm60WgKGLnKL
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/LiabilitiesGetRequest"
description: |-
The `/liabilities/get` endpoint returns various details about an Item with loan or credit accounts. Liabilities data is available primarily for US financial institutions, with some limited coverage of Canadian institutions. Currently supported account types are account type `credit` with account subtype `credit card` or `paypal`, and account type `loan` with account subtype `student` or `mortgage`. To limit accounts listed in Link to types and subtypes supported by Liabilities, you can use the `account_filters` parameter when [creating a Link token](https://plaid.com/docs/api/tokens/#linktokencreate).
The types of information returned by Liabilities can include balances and due dates, loan terms, and account details such as original loan amount and guarantor. Data is refreshed approximately once per day; the latest data can be retrieved by calling `/liabilities/get`.
Note: This request may take some time to complete if `liabilities` was not specified as an initial product when creating the Item. This is because Plaid must communicate directly with the institution to retrieve the additional data.
/payment_initiation/recipient/create:
post:
tags:
- plaid
summary: Create payment recipient
externalDocs:
url: /api/products/#payment_initiationrecipientcreate
operationId: paymentInitiationRecipientCreate
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/PaymentInitiationRecipientCreateResponse"
examples:
example-1:
value:
recipient_id: recipient-id-sandbox-9b6b4679-914b-445b-9450-efbdb80296f6
request_id: 4zlKapIkTm8p5KM
description: |
Create a payment recipient for payment initiation. The recipient must be in Europe, within a country that is a member of the Single Euro Payment Area (SEPA). For a standing order (recurring) payment, the recipient must be in the UK.
The endpoint is idempotent: if a developer has already made a request with the same payment details, Plaid will return the same `recipient_id`.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/PaymentInitiationRecipientCreateRequest"
/payment_initiation/payment/reverse:
post:
tags:
- plaid
summary: Reverse an existing payment
externalDocs:
url: /api/products/#payment_initiationpaymentreverse
operationId: paymentInitiationPaymentReverse
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/PaymentInitiationPaymentReverseResponse"
examples:
example-1:
value:
refund_id: refund-id-sandbox-c5f8cd31-6cae-4cad-9b0d-f7c10be9cc4b
request_id: HtlKzBX0fMeF7mU
status: INITIATED
description: |
Reverse a previously initiated payment.
A payment can only be reversed once and will be refunded to the original sender's account.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/PaymentInitiationPaymentReverseRequest"
/payment_initiation/recipient/get:
post:
tags:
- plaid
summary: Get payment recipient
externalDocs:
url: /api/products/#payment_initiationrecipientget
operationId: paymentInitiationRecipientGet
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/PaymentInitiationRecipientGetResponse"
examples:
example-1:
value:
recipient_id: recipient-id-sandbox-9b6b4679-914b-445b-9450-efbdb80296f6
name: Wonder Wallet
iban: GB29NWBK60161331926819
address:
street:
- 96 Guild Street
- 9th Floor
city: London
postal_code: SE14 8JW
country: GB
request_id: 4zlKapIkTm8p5KM
description: Get details about a payment recipient you have previously created.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/PaymentInitiationRecipientGetRequest"
/payment_initiation/recipient/list:
post:
tags:
- plaid
summary: List payment recipients
externalDocs:
url: /api/products/#payment_initiationrecipientlist
operationId: paymentInitiationRecipientList
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/PaymentInitiationRecipientListResponse"
examples:
example-1:
value:
recipients:
- recipient_id: recipient-id-sandbox-9b6b4679-914b-445b-9450-efbdb80296f6
name: Wonder Wallet
iban: GB29NWBK60161331926819
address:
street:
- 96 Guild Street
- 9th Floor
city: London
postal_code: SE14 8JW
country: GB
request_id: 4zlKapIkTm8p5KM
description: The `/payment_initiation/recipient/list` endpoint list the payment recipients that you have previously created.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/PaymentInitiationRecipientListRequest"
/payment_initiation/payment/create:
post:
tags:
- plaid
summary: Create a payment
externalDocs:
url: /api/products/#payment_initiationpaymentcreate
operationId: paymentInitiationPaymentCreate
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/PaymentInitiationPaymentCreateResponse"
examples:
example-1:
value:
payment_id: payment-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3
status: PAYMENT_STATUS_INPUT_NEEDED
request_id: 4ciYVmesrySiUAB
description: |-
After creating a payment recipient, you can use the `/payment_initiation/payment/create` endpoint to create a payment to that recipient. Payments can be one-time or standing order (recurring) and can be denominated in either EUR or GBP. If making domestic GBP-denominated payments, your recipient must have been created with BACS numbers. In general, EUR-denominated payments will be sent via SEPA Credit Transfer and GBP-denominated payments will be sent via the Faster Payments network, but the payment network used will be determined by the institution. Payments sent via Faster Payments will typically arrive immediately, while payments sent via SEPA Credit Transfer will typically arrive in one business day.
Standing orders (recurring payments) must be denominated in GBP and can only be sent to recipients in the UK. Once created, standing order payments cannot be modified or canceled via the API. An end user can cancel or modify a standing order directly on their banking application or website, or by contacting the bank. Standing orders will follow the payment rules of the underlying rails (Faster Payments in UK). Payments can be sent Monday to Friday, excluding bank holidays. If the pre-arranged date falls on a weekend or bank holiday, the payment is made on the next working day. It is not possible to guarantee the exact time the payment will reach the recipient’s account, although at least 90% of standing order payments are sent by 6am.
In the Development environment, payments must be below 5 GBP / EUR. For details on any payment limits in Production, contact your Plaid Account Manager.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/PaymentInitiationPaymentCreateRequest"
description: ""
/payment_initiation/payment/token/create:
post:
tags:
- plaid
deprecated: true
summary: Create payment token
externalDocs:
url: /link/maintain-legacy-integration/#creating-a-payment-token
operationId: createPaymentToken
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/PaymentInitiationPaymentTokenCreateResponse"
examples:
example-1:
value:
payment_token: payment-token-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3
payment_token_expiration_time: "2020-01-01T00:00:00Z"
request_id: 4ciYVmesrySiUAB
description: |-
The `/payment_initiation/payment/token/create` endpoint has been deprecated. New Plaid customers will be unable to use this endpoint, and existing customers are encouraged to migrate to the newer, `link_token`-based flow. The recommended flow is to provide the `payment_id` to `/link/token/create`, which returns a `link_token` used to initialize Link.
The `/payment_initiation/payment/token/create` is used to create a `payment_token`, which can then be used in Link initialization to enter a payment initiation flow. You can only use a `payment_token` once. If this attempt fails, the end user aborts the flow, or the token expires, you will need to create a new payment token. Creating a new payment token does not require end user input.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/PaymentInitiationPaymentTokenCreateRequest"
/sandbox/item/reset_login:
post:
tags:
- plaid
summary: Force a Sandbox Item into an error state
externalDocs:
url: /api/sandbox/#sandboxitemreset_login
operationId: sandboxItemResetLogin
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SandboxItemResetLoginResponse"
examples:
example-1:
value:
reset_login: true
request_id: m8MDnv9okwxFNBV
description: |-
`/sandbox/item/reset_login/` forces an Item into an `ITEM_LOGIN_REQUIRED` state in order to simulate an Item whose login is no longer valid. This makes it easy to test Link's [update mode](https://plaid.com/docs/link/update-mode) flow in the Sandbox environment. After calling `/sandbox/item/reset_login`, You can then use Plaid Link update mode to restore the Item to a good state. An `ITEM_LOGIN_REQUIRED` webhook will also be fired after a call to this endpoint, if one is associated with the Item.
In the Sandbox, Items will transition to an `ITEM_LOGIN_REQUIRED` error state automatically after 30 days, even if this endpoint is not called.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/SandboxItemResetLoginRequest"
/sandbox/item/set_verification_status:
post:
tags:
- plaid
summary: Set verification status for Sandbox account
externalDocs:
url: /api/sandbox/#sandboxitemset_verification_status
operationId: sandboxItemSetVerificationStatus
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SandboxItemSetVerificationStatusResponse"
examples:
example-1:
value:
request_id: 1vwmF5TBQwiqfwP
description: |-
The `/sandbox/item/set_verification_status` endpoint can be used to change the verification status of an Item in in the Sandbox in order to simulate the Automated Micro-deposit flow.
Note that not all Plaid developer accounts are enabled for micro-deposit based verification by default. Your account must be enabled for this feature in order to test it in Sandbox. To enable this features or check your status, contact your account manager or [submit a product access Support ticket](https://dashboard.plaid.com/support/new/product-and-development/product-troubleshooting/request-product-access).
For more information on testing Automated Micro-deposits in Sandbox, see [Auth full coverage testing](https://plaid.com/docs/auth/coverage/testing#).
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/SandboxItemSetVerificationStatusRequest"
/item/public_token/exchange:
post:
tags:
- plaid
summary: Exchange public token for an access token
externalDocs:
url: /api/tokens/#itempublic_tokenexchange
operationId: itemPublicTokenExchange
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ItemPublicTokenExchangeResponse"
examples:
example-1:
value:
access_token: access-sandbox-de3ce8ef-33f8-452c-a685-8671031fc0f6
item_id: M5eVJqLnv3tbzdngLDp9FL5OlDNxlNhlE55op
request_id: Aim3b
description: |-
Exchange a Link `public_token` for an API `access_token`. Link hands off the `public_token` client-side via the `onSuccess` callback once a user has successfully created an Item. The `public_token` is ephemeral and expires after 30 minutes.
The response also includes an `item_id` that should be stored with the `access_token`. The `item_id` is used to identify an Item in a webhook. The `item_id` can also be retrieved by making an `/item/get` request.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ItemPublicTokenExchangeRequest"
/item/public_token/create:
post:
tags:
- plaid
summary: Create public token
externalDocs:
url: /api/tokens/#itempublic_tokencreate
operationId: itemCreatePublicToken
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ItemPublicTokenCreateResponse"
examples:
example-1:
value:
public_token: public-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d
request_id: Aim3b
description: |-
Note: As of July 2020, the `/item/public_token/create` endpoint is deprecated. Instead, use `/link/token/create` with an `access_token` to create a Link token for use with [update mode](https://plaid.com/docs/link/update-mode).
If you need your user to take action to restore or resolve an error associated with an Item, generate a public token with the `/item/public_token/create` endpoint and then initialize Link with that `public_token`.
A `public_token` is one-time use and expires after 30 minutes. You use a `public_token` to initialize Link in [update mode](https://plaid.com/docs/link/update-mode) for a particular Item. You can generate a `public_token` for an Item even if you did not use Link to create the Item originally.
The `/item/public_token/create` endpoint is **not** used to create your initial `public_token`. If you have not already received an `access_token` for a specific Item, use Link to obtain your `public_token` instead. See the [Quickstart](https://plaid.com/docs/quickstart) for more information.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ItemPublicTokenCreateRequest"
/payment_initiation/payment/get:
post:
tags:
- plaid
summary: Get payment details
externalDocs:
url: /api/products/#payment_initiationpaymentget
operationId: paymentInitiationPaymentGet
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/PaymentInitiationPaymentGetResponse"
examples:
example-1:
value:
payment_id: payment-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3
payment_token: payment-token-sandbox-c6a26505-42b4-46fe-8ecf-bf9edcafbebb
reference: Account Funding 99744
amount:
currency: GBP
value: 100
status: PAYMENT_STATUS_INPUT_NEEDED
last_status_update: "2019-11-06T21:10:52Z"
payment_expiration_time: "2019-11-06T21:25:52Z"
recipient_id: recipient-id-sandbox-9b6b4679-914b-445b-9450-efbdb80296f6
bacs: null
iban: null
request_id: aEAQmewMzlVa1k6
description: The `/payment_initiation/payment/get` endpoint can be used to check the status of a payment, as well as to receive basic information such as recipient and payment amount. In the case of standing orders, the `/payment_initiation/payment/get` endpoint will provide information about the status of the overall standing order itself; the API cannot be used to retrieve payment status for individual payments within a standing order.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/PaymentInitiationPaymentGetRequest"
description: ""
/payment_initiation/payment/list:
post:
tags:
- plaid
summary: List payments
externalDocs:
url: /api/products/#payment_initiationpaymentlist
operationId: paymentInitiationPaymentList
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/PaymentInitiationPaymentListResponse"
examples:
example-1:
value:
payments:
- payment_id: payment-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3
reference: Account Funding 99744
amount:
currency: GBP
value: 100
status: PAYMENT_STATUS_INPUT_NEEDED
last_status_update: "2019-11-06T21:10:52Z"
recipient_id: recipient-id-sandbox-9b6b4679-914b-445b-9450-efbdb80296f6
bacs: null
iban: null
next_cursor: "2020-01-01T00:00:00Z"
request_id: aEAQmewMzlVa1k6
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/PaymentInitiationPaymentListRequest"
description: The `/payment_initiation/payment/list` endpoint can be used to retrieve all created payments. By default, the 10 most recent payments are returned. You can request more payments and paginate through the results using the optional `count` and `cursor` parameters.
/asset_report/create:
post:
tags:
- plaid
summary: Create an Asset Report
externalDocs:
url: /api/products/#asset_reportcreate
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AssetReportCreateResponse"
examples:
example-1:
value:
asset_report_token: assets-sandbox-6f12f5bb-22dd-4855-b918-f47ec439198a
asset_report_id: 1f414183-220c-44f5-b0c8-bc0e6d4053bb
request_id: Iam3b
operationId: assetReportCreate
description: |-
The `/asset_report/create` endpoint initiates the process of creating an Asset Report, which can then be retrieved by passing the `asset_report_token` return value to the `/asset_report/get` or `/asset_report/pdf/get` endpoints.
The Asset Report takes some time to be created and is not available immediately after calling `/asset_report/create`. When the Asset Report is ready to be retrieved using `/asset_report/get` or `/asset_report/pdf/get`, Plaid will fire a `PRODUCT_READY` webhook. For full details of the webhook schema, see [Asset Report webhooks](https://plaid.com/docs/api/webhooks/#Assets-webhooks).
The `/asset_report/create` endpoint creates an Asset Report at a moment in time. Asset Reports are immutable. To get an updated Asset Report, use the `/asset_report/refresh` endpoint.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/AssetReportCreateRequest"
/asset_report/refresh:
post:
tags:
- plaid
summary: Refresh an Asset Report
externalDocs:
url: /api/products/#asset_reportrefresh
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AssetReportRefreshResponse"
examples:
example-1:
value:
asset_report_id: c33ebe8b-6a63-4d74-a83d-d39791231ac0
asset_report_token: assets-sandbox-8218d5f8-6d6d-403d-92f5-13a9afaa4398
request_id: NBZaq
operationId: assetReportRefresh
description: |-
An Asset Report is an immutable snapshot of a user's assets. In order to "refresh" an Asset Report you created previously, you can use the `/asset_report/refresh` endpoint to create a new Asset Report based on the old one, but with the most recent data available.
The new Asset Report will contain the same Items as the original Report, as well as the same filters applied by any call to `/asset_report/filter`. By default, the new Asset Report will also use the same parameters you submitted with your original `/asset_report/create` request, but the original `days_requested` value and the values of any parameters in the `options` object can be overridden with new values. To change these arguments, simply supply new values for them in your request to `/asset_report/refresh`. Submit an empty string ("") for any previously-populated fields you would like set as empty.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/AssetReportRefreshRequest"
description: ""
/asset_report/remove:
post:
tags:
- plaid
summary: Delete an Asset Report
externalDocs:
url: /api/products/#asset_reportremove
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AssetReportRemoveResponse"
examples:
example-1:
value:
removed: true
request_id: I6zHN
operationId: assetReportRemove
description: |-
The `/item/remove` endpoint allows you to invalidate an `access_token`, meaning you will not be able to create new Asset Reports with it. Removing an Item does not affect any Asset Reports or Audit Copies you have already created, which will remain accessible until you remove them specifically.
The `/asset_report/remove` endpoint allows you to remove an Asset Report. Removing an Asset Report invalidates its `asset_report_token`, meaning you will no longer be able to use it to access Report data or create new Audit Copies. Removing an Asset Report does not affect the underlying Items, but does invalidate any `audit_copy_tokens` associated with the Asset Report.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/AssetReportRemoveRequest"
description: ""
/asset_report/filter:
post:
tags:
- plaid
summary: Filter Asset Report
externalDocs:
url: /api/products/#asset_reportfilter
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AssetReportFilterResponse"
examples:
example-1:
value:
asset_report_token: assets-sandbox-bc410c6a-4653-4c75-985c-e757c3497c5c
asset_report_id: fdc09207-0cef-4d88-b5eb-0d970758ebd9
request_id: qEg07
operationId: assetReportFilter
description: |-
By default, an Asset Report will contain all of the accounts on a given Item. In some cases, you may not want the Asset Report to contain all accounts. For example, you might have the end user choose which accounts are relevant in Link using the Account Select view, which you can enable in the dashboard. Or, you might always exclude certain account types or subtypes, which you can identify by using the `/accounts/get` endpoint. To narrow an Asset Report to only a subset of accounts, use the `/asset_report/filter` endpoint.
To exclude certain Accounts from an Asset Report, first use the `/asset_report/create` endpoint to create the report, then send the `asset_report_token` along with a list of `account_ids` to exclude to the `/asset_report/filter` endpoint, to create a new Asset Report which contains only a subset of the original Asset Report's data.
Because Asset Reports are immutable, calling `/asset_report/filter` does not alter the original Asset Report in any way; rather, `/asset_report/filter` creates a new Asset Report with a new token and id. Asset Reports created via `/asset_report/filter` do not contain new Asset data, and are not billed.
Plaid will fire a [`PRODUCT_READY`](https://plaid.com/docs/api/webhooks) webhook once generation of the filtered Asset Report has completed.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/AssetReportFilterRequest"
description: ""
/asset_report/get:
post:
tags:
- plaid
summary: Retrieve an Asset Report
externalDocs:
url: /api/products/#asset_reportget
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AssetReportGetResponse"
examples:
example-1:
value:
report:
asset_report_id: bf3a0490-344c-4620-a219-2693162e4b1d
client_report_id: 123abc
date_generated: "2020-06-05T22:47:53Z"
days_requested: 3
items:
- accounts:
- account_id: 3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr
balances:
available: 200
current: 210
iso_currency_code: USD
limit: null
unofficial_currency_code: null
days_available: 3
historical_balances:
- current: 210
date: "2020-06-04"
iso_currency_code: USD
unofficial_currency_code: null
- current: 210
date: "2020-06-03"
iso_currency_code: USD
unofficial_currency_code: null
- current: 210
date: "2020-06-02"
iso_currency_code: USD
unofficial_currency_code: null
mask: "1111"
name: Plaid Saving
official_name: Plaid Silver Standard 0.1% Interest Saving
owners:
- addresses:
- data:
city: Malakoff
country: US
postal_code: "14236"
region: NY
street: 2992 Cameron Road
primary: true
- data:
city: San Matias
country: US
postal_code: 93405-2255
region: CA
street: 2493 Leisure Lane
primary: false
emails:
- data: accountholder0@example.com
primary: true
type: primary
- data: accountholder1@example.com
primary: false
type: secondary
- data: extraordinarily.long.email.username.123456@reallylonghostname.com
primary: false
type: other
names:
- Alberta Bobbeth Charleson
phone_numbers:
- data: "1112223333"
primary: false
type: home
- data: "1112224444"
primary: false
type: work
- data: "1112225555"
primary: false
type: mobile
ownership_type: null
subtype: savings
transactions: []
type: depository
- account_id: BxBXxLj1m4HMXBm9WZJyUg9XLd4rKEhw8Pb1J
balances:
available: null
current: 56302.06
iso_currency_code: USD
limit: null
unofficial_currency_code: null
days_available: 3
historical_balances: []
mask: "8888"
name: Plaid Mortgage
official_name: null
owners:
- addresses:
- data:
city: Malakoff
country: US
postal_code: "14236"
region: NY
street: 2992 Cameron Road
primary: true
- data:
city: San Matias
country: US
postal_code: 93405-2255
region: CA
street: 2493 Leisure Lane
primary: false
emails:
- data: accountholder0@example.com
primary: true
type: primary
- data: accountholder1@example.com
primary: false
type: secondary
- data: extraordinarily.long.email.username.123456@reallylonghostname.com
primary: false
type: other
names:
- Alberta Bobbeth Charleson
phone_numbers:
- data: "1112223333"
primary: false
type: home
- data: "1112224444"
primary: false
type: work
- data: "1112225555"
primary: false
type: mobile
ownership_type: null
subtype: mortgage
transactions: []
type: loan
- account_id: dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK
balances:
available: null
current: 410
iso_currency_code: USD
limit: null
unofficial_currency_code: null
days_available: 3
historical_balances:
- current: 410
date: "2020-06-04"
iso_currency_code: USD
unofficial_currency_code: null
- current: 410
date: "2020-06-03"
iso_currency_code: USD
unofficial_currency_code: null
- current: 410
date: "2020-06-02"
iso_currency_code: USD
unofficial_currency_code: null
mask: "3333"
name: Plaid Credit Card
official_name: Plaid Diamond 12.5% APR Interest Credit Card
owners:
- addresses:
- data:
city: Malakoff
country: US
postal_code: "14236"
region: NY
street: 2992 Cameron Road
primary: true
- data:
city: San Matias
country: US
postal_code: 93405-2255
region: CA
street: 2493 Leisure Lane
primary: false
emails:
- data: accountholder0@example.com
primary: true
type: primary
- data: accountholder1@example.com
primary: false
type: secondary
- data: extraordinarily.long.email.username.123456@reallylonghostname.com
primary: false
type: other
names:
- Alberta Bobbeth Charleson
phone_numbers:
- data: "1112223333"
primary: false
type: home
- data: "1112224444"
primary: false
type: work
- data: "1112225555"
primary: false
type: mobile
ownership_type: null
subtype: credit card
transactions: []
type: credit
date_last_updated: "2020-06-05T22:47:52Z"
institution_id: ins_3
institution_name: Chase
item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6
user:
client_user_id: "123456789"
email: accountholder0@example.com
first_name: Alberta
last_name: Charleson
middle_name: Bobbeth
phone_number: 111-222-3333
ssn: 123-45-6789
request_id: eYupqX1mZkEuQRx
warnings: []
operationId: assetReportGet
description: |-
The `/asset_report/get` endpoint retrieves the Asset Report in JSON format. Before calling `/asset_report/get`, you must first create the Asset Report using `/asset_report/create` (or filter an Asset Report using `/asset_report/filter`) and then wait for the [`PRODUCT_READY`](https://plaid.com/docs/api/webhooks) webhook to fire, indicating that the Report is ready to be retrieved.
By default, an Asset Report includes transaction descriptions as returned by the bank, as opposed to parsed and categorized by Plaid. You can also receive cleaned and categorized transactions, as well as additional insights like merchant name or location information. We call this an Asset Report with Insights. An Asset Report with Insights provides transaction category, location, and merchant information in addition to the transaction strings provided in a standard Asset Report.
To retrieve an Asset Report with Insights, call the `/asset_report/get` endpoint with `include_insights` set to `true`.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/AssetReportGetRequest"
description: ""
/asset_report/pdf/get:
post:
tags:
- plaid
summary: Retrieve a PDF Asset Report
externalDocs:
url: /api/products/#asset_reportpdfget
responses:
"200":
description: A PDF of the Asset Report
content:
application/pdf:
schema:
$ref: "#/components/schemas/AssetReportPDFGetResponse"
operationId: assetReportPdfGet
description: |-
The `/asset_report/pdf/get` endpoint retrieves the Asset Report in PDF format. Before calling `/asset_report/pdf/get`, you must first create the Asset Report using `/asset_report/create` (or filter an Asset Report using `/asset_report/filter`) and then wait for the [`PRODUCT_READY`](https://plaid.com/docs/api/webhooks) webhook to fire, indicating that the Report is ready to be retrieved.
The response to `/asset_report/pdf/get` is the PDF binary data. The `request_id` is returned in the `Plaid-Request-ID` header.
[View a sample PDF Asset Report](https://plaid.com/documents/sample-asset-report.pdf).
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/AssetReportPDFGetRequest"
description: ""
/asset_report/audit_copy/create:
post:
tags:
- plaid
summary: Create Asset Report Audit Copy
externalDocs:
url: /api/products/#asset_reportaudit_copycreate
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AssetReportAuditCopyCreateResponse"
examples:
example-1:
value:
audit_copy_token: a-sandbox-3TAU2CWVYBDVRHUCAAAI27ULU4
request_id: Iam3b
operationId: assetReportAuditCopyCreate
description: |-
Plaid can provide an Audit Copy of any Asset Report directly to a participating third party on your behalf. For example, Plaid can supply an Audit Copy directly to Fannie Mae on your behalf if you participate in the Day 1 Certainty™ program. An Audit Copy contains the same underlying data as the Asset Report.
To grant access to an Audit Copy, use the `/asset_report/audit_copy/create` endpoint to create an `audit_copy_token` and then pass that token to the third party who needs access. Each third party has its own `auditor_id`, for example `fannie_mae`. You’ll need to create a separate Audit Copy for each third party to whom you want to grant access to the Report.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/AssetReportAuditCopyCreateRequest"
/asset_report/audit_copy/remove:
post:
tags:
- plaid
summary: Remove Asset Report Audit Copy
externalDocs:
url: /api/products/#asset_reportaudit_copyremove
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AssetReportAuditCopyRemoveResponse"
examples:
example-1:
value:
removed: true
request_id: m8MDnv9okwxFNBV
operationId: assetReportAuditCopyRemove
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/AssetReportAuditCopyRemoveRequest"
description: ""
description: The `/asset_report/audit_copy/remove` endpoint allows you to remove an Audit Copy. Removing an Audit Copy invalidates the `audit_copy_token` associated with it, meaning both you and any third parties holding the token will no longer be able to use it to access Report data. Items associated with the Asset Report, the Asset Report itself and other Audit Copies of it are not affected and will remain accessible after removing the given Audit Copy.
/investments/holdings/get:
post:
tags:
- plaid
summary: Get Investment holdings
externalDocs:
url: /api/products/#investmentsholdingsget
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/InvestmentsHoldingsGetResponse"
examples:
example-1:
value:
accounts:
- account_id: 5Bvpj4QknlhVWk7GygpwfVKdd133GoCxB814g
balances:
available: 43200
current: 43200
iso_currency_code: USD
limit: null
unofficial_currency_code: null
mask: "4444"
name: Plaid Money Market
official_name: Plaid Platinum Standard 1.85% Interest Money Market
subtype: money market
type: depository
- account_id: JqMLm4rJwpF6gMPJwBqdh9ZjjPvvpDcb7kDK1
balances:
available: null
current: 320.76
iso_currency_code: USD
limit: null
unofficial_currency_code: null
mask: "5555"
name: Plaid IRA
official_name: null
subtype: ira
type: investment
- account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm
balances:
available: null
current: 23631.9805
iso_currency_code: USD
limit: null
unofficial_currency_code: null
mask: "6666"
name: Plaid 401k
official_name: null
subtype: 401k
type: investment
holdings:
- account_id: JqMLm4rJwpF6gMPJwBqdh9ZjjPvvpDcb7kDK1
cost_basis: 1
institution_price: 1
institution_price_as_of: "2021-04-13"
institution_value: 0.01
iso_currency_code: USD
quantity: 0.01
security_id: d6ePmbPxgWCWmMVv66q9iPV94n91vMtov5Are
unofficial_currency_code: null
- account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm
cost_basis: 1.5
institution_price: 2.11
institution_price_as_of: null
institution_value: 2.11
iso_currency_code: USD
quantity: 1
security_id: KDwjlXj1Rqt58dVvmzRguxJybmyQL8FgeWWAy
unofficial_currency_code: null
- account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm
cost_basis: 10
institution_price: 10.42
institution_price_as_of: null
institution_value: 20.84
iso_currency_code: USD
quantity: 2
security_id: NDVQrXQoqzt5v3bAe8qRt4A7mK7wvZCLEBBJk
unofficial_currency_code: null
- account_id: JqMLm4rJwpF6gMPJwBqdh9ZjjPvvpDcb7kDK1
cost_basis: 0.01
institution_price: 0.011
institution_price_as_of: null
institution_value: 110
iso_currency_code: USD
quantity: 10000
security_id: 8E4L9XLl6MudjEpwPAAgivmdZRdBPJuvMPlPb
unofficial_currency_code: null
- account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm
cost_basis: 23
institution_price: 27
institution_price_as_of: null
institution_value: 636.309
iso_currency_code: USD
quantity: 23.567
security_id: JDdP7XPMklt5vwPmDN45t3KAoWAPmjtpaW7DP
unofficial_currency_code: null
- account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm
cost_basis: 15
institution_price: 13.73
institution_price_as_of: null
institution_value: 1373.6865
iso_currency_code: USD
quantity: 100.05
security_id: nnmo8doZ4lfKNEDe3mPJipLGkaGw3jfPrpxoN
unofficial_currency_code: null
- account_id: k67E4xKvMlhmleEa4pg9hlwGGNnnEeixPolGm
cost_basis: 1
institution_price: 1
institution_price_as_of: null
institution_value: 12345.67
iso_currency_code: USD
quantity: 12345.67
security_id: d6ePmbPxgWCWmMVv66q9iPV94n91vMtov5Are
unofficial_currency_code: null
item:
available_products:
- balance
- identity
- liabilities
- transactions
billed_products:
- assets
- auth
- investments
consent_expiration_time: null
error: null
institution_id: ins_3
item_id: 4z9LPae1nRHWy8pvg9jrsgbRP4ZNQvIdbLq7g
update_type: background
webhook: https://www.genericwebhookurl.com/webhook
request_id: l68wb8zpS0hqmsJ
securities:
- close_price: 0.011
close_price_as_of: "2021-04-13"
cusip: null
institution_id: null
institution_security_id: null
is_cash_equivalent: false
isin: null
iso_currency_code: USD
name: Nflx Feb 01'18 $355 Call
proxy_security_id: null
security_id: 8E4L9XLl6MudjEpwPAAgivmdZRdBPJuvMPlPb
sedol: null
ticker_symbol: NFLX180201C00355000
type: derivative
unofficial_currency_code: null
- close_price: 27
close_price_as_of: null
cusip: "577130834"
institution_id: null
institution_security_id: null
is_cash_equivalent: false
isin: US5771308344
iso_currency_code: USD
name: Matthews Pacific Tiger Fund Insti Class
proxy_security_id: null
security_id: JDdP7XPMklt5vwPmDN45t3KAoWAPmjtpaW7DP
sedol: null
ticker_symbol: MIPTX
type: mutual fund
unofficial_currency_code: null
- close_price: 2.11
close_price_as_of: null
cusip: 00448Q201
institution_id: null
institution_security_id: null
is_cash_equivalent: false
isin: US00448Q2012
iso_currency_code: USD
name: Achillion Pharmaceuticals Inc.
proxy_security_id: null
security_id: KDwjlXj1Rqt58dVvmzRguxJybmyQL8FgeWWAy
sedol: null
ticker_symbol: ACHN
type: equity
unofficial_currency_code: null
- close_price: 10.42
close_price_as_of: null
cusip: "258620103"
institution_id: null
institution_security_id: null
is_cash_equivalent: false
isin: US2586201038
iso_currency_code: USD
name: DoubleLine Total Return Bond Fund
proxy_security_id: null
security_id: NDVQrXQoqzt5v3bAe8qRt4A7mK7wvZCLEBBJk
sedol: null
ticker_symbol: DBLTX
type: mutual fund
unofficial_currency_code: null
- close_price: 1
close_price_as_of: null
cusip: null
institution_id: null
institution_security_id: null
is_cash_equivalent: true
isin: null
iso_currency_code: USD
name: U S Dollar
proxy_security_id: null
security_id: d6ePmbPxgWCWmMVv66q9iPV94n91vMtov5Are
sedol: null
ticker_symbol: USD
type: cash
unofficial_currency_code: null
- close_price: 13.73
close_price_as_of: null
cusip: null
institution_id: ins_3
institution_security_id: NHX105509
is_cash_equivalent: false
isin: null
iso_currency_code: USD
name: NH PORTFOLIO 1055 (FIDELITY INDEX)
proxy_security_id: null
security_id: nnmo8doZ4lfKNEDe3mPJipLGkaGw3jfPrpxoN
sedol: null
ticker_symbol: NHX105509
type: etf
unofficial_currency_code: null
operationId: investmentsHoldingsGet
description: The `/investments/holdings/get` endpoint allows developers to receive user-authorized stock position data for `investment`-type accounts.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/InvestmentsHoldingsGetRequest"
/investments/transactions/get:
post:
tags:
- plaid
summary: Get investment transactions
externalDocs:
url: /api/products/#investmentstransactionsget
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/InvestmentsTransactionsGetResponse"
examples:
example-1:
value:
accounts:
- account_id: 5e66Dl6jNatx3nXPGwZ7UkJed4z6KBcZA4Rbe
balances:
available: 100
current: 110
iso_currency_code: USD
limit: null
unofficial_currency_code: null
mask: "0000"
name: Plaid Checking
official_name: Plaid Gold Standard 0% Interest Checking
subtype: checking
type: depository
- account_id: KqZZMoZmBWHJlz7yKaZjHZb78VNpaxfVa7e5z
balances:
available: null
current: 320.76
iso_currency_code: USD
limit: null
unofficial_currency_code: null
mask: "5555"
name: Plaid IRA
official_name: null
subtype: ira
type: investment
- account_id: rz99ex9ZQotvnjXdgQLEsR81e3ArPgulVWjGj
balances:
available: null
current: 23631.9805
iso_currency_code: USD
limit: null
unofficial_currency_code: null
mask: "6666"
name: Plaid 401k
official_name: null
subtype: 401k
type: investment
investment_transactions:
- account_id: rz99ex9ZQotvnjXdgQLEsR81e3ArPgulVWjGj
amount: -8.72
cancel_transaction_id: null
date: "2020-05-29"
fees: 0
investment_transaction_id: oq99Pz97joHQem4BNjXECev1E4B6L6sRzwANW
iso_currency_code: USD
name: INCOME DIV DIVIDEND RECEIVED
price: 0
quantity: 0
security_id: eW4jmnjd6AtjxXVrjmj6SX1dNEdZp3Cy8RnRQ
subtype: dividend
type: cash
unofficial_currency_code: null
- account_id: rz99ex9ZQotvnjXdgQLEsR81e3ArPgulVWjGj
amount: -1289.01
cancel_transaction_id: null
date: "2020-05-28"
fees: 7.99
investment_transaction_id: pK99jB9e7mtwjA435GpVuMvmWQKVbVFLWme57
iso_currency_code: USD
name: SELL Matthews Pacific Tiger Fund Insti Class
price: 27.53
quantity: -47.74104242992852
security_id: JDdP7XPMklt5vwPmDN45t3KAoWAPmjtpaW7DP
subtype: sell
type: sell
unofficial_currency_code: null
- account_id: rz99ex9ZQotvnjXdgQLEsR81e3ArPgulVWjGj
amount: 7.7
cancel_transaction_id: null
date: "2020-05-27"
fees: 7.99
investment_transaction_id: LKoo1ko93wtreBwM7yQnuQ3P5DNKbKSPRzBNv
iso_currency_code: USD
name: BUY DoubleLine Total Return Bond Fund
price: 10.42
quantity: 0.7388014749727547
security_id: NDVQrXQoqzt5v3bAe8qRt4A7mK7wvZCLEBBJk
subtype: buy
type: buy
unofficial_currency_code: null
item:
available_products:
- assets
- balance
- identity
- transactions
billed_products:
- auth
- investments
consent_expiration_time: null
error: null
institution_id: ins_12
item_id: 8Mqq5rqQ7Pcxq9MGDv3JULZ6yzZDLMCwoxGDq
update_type: background
webhook: https://www.genericwebhookurl.com/webhook
request_id: iv4q3ZlytOOthkv
securities:
- close_price: 27
close_price_as_of: null
cusip: "577130834"
institution_id: null
institution_security_id: null
is_cash_equivalent: false
isin: US5771308344
iso_currency_code: USD
name: Matthews Pacific Tiger Fund Insti Class
proxy_security_id: null
security_id: JDdP7XPMklt5vwPmDN45t3KAoWAPmjtpaW7DP
sedol: null
ticker_symbol: MIPTX
type: mutual fund
unofficial_currency_code: null
- close_price: 10.42
close_price_as_of: null
cusip: "258620103"
institution_id: null
institution_security_id: null
is_cash_equivalent: false
isin: US2586201038
iso_currency_code: USD
name: DoubleLine Total Return Bond Fund
proxy_security_id: null
security_id: NDVQrXQoqzt5v3bAe8qRt4A7mK7wvZCLEBBJk
sedol: null
ticker_symbol: DBLTX
type: mutual fund
unofficial_currency_code: null
- close_price: 34.73
close_price_as_of: null
cusip: 84470P109
institution_id: null
institution_security_id: null
is_cash_equivalent: false
isin: US84470P1093
iso_currency_code: USD
name: Southside Bancshares Inc.
proxy_security_id: null
security_id: eW4jmnjd6AtjxXVrjmj6SX1dNEdZp3Cy8RnRQ
sedol: null
ticker_symbol: SBSI
type: equity
unofficial_currency_code: null
total_investment_transactions: 3
operationId: investmentsTransactionsGet
description: |-
The `/investments/transactions/get` endpoint allows developers to retrieve user-authorized transaction data for investment accounts.
Transactions are returned in reverse-chronological order, and the sequence of transaction ordering is stable and will not shift.
Due to the potentially large number of investment transactions associated with an Item, results are paginated. Manipulate the count and offset parameters in conjunction with the `total_investment_transactions` response body field to fetch all available investment transactions.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/InvestmentsTransactionsGetRequest"
/processor/token/create:
post:
tags:
- plaid
summary: Create processor token
externalDocs:
url: /api/processors/#processortokencreate
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ProcessorTokenCreateResponse"
examples:
example-1:
value:
processor_token: processor-sandbox-0asd1-a92nc
request_id: xrQNYZ7Zoh6R7gV
operationId: processorTokenCreate
description: Used to create a token suitable for sending to one of Plaid's partners to enable integrations. Note that Stripe partnerships use bank account tokens instead; see `/processor/stripe/bank_account_token/create` for creating tokens for use with Stripe integrations.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ProcessorTokenCreateRequest"
description: ""
/processor/stripe/bank_account_token/create:
post:
tags:
- plaid
summary: Create Stripe bank account token
externalDocs:
url: /api/processors/#processorstripebank_account_tokencreate
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ProcessorStripeBankAccountTokenCreateResponse"
examples:
example-1:
value:
stripe_bank_account_token: btok_5oEetfLzPklE1fwJZ7SG
request_id: xrQNYZ7Zoh6R7gV
operationId: processorStripeBankAccountTokenCreate
description: Used to create a token suitable for sending to Stripe to enable Plaid-Stripe integrations. For a detailed guide on integrating Stripe, see [Add Stripe to your app](https://plaid.com/docs/auth/partnerships/stripe/).
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ProcessorStripeBankAccountTokenCreateRequest"
description: ""
/processor/apex/processor_token/create:
post:
tags:
- plaid
summary: Create Apex bank account token
externalDocs:
url: /none/
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ProcessorTokenCreateResponse"
operationId: processorApexProcessorTokenCreate
description: Used to create a token suitable for sending to Apex to enable Plaid-Apex integrations.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ProcessorApexProcessorTokenCreateRequest"
description: ""
/deposit_switch/create:
post:
tags:
- plaid
summary: Create a deposit switch
externalDocs:
url: /api/products#deposit_switchcreate
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/DepositSwitchCreateResponse"
examples:
example-1:
value:
deposit_switch_id: c7jMwPPManIwy9rwMewWP7lpb4pKRbtrbMomp
request_id: lMjeOeu9X1VUh1F
operationId: depositSwitchCreate
description: This endpoint creates a deposit switch entity that will be persisted throughout the lifecycle of the switch.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/DepositSwitchCreateRequest"
/item/import:
post:
tags:
- plaid
summary: Import Item
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/ItemImportResponse"
examples:
example-1:
value:
access_token: access-sandbox-99ace160-3cf7-4e51-a083-403633425815
request_id: ewIBAn6RZirsk4W
operationId: itemImport
description: |-
`/item/import` creates an Item via your Plaid Exchange Integration and returns an `access_token`. As part of an `/item/import` request, you will include a User ID (`user_auth.user_id`) and Authentication Token (`user_auth.auth_token`) that enable data aggregation through your Plaid Exchange API endpoints. These authentication principals are to be chosen by you.
Upon creating an Item via `/item/import`, Plaid will automatically begin an extraction of that Item through the Plaid Exchange infrastructure you have already integrated. This will automatically generate the Plaid native account ID for the account the user will switch their direct deposit to (`target_account_id`).
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ItemImportRequest"
/deposit_switch/token/create:
post:
tags:
- plaid
summary: Create a deposit switch token
externalDocs:
url: /deposit-switch/reference#deposit_switchtokencreate
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/DepositSwitchTokenCreateResponse"
examples:
example-1:
value:
deposit_switch_token: deposit-switch-sandbox-3e5cacca-10a6-11ea-bcdb-6003089acac0
deposit_switch_token_expiration_time: "2019-12-31T12:01:37Z"
request_id: 68MvHx4Ub5NYoXt
operationId: depositSwitchTokenCreate
description: |
In order for the end user to take action, you will need to create a public token representing the deposit switch. This token is used to initialize Link. It can be used one time and expires after 30 minutes.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/DepositSwitchTokenCreateRequest"
/link/token/create:
post:
tags:
- plaid
summary: Create Link Token
externalDocs:
url: /api/tokens/#linktokencreate
operationId: linkTokenCreate
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/LinkTokenCreateResponse"
examples:
example-1:
value:
link_token: link-sandbox-af1a0311-da53-4636-b754-dd15cc058176
expiration: "2020-03-27T12:56:34Z"
request_id: XQVgFigpGHXkb0b
description: |-
The `/link/token/create` endpoint creates a `link_token`, which is required as a parameter when initializing Link. Once Link has been initialized, it returns a `public_token`, which can then be exchanged for an `access_token` via `/item/public_token/exchange` as part of the main Link flow.
A `link_token` generated by `/link/token/create` is also used to initialize other Link flows, such as the update mode flow for tokens with expired credentials, or the Payment Initiation (Europe) flow.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/LinkTokenCreateRequest"
description: ""
/link/token/get:
post:
tags:
- plaid
summary: Get Link Token
externalDocs:
url: /api/tokens/#linktokenget
operationId: linkTokenGet
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/LinkTokenGetResponse"
examples:
example-1:
value:
created_at: "2020-12-02T21:14:54Z"
expiration: "2020-12-03T01:14:54Z"
link_token: link-sandbox-33792986-2b9c-4b80-b1f2-518caaac6183
metadata:
account_filters:
depository:
account_subtypes:
- checking
- savings
client_name: Insert Client name here
country_codes:
- US
initial_products:
- auth
language: en
redirect_uri: null
webhook: https://www.example.com/webhook
request_id: u0ydFs493XjyTYn
description: |-
The `/link/token/get` endpoint gets information about a previously-created `link_token` using the
`/link/token/create` endpoint. It can be useful for debugging purposes.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/LinkTokenGetRequest"
description: ""
/asset_report/audit_copy/get:
post:
summary: Retrieve an Asset Report Audit Copy
tags:
- plaid
operationId: assetReportAuditCopyGet
externalDocs:
url: /none/
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/AssetReportAuditCopyGetRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AssetReportGetResponse"
description: "`/asset_report/audit_copy/get` allows auditors to get a copy of an Asset Report that was previously shared via the `/asset_report/audit_copy/create` endpoint. The caller of `/asset_report/audit_copy/create` must provide the `audit_copy_token` to the auditor. This token can then be used to call `/asset_report/audit_copy/create`."
/deposit_switch/get:
post:
summary: Retrieve a deposit switch
externalDocs:
url: /api/products#deposit_switchget
tags:
- plaid
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/DepositSwitchGetResponse"
examples:
example-1:
value:
target_item_id: MdRAkq1QikR3BLjDyMfMkVpqLmEm1VR7bX5hE
target_account_id: bX5hEMdRAkq1QikR3BLjDyMfMkVpqLmEm1VR7
deposit_switch_id: LjDyMfMkVpqLmEm1VR7bQikR3BX5hEMdRAkq1
state: completed
switch_method: instant
date_created: "2019-11-01"
date_completed: "2019-11-01"
account_has_multiple_allocations: true
is_allocated_remainder: false
percent_allocated: 50
amount_allocated: null
employer_name: COMPANY INC
employer_id: pqLmEm1VR7bQi11231
institution_name: Bank of America
institution_id: ins_1
request_id: lMjeOeu9X1VUh1F
operationId: depositSwitchGet
description: This endpoint returns information related to how the user has configured their payroll allocation and the state of the switch. You can use this information to build logic related to the user's direct deposit allocation preferences.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/DepositSwitchGetRequest"
parameters: []
/transfer/get:
post:
summary: Retrieve a transfer
tags:
- plaid
externalDocs:
url: /transfer/reference#transferget
operationId: transferGet
responses:
"200":
description: OK
headers: {}
content:
application/json:
schema:
$ref: "#/components/schemas/TransferGetResponse"
examples:
example-1:
value:
transfer:
account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
ach_class: ppd
amount: "12.34"
cancellable: true
created: "2020-08-06T17:27:15Z"
description: Testing2
failure_reason:
ach_return_code: R13
description: Invalid ACH routing number
id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
metadata:
key1: value1
key2: value2
network: ach
origination_account_id: 11111111-1111-1111-1111-111111111111
status: pending
type: credit
user:
email_address: plaid@plaid.com
legal_name: John Smith
phone_number: null
address: null
request_id: saKrIBuEB9qJZno
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: The `/transfer/get` fetches information about the transfer corresponding to the given `transfer_id`.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/TransferGetRequest"
examples: {}
parameters: []
/bank_transfer/get:
post:
summary: Retrieve a bank transfer
tags:
- plaid
externalDocs:
url: /api/products#bank_transferget
operationId: bankTransferGet
responses:
"200":
description: OK
headers: {}
content:
application/json:
schema:
$ref: "#/components/schemas/BankTransferGetResponse"
examples:
example-1:
value:
bank_transfer:
account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
ach_class: ppd
amount: "12.34"
cancellable: true
created: "2020-08-06T17:27:15Z"
custom_tag: my tag
description: Testing2
direction: outbound
failure_reason:
ach_return_code: R13
description: Invalid ACH routing number
id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
iso_currency_code: USD
metadata:
key1: value1
key2: value2
network: ach
origination_account_id: 11111111-1111-1111-1111-111111111111
status: pending
type: credit
user:
email_address: plaid@plaid.com
legal_name: John Smith
routing_number: "111111111"
request_id: saKrIBuEB9qJZno
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: The `/bank_transfer/get` fetches information about the bank transfer corresponding to the given `bank_transfer_id`.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/BankTransferGetRequest"
examples: {}
parameters: []
/transfer/authorization/create:
post:
summary: Create a transfer authorization
tags:
- plaid
externalDocs:
url: /transfer/reference#transferauthorizationcreate
operationId: transferAuthorizationCreate
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/TransferAuthorizationCreateResponse"
examples:
example-1:
value:
authorization:
id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
created: "2020-08-06T17:27:15Z"
decision: approved
decision_rationale: null
proposed_transfer:
ach_class: ppd
account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
type: credit
user:
legal_name: Foo Bar
phone_number: 123-456-7890
email_address: user@plaid.com
address:
street: 100 Market Street
city: San Francisco
region: California
postal_code: "94103"
country: US
amount: "12.34"
network: ach
iso_currency_code: USD
origination_account_id: 0123-4567-8901-2345-67890123
request_id: saKrIBuEB9qJZno
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: |-
Use the `/transfer/authorization/create` endpoint to determine transfer failure risk.
In Plaid's sandbox environment the decisions will be returned as follows:
- To approve a transfer, make an authorization request with an `amount` less than the available balance in the account.
- To decline a transfer with the rationale code `NSF`, the available balance on the account must be less than the authorization `amount`. See [Create Sandbox test data](https://plaid.com/docs/sandbox/user-custom/) for details on how to customize data in Sandbox.
- To decline a transfer with the rationale code `RISK`, the available balance on the account must be exactly $0. See [Create Sandbox test data](https://plaid.com/docs/sandbox/user-custom/) for details on how to customize data in Sandbox.
- To permit a transfer with the rationale code `MANUALLY_VERIFIED_ITEM`, create an Item in Link through the [Same Day Micro-deposits flow](https://plaid.com/docs/auth/coverage/testing/#testing-same-day-micro-deposits).
- To permit a transfer with the rationale code `LOGIN_REQUIRED`, [reset the login for an Item](https://plaid.com/docs/sandbox/#item_login_required).
All username/password combinations other than the ones listed above will result in a decision of permitted and rationale code `ERROR`.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/TransferAuthorizationCreateRequest"
/transfer/create:
post:
summary: Create a transfer
tags:
- plaid
externalDocs:
url: /transfer/reference#transfercreate
operationId: transferCreate
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/TransferCreateResponse"
examples:
example-1:
value:
transfer:
id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
ach_class: ppd
account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
type: credit
user:
legal_name: Foo Bar
phone_number: 123-456-7890
email_address: user@plaid.com
address:
street: 100 Market Street
city: San Francisco
region: California
postal_code: "94103"
country: US
amount: "12.34"
description: A description of the transfer
created: "2020-08-06T17:27:15Z"
status: pending
network: ach
cancellable: true
failure_reason: null
metadata:
key1: value1
key2: value2
origination_account_id: 0123-4567-8901-2345-67890123
iso_currency_code: USD
request_id: saKrIBuEB9qJZno
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Use the `/transfer/create` endpoint to initiate a new transfer.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/TransferCreateRequest"
/bank_transfer/create:
post:
summary: Create a bank transfer
tags:
- plaid
externalDocs:
url: /api/products#bank_transfercreate
operationId: bankTransferCreate
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/BankTransferCreateResponse"
examples:
example-1:
value:
bank_transfer:
account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
ach_class: ppd
amount: "12.34"
cancellable: true
created: "2020-08-06T17:27:15Z"
custom_tag: my tag
description: Testing2
direction: outbound
failure_reason: null
id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
iso_currency_code: USD
metadata:
key1: value1
key2: value2
network: ach
origination_account_id: 11111111-1111-1111-1111-111111111111
status: pending
type: credit
user:
email_address: plaid@plaid.com
legal_name: John Smith
routing_number: "111111111"
request_id: saKrIBuEB9qJZno
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Use the `/bank_transfer/create` endpoint to initiate a new bank transfer.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/BankTransferCreateRequest"
/transfer/list:
post:
summary: List transfers
tags:
- plaid
externalDocs:
url: /transfer/reference#transferlist
operationId: transferList
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/TransferListResponse"
examples:
example-1:
value:
transfers:
- account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
ach_class: ppd
amount: "12.34"
cancellable: true
created: "2020-08-06T17:27:15Z"
description: Testing2
failure_reason:
ach_return_code: R13
description: Invalid ACH routing number
id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
metadata:
key1: value1
key2: value2
network: ach
origination_account_id: 11111111-1111-1111-1111-111111111111
status: pending
type: credit
user:
email_address: plaid@plaid.com
legal_name: John Smith
phone_number: null
address: null
request_id: saKrIBuEB9qJZno
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: |
Use the `/transfer/list` endpoint to see a list of all your transfers and their statuses. Results are paginated; use the `count` and `offset` query parameters to retrieve the desired transfers.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/TransferListRequest"
/bank_transfer/list:
post:
summary: List bank transfers
tags:
- plaid
externalDocs:
url: /api/products#bank_transferlist
operationId: bankTransferList
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/BankTransferListResponse"
examples:
example-1:
value:
bank_transfers:
- account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
ach_class: ppd
amount: "12.34"
cancellable: true
created: "2020-08-06T17:27:15Z"
custom_tag: my tag
description: Testing2
direction: outbound
failure_reason:
ach_return_code: R13
description: Invalid ACH routing number
id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
iso_currency_code: USD
metadata:
key1: value1
key2: value2
network: ach
origination_account_id: 11111111-1111-1111-1111-111111111111
status: pending
type: credit
user:
email_address: plaid@plaid.com
legal_name: John Smith
routing_number: "111111111"
request_id: saKrIBuEB9qJZno
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: |
Use the `/bank_transfer/list` endpoint to see a list of all your bank transfers and their statuses. Results are paginated; use the `count` and `offset` query parameters to retrieve the desired bank transfers.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/BankTransferListRequest"
/transfer/cancel:
post:
summary: Cancel a transfer
tags:
- plaid
externalDocs:
url: /transfer/reference#transfercancel
operationId: transferCancel
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/TransferCancelResponse"
examples:
example-1:
value:
request_id: saKrIBuEB9qJZno
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Use the `/transfer/cancel` endpoint to cancel a transfer. A transfer is eligible for cancelation if the `cancellable` property returned by `/transfer/get` is `true`.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/TransferCancelRequest"
/bank_transfer/cancel:
post:
summary: Cancel a bank transfer
tags:
- plaid
externalDocs:
url: /api/products#bank_transfercancel
operationId: bankTransferCancel
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/BankTransferCancelResponse"
examples:
example-1:
value:
request_id: saKrIBuEB9qJZno
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Use the `/bank_transfer/cancel` endpoint to cancel a bank transfer. A transfer is eligible for cancelation if the `cancellable` property returned by `/bank_transfer/get` is `true`.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/BankTransferCancelRequest"
/transfer/event/list:
post:
summary: List transfer events
tags:
- plaid
externalDocs:
url: /transfer/reference#transfereventlist
operationId: transferEventList
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/TransferEventListResponse"
examples:
example-1:
value:
transfer_events:
- account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
transfer_amount: "12.34"
transfer_id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
transfer_type: credit
event_id: 1
event_type: posted
failure_reason: null
origination_account_id: null
timestamp: "2020-08-06T17:27:15Z"
request_id: mdqfuVxeoza6mhu
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Use the `/transfer/event/list` endpoint to get a list of transfer events based on specified filter criteria.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/TransferEventListRequest"
/bank_transfer/event/list:
post:
summary: List bank transfer events
tags:
- plaid
externalDocs:
url: /api/products#bank_transfereventlist
operationId: bankTransferEventList
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/BankTransferEventListResponse"
examples:
example-1:
value:
bank_transfer_events:
- account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
bank_transfer_amount: "12.34"
bank_transfer_id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
bank_transfer_iso_currency_code: USD
bank_transfer_type: credit
direction: outbound
event_id: 1
event_type: receiver_pending
failure_reason: null
origination_account_id: null
receiver_details:
available_balance: positive
timestamp: "2020-08-06T17:27:15Z"
request_id: mdqfuVxeoza6mhu
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Use the `/bank_transfer/event/list` endpoint to get a list of bank transfer events based on specified filter criteria.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/BankTransferEventListRequest"
/transfer/event/sync:
post:
summary: Sync transfer events
tags:
- plaid
externalDocs:
url: /transfer/reference#transfereventsync
operationId: transferEventSync
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/TransferEventSyncResponse"
examples:
example-1:
value:
transfer_events:
- account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
transfer_amount: "12.34"
transfer_id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
transfer_type: credit
event_id: 1
event_type: pending
failure_reason: null
origination_account_id: null
timestamp: "2020-08-06T17:27:15Z"
request_id: mdqfuVxeoza6mhu
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/TransferEventSyncRequest"
description: "`/transfer/event/sync` allows you to request up to the next 25 transfer events that happened after a specific `event_id`. Use the `/transfer/event/sync` endpoint to guarantee you have seen all transfer events."
/bank_transfer/event/sync:
post:
summary: Sync bank transfer events
tags:
- plaid
externalDocs:
url: /api/products#bank_transfereventsync
operationId: bankTransferEventSync
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/BankTransferEventSyncResponse"
examples:
example-1:
value:
bank_transfer_events:
- account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
bank_transfer_amount: "12.34"
bank_transfer_id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
bank_transfer_iso_currency_code: USD
bank_transfer_type: credit
direction: outbound
event_id: 1
event_type: pending
failure_reason: null
origination_account_id: null
receiver_details: null
timestamp: "2020-08-06T17:27:15Z"
request_id: mdqfuVxeoza6mhu
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/BankTransferEventSyncRequest"
description: "`/bank_transfer/event/sync` allows you to request up to the next 25 bank transfer events that happened after a specific `event_id`. Use the `/bank_transfer/event/sync` endpoint to guarantee you have seen all bank transfer events."
/transfer/sweep/get:
post:
summary: Retrieve a sweep
tags:
- plaid
externalDocs:
url: /transfer/reference#transfersweepget
operationId: transferSweepGet
responses:
"200":
description: OK
headers: {}
content:
application/json:
schema:
$ref: "#/components/schemas/TransferSweepGetResponse"
examples:
example-1:
value:
sweep:
id: d5394a4d-0b04-4a02-9f4a-7ca5c0f52f9d
created: "2020-08-06T17:27:15Z"
amount: "12.34"
iso_currency_code: USD
request_id: saKrIBuEB9qJZno
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: The `/transfer/sweep/get` endpoint fetches a sweep corresponding to the given `sweep_id`.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/TransferSweepGetRequest"
examples: {}
parameters: []
/bank_transfer/sweep/get:
post:
summary: Retrieve a sweep
tags:
- plaid
externalDocs:
url: /api/products#bank_transfersweepget
operationId: bankTransferSweepGet
responses:
"200":
description: OK
headers: {}
content:
application/json:
schema:
$ref: "#/components/schemas/BankTransferSweepGetResponse"
examples:
example-1:
value:
sweep:
id: d5394a4d-0b04-4a02-9f4a-7ca5c0f52f9d
created_at: "2020-08-06T17:27:15Z"
amount: "12.34"
iso_currency_code: USD
request_id: saKrIBuEB9qJZno
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: The `/bank_transfer/sweep/get` endpoint fetches information about the sweep corresponding to the given `sweep_id`.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/BankTransferSweepGetRequest"
examples: {}
parameters: []
/transfer/sweep/list:
post:
summary: List sweeps
tags:
- plaid
externalDocs:
url: /transfer/reference#transfersweeplist
operationId: transferSweepList
responses:
"200":
description: OK
headers: {}
content:
application/json:
schema:
$ref: "#/components/schemas/TransferSweepListResponse"
examples:
example-1:
value:
sweeps:
- id: d5394a4d-0b04-4a02-9f4a-7ca5c0f52f9d
created: "2020-08-06T17:27:15Z"
amount: "-12.34"
iso_currency_code: USD
request_id: saKrIBuEB9qJZno
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: The `/transfer/sweep/list` endpoint fetches sweeps matching the given filters.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/TransferSweepListRequest"
examples: {}
parameters: []
/bank_transfer/sweep/list:
post:
summary: List sweeps
tags:
- plaid
externalDocs:
url: /api/products#bank_transfersweeplist
operationId: bankTransferSweepList
responses:
"200":
description: OK
headers: {}
content:
application/json:
schema:
$ref: "#/components/schemas/BankTransferSweepListResponse"
examples:
example-1:
value:
sweeps:
- id: d5394a4d-0b04-4a02-9f4a-7ca5c0f52f9d
created_at: "2020-08-06T17:27:15Z"
amount: "12.34"
iso_currency_code: USD
request_id: saKrIBuEB9qJZno
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: The `/bank_transfer/sweep/list` endpoint fetches information about the sweeps matching the given filters.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/BankTransferSweepListRequest"
examples: {}
parameters: []
/bank_transfer/balance/get:
post:
summary: Get balance of your Bank Transfer account
tags:
- plaid
externalDocs:
url: /api/products#bank_transferbalanceget
operationId: bankTransferBalanceGet
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/BankTransferBalanceGetResponse"
examples:
example-1:
value:
balance:
available: "1721.70"
transactable: "721.70"
origination_account_id: 11111111-1111-1111-1111-111111111111
request_id: mdqfuVxeoza6mhu
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: |-
Use the `/bank_transfer/balance/get` endpoint to see the available balance in your bank transfer account. Debit transfers increase this balance once their status is posted. Credit transfers decrease this balance when they are created.
The transactable balance shows the amount in your account that you are able to use for transfers, and is essentially your available balance minus your minimum balance.
Note that this endpoint can only be used with FBO accounts, when using Bank Transfers in the Full Service configuration. It cannot be used on your own account when using Bank Transfers in the BTS Platform configuration.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/BankTransferBalanceGetRequest"
/bank_transfer/migrate_account:
post:
summary: Migrate account into Bank Transfers
tags:
- plaid
externalDocs:
url: /api/products#bank_transfermigrate_account
operationId: bankTransferMigrateAccount
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/BankTransferMigrateAccountResponse"
examples:
example-1:
value:
access_token: access-sandbox-435beced-94e8-4df3-a181-1dde1cfa19f0
account_id: zvyDgbeeDluZ43AJP6m5fAxDlgoZXDuoy5gjN
request_id: mdqfuVxeoza6mhu
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: As an alternative to adding Items via Link, you can also use the `/bank_transfer/migrate_account` endpoint to migrate known account and routing numbers to Plaid Items. Note that Items created in this way are not compatible with endpoints for other products, such as `/accounts/balance/get`, and can only be used with Bank Transfer endpoints. If you require access to other endpoints, create the Item through Link instead. Access to `/bank_transfer/migrate_account` is not enabled by default; to obtain access, contact your Plaid Account Manager.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/BankTransferMigrateAccountRequest"
/transfer/intent/create:
post:
summary: Create a transfer intent object to invoke the Transfer UI
tags:
- plaid
externalDocs:
url: /transfer/reference#transferintentcreate
operationId: transferIntentCreate
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/TransferIntentCreateResponse"
examples:
example-1:
value:
transfer_intent:
account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
ach_class: ppd
amount: "12.34"
iso_currency_code: USD
created: "2020-08-06T17:27:15Z"
description: Desc
id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
metadata:
key1: value1
key2: value2
mode: DISBURSEMENT
origination_account_id: 9853defc-e703-463d-86b1-dc0607a45359
status: PENDING
user:
address:
street: 100 Market Street
city: San Francisco
region: California
postal_code: "94103"
country: US
email_address: user@plaid.com
legal_name: Foo Bar
phone_number: 123-456-7890
request_id: saKrIBuEB9qJZno
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Use the `/transfer/intent/create` endpoint to generate a transfer intent object and invoke the Transfer UI.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/TransferIntentCreateRequest"
/transfer/intent/get:
post:
summary: Retrieve more information about a transfer intent
tags:
- plaid
externalDocs:
url: /transfer/reference#transferintentget
operationId: transferIntentGet
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/TransferIntentGetResponse"
examples:
example-1:
value:
transfer_intent:
account_id: 6qL6lWoQkAfNE3mB8Kk5tAnvpX81qefrvvl7B
ach_class: ppd
amount: "12.34"
iso_currency_code: USD
authorization_decision: APPROVED
authorization_decision_rationale: null
created: "2020-08-06T17:27:15Z"
description: Desc
failure_reason: null
id: 460cbe92-2dcc-8eae-5ad6-b37d0ec90fd9
metadata:
key1: value1
key2: value2
mode: DISBURSEMENT
origination_account_id: 9853defc-e703-463d-86b1-dc0607a45359
status: SUCCEEDED
transfer_id: 8945fedc-e703-463d-86b1-dc0607b55460
user:
address:
street: 100 Market Street
city: San Francisco
region: California
postal_code: "94103"
country: US
email_address: user@plaid.com
legal_name: Foo Bar
phone_number: 123-456-7890
request_id: saKrIBuEB9qJZno
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Use the `/transfer/intent/get` endpoint to retrieve more information about a transfer intent.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/TransferIntentGetRequest"
/sandbox/bank_transfer/simulate:
post:
summary: Simulate a bank transfer event in Sandbox
tags:
- plaid
externalDocs:
url: /api/sandbox/#sandboxbank_transfersimulate
operationId: sandboxBankTransferSimulate
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SandboxBankTransferSimulateResponse"
examples:
example-1:
value:
request_id: mdqfuVxeoza6mhu
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Use the `/sandbox/bank_transfer/simulate` endpoint to simulate a bank transfer event in the Sandbox environment. Note that while an event will be simulated and will appear when using endpoints such as `/bank_transfer/event/sync` or `/bank_transfer/event/list`, no transactions will actually take place and funds will not move between accounts, even within the Sandbox.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/SandboxBankTransferSimulateRequest"
/sandbox/transfer/sweep/simulate:
post:
summary: Simulate creating a sweep
tags:
- plaid
externalDocs:
url: /transfer/reference#sandboxtransfersweepsimulate
operationId: sandboxTransferSweepSimulate
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SandboxTransferSweepSimulateResponse"
examples:
example-1:
value:
sweep:
id: d5394a4d-0b04-4a02-9f4a-7ca5c0f52f9d
created: "2020-08-06T17:27:15Z"
amount: "12.34"
iso_currency_code: USD
request_id: mdqfuVxeoza6mhu
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: |-
Use the `/sandbox/transfer/sweep/simulate` endpoint to create a sweep and associated events in the Sandbox environment.
- All `posted` or `pending` Transfers with sweep_status `unswept` will become `swept`
- All `reversed` Transfers with sweep_status `swept` will become `reverse_swept`
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/SandboxTransferSweepSimulateRequest"
/sandbox/transfer/simulate:
post:
summary: Simulate a transfer event in Sandbox
tags:
- plaid
externalDocs:
url: /transfer/reference#sandboxtransfersimulate
operationId: sandboxTransferSimulate
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SandboxTransferSimulateResponse"
examples:
example-1:
value:
request_id: mdqfuVxeoza6mhu
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Use the `/sandbox/transfer/simulate` endpoint to simulate a transfer event in the Sandbox environment. Note that while an event will be simulated and will appear when using endpoints such as `/transfer/event/sync` or `/transfer/event/list`, no transactions will actually take place and funds will not move between accounts, even within the Sandbox.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/SandboxTransferSimulateRequest"
/employers/search:
post:
tags:
- plaid
externalDocs:
url: /api/employers/#employerssearch
operationId: employersSearch
summary: Search employer database
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/EmployersSearchResponse"
examples:
example-1:
value:
employers:
- name: Plaid Inc.
address:
city: San Francisco
country: US
postal_code: "94103"
region: CA
street: 1098 Harrison St
confidence_score: 1
employer_id: emp_1
request_id: ixTBLZGvhD4NnmB
description: |-
`/employers/search` allows you the ability to search Plaid’s database of known employers, for use with Deposit Switch. You can use this endpoint to look up a user's employer in order to confirm that they are supported. Users with non-supported employers can then be routed out of the Deposit Switch flow.
The data in the employer database is currently limited. As the Deposit Switch and Income products progress through their respective beta periods, more employers are being regularly added. Because the employer database is frequently updated, we recommend that you do not cache or store data from this endpoint for more than a day.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/EmployersSearchRequest"
/income/verification/create:
post:
summary: (Deprecated) Create an income verification instance
tags:
- plaid
deprecated: true
externalDocs:
url: /api/products/#incomeverificationcreate
operationId: incomeVerificationCreate
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/IncomeVerificationCreateResponse"
examples:
example-1:
value:
income_verification_id: f2a826d7-25cf-483b-a124-c40beb64b732
request_id: lMjeOeu9X1VUh1F
description: "`/income/verification/create` begins the income verification process by returning an `income_verification_id`. You can then provide the `income_verification_id` to `/link/token/create` under the `income_verification` parameter in order to create a Link instance that will prompt the user to go through the income verification flow. Plaid will fire an `INCOME` webhook once the user completes the Payroll Income flow, or when the uploaded documents in the Document Income flow have finished processing. "
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/IncomeVerificationCreateRequest"
/income/verification/summary/get:
post:
summary: (Deprecated) Retrieve a summary of information derived from income verification
tags:
- plaid
externalDocs:
url: /api/products/#incomeverificationsummaryget
operationId: incomeVerificationSummaryGet
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/IncomeVerificationSummaryGetResponse"
examples:
example-1:
value:
income_summaries:
- employee_name:
value: ANNA CHARLESTON
verification_status: UNVERIFIED
employer_name:
value: PLAID INC
verification_status: UNVERIFIED
pay_frequency:
value: semimonthly
verification_status: UNVERIFIED
projected_wage:
value: 100000
verification_status: UNVERIFIED
verified_transaction:
account_id: ""
amount: 0
date: ""
description: ""
transaction_id: ""
ytd_gross_income:
value: 59375
verification_status: UNVERIFIED
ytd_net_income:
value: 66205.35
verification_status: UNVERIFIED
request_id: LhQf0THi8SH1yJm
description: "`/income/verification/summary/get` returns a verification summary for the income that was verified for an end user. It can be called once the status of the verification has been set to `VERIFICATION_STATUS_PROCESSING_COMPLETE`, as reported by the `INCOME: verification_status` webhook. Attempting to call the endpoint before verification has been completed will result in an error."
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/IncomeVerificationSummaryGetRequest"
/income/verification/paystub/get:
post:
summary: (Deprecated) Retrieve information from a single paystub used for income verification
deprecated: true
tags:
- plaid
operationId: incomeVerificationPaystubGet
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/IncomeVerificationPaystubGetResponse"
examples:
example-1:
value:
request_id: 2pxQ59buGdsHRef
document_metadata:
- name: paystub.pdf
status: DOCUMENT_STATUS_PROCESSING_COMPLETE
doc_id: 2jkflanbd
paystub:
deductions:
subtotals: []
totals: []
doc_id: 2jkflanbd
earnings:
subtotals: []
totals: []
employee:
address:
city: SAN FRANCISCO
country: US
postal_code: "94133"
region: CA
street: 2140 TAYLOR ST
name: ANNA CHARLESTON
employer:
name: PLAID INC
address:
city: SAN FRANCISCO
country: US
postal_code: "94111"
region: CA
street: 1098 HARRISON ST
employment_details:
annual_salary:
amount: 60000
currency: USD
hire_date: "2020-09-15"
net_pay:
distribution_details: []
total:
canonical_description: NET PAY
description: TOTAL NET PAY
ytd_pay:
amount: 39456
currency: USD
current_pay:
amount: 1490.21
currency: USD
income_breakdown: []
pay_period_details:
check_amount: 1490.21
end_date: "2020-12-15"
gross_earnings: 4500
pay_day: "2020-12-15"
start_date: "2020-12-01"
paystub_details:
pay_frequency: BI-WEEKLY
paystub_provider: ADP
pay_period_start_date: "2020-12-01"
pay_period_end_date: "2020-12-15"
pay_date: "2020-12-15"
ytd_earnings:
gross_earnings: 59375
net_earnings: 39456
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/IncomeVerificationPaystubGetRequest"
/income/verification/paystubs/get:
post:
summary: Retrieve information from the paystubs used for income verification
tags:
- plaid
externalDocs:
url: /api/products/#incomeverificationpaystubsget
operationId: incomeVerificationPaystubsGet
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/IncomeVerificationPaystubsGetResponse"
examples:
example-1:
value:
document_metadata:
- doc_id: 2jkflanbd
doc_type: DOCUMENT_TYPE_PAYSTUB
name: paystub.pdf
status: DOCUMENT_STATUS_PROCESSING_COMPLETE
paystubs:
- deductions:
breakdown:
- current_amount: 123.45
description: taxes
iso_currency_code: USD
unofficial_currency_code: null
ytd_amount: 246.9
total:
current_amount: 123.45
iso_currency_code: USD
unofficial_currency_code: null
ytd_amount: 246.9
doc_id: 2jkflanbd
earnings:
breakdown:
- canonical_description: REGULAR PAY
current_amount: 200.22
description: salary earned
hours: 80
iso_currency_code: USD
rate: null
unofficial_currency_code: null
ytd_amount: 400.44
- canonical_desription: BONUS
current_amount: 100
description: bonus earned
hours: null
iso_currency_code: USD
rate: null
unofficial_currency_code: null
ytd_amount: 100
total:
current_amount: 300.22
hours: 160
iso_currency_code: USD
unofficial_currency_code: null
ytd_amount: 500.44
employee:
address:
city: SAN FRANCISCO
country: US
postal_code: "94133"
region: CA
street: 2140 TAYLOR ST
name: ANNA CHARLESTON
marital_status: single
taxpayer_id:
id_type: SSN
id_mask: "3333"
employer:
name: PLAID INC
address:
city: SAN FRANCISCO
country: US
postal_code: "94111"
region: CA
street: 1098 HARRISON ST
net_pay:
current_amount: 123.34
description: TOTAL NET PAY
iso_currency_code: USD
unofficial_currency_code: null
ytd_amount: 253.54
pay_period_details:
check_amount: 1490.21
distribution_breakdown:
- account_name: Big time checking
bank_name: bank of plaid
current_amount: 176.77
iso_currency_code: USD
mask: "1223"
type: checking
unofficial_currency_code: null
end_date: "2020-12-15"
gross_earnings: 4500
pay_date: "2020-12-15"
start_date: "2020-12-01"
pay_frequency: PAY_FREQUENCY_BIWEEKLY
verification:
verification_status: PAYSTUB_VERIFICATION_STATUS_VERIFIED
verification_attributes: []
request_id: 2pxQ59buGdsHRef
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/IncomeVerificationPaystubsGetRequest"
description: ""
description: "`/income/verification/paystubs/get` returns the information collected from the paystubs that were used to verify an end user's income. It can be called once the status of the verification has been set to `VERIFICATION_STATUS_PROCESSING_COMPLETE`, as reported by the `INCOME: verification_status` webhook. Attempting to call the endpoint before verification has been completed will result in an error."
/income/verification/documents/download:
post:
summary: Download the original documents used for income verification
tags:
- plaid
externalDocs:
url: /api/products/#incomeverificationdocumentsdownload
operationId: incomeVerificationDocumentsDownload
responses:
"200":
description: A ZIP file containing source documents(s) used as the basis for income verification.
content:
application/zip:
schema:
type: string
format: binary
description: |-
`/income/verification/documents/download` provides the ability to download the source documents associated with the verification.
If Document Income was used, the documents will be those the user provided in Link. For Payroll Income, the most recent files available
for download from the payroll provider will be available from this endpoint.
The response to `/income/verification/documents/download` is ZIP file in binary data. If a document_id is passed, a single document will be contained in this file.
If not, the response will contain all documents associated with the verification.
The `request_id` is returned in the `Plaid-Request-ID` header.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/IncomeVerificationDocumentsDownloadRequest"
parameters: []
/income/verification/refresh:
post:
tags:
- plaid
summary: Refresh an income verification
externalDocs:
url: /api/products/#incomeverificationrefresh
operationId: incomeVerificationRefresh
description: "`/income/verification/refresh` refreshes a given income verification."
responses:
"200":
description: success
content:
application/json:
schema:
$ref: "#/components/schemas/IncomeVerificationRefreshResponse"
examples:
example-1:
value:
request_id: nTkbCH41HYmpbm5
verification_refresh_status: VERIFICATION_REFRESH_STATUS_USER_PRESENCE_REQUIRED
default:
description: Error response.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/IncomeVerificationRefreshRequest"
/income/verification/taxforms/get:
post:
tags:
- plaid
summary: Retrieve information from the tax documents used for income verification
externalDocs:
url: /api/products/#incomeverificationtaxformsget
operationId: incomeVerificationTaxformsGet
description: "`/income/verification/taxforms/get` returns the information collected from taxforms that were used to verify an end user's income. It can be called once the status of the verification has been set to `VERIFICATION_STATUS_PROCESSING_COMPLETE`, as reported by the `INCOME: verification_status` webhook. Attempting to call the endpoint before verification has been completed will result in an error."
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/IncomeVerificationTaxformsGetResponse"
examples:
example-1:
value:
document_metadata:
- doc_id: q5Ypbbr03p
doc_type: DOCUMENT_TYPE_US_TAX_W2
name: my_w2.pdf
status: DOCUMENT_STATUS_PROCESSING_COMPLETE
request_id: 73W7sz8nIP8Mgck
taxforms:
- document_type: W2
w2:
allocated_tips: "1000"
box_12:
- amount: "200"
code: AA
box_9: box9
dependent_care_benefits: "1000"
employee:
address:
city: San Francisco
country: US
postal_code: "94103"
region: CA
street: 1234 Grand St
name: Josie Georgia Harrison
marital_status: single
taxpayer_id:
id_type: SSN
id_mask: "1234"
employer:
address:
city: New York
country: US
postal_code: "10010"
region: NY
street: 456 Main St
name: Acme Inc
employee_id_number: 12-1234567
federal_income_tax_withheld: "1000"
medicare_tax_withheld: "1000"
medicare_wages_and_tips: "1000"
nonqualified_plans: "1000"
other: other
retirement_plan: CHECKED
social_security_tax_withheld: "1000"
social_security_tips: "1000"
social_security_wages: "1000"
state_and_local_wages:
- employer_state_id_number: 11111111111AAA
local_income_tax: "200"
local_wages_and_tips: "200"
locality_name: local
state: UT
state_income_tax: "200"
state_wages_tips: "200"
statutory_employee: CHECKED
tax_year: "2020"
third_party_sick_ppay: CHECKED
wages_tips_other_comp: "1000"
default:
description: Error response.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/IncomeVerificationTaxformsGetRequest"
description: ""
/income/verification/precheck:
post:
summary: Check a user's eligibility for the income verification product
tags:
- plaid
operationId: incomeVerificationPrecheck
externalDocs:
url: /api/products/#incomeverificationprecheck
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/IncomeVerificationPrecheckResponse"
examples:
example-1:
value:
request_id: lMjeOeu9X1VUh1F
precheck_id: n9elqYlvYm
confidence: HIGH
description: "`/income/verification/precheck` returns whether a given user is supportable by the income product"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/IncomeVerificationPrecheckRequest"
/employment/verification/get:
post:
summary: Retrieve a summary of an individual's employment information.
tags:
- plaid
operationId: employmentVerificationGet
externalDocs:
url: /api/products/#employmentverificationget
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/EmploymentVerificationGetResponse"
examples:
example-1:
value:
employments:
- status: EMPLOYMENT_STATUS_ACTIVE
start_date: "2020-01-01"
end_date: null
employer:
name: Plaid Inc
title: Software Engineer
platform_ids:
employee_id: "1234567"
position_id: "8888"
payroll_id: "1234567"
request_id: LhQf0THi8SH1yJm
description: "`/employment/verification/get` returns a list of employments through a user payroll that was verified by an end user."
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/EmploymentVerificationGetRequest"
/deposit_switch/alt/create:
post:
summary: Create a deposit switch without using Plaid Exchange
tags:
- plaid
externalDocs:
url: /api/products#deposit_switchaltcreate
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/DepositSwitchAltCreateResponse"
examples:
example-1:
value:
deposit_switch_id: c7jMwPPManIwy9rwMewWP7lpb4pKRbtrbMomp
request_id: lMjeOeu9X1VUh1F
operationId: depositSwitchAltCreate
description: This endpoint provides an alternative to `/deposit_switch/create` for customers who have not yet fully integrated with Plaid Exchange. Like `/deposit_switch/create`, it creates a deposit switch entity that will be persisted throughout the lifecycle of the switch.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/DepositSwitchAltCreateRequest"
/sandbox/bank_transfer/fire_webhook:
post:
summary: Manually fire a Bank Transfer webhook
tags:
- plaid
externalDocs:
url: /api/sandbox/#sandboxbank_transferfire_webhook
operationId: sandboxBankTransferFireWebhook
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SandboxBankTransferFireWebhookResponse"
examples:
example-1:
value:
request_id: mdqfuVxeoza6mhu
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Use the `/sandbox/bank_transfer/fire_webhook` endpoint to manually trigger a Bank Transfers webhook in the Sandbox environment.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/SandboxBankTransferFireWebhookRequest"
/sandbox/income/fire_webhook:
post:
summary: Manually fire an Income webhook
tags:
- plaid
externalDocs:
url: /api/sandbox/#sandboxincomefire_webhook
operationId: sandboxIncomeFireWebhook
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SandboxIncomeFireWebhookResponse"
examples:
example-1:
value:
request_id: mdqfuVxeoza6mhu
default:
description: Error response
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
description: Use the `/sandbox/income/fire_webhook` endpoint to manually trigger an Income webhook in the Sandbox environment.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/SandboxIncomeFireWebhookRequest"
/sandbox/oauth/select_accounts:
post:
summary: Save the selected accounts when connecting to the Platypus Oauth institution
tags:
- plaid
operationId: sandboxOauthSelectAccounts
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SandboxOauthSelectAccountsResponse"
default:
description: Error response.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/SandboxOauthSelectAccountsRequest"
/signal/evaluate:
post:
tags:
- plaid
summary: Evaluate a planned ACH transaction
externalDocs:
url: /signal/reference#signalevaluate
operationId: signalEvaluate
description: |-
Use `/signal/evaluate` to evaluate a planned ACH transaction to get a return risk assessment (such as a risk score and risk tier) and additional risk signals.
In order to obtain a valid score for an ACH transaction, Plaid must have an access token for the account, and the Item must be healthy (receiving product updates) or have recently been in a healthy state. If the transaction does not meet eligibility requirements, an error will be returned corresponding to the underlying cause. If `/signal/evaluate` is called on the same transaction multiple times within a 24-hour period, cached results may be returned.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SignalEvaluateResponse"
examples:
example-1:
value:
scores:
customer_initiated_return_risk:
score: 9
risk_tier: 1
bank_initiated_return_risk:
score: 72
risk_tier: 7
core_attributes:
days_since_first_plaid_connection: 510
plaid_connections_count_7d: 6
plaid_connections_count_30d: 7
total_plaid_connections_count: 15
is_savings_or_money_market_account: false
request_id: mdqfuVxeoza6mhu
default:
description: Error response.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/SignalEvaluateRequest"
/signal/decision/report:
post:
tags:
- plaid
summary: Report whether you initiated an ACH transaction
externalDocs:
url: /signal/reference#signaldecisionreport
operationId: signalDecisionReport
description: After calling `/signal/evaluate`, call `/signal/decision/report` to report whether the transaction was initiated. This endpoint will return an `INVALID_REQUEST` error if called a second time with a different value for `initiated`.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SignalDecisionReportResponse"
examples:
example-1:
value:
request_id: mdqfuVxeoza6mhu
default:
description: Error response.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/SignalDecisionReportRequest"
/signal/return/report:
post:
tags:
- plaid
summary: Report a return for an ACH transaction
externalDocs:
url: /signal/reference#signalreturnreport
operationId: signalReturnReport
description: Call the `/signal/return/report` endpoint to report a returned transaction that was previously sent to the `/signal/evaluate` endpoint. Your feedback will be used by the model to incorporate the latest risk trend in your portfolio.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/SignalReturnReportResponse"
examples:
example-1:
value:
request_id: mdqfuVxeoza6mhu
default:
description: Error response.
content:
application/json:
schema:
$ref: "#/components/schemas/Error"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/SignalReturnReportRequest"
/wallet/get:
post:
tags:
- plaid
summary: Fetch an e-wallet
externalDocs:
url: /api/products/#walletget
operationId: walletGet
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/WalletGetResponse"
examples:
example-1:
value:
wallet_id: wallet-id-sandbox-53e58b32-fc1c-46fe-bbd6-e584b27a88
balance:
iso_currency_code: GBP
current: 123.12
request_id: 4zlKapIkTm8p5KM
description: |
Fetch an e-wallet. The response includes the current balance.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/WalletGetRequest"
/wallet/transaction/execute:
post:
tags:
- plaid
summary: Execute a transaction using an e-wallet
externalDocs:
url: /api/products/#wallettransactionexecute
operationId: walletTransactionExecute
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/WalletTransactionExecuteResponse"
examples:
example-1:
value:
transaction_id: wallet-transaction-id-production-53e58b32-fc1c-46fe-bbd6-e584b27a88
status: EXECUTED
request_id: 4zlKapIkTm8p5KM
description: |
Execute a transaction using the specified e-wallet. Specify the e-wallet to debit from, the counterparty to credit to, the idempotency key to prevent duplicate payouts, the amount and reference for the payout. The payouts are executed over the Faster Payment rails, where settlement usually only takes a few seconds.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/WalletTransactionExecuteRequest"
/wallet/transactions/list:
post:
tags:
- plaid
summary: List e-wallet transactions
externalDocs:
url: /api/products/#wallettransactionslist
operationId: walletTransactionsList
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/WalletTransactionsListResponse"
examples:
example-1:
value:
next_cursor: YWJjMTIzIT8kKiYoKSctPUB
transactions:
- transaction_id: wallet-transaction-id-sandbox-feca8a7a-5591-4aef-9297-f3062bb735d3
type: PAYOUT
reference: Payout 99744
amount:
iso_currency_code: GBP
value: 123.12
status: EXECUTED
created_at: "2020-12-02T21:14:54Z"
counterparty:
numbers:
bacs:
account: "31926819"
sort_code: "601613"
name: John Smith
request_id: 4zlKapIkTm8p5KM
description: |
This endpoint lists the latest transactions of the specified e-wallet. Transactions are returned in descending order by the `created_at` time.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/WalletTransactionsListRequest"
components:
securitySchemes:
clientId:
type: apiKey
in: header
name: PLAID-CLIENT-ID
secret:
type: apiKey
in: header
name: PLAID-SECRET
plaidVersion:
type: apiKey
in: header
name: Plaid-Version
schemas:
ItemGetRequest:
description: ItemGetRequest defines the request schema for `/item/get`
type: object
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
access_token:
$ref: "#/components/schemas/AccessToken"
required:
- access_token
ItemGetResponse:
type: object
additionalProperties: true
description: ItemGetResponse defines the response schema for `/item/get` and `/item/webhook/update`
properties:
item:
$ref: "#/components/schemas/Item"
status:
$ref: "#/components/schemas/ItemStatusNullable"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- item
- request_id
AuthGetRequest:
type: object
description: AuthGetRequest defines the request schema for `/auth/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
access_token:
$ref: "#/components/schemas/AccessToken"
options:
$ref: "#/components/schemas/AuthGetRequestOptions"
required:
- access_token
AuthGetRequestOptions:
type: object
description: An optional object to filter `/auth/get` results.
properties:
account_ids:
type: array
description: |-
A list of `account_ids` to retrieve for the Item.
Note: An error will be returned if a provided `account_id` is not associated with the Item.
items:
type: string
AuthGetResponse:
type: object
additionalProperties: true
description: AuthGetResponse defines the response schema for `/auth/get`
properties:
accounts:
type: array
description: The `accounts` for which numbers are being retrieved.
items:
$ref: "#/components/schemas/AccountBase"
numbers:
$ref: "#/components/schemas/AuthGetNumbers"
item:
$ref: "#/components/schemas/Item"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- accounts
- numbers
- item
- request_id
AuthGetNumbers:
type: object
additionalProperties: true
description: An object containing identifying numbers used for making electronic transfers to and from the `accounts`. The identifying number type (ACH, EFT, IBAN, or BACS) used will depend on the country of the account. An account may have more than one number type. If a particular identifying number type is not used by any `accounts` for which data has been requested, the array for that type will be empty.
properties:
ach:
type: array
description: An array of ACH numbers identifying accounts.
items:
$ref: "#/components/schemas/NumbersACH"
eft:
type: array
description: An array of EFT numbers identifying accounts.
items:
$ref: "#/components/schemas/NumbersEFT"
international:
type: array
description: An array of IBAN numbers identifying accounts.
items:
$ref: "#/components/schemas/NumbersInternational"
bacs:
type: array
description: An array of BACS numbers identifying accounts.
items:
$ref: "#/components/schemas/NumbersBACS"
required:
- ach
- eft
- international
- bacs
TransactionsGetRequest:
type: object
description: TransactionsGetRequest defines the request schema for `/transactions/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
options:
$ref: "#/components/schemas/TransactionsGetRequestOptions"
access_token:
$ref: "#/components/schemas/AccessToken"
secret:
$ref: "#/components/schemas/APISecret"
start_date:
type: string
format: date
description: The earliest date for which data should be returned. Dates should be formatted as YYYY-MM-DD.
end_date:
type: string
format: date
description: The latest date for which data should be returned. Dates should be formatted as YYYY-MM-DD.
required:
- access_token
- start_date
- end_date
TransactionsGetRequestOptions:
type: object
description: An optional object to be used with the request. If specified, `options` must not be `null`.
properties:
account_ids:
type: array
description: |-
A list of `account_ids` to retrieve for the Item
Note: An error will be returned if a provided `account_id` is not associated with the Item.
items:
type: string
count:
type: integer
default: 100
description: The number of transactions to fetch.
minimum: 1
maximum: 500
exclusiveMinimum: false
offset:
type: integer
default: 0
description: The number of transactions to skip. The default value is 0.
minimum: 0
include_original_description:
type: boolean
default: false
description: Include the raw unparsed transaction description from the financial institution. This field is disabled by default. If you need this information in addition to the parsed data provided, contact your Plaid Account Manager.
nullable: true
include_personal_finance_category_beta:
type: boolean
default: false
description: Include the `personal_finance_category` object in the response. This feature is currently in beta – to request access, contact transactions-feedback@plaid.com.
TransactionsGetResponse:
type: object
additionalProperties: true
description: TransactionsGetResponse defines the response schema for `/transactions/get`
properties:
accounts:
type: array
description: An array containing the `accounts` associated with the Item for which transactions are being returned. Each transaction can be mapped to its corresponding account via the `account_id` field.
items:
$ref: "#/components/schemas/AccountBase"
transactions:
type: array
description: An array containing transactions from the account. Transactions are returned in reverse chronological order, with the most recent at the beginning of the array. The maximum number of transactions returned is determined by the `count` parameter.
items:
$ref: "#/components/schemas/Transaction"
total_transactions:
type: integer
description: The total number of transactions available within the date range specified. If `total_transactions` is larger than the size of the `transactions` array, more transactions are available and can be fetched via manipulating the `offset` parameter.
item:
$ref: "#/components/schemas/Item"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- accounts
- transactions
- total_transactions
- item
- request_id
TransactionsRefreshRequest:
type: object
description: TransactionsRefreshRequest defines the request schema for `/transactions/refresh`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
access_token:
$ref: "#/components/schemas/AccessToken"
secret:
$ref: "#/components/schemas/APISecret"
required:
- access_token
TransactionsRefreshResponse:
type: object
description: TransactionsRefreshResponse defines the response schema for `/transactions/refresh`
properties:
request_id:
$ref: "#/components/schemas/RequestID"
required:
- request_id
TransactionsRecurringGetRequest:
type: object
description: TransactionsRecurringGetRequest defines the request schema for `/transactions/recurring/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
access_token:
$ref: "#/components/schemas/AccessToken"
secret:
$ref: "#/components/schemas/APISecret"
account_ids:
type: array
description: |-
A list of `account_ids` to retrieve for the Item
Note: An error will be returned if a provided `account_id` is not associated with the Item.
items:
type: string
required:
- access_token
- account_ids
TransactionsRecurringGetResponse:
type: object
additionalProperties: true
description: TransactionsRecurringGetResponse defines the response schema for `/transactions/recurring/get`
properties:
inflow_streams:
type: array
description: An array of depository transaction streams.
items:
$ref: "#/components/schemas/TransactionStream"
outflow_streams:
type: array
description: An array of expense transaction streams.
items:
$ref: "#/components/schemas/TransactionStream"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- inflow_streams
- outflow_streams
- request_id
TransactionsSyncRequest:
type: object
description: TransactionsSyncRequest defines the request schema for `/transactions/sync`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
access_token:
$ref: "#/components/schemas/AccessToken"
secret:
$ref: "#/components/schemas/APISecret"
cursor:
type: string
description: |-
The cursor value represents the last update requested. Providing it will cause the response to only return changes after this update.
If omitted, the entire history of updates will be returned, starting with the first-added transactions on the item.
Note: The upper-bound length of this cursor is 256 characters of base64.
count:
type: integer
default: 100
description: The number of transaction updates to fetch.
minimum: 1
maximum: 500
exclusiveMinimum: false
required:
- access_token
TransactionsSyncResponse:
type: object
description: TransactionsSyncResponse defines the response schema for `/transactions/sync`
properties:
added:
type: array
description: Transactions that have been added to the item since `cursor` ordered by ascending last modified time.
items:
$ref: "#/components/schemas/Transaction"
modified:
type: array
description: Transactions that have been modified on the item since `cursor` ordered by ascending last modified time.
items:
$ref: "#/components/schemas/Transaction"
removed:
type: array
description: Transactions that have been removed from the item since `cursor` ordered by ascending last modified time.
items:
$ref: "#/components/schemas/RemovedTransaction"
next_cursor:
type: string
description: Cursor used for fetching any future updates after the latest update provided in this response.
has_more:
type: boolean
description: Represents if more than requested count of transaction updates exist. If true, the additional updates can be fetched by making an additional request with `cursor` set to `next_cursor`.
request_id:
$ref: "#/components/schemas/RequestID"
required:
- added
- modified
- removed
- next_cursor
- has_more
- request_id
InstitutionsGetRequest:
type: object
description: InstitutionsGetRequest defines the request schema for `/institutions/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
count:
type: integer
maximum: 500
description: The total number of Institutions to return.
offset:
type: integer
description: The number of Institutions to skip.
country_codes:
type: array
description: "Specify an array of Plaid-supported country codes this institution supports, using the ISO-3166-1 alpha-2 country code standard. \n\nIn API versions 2019-05-29 and earlier, the `country_codes` parameter is an optional parameter within the `options` object and will default to `[US]` if it is not supplied.\n"
minItems: 1
items:
$ref: "#/components/schemas/CountryCode"
options:
$ref: "#/components/schemas/InstitutionsGetRequestOptions"
required:
- count
- offset
- country_codes
InstitutionsGetRequestOptions:
type: object
description: An optional object to filter `/institutions/get` results.
properties:
products:
type: array
description: "Filter the Institutions based on which products they support. "
items:
$ref: "#/components/schemas/Products"
routing_numbers:
type: array
description: Specify an array of routing numbers to filter institutions. The response will only return institutions that match all of the routing numbers in the array. Routing number records used for this matching are not comprehensive; failure to match a given routing number to an institution does not mean that the institution is unsupported by Plaid.
items:
type: string
oauth:
type: boolean
description: Limit results to institutions with or without OAuth login flows. This is primarily relevant to institutions with European country codes.
include_optional_metadata:
type: boolean
description: |-
When `true`, return the institution's homepage URL, logo and primary brand color.
Note that Plaid does not own any of the logos shared by the API, and that by accessing or using these logos, you agree that you are doing so at your own risk and will, if necessary, obtain all required permissions from the appropriate rights holders and adhere to any applicable usage guidelines. Plaid disclaims all express or implied warranties with respect to the logos.
include_auth_metadata:
type: boolean
default: false
description: When `true`, returns metadata related to the Auth product indicating which auth methods are supported.
include_payment_initiation_metadata:
type: boolean
default: false
description: When `true`, returns metadata related to the Payment Initiation product indicating which payment configurations are supported.
InstitutionsGetResponse:
type: object
additionalProperties: true
description: InstitutionsGetResponse defines the response schema for `/institutions/get`
properties:
institutions:
type: array
description: A list of Plaid Institution
items:
$ref: "#/components/schemas/Institution"
total:
type: integer
description: The total number of institutions available via this endpoint
request_id:
$ref: "#/components/schemas/RequestID"
required:
- institutions
- total
- request_id
InstitutionsSearchRequest:
type: object
description: InstitutionsSearchRequest defines the request schema for `/institutions/search`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
query:
type: string
description: The search query. Institutions with names matching the query are returned
products:
type: array
description: Filter the Institutions based on whether they support all products listed in `products`. Provide `null` to get institutions regardless of supported products. Note that when `auth` is specified as a product, if you are enabled for Instant Match or Automated Micro-deposits, institutions that support those products will be returned even if `auth` is not present in their product array.
minItems: 1
items:
$ref: "#/components/schemas/Products"
country_codes:
type: array
description: |
Specify an array of Plaid-supported country codes this institution supports, using the ISO-3166-1 alpha-2 country code standard. In API versions 2019-05-29 and earlier, the `country_codes` parameter is an optional parameter within the `options` object and will default to `[US]` if it is not supplied.
items:
$ref: "#/components/schemas/CountryCode"
options:
$ref: "#/components/schemas/InstitutionsSearchRequestOptions"
required:
- query
- products
- country_codes
InstitutionsSearchRequestOptions:
type: object
description: An optional object to filter `/institutions/search` results.
properties:
oauth:
type: boolean
description: Limit results to institutions with or without OAuth login flows. This is primarily relevant to institutions with European country codes
include_optional_metadata:
type: boolean
description: When true, return the institution's homepage URL, logo and primary brand color.
include_auth_metadata:
type: boolean
default: false
description: When `true`, returns metadata related to the Auth product indicating which auth methods are supported.
include_payment_initiation_metadata:
type: boolean
default: false
description: When `true`, returns metadata related to the Payment Initiation product indicating which payment configurations are supported.
payment_initiation:
$ref: "#/components/schemas/InstitutionsSearchPaymentInitiationOptions"
InstitutionsSearchPaymentInitiationOptions:
type: object
description: Additional options that will be used to filter institutions by various Payment Initiation configurations.
additionalProperties: true
nullable: true
properties:
payment_id:
type: string
description: A unique ID identifying the payment
InstitutionsSearchResponse:
type: object
additionalProperties: true
description: InstitutionsSearchResponse defines the response schema for `/institutions/search`
properties:
institutions:
type: array
description: An array of institutions matching the search criteria
items:
$ref: "#/components/schemas/Institution"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- institutions
- request_id
InstitutionsGetByIdRequest:
type: object
description: InstitutionsGetByIdRequest defines the request schema for `/institutions/get_by_id`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
institution_id:
type: string
description: The ID of the institution to get details about
country_codes:
type: array
description: |
Specify an array of Plaid-supported country codes this institution supports, using the ISO-3166-1 alpha-2 country code standard. In API versions 2019-05-29 and earlier, the `country_codes` parameter is an optional parameter within the `options` object and will default to `[US]` if it is not supplied.
items:
$ref: "#/components/schemas/CountryCode"
options:
$ref: "#/components/schemas/InstitutionsGetByIdRequestOptions"
required:
- institution_id
- country_codes
InstitutionsGetByIdRequestOptions:
type: object
description: Specifies optional parameters for `/institutions/get_by_id`. If provided, must not be `null`.
properties:
include_optional_metadata:
default: false
type: boolean
description: |-
When `true`, return an institution's logo, brand color, and URL. When available, the bank's logo is returned as a base64 encoded 152x152 PNG, the brand color is in hexadecimal format. The default value is `false`.
Note that Plaid does not own any of the logos shared by the API and that by accessing or using these logos, you agree that you are doing so at your own risk and will, if necessary, obtain all required permissions from the appropriate rights holders and adhere to any applicable usage guidelines. Plaid disclaims all express or implied warranties with respect to the logos.
include_status:
type: boolean
default: false
description: If `true`, the response will include status information about the institution. Default value is `false`.
include_auth_metadata:
type: boolean
default: false
description: When `true`, returns metadata related to the Auth product indicating which auth methods are supported.
include_payment_initiation_metadata:
type: boolean
default: false
description: When `true`, returns metadata related to the Payment Initiation product indicating which payment configurations are supported.
InstitutionsGetByIdResponse:
type: object
additionalProperties: true
description: InstitutionsGetByIdResponse defines the response schema for `/institutions/get_by_id`
properties:
institution:
$ref: "#/components/schemas/Institution"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- institution
- request_id
ItemRemoveRequest:
type: object
description: ItemRemoveRequest defines the request schema for `/item/remove`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
access_token:
$ref: "#/components/schemas/AccessToken"
required:
- access_token
ItemRemoveResponse:
type: object
additionalProperties: true
description: ItemRemoveResponse defines the response schema for `/item/remove`
properties:
request_id:
$ref: "#/components/schemas/RequestID"
required:
- request_id
AccountsGetRequest:
type: object
description: AccountsGetRequest defines the request schema for `/accounts/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
access_token:
$ref: "#/components/schemas/AccessToken"
options:
$ref: "#/components/schemas/AccountsGetRequestOptions"
required:
- access_token
x-examples:
example-1: {}
AccountsGetRequestOptions:
type: object
description: An optional object to filter `/accounts/get` results.
properties:
account_ids:
type: array
description: An array of `account_ids` to retrieve for the Account.
items:
type: string
AccountsGetResponse:
type: object
additionalProperties: true
description: AccountsGetResponse defines the response schema for `/accounts/get` and `/accounts/balance/get`.
properties:
accounts:
type: array
description: |-
An array of financial institution accounts associated with the Item.
If `/accounts/balance/get` was called, each account will include real-time balance information.
items:
$ref: "#/components/schemas/AccountBase"
item:
$ref: "#/components/schemas/Item"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- accounts
- item
- request_id
CategoriesGetRequest:
type: object
description: CategoriesGetRequest defines the request schema for `/categories/get`
CategoriesGetResponse:
type: object
additionalProperties: true
description: CategoriesGetResponse defines the response schema for `/categories/get`
properties:
categories:
type: array
description: An array of all of the transaction categories used by Plaid.
items:
$ref: "#/components/schemas/Category"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- categories
- request_id
SandboxOverridePassword:
type: string
nullable: true
default: pass_good
description: Test password to use for the creation of the Sandbox Item. Default value is `pass_good`.
SandboxOverrideUsername:
type: string
nullable: true
default: user_good
description: Test username to use for the creation of the Sandbox Item. Default value is `user_good`.
SandboxProcessorTokenCreateRequest:
type: object
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
institution_id:
type: string
description: The ID of the institution the Item will be associated with
options:
$ref: "#/components/schemas/SandboxProcessorTokenCreateRequestOptions"
required:
- institution_id
SandboxProcessorTokenCreateRequestOptions:
type: object
description: An optional set of options to be used when configuring the Item. If specified, must not be `null`.
properties:
override_username:
$ref: "#/components/schemas/SandboxOverrideUsername"
override_password:
$ref: "#/components/schemas/SandboxOverridePassword"
SandboxProcessorTokenCreateResponse:
type: object
additionalProperties: true
properties:
processor_token:
type: string
description: A processor token that can be used to call the `/processor/` endpoints.
request_id:
$ref: "#/components/schemas/RequestID"
description: ""
required:
- processor_token
- request_id
SandboxPublicTokenCreateRequest:
type: object
description: SandboxPublicTokenCreateRequest defines the request schema for `/sandbox/public_token/create`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
institution_id:
type: string
description: The ID of the institution the Item will be associated with
initial_products:
type: array
description: The products to initially pull for the Item. May be any products that the specified `institution_id` supports. This array may not be empty.
items:
$ref: "#/components/schemas/Products"
minItems: 1
options:
$ref: "#/components/schemas/SandboxPublicTokenCreateRequestOptions"
required:
- institution_id
- initial_products
SandboxPublicTokenCreateRequestOptions:
type: object
description: An optional set of options to be used when configuring the Item. If specified, must not be `null`.
properties:
webhook:
type: string
description: Specify a webhook to associate with the new Item.
override_username:
$ref: "#/components/schemas/SandboxOverrideUsername"
override_password:
$ref: "#/components/schemas/SandboxOverridePassword"
transactions:
$ref: "#/components/schemas/SandboxPublicTokenCreateRequestOptionsTransactions"
SandboxPublicTokenCreateRequestOptionsTransactions:
type: object
description: An optional set of parameters corresponding to transactions options.
properties:
start_date:
type: string
format: date
description: The earliest date for which to fetch transaction history. Dates should be formatted as YYYY-MM-DD.
end_date:
type: string
format: date
description: The most recent date for which to fetch transaction history. Dates should be formatted as YYYY-MM-DD.
title: SandboxPublicTokenCreateRequestOptionsTransactions
SandboxPublicTokenCreateResponse:
type: object
additionalProperties: true
description: SandboxPublicTokenCreateResponse defines the response schema for `/sandbox/public_token/create`
properties:
public_token:
type: string
description: A public token that can be exchanged for an access token using `/item/public_token/exchange`
request_id:
$ref: "#/components/schemas/RequestID"
required:
- public_token
- request_id
SandboxItemFireWebhookRequest:
type: object
description: SandboxItemFireWebhookRequest defines the request schema for `/sandbox/item/fire_webhook`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
access_token:
$ref: "#/components/schemas/AccessToken"
webhook_code:
type: string
enum:
- DEFAULT_UPDATE
description: |-
The following values for `webhook_code` are supported:
* `DEFAULT_UPDATE`
required:
- access_token
- webhook_code
SandboxItemFireWebhookResponse:
type: object
additionalProperties: true
description: SandboxItemFireWebhookResponse defines the response schema for `/sandbox/item/fire_webhook`
properties:
webhook_fired:
type: boolean
description: Value is `true` if the test` webhook_code` was successfully fired.
request_id:
$ref: "#/components/schemas/RequestID"
required:
- webhook_fired
- request_id
AccountsBalanceGetRequest:
type: object
description: AccountsBalanceGetRequest defines the request schema for `/accounts/balance/get`
properties:
access_token:
$ref: "#/components/schemas/AccessToken"
secret:
$ref: "#/components/schemas/APISecret"
client_id:
$ref: "#/components/schemas/APIClientID"
options:
$ref: "#/components/schemas/AccountsBalanceGetRequestOptions"
required:
- access_token
AccountsBalanceGetRequestOptions:
type: object
description: An optional object to filter `/accounts/balance/get` results.
properties:
account_ids:
type: array
description: |-
A list of `account_ids` to retrieve for the Item. The default value is `null`.
Note: An error will be returned if a provided `account_id` is not associated with the Item.
items:
type: string
min_last_updated_datetime:
$ref: "#/components/schemas/MinLastUpdatedDatetime"
MinLastUpdatedDatetime:
title: MinLastUpdatedDatetime
type: string
format: date-time
description: |-
Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDTHH:mm:ssZ`) indicating the oldest acceptable balance when making a request to `/accounts/balance/get`.
If the balance that is pulled for `ins_128026` (Capital One) is older than the given timestamp, an `INVALID_REQUEST` error with the code of `LAST_UPDATED_DATETIME_OUT_OF_RANGE` will be returned with the most recent timestamp for the requested account contained in the response.
This field is only used when the institution is `ins_128026` (Capital One), in which case a value must be provided or an `INVALID_REQUEST` error with the code of `INVALID_FIELD` will be returned. For all other institutions, this field is ignored.
IdentityGetRequest:
type: object
description: IdentityGetRequest defines the request schema for `/identity/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
access_token:
$ref: "#/components/schemas/AccessToken"
options:
$ref: "#/components/schemas/IdentityGetRequestOptions"
required:
- access_token
IdentityGetRequestOptions:
type: object
description: An optional object to filter `/identity/get` results.
properties:
account_ids:
type: array
description: |-
A list of `account_ids` to retrieve for the Item.
Note: An error will be returned if a provided `account_id` is not associated with the Item.
items:
type: string
IdentityGetResponse:
type: object
additionalProperties: true
description: IdentityGetResponse defines the response schema for `/identity/get`
properties:
accounts:
type: array
description: The accounts for which Identity data has been requested
items:
$ref: "#/components/schemas/AccountIdentity"
item:
$ref: "#/components/schemas/Item"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- accounts
- item
- request_id
ProcessorAuthGetRequest:
type: object
description: ProcessorAuthGetRequest defines the request schema for `/processor/auth/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
processor_token:
$ref: "#/components/schemas/ProcessorToken"
required:
- processor_token
ProcessorAuthGetResponse:
type: object
additionalProperties: true
description: ProcessorAuthGetResponse defines the response schema for `/processor/auth/get`
properties:
request_id:
$ref: "#/components/schemas/RequestID"
numbers:
$ref: "#/components/schemas/ProcessorNumber"
account:
$ref: "#/components/schemas/AccountBase"
required:
- request_id
- numbers
- account
ProcessorBankTransferCreateRequest:
title: ProcessorBankTransferCreateRequest
type: object
description: Defines the request schema for `/processor/bank_transfer/create`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
idempotency_key:
$ref: "#/components/schemas/BankTransferIdempotencyKey"
processor_token:
$ref: "#/components/schemas/ProcessorToken"
type:
$ref: "#/components/schemas/BankTransferType"
network:
$ref: "#/components/schemas/BankTransferNetwork"
amount:
$ref: "#/components/schemas/BankTransferAmount"
iso_currency_code:
type: string
description: The currency of the transfer amount – should be set to "USD".
description:
type: string
description: The transfer description. Maximum of 10 characters.
maxLength: 10
ach_class:
$ref: "#/components/schemas/ACHClass"
user:
$ref: "#/components/schemas/BankTransferUser"
custom_tag:
type: string
maxLength: 100
nullable: true
description: An arbitrary string provided by the client for storage with the bank transfer. May be up to 100 characters.
metadata:
$ref: "#/components/schemas/BankTransferMetadata"
origination_account_id:
type: string
nullable: true
description: Plaid’s unique identifier for the origination account for this transfer. If you have more than one origination account, this value must be specified.
required:
- idempotency_key
- processor_token
- type
- network
- amount
- iso_currency_code
- description
- user
ProcessorBankTransferCreateResponse:
title: ProcessorBankTransferCreateResponse
type: object
additionalProperties: true
description: Defines the response schema for `/processor/bank_transfer/create`
properties:
bank_transfer:
$ref: "#/components/schemas/BankTransfer"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- bank_transfer
- request_id
ProcessorNumber:
type: object
additionalProperties: true
description: An object containing identifying numbers used for making electronic transfers to and from the `account`. The identifying number type (ACH, EFT, IBAN, or BACS) used will depend on the country of the account. An account may have more than one number type. If a particular identifying number type is not used by the `account` for which auth data has been requested, a null value will be returned.
properties:
ach:
$ref: "#/components/schemas/NumbersACHNullable"
eft:
$ref: "#/components/schemas/NumbersEFTNullable"
international:
$ref: "#/components/schemas/NumbersInternationalNullable"
bacs:
$ref: "#/components/schemas/NumbersBACSNullable"
ProcessorIdentityGetRequest:
type: object
description: ProcessorIdentityGetRequest defines the request schema for `/processor/identity/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
processor_token:
$ref: "#/components/schemas/ProcessorToken"
required:
- processor_token
ProcessorIdentityGetResponse:
type: object
additionalProperties: true
description: ProcessorIdentityGetResponse defines the response schema for `/processor/identity/get`
properties:
account:
$ref: "#/components/schemas/AccountIdentity"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- account
- request_id
ProcessorBalanceGetRequest:
type: object
description: ProcessorBalanceGetRequest defines the request schema for `/processor/balance/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
processor_token:
$ref: "#/components/schemas/ProcessorToken"
options:
$ref: "#/components/schemas/ProcessorBalanceGetRequestOptions"
required:
- processor_token
ProcessorBalanceGetRequestOptions:
type: object
description: An optional object to filter `/processor/balance/get` results.
properties:
min_last_updated_datetime:
$ref: "#/components/schemas/MinLastUpdatedDatetime"
ProcessorBalanceGetResponse:
type: object
additionalProperties: true
description: ProcessorBalanceGetResponse defines the response schema for `/processor/balance/get`
properties:
account:
$ref: "#/components/schemas/AccountBase"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- account
- request_id
ItemWebhookUpdateRequest:
type: object
description: ItemWebhookUpdateRequest defines the request schema for `/item/webhook/update`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
access_token:
$ref: "#/components/schemas/AccessToken"
webhook:
type: string
description: The new webhook URL to associate with the Item.
nullable: true
required:
- access_token
ItemWebhookUpdateResponse:
type: object
additionalProperties: true
description: ItemWebhookUpdateResponse defines the response schema for `/item/webhook/update`
properties:
item:
$ref: "#/components/schemas/Item"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- item
- request_id
ItemAccessTokenInvalidateRequest:
type: object
description: ItemAccessTokenInvalidateRequest defines the request schema for `/item/access_token/invalidate`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
access_token:
$ref: "#/components/schemas/AccessToken"
required:
- access_token
ItemAccessTokenInvalidateResponse:
type: object
additionalProperties: true
description: ItemAccessTokenInvalidateResponse defines the response schema for `/item/access_token/invalidate`
properties:
new_access_token:
$ref: "#/components/schemas/AccessToken"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- new_access_token
- request_id
WebhookVerificationKeyGetRequest:
type: object
description: WebhookVerificationKeyGetRequest defines the request schema for `/webhook_verification_key/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
key_id:
type: string
description: The key ID ( `kid` ) from the JWT header.
required:
- key_id
WebhookVerificationKeyGetResponse:
type: object
additionalProperties: true
description: WebhookVerificationKeyGetResponse defines the response schema for `/webhook_verification_key/get`
properties:
key:
$ref: "#/components/schemas/JWKPublicKey"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- key
- request_id
JWKPublicKey:
type: object
additionalProperties: true
description: A JSON Web Key (JWK) that can be used in conjunction with [JWT libraries](https://jwt.io/#libraries-io) to verify Plaid webhooks
properties:
alg:
type: string
description: The alg member identifies the cryptographic algorithm family used with the key.
crv:
type: string
description: The crv member identifies the cryptographic curve used with the key.
kid:
type: string
description: The kid (Key ID) member can be used to match a specific key. This can be used, for instance, to choose among a set of keys within the JWK during key rollover.
kty:
type: string
description: The kty (key type) parameter identifies the cryptographic algorithm family used with the key, such as RSA or EC.
use:
type: string
description: The use (public key use) parameter identifies the intended use of the public key.
x:
type: string
description: The x member contains the x coordinate for the elliptic curve point.
"y":
type: string
description: The y member contains the y coordinate for the elliptic curve point.
created_at:
type: integer
description: The timestamp when the key was created, in Unix time.
expired_at:
type: integer
description: The timestamp when the key expired, in Unix time.
nullable: true
required:
- alg
- kid
- kty
- crv
- x
- "y"
- use
- created_at
- expired_at
LiabilitiesGetRequest:
type: object
description: LiabilitiesGetRequest defines the request schema for `/liabilities/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
access_token:
$ref: "#/components/schemas/AccessToken"
options:
$ref: "#/components/schemas/LiabilitiesGetRequestOptions"
required:
- access_token
LiabilitiesGetRequestOptions:
type: object
description: An optional object to filter `/liabilities/get` results. If provided, `options` cannot be null.
properties:
account_ids:
type: array
description: |-
A list of accounts to retrieve for the Item.
An error will be returned if a provided `account_id` is not associated with the Item
items:
type: string
LiabilitiesGetResponse:
type: object
additionalProperties: true
description: LiabilitiesGetResponse defines the response schema for `/liabilities/get`
properties:
accounts:
type: array
description: An array of accounts associated with the Item
items:
$ref: "#/components/schemas/AccountBase"
item:
$ref: "#/components/schemas/Item"
liabilities:
$ref: "#/components/schemas/LiabilitiesObject"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- accounts
- item
- liabilities
- request_id
PaymentInitiationRecipientCreateRequest:
type: object
description: PaymentInitiationRecipientCreateRequest defines the request schema for `/payment_initiation/recipient/create`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
name:
type: string
description: The name of the recipient
minLength: 1
iban:
type: string
description: The International Bank Account Number (IBAN) for the recipient. If BACS data is not provided, an IBAN is required.
nullable: true
minLength: 15
maxLength: 34
bacs:
$ref: "#/components/schemas/RecipientBACSNullable"
address:
$ref: "#/components/schemas/PaymentInitiationAddress"
required:
- name
PaymentInitiationRecipientCreateResponse:
type: object
additionalProperties: true
description: PaymentInitiationRecipientCreateResponse defines the response schema for `/payment_initation/recipient/create`
properties:
recipient_id:
type: string
description: A unique ID identifying the recipient
request_id:
$ref: "#/components/schemas/RequestID"
required:
- recipient_id
- request_id
PaymentInitiationPaymentReverseResponse:
type: object
additionalProperties: true
description: PaymentInitiationPaymentReverseResponse defines the response schema for `/payment_initation/payment/reverse`
properties:
refund_id:
type: string
description: A unique ID identifying the refund
status:
type: string
enum:
- PROCESSING
- EXECUTED
- INITIATED
- FAILED
description: |-
The status of the refund.
`PROCESSING`: The refund is currently being processed. The refund will automatically exit this state when processing is complete.
`INITIATED`: The refund has been successfully initiated.
`EXECUTED`: Indicates that the refund has been successfully executed.
`FAILED`: The refund has failed to be executed. This error is retryable once the root cause is resolved.
request_id:
$ref: "#/components/schemas/RequestID"
required:
- refund_id
- request_id
- status
PaymentInitiationRecipientGetRequest:
type: object
description: PaymentInitiationRecipientGetRequest defines the request schema for `/payment_initiation/recipient/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
recipient_id:
type: string
description: The ID of the recipient
minLength: 1
required:
- recipient_id
PaymentInitiationRecipientGetResponse:
additionalProperties: true
description: PaymentInitiationRecipientGetResponse defines the response schema for `/payment_initiation/recipient/get`
allOf:
- $ref: "#/components/schemas/PaymentInitiationRecipient"
- type: object
properties:
request_id:
$ref: "#/components/schemas/RequestID"
required:
- recipient_id
- name
- request_id
PaymentInitiationRecipient:
type: object
additionalProperties: true
description: PaymentInitiationRecipient defines a payment initiation recipient
properties:
recipient_id:
type: string
description: The ID of the recipient.
name:
type: string
description: The name of the recipient.
address:
$ref: "#/components/schemas/PaymentInitiationAddress"
iban:
type: string
description: The International Bank Account Number (IBAN) for the recipient.
nullable: true
bacs:
$ref: "#/components/schemas/RecipientBACSNullable"
emi_recipient_id:
type: string
description: The EMI (E-Money Institution) recipient that this recipient is associated with, if any. This EMI recipient is used as an intermediary account to enable Plaid to reconcile the settlement of funds for Payment Initiation requests.
nullable: true
required:
- recipient_id
- name
title: PaymentInitiationRecipient
PaymentInitiationRecipientListRequest:
type: object
description: PaymentInitiationRecipientListRequest defines the request schema for `/payment_initiation/recipient/list`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
PaymentInitiationRecipientListResponse:
type: object
additionalProperties: true
description: PaymentInitiationRecipientListResponse defines the response schema for `/payment_initiation/recipient/list`
properties:
recipients:
type: array
description: An array of payment recipients created for Payment Initiation
items:
$ref: "#/components/schemas/PaymentInitiationRecipient"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- recipients
- request_id
PaymentInitiationPaymentCreateRequest:
type: object
description: PaymentInitiationPaymentCreateRequest defines the request schema for `/payment_initiation/payment/create`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
recipient_id:
type: string
description: The ID of the recipient the payment is for.
minLength: 1
reference:
type: string
description: A reference for the payment. This must be an alphanumeric string with at most 18 characters and must not contain any special characters (since not all institutions support them).
minLength: 1
maxLength: 18
amount:
$ref: "#/components/schemas/PaymentAmount"
schedule:
$ref: "#/components/schemas/ExternalPaymentScheduleRequest"
options:
$ref: "#/components/schemas/ExternalPaymentOptions"
required:
- recipient_id
- reference
- amount
PaymentInitiationPaymentReverseRequest:
type: object
description: PaymentInitiationPaymentReverseRequest defines the request schema for `/payment_initiation/payment/reverse`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
payment_id:
type: string
description: The ID of the payment to reverse
minLength: 1
required:
- payment_id
PaymentInitiationPaymentCreateResponse:
type: object
additionalProperties: true
description: PaymentInitiationPaymentCreateResponse defines the response schema for `/payment_initiation/payment/create`
properties:
payment_id:
type: string
description: A unique ID identifying the payment
status:
type: string
enum:
- PAYMENT_STATUS_INPUT_NEEDED
description: |-
For a payment returned by this endpoint, there is only one possible value:
`PAYMENT_STATUS_INPUT_NEEDED`: The initial phase of the payment
request_id:
$ref: "#/components/schemas/RequestID"
required:
- payment_id
- status
- request_id
SandboxItemResetLoginRequest:
type: object
description: SandboxItemResetLoginRequest defines the request schema for `/sandbox/item/reset_login`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
access_token:
$ref: "#/components/schemas/AccessToken"
required:
- access_token
SandboxItemResetLoginResponse:
type: object
additionalProperties: true
description: SandboxItemResetLoginResponse defines the response schema for `/sandbox/item/reset_login`
properties:
reset_login:
type: boolean
description: "`true` if the call succeeded"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- reset_login
- request_id
SandboxItemSetVerificationStatusRequest:
type: object
description: SandboxItemSetVerificationStatusRequest defines the request schema for `/sandbox/item/set_verification_status`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
access_token:
$ref: "#/components/schemas/AccessToken"
account_id:
type: string
description: The `account_id` of the account whose verification status is to be modified
verification_status:
enum:
- automatically_verified
- verification_expired
type: string
description: The verification status to set the account to.
required:
- access_token
- account_id
- verification_status
SandboxItemSetVerificationStatusResponse:
type: object
additionalProperties: true
description: SandboxItemSetVerificationStatusResponse defines the response schema for `/sandbox/item/set_verification_status`
properties:
request_id:
$ref: "#/components/schemas/RequestID"
required:
- request_id
ItemPublicTokenExchangeRequest:
type: object
description: ItemPublicTokenExchangeRequest defines the request schema for `/item/public_token/exchange`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
public_token:
type: string
description: Your `public_token`, obtained from the Link `onSuccess` callback or `/sandbox/item/public_token/create`.
required:
- public_token
ItemPublicTokenExchangeResponse:
type: object
additionalProperties: true
description: ItemPublicTokenExchangeResponse defines the response schema for `/item/public_token/exchange`
properties:
access_token:
$ref: "#/components/schemas/AccessToken"
item_id:
type: string
description: The `item_id` value of the Item associated with the returned `access_token`
request_id:
$ref: "#/components/schemas/RequestID"
required:
- access_token
- item_id
- request_id
ItemPublicTokenCreateRequest:
type: object
description: ItemPublicTokenCreateRequest defines the request schema for `/item/public_token/create`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
access_token:
$ref: "#/components/schemas/AccessToken"
required:
- access_token
ItemPublicTokenCreateResponse:
type: object
additionalProperties: true
description: ItemPublicTokenCreateResponse defines the response schema for `/item/public_token/create`
properties:
public_token:
type: string
description: A `public_token` for the particular Item corresponding to the specified `access_token`
expiration:
type: string
format: date-time
request_id:
$ref: "#/components/schemas/RequestID"
required:
- public_token
- request_id
PaymentInitiationPaymentGetRequest:
type: object
description: PaymentInitiationPaymentGetRequest defines the request schema for `/payment_initiation/payment/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
payment_id:
type: string
description: The `payment_id` returned from `/payment_initiation/payment/create`.
minLength: 1
required:
- payment_id
PaymentInitiationPaymentGetResponse:
additionalProperties: true
description: PaymentInitiationPaymentGetResponse defines the response schema for `/payment_initation/payment/get`
allOf:
- $ref: "#/components/schemas/PaymentInitiationPayment"
- type: object
properties:
request_id:
$ref: "#/components/schemas/RequestID"
required:
- request_id
- payment_id
- amount
- status
- recipient_id
- reference
- last_status_update
- bacs
- iban
PaymentInitiationPaymentStatus:
type: string
enum:
- PAYMENT_STATUS_INPUT_NEEDED
- PAYMENT_STATUS_PROCESSING
- PAYMENT_STATUS_INITIATED
- PAYMENT_STATUS_COMPLETED
- PAYMENT_STATUS_INSUFFICIENT_FUNDS
- PAYMENT_STATUS_FAILED
- PAYMENT_STATUS_BLOCKED
- PAYMENT_STATUS_UNKNOWN
- PAYMENT_STATUS_EXECUTED
- PAYMENT_STATUS_AUTHORISING
- PAYMENT_STATUS_CANCELLED
- PAYMENT_STATUS_ESTABLISHED
- PAYMENT_STATUS_REJECTED
description: |-
The status of the payment.
`PAYMENT_STATUS_INPUT_NEEDED`: This is the initial state of all payments. It indicates that the payment is waiting on user input to continue processing. A payment may re-enter this state later on if further input is needed.
`PAYMENT_STATUS_INITIATED`: The payment has been successfully authorised and accepted by the financial institution but has not been executed.
`PAYMENT_STATUS_INSUFFICIENT_FUNDS`: The payment has failed due to insufficient funds.
`PAYMENT_STATUS_FAILED`: The payment has failed to be initiated. This error is retryable once the root cause is resolved.
`PAYMENT_STATUS_BLOCKED`: The payment has been blocked. This is a retryable error.
`PAYMENT_STATUS_AUTHORISING`: The payment is currently being processed. The payment will automatically exit this state when the financial institution has authorised the transaction.
`PAYMENT_STATUS_CANCELLED`: The payment was cancelled during authorisation.
`PAYMENT_STATUS_EXECUTED`: The payment has been successfully initiated and is considered complete.
`PAYMENT_STATUS_ESTABLISHED`: Indicates that the standing order has been successfully established. This state is only used for standing orders.
`PAYMENT_STATUS_REJECTED`: The payment was rejected by the financial institution.
Deprecated:
These statuses will be removed in a future release.
`PAYMENT_STATUS_UNKNOWN`: The payment status is unknown.
`PAYMENT_STATUS_PROCESSING`: The payment is currently being processed. The payment will automatically exit this state when processing is complete.
`PAYMENT_STATUS_COMPLETED`: Indicates that the standing order has been successfully established. This state is only used for standing orders.
PaymentInitiationPayment:
type: object
additionalProperties: true
description: PaymentInitiationPayment defines a payment initiation payment
properties:
payment_id:
type: string
description: The ID of the payment. Like all Plaid identifiers, the `payment_id` is case sensitive.
amount:
$ref: "#/components/schemas/PaymentAmount"
status:
$ref: "#/components/schemas/PaymentInitiationPaymentStatus"
recipient_id:
type: string
description: The ID of the recipient
reference:
type: string
description: A reference for the payment.
adjusted_reference:
type: string
description: The value of the reference sent to the bank after adjustment to pass bank validation rules.
nullable: true
last_status_update:
format: date-time
type: string
description: The date and time of the last time the `status` was updated, in IS0 8601 format
schedule:
$ref: "#/components/schemas/ExternalPaymentScheduleGet"
refund_details:
$ref: "#/components/schemas/ExternalPaymentRefundDetails"
bacs:
$ref: "#/components/schemas/SenderBACSNullable"
iban:
type: string
description: The International Bank Account Number (IBAN) for the sender, if specified in the `/payment_initiation/payment/create` call.
nullable: true
initiated_refunds:
type: array
description: Initiated refunds associated with the payment.
items:
$ref: "#/components/schemas/PaymentInitiationRefund"
wallet_id:
type: string
description: The EMI (E-Money Institution) wallet that this payment is associated with, if any. This wallet is used as an intermediary account to enable Plaid to reconcile the settlement of funds for Payment Initiation requests.
nullable: true
scheme:
$ref: "#/components/schemas/PaymentScheme"
adjusted_scheme:
$ref: "#/components/schemas/PaymentScheme"
required:
- payment_id
- amount
- status
- recipient_id
- reference
- last_status_update
- bacs
- iban
PaymentInitiationRefund:
type: object
additionalProperties: true
description: PaymentInitiationRefund defines a payment initiation refund
properties:
refund_id:
type: string
description: The ID of the refund. Like all Plaid identifiers, the `refund_id` is case sensitive.
amount:
$ref: "#/components/schemas/PaymentAmount"
status:
type: string
enum:
- PROCESSING
- INITIATED
- EXECUTED
- FAILED
description: |-
The status of the refund.
`PROCESSING`: The refund is currently being processed. The refund will automatically exit this state when processing is complete.
`INITIATED`: The refund has been successfully initiated.
`EXECUTED`: Indicates that the refund has been successfully executed.
`FAILED`: The refund has failed to be executed. This error is retryable once the root cause is resolved.
last_status_update:
format: date-time
type: string
description: The date and time of the last time the `status` was updated, in IS0 8601 format
required:
- refund_id
- amount
- status
- last_status_update
PaymentInitiationPaymentTokenCreateRequest:
type: object
description: PaymentInitiationPaymentTokenCreateRequest defines the request schema for `/payment_initiation/payment/token/create`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
payment_id:
type: string
description: The `payment_id` returned from `/payment_initiation/payment/create`.
minLength: 1
required:
- payment_id
PaymentInitiationPaymentTokenCreateResponse:
type: object
additionalProperties: true
description: PaymentInitiationPaymentTokenCreateResponse defines the response schema for `/payment_initiation/payment/token/create`
properties:
payment_token:
type: string
description: A `payment_token` that can be provided to Link initialization to enter the payment initiation flow
payment_token_expiration_time:
format: date-time
type: string
description: The date and time at which the token will expire, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. A `payment_token` expires after 15 minutes.
request_id:
$ref: "#/components/schemas/RequestID"
required:
- payment_token
- payment_token_expiration_time
- request_id
PaymentInitiationPaymentListRequest:
type: object
description: PaymentInitiationPaymentListRequest defines the request schema for `/payment_initiation/payment/list`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
count:
type: integer
minimum: 1
maximum: 200
default: 10
description: The maximum number of payments to return. If `count` is not specified, a maximum of 10 payments will be returned, beginning with the most recent payment before the cursor (if specified).
nullable: true
cursor:
type: string
description: A string in RFC 3339 format (i.e. "2019-12-06T22:35:49Z"). Only payments created before the cursor will be returned.
format: date-time
nullable: true
PaymentInitiationPaymentListResponse:
type: object
additionalProperties: true
description: PaymentInitiationPaymentListResponse defines the response schema for `/payment_initiation/payment/list`
properties:
payments:
type: array
description: An array of payments that have been created, associated with the given `client_id`.
items:
$ref: "#/components/schemas/PaymentInitiationPayment"
next_cursor:
nullable: true
format: date-time
type: string
description: The value that, when used as the optional `cursor` parameter to `/payment_initiation/payment/list`, will return the next unreturned payment as its first payment.
request_id:
$ref: "#/components/schemas/RequestID"
required:
- payments
- next_cursor
- request_id
AssetReportCreateRequest:
type: object
description: AssetReportCreateRequest defines the request schema for `/asset_report/create`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
access_tokens:
type: array
description: An array of access tokens corresponding to the Items that will be included in the report. The `assets` product must have been initialized for the Items during link; the Assets product cannot be added after initialization.
items:
$ref: "#/components/schemas/AccessToken"
minItems: 1
maxItems: 99
days_requested:
type: integer
maximum: 731
minimum: 0
description: The maximum integer number of days of history to include in the Asset Report. If using Fannie Mae Day 1 Certainty, `days_requested` must be at least 61 for new originations or at least 31 for refinancings.
options:
$ref: "#/components/schemas/AssetReportCreateRequestOptions"
required:
- access_tokens
- days_requested
AssetReportCreateRequestOptions:
type: object
description: An optional object to filter `/asset_report/create` results. If provided, must be non-`null`. The optional `user` object is required for the report to be eligible for Fannie Mae's Day 1 Certainty program.
properties:
client_report_id:
type: string
nullable: true
description: Client-generated identifier, which can be used by lenders to track loan applications.
webhook:
type: string
description: URL to which Plaid will send Assets webhooks, for example when the requested Asset Report is ready.
nullable: true
user:
$ref: "#/components/schemas/AssetReportUser"
AssetReportCreateResponse:
type: object
additionalProperties: true
description: AssetReportCreateResponse defines the response schema for `/asset_report/create`
properties:
asset_report_token:
$ref: "#/components/schemas/AssetReportToken"
asset_report_id:
$ref: "#/components/schemas/AssetReportId"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- asset_report_token
- asset_report_id
- request_id
AssetReportRefreshRequest:
type: object
description: AssetReportRefreshRequest defines the request schema for `/asset_report/refresh`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
asset_report_token:
$ref: "#/components/schemas/AssetReportRefreshAssetReportToken"
days_requested:
type: integer
minimum: 0
maximum: 731
description: The maximum number of days of history to include in the Asset Report. Must be an integer. If not specified, the value from the original call to `/asset_report/create` will be used.
nullable: true
options:
$ref: "#/components/schemas/AssetReportRefreshRequestOptions"
required:
- asset_report_token
AssetReportRefreshRequestOptions:
description: An optional object to filter `/asset_report/refresh` results. If provided, cannot be `null`. If not specified, the `options` from the original call to `/asset_report/create` will be used.
type: object
properties:
client_report_id:
type: string
nullable: true
description: Client-generated identifier, which can be used by lenders to track loan applications.
webhook:
type: string
description: URL to which Plaid will send Assets webhooks, for example when the requested Asset Report is ready.
nullable: true
user:
$ref: "#/components/schemas/AssetReportUser"
AssetReportRefreshResponse:
type: object
additionalProperties: true
description: AssetReportRefreshResponse defines the response schema for `/asset_report/refresh`
properties:
asset_report_id:
$ref: "#/components/schemas/AssetReportId"
asset_report_token:
$ref: "#/components/schemas/AssetReportToken"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- asset_report_id
- asset_report_token
- request_id
AssetReportRemoveRequest:
type: object
description: AssetReportRemoveRequest defines the request schema for `/asset_report/remove`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
asset_report_token:
$ref: "#/components/schemas/AssetReportToken"
required:
- asset_report_token
AssetReportRemoveResponse:
type: object
additionalProperties: true
description: AssetReportRemoveResponse defines the response schema for `/asset_report/remove`
properties:
removed:
type: boolean
description: "`true` if the Asset Report was successfully removed."
request_id:
$ref: "#/components/schemas/RequestID"
required:
- removed
- request_id
AssetReportFilterRequest:
type: object
description: AssetReportFilterRequest defines the request schema for `/asset_report/filter`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
asset_report_token:
$ref: "#/components/schemas/AssetReportToken"
account_ids_to_exclude:
type: array
description: The accounts to exclude from the Asset Report, identified by `account_id`.
items:
type: string
required:
- asset_report_token
- account_ids_to_exclude
AssetReportFilterResponse:
type: object
additionalProperties: true
description: AssetReportFilterResponse defines the response schema for `/asset_report/filter`
properties:
asset_report_token:
$ref: "#/components/schemas/AssetReportToken"
asset_report_id:
$ref: "#/components/schemas/AssetReportId"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- asset_report_token
- asset_report_id
- request_id
AssetReportGetRequest:
type: object
description: AssetReportGetRequest defines the request schema for `/asset_report/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
asset_report_token:
$ref: "#/components/schemas/AssetReportToken"
include_insights:
type: boolean
default: false
description: "`true` if you would like to retrieve the Asset Report with Insights, `false` otherwise. This field defaults to `false` if omitted."
required:
- asset_report_token
AssetReportGetResponse:
type: object
additionalProperties: true
description: AssetReportGetResponse defines the response schema for `/asset_report/get`
properties:
report:
$ref: "#/components/schemas/AssetReport"
warnings:
type: array
description: If the Asset Report generation was successful but identity information cannot be returned, this array will contain information about the errors causing identity information to be missing
items:
$ref: "#/components/schemas/Warning"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- report
- warnings
- request_id
AssetReportPDFGetRequest:
type: object
description: AssetReportPDFGetRequest defines the request schema for `/asset_report/pdf/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
asset_report_token:
$ref: "#/components/schemas/AssetReportToken"
required:
- asset_report_token
AssetReportPDFGetResponse:
format: binary
type: string
AssetReportAuditCopyCreateRequest:
type: object
description: AssetReportAuditCopyCreateRequest defines the request schema for `/asset_report/audit_copy/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
asset_report_token:
$ref: "#/components/schemas/AssetReportToken"
auditor_id:
type: string
description: The `auditor_id` of the third party with whom you would like to share the Asset Report.
required:
- asset_report_token
- auditor_id
AssetReportAuditCopyCreateResponse:
type: object
additionalProperties: true
description: AssetReportAuditCopyCreateResponse defines the response schema for `/asset_report/audit_copy/get`
properties:
audit_copy_token:
type: string
description: A token that can be shared with a third party auditor to allow them to obtain access to the Asset Report. This token should be stored securely.
request_id:
$ref: "#/components/schemas/RequestID"
required:
- audit_copy_token
- request_id
AssetReportAuditCopyRemoveRequest:
type: object
description: AssetReportAuditCopyRemoveRequest defines the request schema for `/asset_report/audit_copy/remove`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
audit_copy_token:
type: string
description: The `audit_copy_token` granting access to the Audit Copy you would like to revoke.
required:
- audit_copy_token
AssetReportAuditCopyRemoveResponse:
type: object
additionalProperties: true
description: AssetReportAuditCopyRemoveResponse defines the response schema for `/asset_report/audit_copy/remove`
properties:
removed:
type: boolean
description: "`true` if the Audit Copy was successfully removed."
request_id:
$ref: "#/components/schemas/RequestID"
required:
- removed
- request_id
InvestmentsHoldingsGetRequest:
type: object
description: InvestmentsHoldingsGetRequest defines the request schema for `/investments/holdings/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
access_token:
$ref: "#/components/schemas/AccessToken"
options:
$ref: "#/components/schemas/InvestmentHoldingsGetRequestOptions"
required:
- access_token
InvestmentHoldingsGetRequestOptions:
type: object
description: An optional object to filter `/investments/holdings/get` results. If provided, must not be `null`.
properties:
account_ids:
type: array
description: An array of `account_id`s to retrieve for the Item. An error will be returned if a provided `account_id` is not associated with the Item.
items:
type: string
InvestmentsHoldingsGetResponse:
type: object
additionalProperties: true
description: InvestmentsHoldingsGetResponse defines the response schema for `/investments/holdings/get`
properties:
accounts:
type: array
description: The accounts associated with the Item
items:
$ref: "#/components/schemas/AccountBase"
holdings:
type: array
description: "The holdings belonging to investment accounts associated with the Item. Details of the securities in the holdings are provided in the `securities` field. "
items:
$ref: "#/components/schemas/Holding"
securities:
description: "Objects describing the securities held in the accounts associated with the Item. "
type: array
items:
$ref: "#/components/schemas/Security"
item:
$ref: "#/components/schemas/Item"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- accounts
- holdings
- securities
- item
- request_id
InvestmentsTransactionsGetRequest:
type: object
description: InvestmentsTransactionsGetRequest defines the request schema for `/investments/transactions/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
access_token:
$ref: "#/components/schemas/AccessToken"
start_date:
type: string
format: date
description: The earliest date for which to fetch transaction history. Dates should be formatted as YYYY-MM-DD.
end_date:
type: string
format: date
description: The most recent date for which to fetch transaction history. Dates should be formatted as YYYY-MM-DD.
options:
$ref: "#/components/schemas/InvestmentsTransactionsGetRequestOptions"
required:
- access_token
- start_date
- end_date
InvestmentsTransactionsGetRequestOptions:
description: An optional object to filter `/investments/transactions/get` results. If provided, must be non-`null`.
type: object
properties:
account_ids:
type: array
description: An array of `account_ids` to retrieve for the Item.
items:
type: string
count:
type: integer
default: 100
minimum: 1
maximum: 500
description: |
The number of transactions to fetch.
offset:
type: integer
description: The number of transactions to skip when fetching transaction history
default: 0
minimum: 0
InvestmentsTransactionsGetResponse:
type: object
additionalProperties: true
description: InvestmentsTransactionsGetResponse defines the response schema for `/investments/transactions/get`
properties:
item:
$ref: "#/components/schemas/Item"
accounts:
type: array
description: The accounts for which transaction history is being fetched.
items:
$ref: "#/components/schemas/AccountBase"
securities:
type: array
description: All securities for which there is a corresponding transaction being fetched.
items:
$ref: "#/components/schemas/Security"
investment_transactions:
type: array
description: The transactions being fetched
items:
$ref: "#/components/schemas/InvestmentTransaction"
total_investment_transactions:
type: integer
description: The total number of transactions available within the date range specified. If `total_investment_transactions` is larger than the size of the `transactions` array, more transactions are available and can be fetched via manipulating the `offset` parameter.'
request_id:
$ref: "#/components/schemas/RequestID"
required:
- item
- accounts
- securities
- investment_transactions
- total_investment_transactions
- request_id
ProcessorTokenCreateRequest:
type: object
description: ProcessorTokenCreateRequest defines the request schema for `/processor/token/create`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
access_token:
$ref: "#/components/schemas/AccessToken"
account_id:
type: string
description: The `account_id` value obtained from the `onSuccess` callback in Link
processor:
type: string
enum:
- achq
- alpaca
- astra
- check
- checkbook
- circle
- drivewealth
- dwolla
- galileo
- lithic
- modern_treasury
- moov
- ocrolus
- prime_trust
- rize
- sila_money
- svb_api
- treasury_prime
- unit
- vesta
- vopay
- wyre
description: The processor you are integrating with.
required:
- access_token
- account_id
- processor
ProcessorTokenCreateResponse:
type: object
additionalProperties: true
description: ProcessorTokenCreateResponse defines the response schema for `/processor/token/create` and `/processor/apex/processor_token/create`
properties:
processor_token:
type: string
description: The `processor_token` that can then be used by the Plaid partner to make API requests
request_id:
$ref: "#/components/schemas/RequestID"
required:
- processor_token
- request_id
ProcessorStripeBankAccountTokenCreateRequest:
type: object
description: ProcessorStripeBankAccountTokenCreateRequest defines the request schema for `/processor/stripe/bank_account/create`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
access_token:
$ref: "#/components/schemas/AccessToken"
account_id:
type: string
description: The `account_id` value obtained from the `onSuccess` callback in Link
required:
- access_token
- account_id
ProcessorStripeBankAccountTokenCreateResponse:
type: object
additionalProperties: true
description: ProcessorStripeBankAccountTokenCreateResponse defines the response schema for `/processor/stripe/bank_account/create`
properties:
stripe_bank_account_token:
type: string
description: A token that can be sent to Stripe for use in making API calls to Plaid
request_id:
$ref: "#/components/schemas/RequestID"
required:
- stripe_bank_account_token
- request_id
ProcessorApexProcessorTokenCreateRequest:
type: object
description: ProcessorApexProcessorTokenCreateRequest defines the request schema for `/processor/apex/processor_token/create`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
access_token:
$ref: "#/components/schemas/AccessToken"
account_id:
type: string
description: The `account_id` value obtained from the `onSuccess` callback in Link
required:
- access_token
- account_id
DepositSwitchCreateRequest:
type: object
description: DepositSwitchCreateRequest defines the request schema for `/deposit_switch/create`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
target_access_token:
type: string
description: "Access token for the target Item, typically provided in the Import Item response. "
target_account_id:
type: string
description: Plaid Account ID that specifies the target bank account. This account will become the recipient for a user's direct deposit.
country_code:
type: string
title: CountryCode
enum:
- US
- CA
description: ISO-3166-1 alpha-2 country code standard.
nullable: true
options:
$ref: "#/components/schemas/DepositSwitchCreateRequestOptions"
required:
- target_access_token
- target_account_id
DepositSwitchCreateRequestOptions:
type: object
title: DepositSwitchCreateRequestOptions
description: Options to configure the `/deposit_switch/create` request. If provided, cannot be `null`.
x-private-visibility: false
properties:
webhook:
type: string
description: |
The URL registered to receive webhooks when the status of a deposit switch request has changed.
nullable: true
transaction_item_access_tokens:
type: array
description: An array of access tokens corresponding to transaction items to use when attempting to match the user to their Payroll Provider. These tokens must be created by the same client id as the one creating the switch, and have access to the transactions product.
items:
$ref: "#/components/schemas/AccessToken"
minItems: 1
maxItems: 99
DepositSwitchCreateResponse:
type: object
additionalProperties: true
description: DepositSwitchCreateResponse defines the response schema for `/deposit_switch/create`
properties:
deposit_switch_id:
type: string
description: ID of the deposit switch. This ID is persisted throughout the lifetime of the deposit switch.
request_id:
$ref: "#/components/schemas/RequestID"
required:
- deposit_switch_id
- request_id
ItemImportRequest:
type: object
description: ItemImportRequest defines the request schema for `/item/import`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
products:
type: array
description: Array of product strings
items:
$ref: "#/components/schemas/Products"
minItems: 1
user_auth:
$ref: "#/components/schemas/ItemImportRequestUserAuth"
options:
$ref: "#/components/schemas/ItemImportRequestOptions"
required:
- products
- user_auth
ItemImportRequestOptions:
type: object
description: An optional object to configure `/item/import` request.
properties:
webhook:
type: string
description: |
Specifies a webhook URL to associate with an Item. Plaid fires a webhook if credentials fail.
ItemImportRequestUserAuth:
type: object
required:
- user_id
- auth_token
description: Object of user ID and auth token pair, permitting Plaid to aggregate a user’s accounts
properties:
user_id:
type: string
description: Opaque user identifier
auth_token:
type: string
description: Authorization token Plaid will use to aggregate this user’s accounts
ItemImportResponse:
type: object
additionalProperties: true
description: ItemImportResponse defines the response schema for `/item/import`
properties:
access_token:
$ref: "#/components/schemas/AccessToken"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- access_token
- request_id
DepositSwitchTokenCreateRequest:
type: object
description: DepositSwitchTokenCreateRequest defines the request schema for `/deposit_switch/token/create`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
deposit_switch_id:
type: string
description: The ID of the deposit switch
required:
- deposit_switch_id
DepositSwitchTokenCreateResponse:
type: object
additionalProperties: true
description: DepositSwitchTokenCreateResponse defines the response schema for `/deposit_switch/token/create`
properties:
deposit_switch_token:
type: string
description: Deposit switch token, used to initialize Link for the Deposit Switch product
deposit_switch_token_expiration_time:
type: string
description: Expiration time of the token, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format
request_id:
$ref: "#/components/schemas/RequestID"
required:
- deposit_switch_token
- deposit_switch_token_expiration_time
- request_id
LinkTokenGetRequest:
type: object
description: LinkTokenGetRequest defines the request schema for `/link/token/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
link_token:
type: string
description: A `link_token` from a previous invocation of `/link/token/create`
required:
- link_token
LinkTokenCreateRequest:
type: object
description: LinkTokenCreateRequest defines the request schema for `/link/token/create`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
client_name:
type: string
description: The name of your application, as it should be displayed in Link. Maximum length of 30 characters. If a value longer than 30 characters is provided, Link will display "This Application" instead.
language:
type: string
description: |-
The language that Link should be displayed in.
Supported languages are:
- English (`'en'`)
- French (`'fr'`)
- Spanish (`'es'`)
- Dutch (`'nl'`)
- German(`'de'`)
When using a Link customization, the language configured here must match the setting in the customization, or the customization will not be applied.
country_codes:
type: array
description: |-
Specify an array of Plaid-supported country codes using the ISO-3166-1 alpha-2 country code standard. Institutions from all listed countries will be shown. Supported country codes are: `US`, `CA`, `DE`, `ES`, `FR`, `GB`, `IE`, `NL`. For a complete mapping of supported products by country, see https://plaid.com/global/.
If Link is launched with multiple country codes, only products that you are enabled for in all countries will be used by Link. Note that while all countries are enabled by default in Sandbox and Development, in Production only US and Canada are enabled by default. To gain access to European institutions in the Production environment, [file a product access Support ticket](https://dashboard.plaid.com/support/new/product-and-development/product-troubleshooting/request-product-access) via the Plaid dashboard. If you initialize with a European country code, your users will see the European consent panel during the Link flow.
If using a Link customization, make sure the country codes in the customization match those specified in `country_codes`. If both `country_codes` and a Link customization are used, the value in `country_codes` may override the value in the customization.
If using the Auth features Instant Match, Same-day Micro-deposits, or Automated Micro-deposits, `country_codes` must be set to `['US']`.
items:
$ref: "#/components/schemas/CountryCode"
minItems: 1
user:
$ref: "#/components/schemas/LinkTokenCreateRequestUser"
products:
type: array
description: |-
List of Plaid product(s) you wish to use. If launching Link in update mode, should be omitted; required otherwise. Valid products are:
`transactions`, `auth`, `identity`, `assets`, `investments`, `liabilities`, `payment_initiation`, `deposit_switch`, `income_verification`, `transfer`
`balance` is *not* a valid value, the Balance product does not require explicit initalization and will automatically be initialized when any other product is initialized.
Only institutions that support *all* requested products will be shown in Link; to maximize the number of institutions listed, it is recommended to initialize Link with the minimal product set required for your use case. Additional products can be added after Link initialization by calling the relevant endpoints. For details and exceptions, see [Choosing when to initialize products](https://plaid.com/docs/link/best-practices/#choosing-when-to-initialize-products).
Note that, unless you have opted to disable Instant Match support, institutions that support Instant Match will also be shown in Link if `auth` is specified as a product, even though these institutions do not contain `auth` in their product array.
In Production, you will be billed for each product that you specify when initializing Link. Note that a product cannot be removed from an Item once the Item has been initialized with that product. To stop billing on an Item for subscription-based products, such as Liabilities, Investments, and Transactions, remove the Item via `/item/remove`.
items:
$ref: "#/components/schemas/Products"
webhook:
type: string
description: The destination URL to which any webhooks should be sent.
access_token:
type: string
description: The `access_token` associated with the Item to update, used when updating or modifying an existing `access_token`. Used when launching Link in update mode, when completing the Same-day (manual) Micro-deposit flow, or (optionally) when initializing Link as part of the Payment Initiation (UK and Europe) flow.
link_customization_name:
type: string
description: The name of the Link customization from the Plaid Dashboard to be applied to Link. If not specified, the `default` customization will be used. When using a Link customization, the language in the customization must match the language selected via the `language` parameter, and the countries in the customization should match the country codes selected via `country_codes`.
redirect_uri:
type: string
description: A URI indicating the destination where a user should be forwarded after completing the Link flow; used to support OAuth authentication flows when launching Link in the browser or via a webview. The `redirect_uri` should not contain any query parameters. When used in Production or Development, must be an https URI. To specify any subdomain, use `*` as a wildcard character, e.g. `https://*.example.com/oauth.html`. If `android_package_name` is specified, this field should be left blank. Note that any redirect URI must also be added to the Allowed redirect URIs list in the [developer dashboard](https://dashboard.plaid.com/team/api).
android_package_name:
type: string
description: "The name of your app's Android package. Required if using the `link_token` to initialize Link on Android. When creating a `link_token` for initializing Link on other platforms, this field must be left blank. Any package name specified here must also be added to the Allowed Android package names setting on the [developer dashboard](https://dashboard.plaid.com/team/api). "
account_filters:
$ref: "#/components/schemas/LinkTokenAccountFilters"
eu_config:
$ref: "#/components/schemas/LinkTokenEUConfig"
institution_id:
type: string
description: Used for certain Europe-only configurations, as well as certain legacy use cases in other regions.
payment_initiation:
$ref: "#/components/schemas/LinkTokenCreateRequestPaymentInitiation"
deposit_switch:
$ref: "#/components/schemas/LinkTokenCreateRequestDepositSwitch"
income_verification:
$ref: "#/components/schemas/LinkTokenCreateRequestIncomeVerification"
auth:
$ref: "#/components/schemas/LinkTokenCreateRequestAuth"
transfer:
$ref: "#/components/schemas/LinkTokenCreateRequestTransfer"
update:
$ref: "#/components/schemas/LinkTokenCreateRequestUpdate"
required:
- client_name
- language
- country_codes
- user
LinkTokenAccountFilters:
description: |
By default, Link will provide limited account filtering: it will only display Institutions that are compatible with all products supplied in the `products` parameter of `/link/token/create`, and, if `auth` is specified in the `products` array, will also filter out accounts other than `checking` and `savings` accounts on the Account Select pane. You can further limit the accounts shown in Link by using `account_filters` to specify the account subtypes to be shown in Link. Only the specified subtypes will be shown. This filtering applies to both the Account Select view (if enabled) and the Institution Select view. Institutions that do not support the selected subtypes will be omitted from Link. To indicate that all subtypes should be shown, use the value `"all"`. If the `account_filters` filter is used, any account type for which a filter is not specified will be entirely omitted from Link. For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#accounts-schema).
For institutions using OAuth, the filter will not affect the list of accounts shown by the bank in the OAuth window.
type: object
additionalProperties: true
properties:
depository:
$ref: "#/components/schemas/DepositoryFilter"
credit:
$ref: "#/components/schemas/CreditFilter"
loan:
$ref: "#/components/schemas/LoanFilter"
investment:
$ref: "#/components/schemas/InvestmentFilter"
LinkTokenEUConfig:
description: Configuration parameters for EU flows
type: object
properties:
headless:
type: boolean
description: If `true`, open Link without an initial UI. Defaults to `false`.
LinkTokenCreateRequestPaymentInitiation:
type: object
description: Specifies options for initializing Link for use with the Payment Initiation (Europe) product. This field is required if `payment_initiation` is included in the `products` array.
properties:
payment_id:
type: string
description: The `payment_id` provided by the `/payment_initiation/payment/create` endpoint.
minLength: 1
required:
- payment_id
LinkTokenCreateRequestDepositSwitch:
type: object
description: Specifies options for initializing Link for use with the Deposit Switch (beta) product. This field is required if `deposit_switch` is included in the `products` array.
properties:
deposit_switch_id:
type: string
description: The `deposit_switch_id` provided by the `/deposit_switch/create` endpoint.
required:
- deposit_switch_id
LinkTokenCreateRequestTransfer:
type: object
description: Specifies options for initializing Link for use with the Transfer product.
properties:
intent_id:
type: string
description: The `id` returned by the `/transfer/intent/create` endpoint.
LinkTokenCreateRequestAuth:
type: object
description: Specifies options for initializing Link for use with the Auth product. This field is currently only required if using the Flexible Auth product (currently in closed beta).
properties:
flow_type:
type: string
enum:
- FLEXIBLE_AUTH
description: The optional Auth flow to use. Currently only used to enable Flexible Auth.
required:
- flow_type
LinkTokenCreateRequestUser:
type: object
description: An object specifying information about the end user who will be linking their account.
properties:
client_user_id:
type: string
description: A unique ID representing the end user. Typically this will be a user ID number from your application. Personally identifiable information, such as an email address or phone number, should not be used in the `client_user_id`. It is currently used as a means of searching logs for the given user in the Plaid Dashboard.
legal_name:
type: string
description: The user's full legal name. This is an optional field used in the [returning user experience](https://plaid.com/docs/link/returning-user) to associate Items to the user.
phone_number:
type: string
description: The user's phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format. This field is optional, but required to enable the [returning user experience](https://plaid.com/docs/link/returning-user).
phone_number_verified_time:
format: date-time
type: string
description: |
The date and time the phone number was verified in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDThh:mm:ssZ`). This field is optional, but required to enable any [returning user experience](https://plaid.com/docs/link/returning-user).
Only pass a verification time for a phone number that you have verified. If you have performed verification but don’t have the time, you may supply a signal value of the start of the UNIX epoch.
Example: `2020-01-01T00:00:00Z`
email_address:
type: string
description: The user's email address. This field is optional, but required to enable the [pre-authenticated returning user flow](https://plaid.com/docs/link/returning-user/#enabling-the-returning-user-experience).
email_address_verified_time:
type: string
format: date-time
description: |-
The date and time the email address was verified in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDThh:mm:ssZ`). This is an optional field used in the [returning user experience](https://plaid.com/docs/link/returning-user).
Only pass a verification time for an email address that you have verified. If you have performed verification but don’t have the time, you may supply a signal value of the start of the UNIX epoch.
Example: `2020-01-01T00:00:00Z`
ssn:
type: string
description: To be provided in the format "ddd-dd-dddd". This field is optional and will support not-yet-implemented functionality for new products.
date_of_birth:
type: string
format: date
description: To be provided in the format "yyyy-mm-dd". This field is optional and will support not-yet-implemented functionality for new products.
required:
- client_user_id
LinkTokenCreateRequestUpdate:
type: object
description: Specifies options for initializing Link for [update mode](https://plaid.com/docs/link/update-mode).
properties:
account_selection_enabled:
type: boolean
description: If `true`, enables [update mode with Account Select](https://plaid.com/docs/link/update-mode/#using-update-mode-to-request-new-accounts).
default: false
LinkTokenCreateRequestAccountSubtypes:
description: |
By default, Link will only display account types that are compatible with all products supplied in the `products` parameter of `/link/token/create`. You can further limit the accounts shown in Link by using `account_filters` to specify the account subtypes to be shown in Link. Only the specified subtypes will be shown. This filtering applies to both the Account Select view (if enabled) and the Institution Select view. Institutions that do not support the selected subtypes will be omitted from Link. To indicate that all subtypes should be shown, use the value `"all"`. If the `account_filters` filter is used, any account type for which a filter is not specified will be entirely omitted from Link.
For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#accounts-schema).
For institutions using OAuth, the filter will not affect the list of institutions or accounts shown by the bank in the OAuth window.
type: object
properties:
depository:
description: A filter to apply to `depository`-type accounts
type: object
additionalProperties: true
properties:
account_subtypes:
$ref: "#/components/schemas/AccountSubtypes"
credit:
description: A filter to apply to `credit`-type accounts
type: object
additionalProperties: true
properties:
account_subtypes:
$ref: "#/components/schemas/AccountSubtypes"
loan:
description: A filter to apply to `loan`-type accounts
type: object
additionalProperties: true
properties:
account_subtypes:
$ref: "#/components/schemas/AccountSubtypes"
investment:
description: A filter to apply to `investment`-type accounts (or `brokerage`-type accounts for API versions 2018-05-22 and earlier).
type: object
additionalProperties: true
properties:
account_subtypes:
$ref: "#/components/schemas/AccountSubtypes"
LinkTokenGetResponse:
type: object
additionalProperties: true
description: LinkTokenGetResponse defines the response schema for `/link/token/get`
properties:
link_token:
type: string
description: A `link_token`, which can be supplied to Link in order to initialize it and receive a `public_token`, which can be exchanged for an `access_token`.
created_at:
type: string
format: date-time
nullable: true
description: The creation timestamp for the `link_token`, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format.
expiration:
type: string
format: date-time
nullable: true
description: The expiration timestamp for the `link_token`, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format.
metadata:
$ref: "#/components/schemas/LinkTokenGetMetadataResponse"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- link_token
- created_at
- expiration
- metadata
- request_id
LinkTokenGetMetadataResponse:
type: object
additionalProperties: true
description: An object specifying the arguments originally provided to the `/link/token/create` call.
properties:
initial_products:
type: array
description: The `products` specified in the `/link/token/create` call.
items:
$ref: "#/components/schemas/Products"
webhook:
type: string
description: The `webhook` specified in the `/link/token/create` call.
nullable: true
country_codes:
type: array
description: The `country_codes` specified in the `/link/token/create` call.
items:
$ref: "#/components/schemas/CountryCode"
language:
type: string
nullable: true
description: The `language` specified in the `/link/token/create` call.
account_filters:
$ref: "#/components/schemas/AccountFiltersResponse"
redirect_uri:
type: string
description: The `redirect_uri` specified in the `/link/token/create` call.
nullable: true
client_name:
type: string
nullable: true
description: The `client_name` specified in the `/link/token/create` call.
required:
- initial_products
- webhook
- country_codes
- language
- redirect_uri
- client_name
LinkTokenCreateResponse:
type: object
additionalProperties: true
description: LinkTokenCreateResponse defines the response schema for `/link/token/create`
properties:
link_token:
type: string
description: A `link_token`, which can be supplied to Link in order to initialize it and receive a `public_token`, which can be exchanged for an `access_token`.
expiration:
type: string
format: date-time
description: The expiration date for the `link_token`, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format. A `link_token` created to generate a `public_token` that will be exchanged for a new `access_token` expires after 4 hours. A `link_token` created for an existing Item (such as when updating an existing `access_token` by launching Link in update mode) expires after 30 minutes.
request_id:
$ref: "#/components/schemas/RequestID"
required:
- link_token
- expiration
- request_id
Item:
description: Metadata about the Item.
type: object
additionalProperties: true
properties:
item_id:
description: The Plaid Item ID. The `item_id` is always unique; linking the same account at the same institution twice will result in two Items with different `item_id` values. Like all Plaid identifiers, the `item_id` is case-sensitive.
type: string
institution_id:
description: The Plaid Institution ID associated with the Item. Field is `null` for Items created via Same Day Micro-deposits.
type: string
nullable: true
webhook:
description: The URL registered to receive webhooks for the Item.
type: string
nullable: true
error:
$ref: "#/components/schemas/Error"
available_products:
description: A list of products available for the Item that have not yet been accessed.
type: array
items:
$ref: "#/components/schemas/Products"
billed_products:
description: |
A list of products that have been billed for the Item. Note - `billed_products` is populated in all environments but only requests in Production are billed.
type: array
items:
$ref: "#/components/schemas/Products"
products:
description: |
A list of authorized products for the Item.
type: array
items:
$ref: "#/components/schemas/Products"
consent_expiration_time:
description: |
The RFC 3339 timestamp after which the consent provided by the end user will expire. Upon consent expiration, the item will enter the `ITEM_LOGIN_REQUIRED` error state. To circumvent the `ITEM_LOGIN_REQUIRED` error and maintain continuous consent, the end user can reauthenticate via Link’s update mode in advance of the consent expiration time.
Note - This is only relevant for certain OAuth-based institutions. For all other institutions, this field will be null.
type: string
format: date-time
nullable: true
update_type:
type: string
description: |-
Indicates whether an Item requires user interaction to be updated, which can be the case for Items with some forms of two-factor authentication.
`background` - Item can be updated in the background
`user_present_required` - Item requires user interaction to be updated
enum:
- background
- user_present_required
required:
- item_id
- webhook
- error
- available_products
- billed_products
- consent_expiration_time
- update_type
PlaidError:
allOf:
- $ref: "#/components/schemas/Error"
- type: object
additionalProperties: true
description: Similar to Error, but renamed to avoid collisions in languages where "Error" is an existing type.
Error:
description: We use standard HTTP response codes for success and failure notifications, and our errors are further classified by `error_type`. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. Error fields will be `null` if no error has occurred.
type: object
additionalProperties: true
title: Error
nullable: true
properties:
error_type:
enum:
- INVALID_REQUEST
- INVALID_RESULT
- INVALID_INPUT
- INSTITUTION_ERROR
- RATE_LIMIT_EXCEEDED
- API_ERROR
- ITEM_ERROR
- ASSET_REPORT_ERROR
- RECAPTCHA_ERROR
- OAUTH_ERROR
- PAYMENT_ERROR
- BANK_TRANSFER_ERROR
- INCOME_VERIFICATION_ERROR
type: string
description: A broad categorization of the error. Safe for programatic use.
error_code:
description: The particular error code. Safe for programmatic use.
type: string
error_message:
description: A developer-friendly representation of the error code. This may change over time and is not safe for programmatic use.
type: string
display_message:
description: |-
A user-friendly representation of the error code. `null` if the error is not related to user action.
This may change over time and is not safe for programmatic use.
type: string
nullable: true
request_id:
type: string
description: A unique ID identifying the request, to be used for troubleshooting purposes. This field will be omitted in errors provided by webhooks.
causes:
type: array
description: |-
In the Assets product, a request can pertain to more than one Item. If an error is returned for such a request, `causes` will return an array of errors containing a breakdown of these errors on the individual Item level, if any can be identified.
`causes` will only be provided for the `error_type` `ASSET_REPORT_ERROR`. `causes` will also not be populated inside an error nested within a `warning` object.
items: {}
status:
type: number
description: The HTTP status code associated with the error. This will only be returned in the response body when the error information is provided via a webhook.
nullable: true
documentation_url:
type: string
description: The URL of a Plaid documentation page with more information about the error
suggested_action:
type: string
description: Suggested steps for resolving the error
required:
- error_type
- error_code
- error_message
- display_message
ItemStatusNullable:
nullable: true
allOf:
- $ref: "#/components/schemas/ItemStatus"
- type: object
additionalProperties: true
ItemStatusTransactions:
description: Information about the last successful and failed transactions update for the Item.
type: object
additionalProperties: true
nullable: true
properties:
last_successful_update:
description: "[ISO 8601](https://wikipedia.org/wiki/ISO_8601) timestamp of the last successful transactions update for the Item. The status will update each time Plaid successfully connects with the institution, regardless of whether any new data is available in the update."
type: string
format: date-time
nullable: true
last_failed_update:
description: "[ISO 8601](https://wikipedia.org/wiki/ISO_8601) timestamp of the last failed transactions update for the Item. The status will update each time Plaid fails an attempt to connect with the institution, regardless of whether any new data is available in the update."
type: string
format: date-time
nullable: true
ItemStatusInvestments:
description: Information about the last successful and failed investments update for the Item.
type: object
additionalProperties: true
nullable: true
properties:
last_successful_update:
description: "[ISO 8601](https://wikipedia.org/wiki/ISO_8601) timestamp of the last successful investments update for the Item. The status will update each time Plaid successfully connects with the institution, regardless of whether any new data is available in the update."
type: string
format: date-time
nullable: true
last_failed_update:
description: "[ISO 8601](https://wikipedia.org/wiki/ISO_8601) timestamp of the last failed investments update for the Item. The status will update each time Plaid fails an attempt to connect with the institution, regardless of whether any new data is available in the update."
type: string
format: date-time
nullable: true
ItemStatusLastWebhook:
description: Information about the last webhook fired for the Item.
type: object
additionalProperties: true
nullable: true
properties:
sent_at:
description: |
[ISO 8601](https://wikipedia.org/wiki/ISO_8601) timestamp of when the webhook was fired.
type: string
format: date-time
nullable: true
code_sent:
description: The last webhook code sent.
type: string
nullable: true
ItemStatus:
description: An object with information about the status of the Item.
type: object
additionalProperties: true
nullable: true
x-examples:
example-1: {}
title: ItemStatus
properties:
investments:
$ref: "#/components/schemas/ItemStatusInvestments"
transactions:
$ref: "#/components/schemas/ItemStatusTransactions"
last_webhook:
$ref: "#/components/schemas/ItemStatusLastWebhook"
AccountType:
type: string
title: AccountType
enum:
- investment
- credit
- depository
- loan
- brokerage
- other
description: |-
`investment:` Investment account. In API versions 2018-05-22 and earlier, this type is called `brokerage` instead.
`credit:` Credit card
`depository:` Depository account
`loan:` Loan account
`brokerage`: An investment account. Used for `/assets/` endpoints only; other endpoints use `investment`.
`other:` Non-specified account type
See the [Account type schema](https://plaid.com/docs/api/accounts#account-type-schema) for a full listing of account types and corresponding subtypes.
OverrideAccountType:
type: string
title: OverrideAccountType
enum:
- investment
- credit
- depository
- loan
- payroll
- other
description: |-
`investment:` Investment account.
`credit:` Credit card
`depository:` Depository account
`loan:` Loan account
`payroll:` Payroll acccount
`other:` Non-specified account type
See the [Account type schema](https://plaid.com/docs/api/accounts#account-type-schema) for a full listing of account types and corresponding subtypes.
AccountBase:
title: Account
type: object
additionalProperties: true
description: A single account at a financial institution.
x-examples:
example-1: {}
properties:
account_id:
type: string
description: |-
Plaid’s unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new `account_id` will be assigned to the account.
The `account_id` can also change if the `access_token` is deleted and the same credentials that were used to generate that `access_token` are used to generate a new `access_token` on a later date. In that case, the new `account_id` will be different from the old `account_id`.
If an account with a specific `account_id` disappears instead of changing, the account is likely closed. Closed accounts are not returned by the Plaid API.
Like all Plaid identifiers, the `account_id` is case sensitive.
balances:
$ref: "#/components/schemas/AccountBalance"
mask:
type: string
description: The last 2-4 alphanumeric characters of an account's official account number. Note that the mask may be non-unique between an Item's accounts, and it may also not match the mask that the bank displays to the user.
nullable: true
name:
type: string
description: The name of the account, either assigned by the user or by the financial institution itself
official_name:
type: string
description: The official name of the account as given by the financial institution
nullable: true
type:
$ref: "#/components/schemas/AccountType"
subtype:
$ref: "#/components/schemas/AccountSubtype"
verification_status:
type: string
enum:
- automatically_verified
- pending_automatic_verification
- pending_manual_verification
- manually_verified
- verification_expired
- verification_failed
description: "The current verification status of an Auth Item initiated through Automated or Manual micro-deposits. Returned for Auth Items only.\n\n`pending_automatic_verification`: The Item is pending automatic verification\n\n`pending_manual_verification`: The Item is pending manual micro-deposit verification. Items remain in this state until the user successfully verifies the two amounts.\n\n`automatically_verified`: The Item has successfully been automatically verified\t\n\n`manually_verified`: The Item has successfully been manually verified\n\n`verification_expired`: Plaid was unable to automatically verify the deposit within 7 calendar days and will no longer attempt to validate the Item. Users may retry by submitting their information again through Link.\n\n`verification_failed`: The Item failed manual micro-deposit verification because the user exhausted all 3 verification attempts. Users may retry by submitting their information again through Link.\t\n\t"
required:
- account_id
- balances
- mask
- name
- official_name
- type
- subtype
AccountBalance:
title: AccountBalance
type: object
additionalProperties: true
description: A set of fields describing the balance for an account. Balance information may be cached unless the balance object was returned by `/accounts/balance/get`.
properties:
available:
type: number
description: |-
The amount of funds available to be withdrawn from the account, as determined by the financial institution.
For `credit`-type accounts, the `available` balance typically equals the `limit` less the `current` balance, less any pending outflows plus any pending inflows.
For `depository`-type accounts, the `available` balance typically equals the `current` balance less any pending outflows plus any pending inflows. For `depository`-type accounts, the `available` balance does not include the overdraft limit.
For `investment`-type accounts (or `brokerage`-type accounts for API versions 2018-05-22 and earlier), the `available` balance is the total cash available to withdraw as presented by the institution.
Note that not all institutions calculate the `available` balance. In the event that `available` balance is unavailable, Plaid will return an `available` balance value of `null`.
Available balance may be cached and is not guaranteed to be up-to-date in realtime unless the value was returned by `/accounts/balance/get`.
If `current` is `null` this field is guaranteed not to be `null`.
nullable: true
current:
type: number
description: |-
The total amount of funds in or owed by the account.
For `credit`-type accounts, a positive balance indicates the amount owed; a negative amount indicates the lender owing the account holder.
For `loan`-type accounts, the current balance is the principal remaining on the loan, except in the case of student loan accounts at Sallie Mae (`ins_116944`). For Sallie Mae student loans, the account's balance includes both principal and any outstanding interest.
For `investment`-type accounts (or `brokerage`-type accounts for API versions 2018-05-22 and earlier), the current balance is the total value of assets as presented by the institution.
Note that balance information may be cached unless the value was returned by `/accounts/balance/get`; if the Item is enabled for Transactions, the balance will be at least as recent as the most recent Transaction update. If you require realtime balance information, use the `available` balance as provided by `/accounts/balance/get`.
When returned by `/accounts/balance/get`, this field may be `null`. When this happens, `available` is guaranteed not to be `null`.
nullable: true
limit:
type: number
description: |-
For `credit`-type accounts, this represents the credit limit.
For `depository`-type accounts, this represents the pre-arranged overdraft limit, which is common for current (checking) accounts in Europe.
In North America, this field is typically only available for `credit`-type accounts.
nullable: true
iso_currency_code:
type: string
description: The ISO-4217 currency code of the balance. Always null if `unofficial_currency_code` is non-null.
nullable: true
unofficial_currency_code:
type: string
description: |-
The unofficial currency code associated with the balance. Always null if `iso_currency_code` is non-null. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.
See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `unofficial_currency_code`s.
nullable: true
last_updated_datetime:
type: string
format: date-time
description: |-
Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (`YYYY-MM-DDTHH:mm:ssZ`) indicating the last time that the balance for the given account has been updated
This is currently only provided when the `min_last_updated_datetime` is passed when calling `/accounts/balance/get` for `ins_128026` (Capital One).
nullable: true
required:
- available
- current
- limit
- iso_currency_code
- unofficial_currency_code
AccountSubtype:
type: string
nullable: true
title: AccountSubtype
description: See the [Account type schema](https://plaid.com/docs/api/accounts/#account-type-schema) for a full listing of account types and corresponding subtypes.
enum:
- 401a
- 401k
- 403B
- 457b
- "529"
- brokerage
- cash isa
- education savings account
- ebt
- fixed annuity
- gic
- health reimbursement arrangement
- hsa
- isa
- ira
- lif
- life insurance
- lira
- lrif
- lrsp
- non-taxable brokerage account
- other
- other insurance
- other annuity
- prif
- rdsp
- resp
- rlif
- rrif
- pension
- profit sharing plan
- retirement
- roth
- roth 401k
- rrsp
- sep ira
- simple ira
- sipp
- stock plan
- thrift savings plan
- tfsa
- trust
- ugma
- utma
- variable annuity
- credit card
- paypal
- cd
- checking
- savings
- money market
- prepaid
- auto
- business
- commercial
- construction
- consumer
- home equity
- loan
- mortgage
- overdraft
- line of credit
- student
- cash management
- keogh
- mutual fund
- recurring
- rewards
- safe deposit
- sarsep
- payroll
- null
NumbersACH:
title: NumbersACH
type: object
additionalProperties: true
description: Identifying information for transferring money to or from a US account via ACH or wire transfer.
properties:
account_id:
type: string
description: The Plaid account ID associated with the account numbers
account:
type: string
description: |-
The ACH account number for the account.
Note that when using OAuth with Chase Bank (`ins_56`), Chase will issue "tokenized" routing and account numbers, which are not the user's actual account and routing numbers. These tokenized numbers should work identically to normal account and routing numbers. The digits returned in the `mask` field will continue to reflect the actual account number, rather than the tokenized account number; for this reason, when displaying account numbers to the user to help them identify their account in your UI, always use the `mask` rather than truncating the `account` number. If a user revokes their permissions to your app, the tokenized numbers will continue to work for ACH deposits, but not withdrawals.
routing:
type: string
description: The ACH routing number for the account. If the institution is `ins_56`, this may be a tokenized routing number. For more information, see the description of the `account` field.
wire_routing:
type: string
description: The wire transfer routing number for the account, if available
nullable: true
required:
- account_id
- account
- routing
- wire_routing
NumbersACHNullable:
nullable: true
allOf:
- $ref: "#/components/schemas/NumbersACH"
- type: object
additionalProperties: true
NumbersEFT:
title: NumbersEFT
type: object
additionalProperties: true
description: Identifying information for transferring money to or from a Canadian bank account via EFT.
properties:
account_id:
type: string
description: The Plaid account ID associated with the account numbers
account:
type: string
description: The EFT account number for the account
institution:
type: string
description: The EFT institution number for the account
branch:
type: string
description: The EFT branch number for the account
required:
- account_id
- account
- institution
- branch
NumbersEFTNullable:
nullable: true
allOf:
- $ref: "#/components/schemas/NumbersEFT"
- type: object
additionalProperties: true
NumbersInternational:
title: NumbersInternational
type: object
additionalProperties: true
description: Identifying information for transferring money to or from an international bank account via wire transfer.
properties:
account_id:
type: string
description: The Plaid account ID associated with the account numbers
iban:
type: string
description: The International Bank Account Number (IBAN) for the account
bic:
type: string
description: The Bank Identifier Code (BIC) for the account
required:
- account_id
- iban
- bic
NumbersInternationalNullable:
nullable: true
allOf:
- $ref: "#/components/schemas/NumbersInternational"
- type: object
additionalProperties: true
NumbersBACS:
title: NumbersBACS
type: object
additionalProperties: true
description: Identifying information for transferring money to or from a UK bank account via BACS.
properties:
account_id:
type: string
description: The Plaid account ID associated with the account numbers
account:
type: string
description: The BACS account number for the account
sort_code:
type: string
description: The BACS sort code for the account
required:
- account_id
- account
- sort_code
NumbersBACSNullable:
nullable: true
allOf:
- $ref: "#/components/schemas/NumbersBACS"
- type: object
additionalProperties: true
RecipientBACS:
title: RecipientBACS
type: object
additionalProperties: true
nullable: true
description: An object containing a BACS account number and sort code. If an IBAN is not provided or if this recipient needs to accept domestic GBP-denominated payments, BACS data is required.
properties:
account:
type: string
description: The account number of the account. Maximum of 10 characters.
minLength: 1
maxLength: 10
sort_code:
type: string
description: The 6-character sort code of the account.
minLength: 6
maxLength: 6
RecipientBACSNullable:
nullable: true
allOf:
- $ref: "#/components/schemas/RecipientBACS"
- type: object
additionalProperties: true
description: The account number and sort code of the recipient's account.
SenderBACSNullable:
nullable: true
allOf:
- $ref: "#/components/schemas/RecipientBACS"
- type: object
additionalProperties: true
description: The account number and sort code of the sender's account, if specified in the `/payment_initiation/payment/create` call.
PaymentInitiationOptionalRestrictionBacs:
nullable: true
allOf:
- $ref: "#/components/schemas/RecipientBACS"
- type: object
additionalProperties: true
description: An optional object used to restrict the accounts used for payments. If provided, the end user will be able to send payments only from the specified bank account.
RemovedTransaction:
title: RemovedTransaction
type: object
description: A representation of a removed transaction
x-examples: {}
properties:
transaction_id:
type: string
description: The ID of the removed transaction.
RequestID:
title: RequestID
type: string
description: A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.
TransactionBase:
title: TransactionBase
type: object
additionalProperties: true
description: A representation of a transaction
x-examples: {}
properties:
transaction_type:
type: string
enum:
- digital
- place
- special
- unresolved
description: |
Please use the `payment_channel` field, `transaction_type` will be deprecated in the future.
`digital:` transactions that took place online.
`place:` transactions that were made at a physical location.
`special:` transactions that relate to banks, e.g. fees or deposits.
`unresolved:` transactions that do not fit into the other three types.
deprecated: true
pending_transaction_id:
type: string
description: The ID of a posted transaction's associated pending transaction, where applicable.
nullable: true
category_id:
description: |-
The ID of the category to which this transaction belongs. See [Categories](https://plaid.com/docs/#category-overview).
If the `transactions` object was returned by an Assets endpoint such as `/asset_report/get/` or `/asset_report/pdf/get`, this field will only appear in an Asset Report with Insights.
type: string
nullable: true
category:
type: array
description: |-
A hierarchical array of the categories to which this transaction belongs. See [Categories](https://plaid.com/docs/#category-overview).
If the `transactions` object was returned by an Assets endpoint such as `/asset_report/get/` or `/asset_report/pdf/get`, this field will only appear in an Asset Report with Insights.
nullable: true
items:
type: string
location:
$ref: "#/components/schemas/Location"
payment_meta:
$ref: "#/components/schemas/PaymentMeta"
account_owner:
type: string
description: The name of the account owner. This field is not typically populated and only relevant when dealing with sub-accounts.
nullable: true
name:
type: string
description: |-
The merchant name or transaction description.
If the `transactions` object was returned by a Transactions endpoint such as `/transactions/get`, this field will always appear. If the `transactions` object was returned by an Assets endpoint such as `/asset_report/get/` or `/asset_report/pdf/get`, this field will only appear in an Asset Report with Insights.
original_description:
type: string
description: The string returned by the financial institution to describe the transaction. For transactions returned by `/transactions/get`, this field is in beta and will be omitted unless the client is both enrolled in the closed beta program and has set `options.include_original_description` to `true`.
nullable: true
account_id:
type: string
description: The ID of the account in which this transaction occurred.
amount:
type: number
description: The settled value of the transaction, denominated in the account's currency, as stated in `iso_currency_code` or `unofficial_currency_code`. Positive values when money moves out of the account; negative values when money moves in. For example, debit card purchases are positive; credit card payments, direct deposits, and refunds are negative.
iso_currency_code:
type: string
description: The ISO-4217 currency code of the transaction. Always `null` if `unofficial_currency_code` is non-null.
nullable: true
unofficial_currency_code:
type: string
description: |-
The unofficial currency code associated with the transaction. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.
See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.
nullable: true
date:
type: string
format: date
description: For pending transactions, the date that the transaction occurred; for posted transactions, the date that the transaction posted. Both dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DD` ).
pending:
type: boolean
description: When `true`, identifies the transaction as pending or unsettled. Pending transaction details (name, type, amount, category ID) may change before they are settled.
transaction_id:
type: string
description: The unique ID of the transaction. Like all Plaid identifiers, the `transaction_id` is case sensitive.
merchant_name:
type: string
description: The merchant name, as extracted by Plaid from the `name` field.
nullable: true
check_number:
type: string
description: The check number of the transaction. This field is only populated for check transactions.
nullable: true
required:
- transaction_id
- pending
- date
- unofficial_currency_code
- iso_currency_code
- amount
- account_id
Transaction:
title: Transaction
description: A representation of a transaction
x-examples: {}
allOf:
- $ref: "#/components/schemas/TransactionBase"
- type: object
additionalProperties: true
properties:
payment_channel:
type: string
enum:
- online
- in store
- other
description: |
The channel used to make a payment.
`online:` transactions that took place online.
`in store:` transactions that were made at a physical location.
`other:` transactions that relate to banks, e.g. fees or deposits.
This field replaces the `transaction_type` field.
authorized_date:
type: string
format: date
description: The date that the transaction was authorized. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DD` ).
nullable: true
authorized_datetime:
type: string
format: date-time
description: |-
Date and time when a transaction was authorized in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DDTHH:mm:ssZ` ).
This field is only populated for UK institutions. For institutions in other countries, will be `null`.
nullable: true
datetime:
type: string
format: date-time
description: |-
Date and time when a transaction was posted in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ( `YYYY-MM-DDTHH:mm:ssZ` ).
This field is only populated for UK institutions. For institutions in other countries, will be `null`.
nullable: true
transaction_code:
$ref: "#/components/schemas/TransactionCode"
personal_finance_category:
nullable: true
allOf:
- $ref: "#/components/schemas/PersonalFinanceCategory"
- type: object
additionalProperties: true
required:
- account_owner
- pending_transaction_id
- payment_channel
- payment_meta
- name
- location
- authorized_date
- authorized_datetime
- datetime
- category_id
- category
- transaction_code
Location:
title: Transaction Location
type: object
additionalProperties: true
description: A representation of where a transaction took place
properties:
address:
type: string
description: The street address where the transaction occurred.
nullable: true
city:
type: string
description: The city where the transaction occurred.
nullable: true
region:
type: string
description: The region or state where the transaction occurred. In API versions 2018-05-22 and earlier, this field is called `state`.
nullable: true
postal_code:
type: string
description: The postal code where the transaction occurred. In API versions 2018-05-22 and earlier, this field is called `zip`.
nullable: true
country:
type: string
description: The ISO 3166-1 alpha-2 country code where the transaction occurred.
nullable: true
lat:
type: number
description: The latitude where the transaction occurred.
nullable: true
lon:
type: number
description: The longitude where the transaction occurred.
nullable: true
store_number:
type: string
description: The merchant defined store number where the transaction occurred.
nullable: true
required:
- address
- city
- region
- postal_code
- country
- lat
- lon
- store_number
TransactionStream:
title: TransactionStream
type: object
description: A grouping of related transactions
x-examples: {}
additionalProperties: true
properties:
account_id:
type: string
description: The ID of the account to which the stream belongs
stream_id:
type: string
description: A unique id for the stream
category_id:
description: The ID of the category to which this transaction belongs. See [Categories](https://plaid.com/docs/#category-overview).
type: string
category:
type: array
description: A hierarchical array of the categories to which this transaction belongs. See [Categories](https://plaid.com/docs/#category-overview).
items:
type: string
description:
type: string
description: A description of the transaction stream.
first_date:
type: string
description: The posted date of the earliest transaction in the stream.
format: date
last_date:
type: string
description: The posted date of the latest transaction in the stream.
format: date
frequency:
$ref: "#/components/schemas/RecurringTransactionFrequency"
transaction_ids:
type: array
description: An array of Plaid transaction IDs belonging to the stream, sorted by posted date.
items:
type: string
average_amount:
$ref: "#/components/schemas/TransactionStreamAmount"
is_active:
type: boolean
description: indicates whether the transaction stream is still live.
required:
- account_id
- stream_id
- category
- category_id
- description
- first_date
- last_date
- frequency
- transaction_ids
- average_amount
- is_active
TransactionStreamAmount:
type: object
title: TransactionStreamAmount
description: Object with data pertaining to an amount on the transaction stream.
additionalProperties: true
properties:
amount:
type: number
description: represents the numerical value of an amount.
iso_currency_code:
type: string
description: |-
The ISO-4217 currency code of the amount. Always `null` if `unofficial_currency_code` is non-`null`.
See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.
nullable: true
unofficial_currency_code:
type: string
description: The unofficial currency code of the amount. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.
nullable: true
RecurringTransactionFrequency:
type: string
description: describes the frequency of the transaction stream.
title: RecurringTransactionFrequency
enum:
- UNKNOWN
- WEEKLY
- BIWEEKLY
- SEMI_MONTHLY
- MONTHLY
Institution:
title: Institution
type: object
additionalProperties: true
description: Details relating to a specific financial institution
properties:
institution_id:
type: string
description: Unique identifier for the institution
name:
type: string
description: The official name of the institution
products:
type: array
description: A list of the Plaid products supported by the institution. Note that only institutions that support Instant Auth will return `auth` in the product array; institutions that do not list `auth` may still support other Auth methods such as Instant Match or Automated Micro-deposit Verification. For more details, see [Full Auth coverage](https://plaid.com/docs/auth/coverage/).
items:
$ref: "#/components/schemas/Products"
country_codes:
type: array
description: A list of the country codes supported by the institution.
items:
$ref: "#/components/schemas/CountryCode"
url:
type: string
description: The URL for the institution's website
nullable: true
primary_color:
type: string
description: Hexadecimal representation of the primary color used by the institution
nullable: true
logo:
type: string
description: Base64 encoded representation of the institution's logo
nullable: true
routing_numbers:
type: array
description: A partial list of routing numbers associated with the institution. This list is provided for the purpose of looking up institutions by routing number. It is not comprehensive and should never be used as a complete list of routing numbers for an institution.
items:
type: string
oauth:
type: boolean
description: Indicates that the institution has an OAuth login flow. This is primarily relevant to institutions with European country codes.
status:
$ref: "#/components/schemas/InstitutionStatus"
payment_initiation_metadata:
$ref: "#/components/schemas/PaymentInitiationMetadata"
auth_metadata:
$ref: "#/components/schemas/AuthMetadata"
required:
- institution_id
- name
- products
- country_codes
- routing_numbers
- oauth
InstitutionStatus:
title: InstitutionStatus
type: object
additionalProperties: true
properties:
item_logins:
$ref: "#/components/schemas/ProductStatus"
transactions_updates:
$ref: "#/components/schemas/ProductStatus"
auth:
$ref: "#/components/schemas/ProductStatus"
identity:
$ref: "#/components/schemas/ProductStatus"
investments_updates:
$ref: "#/components/schemas/ProductStatus"
liabilities_updates:
$ref: "#/components/schemas/ProductStatus"
liabilities:
$ref: "#/components/schemas/ProductStatus"
investments:
$ref: "#/components/schemas/ProductStatus"
health_incidents:
nullable: true
type: array
description: Details of recent health incidents associated with the institution.
items:
$ref: "#/components/schemas/HealthIncident"
required:
- item_logins
- transactions_updates
- auth
- identity
- investments_updates
description: |
The status of an institution is determined by the health of its Item logins, Transactions updates, Investments updates, Liabilities updates, Auth requests, Balance requests, Identity requests, Investments requests, and Liabilities requests. A login attempt is conducted during the initial Item add in Link. If there is not enough traffic to accurately calculate an institution's status, Plaid will return null rather than potentially inaccurate data.
Institution status is accessible in the Dashboard and via the API using the `/institutions/get_by_id` endpoint with the `include_status` option set to true. Note that institution status is not available in the Sandbox environment.
x-examples:
example-1:
status:
item_logins:
status: HEALTHY
last_status_change: "2019-02-15T15:53:00Z"
breakdown:
success: 0.9
error_plaid: 0.01
error_institution: 0.09
transactions_updates:
status: HEALTHY
last_status_change: "2019-02-12T08:22:00Z"
breakdown:
success: 0.95
error_plaid: 0.02
error_institution: 0.03
refresh_interval: NORMAL
auth:
status: HEALTHY
last_status_change: "2019-02-15T15:53:00Z"
breakdown:
success: 0.91
error_plaid: 0.01
error_institution: 0.08
identity:
status: DEGRADED
last_status_change: "2019-02-15T15:50:00Z"
breakdown:
success: 0.42
error_plaid: 0.08
error_institution: 0.5
investments:
status: HEALTHY
last_status_change: "2019-02-15T15:53:00Z"
breakdown:
success: 0.89
error_plaid: 0.02
error_institution: 0.09
liabilities:
status: HEALTHY
last_status_change: "2019-02-15T15:53:00Z"
breakdown:
success: 0.89
error_plaid: 0.02
error_institution: 0.09
investments_updates:
status: HEALTHY
last_status_change: "2019-02-12T08:22:00Z"
breakdown:
success: 0.95
error_plaid: 0.02
error_institution: 0.03
refresh_interval: NORMAL
liabilities_updates:
status: HEALTHY
last_status_change: "2019-02-12T08:22:00Z"
breakdown:
success: 0.95
error_plaid: 0.02
error_institution: 0.03
refresh_interval: NORMAL
CountryCode:
type: string
title: CountryCode
enum:
- US
- GB
- ES
- NL
- FR
- IE
- CA
- DE
description: ISO-3166-1 alpha-2 country code standard.
PaymentMeta:
title: PaymentMeta
type: object
additionalProperties: true
description: |-
Transaction information specific to inter-bank transfers. If the transaction was not an inter-bank transfer, all fields will be `null`.
If the `transactions` object was returned by a Transactions endpoint such as `/transactions/get`, the `payment_meta` key will always appear, but no data elements are guaranteed. If the `transactions` object was returned by an Assets endpoint such as `/asset_report/get/` or `/asset_report/pdf/get`, this field will only appear in an Asset Report with Insights.
properties:
reference_number:
type: string
description: The transaction reference number supplied by the financial institution.
nullable: true
ppd_id:
type: string
description: The ACH PPD ID for the payer.
nullable: true
payee:
type: string
description: For transfers, the party that is receiving the transaction.
nullable: true
by_order_of:
type: string
description: The party initiating a wire transfer. Will be `null` if the transaction is not a wire transfer.
nullable: true
payer:
type: string
description: For transfers, the party that is paying the transaction.
nullable: true
payment_method:
type: string
description: The type of transfer, e.g. 'ACH'
nullable: true
payment_processor:
type: string
description: The name of the payment processor
nullable: true
reason:
type: string
description: The payer-supplied description of the transfer.
nullable: true
required:
- reference_number
- ppd_id
- payee
- by_order_of
- payer
- payment_method
- payment_processor
- reason
TransactionCode:
type: string
title: transaction_code
description: |-
An identifier classifying the transaction type.
This field is only populated for European institutions. For institutions in the US and Canada, this field is set to `null`.
`adjustment:` Bank adjustment
`atm:` Cash deposit or withdrawal via an automated teller machine
`bank charge:` Charge or fee levied by the institution
`bill payment`: Payment of a bill
`cash:` Cash deposit or withdrawal
`cashback:` Cash withdrawal while making a debit card purchase
`cheque:` Document ordering the payment of money to another person or organization
`direct debit:` Automatic withdrawal of funds initiated by a third party at a regular interval
`interest:` Interest earned or incurred
`purchase:` Purchase made with a debit or credit card
`standing order:` Payment instructed by the account holder to a third party at a regular interval
`transfer:` Transfer of money between accounts
enum:
- adjustment
- atm
- bank charge
- bill payment
- cash
- cashback
- cheque
- direct debit
- interest
- purchase
- standing order
- transfer
- null
nullable: true
Category:
title: Category
type: object
additionalProperties: true
description: Information describing a transaction category
properties:
category_id:
type: string
description: An identifying number for the category. `category_id` is a Plaid-specific identifier and does not necessarily correspond to merchant category codes.
group:
type: string
description: "`place` for physical transactions or `special` for other transactions such as bank charges."
hierarchy:
type: array
description: A hierarchical array of the categories to which this `category_id` belongs.
items:
type: string
required:
- category_id
- group
- hierarchy
PersonalFinanceCategory:
title: PersonalFinanceCategory
nullable: true
type: object
additionalProperties: true
description: |-
Information describing the intent of the transaction. Most relevant for personal finance use cases, but not limited to such use cases. The field is currently in beta.
The complete category can be generated by concatenating primary and detailed categories.
This feature is currently in beta – to request access, contact transactions-feedback@plaid.com.
properties:
primary:
type: string
description: A high level category that communicates the broad category of the transaction.
detailed:
type: string
description: Provides additional granularity to the primary categorization.
required:
- primary
- detailed
AccessToken:
title: AccessToken
type: string
description: The access token associated with the Item data is being requested for.
AccessTokenNullable:
nullable: true
type: string
description: The access token associated with the Item data is being requested for.
TransferAccessToken:
description: The Plaid `access_token` for the account that will be debited or credited.
type: string
BankTransferAccessToken:
description: The Plaid `access_token` for the account that will be debited or credited.
type: string
APISecret:
title: APISecret
type: string
description: Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part of a request body.
APIClientID:
title: ClientID
type: string
description: Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header or as part of a request body.
TransactionsRemovedWebhook:
title: TransactionsRemovedWebhook
description: Fired when transaction(s) for an Item are deleted. The deleted transaction IDs are included in the webhook payload. Plaid will typically check for deleted transaction data several times a day.
type: object
additionalProperties: true
properties:
webhook_type:
type: string
description: "`TRANSACTIONS`"
webhook_code:
type: string
description: "`TRANSACTIONS_REMOVED`"
error:
$ref: "#/components/schemas/PlaidError"
removed_transactions:
type: array
description: An array of `transaction_ids` corresponding to the removed transactions
items:
type: string
item_id:
$ref: "#/components/schemas/ItemId"
required:
- webhook_type
- webhook_code
- removed_transactions
- item_id
x-examples:
example-1:
webhook_type: TRANSACTIONS
webhook_code: TRANSACTIONS_REMOVED
item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb
removed_transactions:
- yBVBEwrPyJs8GvR77N7QTxnGg6wG74H7dEDN6
- kgygNvAVPzSX9KkddNdWHaVGRVex1MHm3k9no
error: null
DefaultUpdateWebhook:
type: object
additionalProperties: true
description: |
Fired when new transaction data is available for an Item. Plaid will typically check for new transaction data several times a day.
x-examples:
example-1:
webhook_type: TRANSACTIONS
webhook_code: DEFAULT_UPDATE
item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb
error: null
new_transactions: 3
properties:
webhook_type:
type: string
description: "`TRANSACTIONS`"
webhook_code:
type: string
description: "`DEFAULT_UPDATE`"
error:
$ref: "#/components/schemas/PlaidError"
new_transactions:
type: number
description: The number of new transactions detected since the last time this webhook was fired.
title: DefaultUpdateWebhook
item_id:
type: string
description: The `item_id` of the Item the webhook relates to.
required:
- webhook_type
- webhook_code
- new_transactions
- item_id
HistoricalUpdateWebhook:
title: HistoricalUpdateWebhook
description: Fired when an Item's historical transaction pull is completed and Plaid has prepared as much historical transaction data as possible for the Item. Once this webhook has been fired, transaction data beyond the most recent 30 days can be fetched for the Item. If [Account Select v2](https://plaid.com/docs/link/customization/#account-select) is enabled, this webhook will also be fired if account selections for the Item are updated, with `num_transactions` set to the number of net new transactions pulled after the account selection update.
type: object
additionalProperties: true
properties:
webhook_type:
type: string
description: "`TRANSACTIONS`"
webhook_code:
type: string
description: "`HISTORICAL_UPDATE`"
error:
$ref: "#/components/schemas/PlaidError"
new_transactions:
type: number
description: The number of new, unfetched transactions available
item_id:
$ref: "#/components/schemas/ItemId"
required:
- webhook_type
- webhook_code
- new_transactions
- item_id
x-examples:
example-1:
webhook_type: TRANSACTIONS
webhook_code: HISTORICAL_UPDATE
item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb
error: null
new_transactions: 231
InitialUpdateWebhook:
title: InitialUpdateWebhook
description: Fired when an Item's initial transaction pull is completed. Once this webhook has been fired, transaction data for the most recent 30 days can be fetched for the Item. If [Account Select v2](https://plaid.com/docs/link/customization/#account-select) is enabled, this webhook will also be fired if account selections for the Item are updated, with `num_transactions` set to the number of net new transactions pulled after the account selection update.
type: object
additionalProperties: true
x-examples:
example-1:
webhook_type: TRANSACTIONS
webhook_code: INITIAL_UPDATE
item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb
error: null
new_transactions: 19
properties:
webhook_type:
type: string
description: "`TRANSACTIONS`"
webhook_code:
type: string
description: "`INITIAL_UPDATE`"
error:
type: string
nullable: true
description: The error code associated with the webhook.
new_transactions:
type: number
description: The number of new, unfetched transactions available.
item_id:
$ref: "#/components/schemas/ItemId"
required:
- webhook_type
- webhook_code
- new_transactions
- item_id
PhoneNumber:
title: PhoneNumber
type: object
additionalProperties: true
description: A phone number
properties:
data:
type: string
description: The phone number.
primary:
type: boolean
description: When `true`, identifies the phone number as the primary number on an account.
type:
type: string
enum:
- home
- work
- office
- mobile
- mobile1
- other
description: The type of phone number.
required:
- data
- primary
- type
Email:
title: Email
type: object
additionalProperties: true
properties:
data:
type: string
description: The email address.
primary:
type: boolean
description: When `true`, identifies the email address as the primary email on an account.
type:
type: string
enum:
- primary
- secondary
- other
description: The type of email account as described by the financial institution.
required:
- data
- primary
- type
description: An object representing an email address
Address:
title: Address
type: object
additionalProperties: true
description: A physical mailing address.
properties:
data:
$ref: "#/components/schemas/AddressData"
primary:
type: boolean
description: When `true`, identifies the address as the primary address on an account.
required:
- data
AddressNullable:
nullable: true
allOf:
- $ref: "#/components/schemas/Address"
- type: object
additionalProperties: true
AddressDataNullable:
nullable: true
allOf:
- $ref: "#/components/schemas/AddressData"
- type: object
additionalProperties: true
AddressData:
title: AddressData
type: object
additionalProperties: true
description: Data about the components comprising an address.
properties:
city:
type: string
description: The full city name
region:
type: string
description: |-
The region or state. In API versions 2018-05-22 and earlier, this field is called `state`.
Example: `"NC"`
nullable: true
street:
type: string
description: |-
The full street address
Example: `"564 Main Street, APT 15"`
postal_code:
type: string
description: The postal code. In API versions 2018-05-22 and earlier, this field is called `zip`.
nullable: true
country:
type: string
description: The ISO 3166-1 alpha-2 country code
nullable: true
required:
- city
- region
- street
- postal_code
- country
ProcessorToken:
title: ProcessorToken
type: string
description: "The processor token obtained from the Plaid integration partner. Processor tokens are in the format: `processor-<environment>-<identifier>`"
HistoricalBalance:
title: HistoricalBalance
type: object
additionalProperties: true
description: An object representing a balance held by an account in the past
properties:
date:
type: string
format: date
description: The date of the calculated historical balance, in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD)
current:
type: number
description: |-
The total amount of funds in the account, calculated from the `current` balance in the `balance` object by subtracting inflows and adding back outflows according to the posted date of each transaction.
If the account has any pending transactions, historical balance amounts on or after the date of the earliest pending transaction may differ if retrieved in subsequent Asset Reports as a result of those pending transactions posting.
iso_currency_code:
type: string
description: The ISO-4217 currency code of the balance. Always `null` if `unofficial_currency_code` is non-`null`.
nullable: true
unofficial_currency_code:
type: string
description: |-
The unofficial currency code associated with the balance. Always `null` if `iso_currency_code` is non-`null`.
See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.
nullable: true
required:
- date
- current
- iso_currency_code
- unofficial_currency_code
Owner:
title: Owner
type: object
additionalProperties: true
description: Data returned from the financial institution about the owner or owners of an account. Only the `names` array must be non-empty.
properties:
names:
description: |-
A list of names associated with the account by the financial institution. These should always be the names of individuals, even for business accounts. If the name of a business is reported, please contact Plaid Support. In the case of a joint account, Plaid will make a best effort to report the names of all account holders.
If an Item contains multiple accounts with different owner names, some institutions will report all names associated with the Item in each account's `names` array.
type: array
items:
type: string
phone_numbers:
type: array
description: A list of phone numbers associated with the account by the financial institution. May be an empty array if no relevant information is returned from the financial institution.
items:
$ref: "#/components/schemas/PhoneNumber"
emails:
type: array
description: A list of email addresses associated with the account by the financial institution. May be an empty array if no relevant information is returned from the financial institution.
items:
$ref: "#/components/schemas/Email"
addresses:
type: array
description: Data about the various addresses associated with the account by the financial institution. May be an empty array if no relevant information is returned from the financial institution.
items:
$ref: "#/components/schemas/Address"
required:
- names
- phone_numbers
- emails
- addresses
OwnerOverride:
title: OwnerOverride
type: object
additionalProperties: true
description: Data about the owner or owners of an account. Any fields not specified will be filled in with default Sandbox information.
properties:
names:
description: A list of names associated with the account by the financial institution. These should always be the names of individuals, even for business accounts. Note that the same name data will be used for all accounts associated with an Item.
type: array
items:
type: string
phone_numbers:
type: array
description: A list of phone numbers associated with the account.
items:
$ref: "#/components/schemas/PhoneNumber"
emails:
type: array
description: A list of email addresses associated with the account.
items:
$ref: "#/components/schemas/Email"
addresses:
type: array
description: Data about the various addresses associated with the account.
items:
$ref: "#/components/schemas/Address"
required:
- names
- phone_numbers
- emails
- addresses
LiabilitiesObject:
title: LiabilitiesObject
type: object
additionalProperties: true
description: An object containing liability accounts
properties:
credit:
type: array
description: The credit accounts returned.
nullable: true
items:
$ref: "#/components/schemas/CreditCardLiability"
mortgage:
description: The mortgage accounts returned.
type: array
nullable: true
items:
$ref: "#/components/schemas/MortgageLiability"
student:
description: The student loan accounts returned.
type: array
nullable: true
items:
$ref: "#/components/schemas/StudentLoan"
required:
- credit
- mortgage
- student
StudentLoan:
title: StudentLoan
type: object
additionalProperties: true
description: Contains details about a student loan account
properties:
account_id:
type: string
description: The ID of the account that this liability belongs to.
nullable: true
account_number:
type: string
description: The account number of the loan. For some institutions, this may be a masked version of the number (e.g., the last 4 digits instead of the entire number).
nullable: true
disbursement_dates:
description: The dates on which loaned funds were disbursed or will be disbursed. These are often in the past. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
type: array
nullable: true
items:
type: string
format: date
expected_payoff_date:
type: string
format: date
description: The date when the student loan is expected to be paid off. Availability for this field is limited. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
nullable: true
guarantor:
type: string
description: The guarantor of the student loan.
nullable: true
interest_rate_percentage:
description: The interest rate on the loan as a percentage.
type: number
is_overdue:
description: "`true` if a payment is currently overdue. Availability for this field is limited."
type: boolean
nullable: true
last_payment_amount:
description: The amount of the last payment.
type: number
nullable: true
last_payment_date:
type: string
format: date
description: The date of the last payment. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
nullable: true
last_statement_issue_date:
type: string
format: date
description: The date of the last statement. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
nullable: true
loan_name:
type: string
description: The type of loan, e.g., "Consolidation Loans".
nullable: true
loan_status:
$ref: "#/components/schemas/StudentLoanStatus"
minimum_payment_amount:
description: |-
The minimum payment due for the next billing cycle. There are some exceptions:
Some institutions require a minimum payment across all loans associated with an account number. Our API presents that same minimum payment amount on each loan. The institutions that do this are: Great Lakes ( `ins_116861`), Firstmark (`ins_116295`), Commonbond Firstmark Services (`ins_116950`), Nelnet (`ins_116528`), EdFinancial Services (`ins_116304`), Granite State (`ins_116308`), and Oklahoma Student Loan Authority (`ins_116945`).
Firstmark (`ins_116295` ) will display as $0 if there is an autopay program in effect.
type: number
nullable: true
next_payment_due_date:
type: string
format: date
description: The due date for the next payment. The due date is `null` if a payment is not expected. A payment is not expected if `loan_status.type` is `deferment`, `in_school`, `consolidated`, `paid in full`, or `transferred`. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
nullable: true
origination_date:
type: string
format: date
description: |
The date on which the loan was initially lent. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
nullable: true
origination_principal_amount:
description: The original principal balance of the loan.
type: number
nullable: true
outstanding_interest_amount:
description: The total dollar amount of the accrued interest balance. For Sallie Mae ( `ins_116944`), this amount is included in the current balance of the loan, so this field will return as `null`.
type: number
nullable: true
payment_reference_number:
type: string
description: The relevant account number that should be used to reference this loan for payments. In the majority of cases, `payment_reference_number` will match a`ccount_number,` but in some institutions, such as Great Lakes (`ins_116861`), it will be different.
nullable: true
pslf_status:
$ref: "#/components/schemas/PSLFStatus"
repayment_plan:
$ref: "#/components/schemas/StudentRepaymentPlan"
sequence_number:
type: string
description: The sequence number of the student loan. Heartland ECSI (`ins_116948`) does not make this field available.
nullable: true
servicer_address:
$ref: "#/components/schemas/ServicerAddressData"
ytd_interest_paid:
description: The year to date (YTD) interest paid. Availability for this field is limited.
type: number
nullable: true
ytd_principal_paid:
description: The year to date (YTD) principal paid. Availability for this field is limited.
type: number
nullable: true
required:
- account_id
- account_number
- disbursement_dates
- expected_payoff_date
- guarantor
- interest_rate_percentage
- is_overdue
- last_payment_amount
- last_payment_date
- last_statement_issue_date
- loan_name
- loan_status
- minimum_payment_amount
- next_payment_due_date
- origination_date
- origination_principal_amount
- outstanding_interest_amount
- payment_reference_number
- pslf_status
- repayment_plan
- sequence_number
- servicer_address
- ytd_interest_paid
- ytd_principal_paid
CreditCardLiability:
title: CreditCardLiability
type: object
additionalProperties: true
description: An object representing a credit card account.
properties:
account_id:
type: string
description: The ID of the account that this liability belongs to.
nullable: true
aprs:
type: array
description: The various interest rates that apply to the account.
items:
$ref: "#/components/schemas/APR"
is_overdue:
description: true if a payment is currently overdue. Availability for this field is limited.
type: boolean
nullable: true
last_payment_amount:
description: The amount of the last payment.
type: number
last_payment_date:
type: string
format: date
nullable: true
description: The date of the last payment. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). Availability for this field is limited.
last_statement_issue_date:
type: string
format: date
description: The date of the last statement. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
last_statement_balance:
description: The total amount owed as of the last statement issued
type: number
minimum_payment_amount:
description: The minimum payment due for the next billing cycle.
type: number
next_payment_due_date:
type: string
format: date
description: The due date for the next payment. The due date is `null` if a payment is not expected. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
nullable: true
required:
- account_id
- aprs
- is_overdue
- last_payment_amount
- last_payment_date
- last_statement_issue_date
- last_statement_balance
- minimum_payment_amount
- next_payment_due_date
MortgageLiability:
title: MortgageLiability
type: object
additionalProperties: true
description: Contains details about a mortgage account.
properties:
account_id:
type: string
description: The ID of the account that this liability belongs to.
account_number:
type: string
description: The account number of the loan.
current_late_fee:
description: The current outstanding amount charged for late payment.
type: number
nullable: true
escrow_balance:
type: number
description: Total amount held in escrow to pay taxes and insurance on behalf of the borrower.
nullable: true
has_pmi:
type: boolean
description: Indicates whether the borrower has private mortgage insurance in effect.
nullable: true
has_prepayment_penalty:
description: Indicates whether the borrower will pay a penalty for early payoff of mortgage.
type: boolean
nullable: true
interest_rate:
$ref: "#/components/schemas/MortgageInterestRate"
last_payment_amount:
description: The amount of the last payment.
type: number
nullable: true
last_payment_date:
type: string
format: date
description: The date of the last payment. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
nullable: true
loan_type_description:
description: Description of the type of loan, for example `conventional`, `fixed`, or `variable`. This field is provided directly from the loan servicer and does not have an enumerated set of possible values.
type: string
nullable: true
loan_term:
description: Full duration of mortgage as at origination (e.g. `10 year`).
type: string
nullable: true
maturity_date:
type: string
format: date
description: Original date on which mortgage is due in full. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
nullable: true
next_monthly_payment:
type: number
description: The amount of the next payment.
nullable: true
next_payment_due_date:
description: The due date for the next payment. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
type: string
format: date
nullable: true
origination_date:
description: The date on which the loan was initially lent. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
type: string
format: date
nullable: true
origination_principal_amount:
type: number
description: The original principal balance of the mortgage.
nullable: true
past_due_amount:
type: number
description: Amount of loan (principal + interest) past due for payment.
nullable: true
property_address:
$ref: "#/components/schemas/MortgagePropertyAddress"
ytd_interest_paid:
description: The year to date (YTD) interest paid.
type: number
nullable: true
ytd_principal_paid:
type: number
description: The YTD principal paid.
nullable: true
required:
- account_id
- account_number
- current_late_fee
- escrow_balance
- has_pmi
- has_prepayment_penalty
- interest_rate
- last_payment_amount
- last_payment_date
- loan_type_description
- loan_term
- maturity_date
- next_monthly_payment
- next_payment_due_date
- origination_date
- origination_principal_amount
- past_due_amount
- property_address
- ytd_interest_paid
- ytd_principal_paid
MortgageInterestRate:
title: MortgageInterestRate
type: object
additionalProperties: true
description: Object containing metadata about the interest rate for the mortgage.
properties:
percentage:
type: number
description: Percentage value (interest rate of current mortgage, not APR) of interest payable on a loan.
nullable: true
type:
type: string
description: The type of interest charged (fixed or variable).
nullable: true
required:
- percentage
- type
MortgagePropertyAddress:
title: MortgagePropertyAddress
type: object
additionalProperties: true
description: Object containing fields describing property address.
properties:
city:
type: string
description: The city name.
nullable: true
country:
type: string
description: The ISO 3166-1 alpha-2 country code.
nullable: true
postal_code:
type: string
description: The five or nine digit postal code.
nullable: true
region:
type: string
description: The region or state (example "NC").
nullable: true
street:
type: string
description: The full street address (example "564 Main Street, Apt 15").
nullable: true
required:
- city
- country
- postal_code
- region
- street
StudentLoanStatus:
title: StudentLoanStatus
type: object
additionalProperties: true
description: An object representing the status of the student loan
properties:
end_date:
type: string
format: date
description: |
The date until which the loan will be in its current status. Dates are returned in an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
nullable: true
type:
type: string
enum:
- cancelled
- charged off
- claim
- consolidated
- deferment
- delinquent
- discharged
- extension
- forbearance
- in grace
- in military
- in school
- not fully disbursed
- other
- paid in full
- refunded
- repayment
- transferred
description: The status type of the student loan
nullable: true
required:
- end_date
- type
StudentRepaymentPlan:
title: StudentRepaymentPlan
type: object
additionalProperties: true
description: An object representing the repayment plan for the student loan
properties:
description:
type: string
nullable: true
description: The description of the repayment plan as provided by the servicer.
type:
type: string
nullable: true
enum:
- extended graduated
- extended standard
- graduated
- income-contingent repayment
- income-based repayment
- interest-only
- other
- pay as you earn
- revised pay as you earn
- standard
- null
description: The type of the repayment plan.
required:
- description
- type
PSLFStatus:
title: PSLFStatus
type: object
additionalProperties: true
description: "Information about the student's eligibility in the Public Service Loan Forgiveness program. This is only returned if the institution is Fedloan (`ins_116527`). "
properties:
estimated_eligibility_date:
type: string
format: date
description: The estimated date borrower will have completed 120 qualifying monthly payments. Returned in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD).
nullable: true
payments_made:
type: number
description: The number of qualifying payments that have been made.
nullable: true
payments_remaining:
type: number
description: The number of qualifying payments remaining.
nullable: true
required:
- estimated_eligibility_date
- payments_made
- payments_remaining
ServicerAddressData:
title: ServicerAddressData
type: object
additionalProperties: true
description: The address of the student loan servicer. This is generally the remittance address to which payments should be sent.
properties:
city:
type: string
description: The full city name
nullable: true
region:
type: string
description: |-
The region or state
Example: `"NC"`
nullable: true
street:
type: string
description: |-
The full street address
Example: `"564 Main Street, APT 15"`
nullable: true
postal_code:
type: string
description: The postal code
nullable: true
country:
type: string
description: The ISO 3166-1 alpha-2 country code
nullable: true
required:
- city
- region
- street
- postal_code
- country
APR:
title: APR
type: object
additionalProperties: true
description: Information about the APR on the account.
properties:
apr_percentage:
type: number
description: |
Annual Percentage Rate applied.
apr_type:
type: string
enum:
- balance_transfer_apr
- cash_apr
- purchase_apr
- special
description: The type of balance to which the APR applies.
balance_subject_to_apr:
type: number
description: Amount of money that is subjected to the APR if a balance was carried beyond payment due date. How it is calculated can vary by card issuer. It is often calculated as an average daily balance.
nullable: true
interest_charge_amount:
type: number
description: Amount of money charged due to interest from last statement.
nullable: true
required:
- apr_percentage
- apr_type
- balance_subject_to_apr
- interest_charge_amount
AuthMetadata:
title: AuthMetadata
type: object
additionalProperties: true
description: Metadata that captures information about the Auth features of an institution.
nullable: true
properties:
supported_methods:
$ref: "#/components/schemas/AuthSupportedMethods"
required:
- supported_methods
AuthSupportedMethods:
title: AuthSupportedMethods
type: object
additionalProperties: true
description: Metadata specifically related to which auth methods an institution supports.
nullable: true
properties:
instant_auth:
type: boolean
description: Indicates if instant auth is supported.
instant_match:
type: boolean
description: Indicates if instant match is supported.
automated_micro_deposits:
type: boolean
description: Indicates if automated microdeposits are supported.
required:
- instant_auth
- instant_match
- automated_micro_deposits
PaymentInitiationMetadata:
title: PaymentInitiationMetadata
type: object
additionalProperties: true
description: Metadata that captures what specific payment configurations an institution supports when making Payment Initiation requests.
nullable: true
properties:
supports_international_payments:
type: boolean
description: Indicates whether the institution supports payments from a different country.
maximum_payment_amount:
type: object
description: |
A mapping of currency to maximum payment amount (denominated in the smallest unit of currency) supported by the insitution.
Example: `{"GBP": "10000"}`
additionalProperties:
type: string
supports_refund_details:
type: boolean
description: Indicates whether the institution supports returning refund details when initiating a payment.
standing_order_metadata:
$ref: "#/components/schemas/PaymentInitiationStandingOrderMetadata"
required:
- supports_international_payments
- maximum_payment_amount
- supports_refund_details
- standing_order_metadata
PaymentInitiationStandingOrderMetadata:
title: PaymentInitiationStandingOrderMetadata
type: object
additionalProperties: true
description: Metadata specifically related to valid Payment Initiation standing order configurations for the institution.
nullable: true
properties:
supports_standing_order_end_date:
type: boolean
description: Indicates whether the institution supports closed-ended standing orders by providing an end date.
supports_standing_order_negative_execution_days:
type: boolean
description: This is only applicable to `MONTHLY` standing orders. Indicates whether the institution supports negative integers (-1 to -5) for setting up a `MONTHLY` standing order relative to the end of the month.
valid_standing_order_intervals:
type: array
description: A list of the valid standing order intervals supported by the institution.
items:
$ref: "#/components/schemas/PaymentScheduleInterval"
required:
- supports_standing_order_end_date
- supports_standing_order_negative_execution_days
- valid_standing_order_intervals
PaymentInitiationAddress:
title: PaymentInitiationAddress
type: object
additionalProperties: true
description: The optional address of the payment recipient. This object is not currently required to make payments from UK institutions and should not be populated, though may be necessary for future European expansion.
nullable: true
properties:
street:
description: An array of length 1-2 representing the street address where the recipient is located. Maximum of 70 characters.
type: array
minItems: 1
items:
type: string
minLength: 1
city:
type: string
description: The city where the recipient is located. Maximum of 35 characters.
minLength: 1
maxLength: 35
postal_code:
type: string
description: The postal code where the recipient is located. Maximum of 16 characters.
minLength: 1
maxLength: 16
country:
type: string
description: The ISO 3166-1 alpha-2 country code where the recipient is located.
minLength: 2
maxLength: 2
required:
- street
- city
- postal_code
- country
ExternalPaymentScheduleBase:
title: ExternalPaymentScheduleBase
type: object
additionalProperties: true
description: The schedule that the payment will be executed on. If a schedule is provided, the payment is automatically set up as a standing order. If no schedule is specified, the payment will be executed only once.
nullable: true
properties:
interval:
$ref: "#/components/schemas/PaymentScheduleInterval"
interval_execution_day:
description: |-
The day of the interval on which to schedule the payment.
If the payment interval is weekly, `interval_execution_day` should be an integer from 1 (Monday) to 7 (Sunday).
If the payment interval is monthly, `interval_execution_day` should be an integer indicating which day of the month to make the payment on. Integers from 1 to 28 can be used to make a payment on that day of the month. Negative integers from -1 to -5 can be used to make a payment relative to the end of the month. To make a payment on the last day of the month, use -1; to make the payment on the second-to-last day, use -2, and so on.
type: integer
start_date:
format: date
type: string
description: |-
A date in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). Standing order payments will begin on the first `interval_execution_day` on or after the `start_date`.
If the first `interval_execution_day` on or after the start date is also the same day that `/payment_initiation/payment/create` was called, the bank *may* make the first payment on that day, but it is not guaranteed to do so.
end_date:
format: date
type: string
description: |-
A date in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). Standing order payments will end on the last `interval_execution_day` on or before the `end_date`.
If the only `interval_execution_day` between the start date and the end date (inclusive) is also the same day that `/payment_initiation/payment/create` was called, the bank *may* make a payment on that day, but it is not guaranteed to do so.
nullable: true
adjusted_start_date:
format: date
type: string
description: The start date sent to the bank after adjusting for holidays or weekends. Will be provided in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). If the start date did not require adjustment, this field will be `null`.
nullable: true
ExternalPaymentScheduleRequest:
title: ExternalPaymentScheduleRequest
additionalProperties: true
description: The schedule that the payment will be executed on. If a schedule is provided, the payment is automatically set up as a standing order. If no schedule is specified, the payment will be executed only once.
allOf:
- $ref: "#/components/schemas/ExternalPaymentScheduleBase"
- type: object
required:
- start_date
- interval
- interval_execution_day
PaymentScheduleInterval:
type: string
title: PaymentScheduleInterval
enum:
- WEEKLY
- MONTHLY
description: The frequency interval of the payment.
minLength: 1
PaymentScheme:
type: string
nullable: true
enum:
- null
- FASTER_PAYMENTS
- SEPA_CREDIT_TRANSFER
- SEPA_CREDIT_TRANSFER_INSTANT
description: |-
Payment scheme. If not specified - the default in the region will be used (e.g. `SEPA_CREDIT_TRANSFER` for EU). Using unsupported values will result in a failed payment.
`FASTER_PAYMENTS`: Enables payments to move quickly between UK bank accounts. Default value in the UK.
`SEPA_CREDIT_TRANSFER`: The standard payment to a beneficiary within the SEPA area.
`SEPA_CREDIT_TRANSFER_INSTANT`: Instant payment within the SEPA area. May involve additional fees and may not be available at some banks.
ExternalPaymentOptions:
title: PaymentOptions
description: Additional payment options
type: object
additionalProperties: true
nullable: true
properties:
request_refund_details:
type: boolean
nullable: true
description: When `true`, Plaid will attempt to request refund details from the payee's financial institution. Support varies between financial institutions and will not always be available. If refund details could be retrieved, they will be available in the `/payment_initiation/payment/get` response.
iban:
type: string
nullable: true
minLength: 15
maxLength: 34
description: The International Bank Account Number (IBAN) for the payer's account. If provided, the end user will be able to send payments only from the specified bank account.
bacs:
$ref: "#/components/schemas/PaymentInitiationOptionalRestrictionBacs"
wallet_id:
type: string
nullable: true
description: The EMI (E-Money Institution) wallet that this payment is associated with, if any. This wallet is used as an intermediary account to enable Plaid to reconcile the settlement of funds for Payment Initiation requests.
minLength: 1
scheme:
$ref: "#/components/schemas/PaymentScheme"
scheme_automatic_downgrade:
type: boolean
nullable: true
description: When `true`, Plaid will attempt to automatically downgrade payment `scheme` (e.g. `SEPA_CREDIT_TRANSFER_INSTANT` to `SEPA_CREDIT_TRANSFER`) when the requested scheme is not supported by the bank.
ExternalPaymentRefundDetails:
title: ExternalPaymentRefundDetails
type: object
nullable: true
properties:
name:
type: string
description: The name of the account holder.
iban:
type: string
description: The International Bank Account Number (IBAN) for the account.
nullable: true
bacs:
$ref: "#/components/schemas/RecipientBACSNullable"
required:
- name
- iban
- bacs
ExternalPaymentScheduleGet:
title: ExternalPaymentScheduleGet
nullable: true
description: The schedule that the payment will be executed on. If a schedule is provided, the payment is automatically set up as a standing order. If no schedule is specified, the payment will be executed only once.
allOf:
- $ref: "#/components/schemas/ExternalPaymentScheduleBase"
- type: object
required:
- adjusted_start_date
- end_date
- interval
- interval_execution_day
- start_date
Products:
title: Products
enum:
- assets
- auth
- balance
- identity
- investments
- liabilities
- payment_initiation
- transactions
- credit_details
- income
- income_verification
- deposit_switch
- standing_orders
- transfer
description: A list of products that an institution can support. All Items must be initialized with at least one product. The Balance product is always available and does not need to be specified during initialization.
type: string
ProductStatus:
title: ProductStatus
type: object
additionalProperties: true
description: A representation of the status health of a request type. Auth requests, Balance requests, Identity requests, Investments requests, Liabilities requests, Transactions updates, Investments updates, Liabilities updates, and Item logins each have their own status object.
properties:
status:
type: string
deprecated: true
enum:
- HEALTHY
- DEGRADED
- DOWN
description: |-
This field is deprecated in favor of the `breakdown` object, which provides more granular institution health data.
`HEALTHY`: the majority of requests are successful
`DEGRADED`: only some requests are successful
`DOWN`: all requests are failing
last_status_change:
type: string
format: date-time
description: |
[ISO 8601](https://wikipedia.org/wiki/ISO_8601) formatted timestamp of the last status change for the institution.
breakdown:
$ref: "#/components/schemas/ProductStatusBreakdown"
required:
- status
- last_status_change
- breakdown
ProductStatusBreakdown:
title: StatusBreakdown
type: object
additionalProperties: true
description: A detailed breakdown of the institution's performance for a request type. The values for `success`, `error_plaid`, and `error_institution` sum to 1.
properties:
success:
description: The percentage of login attempts that are successful, expressed as a decimal.
type: number
error_plaid:
description: |
The percentage of logins that are failing due to an internal Plaid issue, expressed as a decimal.
type: number
error_institution:
description: The percentage of logins that are failing due to an issue in the institution's system, expressed as a decimal.
type: number
refresh_interval:
type: string
enum:
- NORMAL
- DELAYED
- STOPPED
description: The `refresh_interval` may be `DELAYED` or `STOPPED` even when the success rate is high. This value is only returned for Transactions status breakdowns.
required:
- success
- error_plaid
- error_institution
UserCustomPassword:
title: UserCustomPassword
type: object
additionalProperties: true
description: Custom test accounts are configured with a JSON configuration object formulated according to the schema below. All fields are optional. Sending an empty object as a configuration will result in an account configured with random balances and transaction history.
x-examples: {}
properties:
version:
type: string
description: The version of the password schema to use, possible values are 1 or 2. The default value is 2. You should only specify 1 if you know it is necessary for your test suite.
nullable: true
seed:
type: string
description: |-
A seed, in the form of a string, that will be used to randomly generate account and transaction data, if this data is not specified using the `override_accounts` argument. If no seed is specified, the randomly generated data will be different each time.
Note that transactions data is generated relative to the Item's creation date. Different Items created on different dates with the same seed for transactions data will have different dates for the transactions. The number of days between each transaction and the Item creation will remain constant. For example, an Item created on December 15 might show a transaction on December 14. An Item created on December 20, using the same seed, would show that same transaction occurring on December 19.
override_accounts:
type: array
description: An array of account overrides to configure the accounts for the Item. By default, if no override is specified, transactions and account data will be randomly generated based on the account type and subtype, and other products will have fixed or empty data.
items:
$ref: "#/components/schemas/OverrideAccounts"
mfa:
$ref: "#/components/schemas/MFA"
recaptcha:
type: string
description: You may trigger a reCAPTCHA in Plaid Link in the Sandbox environment by using the recaptcha field. Possible values are `good` or `bad`. A value of `good` will result in successful Item creation and `bad` will result in a `RECAPTCHA_BAD` error to simulate a failed reCAPTCHA. Both values require the reCAPTCHA to be manually solved within Plaid Link.
force_error:
type: string
description: |-
An error code to force on Item creation. Possible values are:
`"INSTITUTION_NOT_RESPONDING"`
`"INSTITUTION_NO_LONGER_SUPPORTED"`
`"INVALID_CREDENTIALS"`
`"INVALID_MFA"`
`"ITEM_LOCKED"`
`"ITEM_LOGIN_REQUIRED"`
`"ITEM_NOT_SUPPORTED"`
`"INVALID_LINK_TOKEN"`
`"MFA_NOT_SUPPORTED"`
`"NO_ACCOUNTS"`
`"PLAID_ERROR"`
`"PRODUCTS_NOT_SUPPORTED"`
`"USER_SETUP_REQUIRED"`
required:
- seed
- override_accounts
- mfa
- recaptcha
- force_error
MFA:
title: MFA
type: object
additionalProperties: true
properties:
type:
type: string
description: |-
Possible values are `device`, `selections`, or `questions`.
If value is `device`, the MFA answer is `1234`.
If value is `selections`, the MFA answer is always the first option.
If value is `questions`, the MFA answer is `answer_<i>_<j>` for the j-th question in the i-th round, starting from 0. For example, the answer to the first question in the second round is `answer_1_0`.
question_rounds:
type: number
description: "Number of rounds of questions. Required if value of `type` is `questions`. "
questions_per_round:
type: number
description: Number of questions per round. Required if value of `type` is `questions`. If value of type is `selections`, default value is 2.
selection_rounds:
description: Number of rounds of selections, used if `type` is `selections`. Defaults to 1.
type: number
selections_per_question:
type: number
description: |
Number of available answers per question, used if `type` is `selection`. Defaults to 2.
required:
- type
- question_rounds
- questions_per_round
- selection_rounds
- selections_per_question
description: Specifies the multi-factor authentication settings to use with this test account
OverrideAccounts:
title: OverrideAccounts
type: object
additionalProperties: true
description: Data to use to set values of test accounts. Some values cannot be specified in the schema and will instead will be calculated from other test data in order to achieve more consistent, realistic test data.
properties:
type:
$ref: "#/components/schemas/OverrideAccountType"
subtype:
$ref: "#/components/schemas/AccountSubtype"
starting_balance:
type: number
description: |
If provided, the account will start with this amount as the current balance.
force_available_balance:
type: number
description: If provided, the account will always have this amount as its available balance, regardless of current balance or changes in transactions over time.
currency:
type: string
description: ISO-4217 currency code. If provided, the account will be denominated in the given currency. Transactions will also be in this currency by default.
meta:
$ref: "#/components/schemas/Meta"
numbers:
$ref: "#/components/schemas/Numbers"
transactions:
description: Specify the list of transactions on the account.
type: array
items:
$ref: "#/components/schemas/TransactionOverride"
holdings:
$ref: "#/components/schemas/HoldingsOverride"
investment_transactions:
$ref: "#/components/schemas/Investments_TransactionsOverride"
identity:
$ref: "#/components/schemas/OwnerOverride"
liability:
$ref: "#/components/schemas/LiabilityOverride"
inflow_model:
$ref: "#/components/schemas/InflowModel"
income:
$ref: "#/components/schemas/IncomeOverride"
required:
- type
- subtype
- starting_balance
- force_available_balance
- currency
- meta
- numbers
- transactions
- identity
- liability
- inflow_model
Meta:
title: Meta
type: object
additionalProperties: true
description: Allows specifying the metadata of the test account
properties:
name:
type: string
description: The account's name
official_name:
type: string
description: The account's official name
limit:
type: number
description: The account's limit
required:
- name
- official_name
- limit
Numbers:
title: Numbers
type: object
additionalProperties: true
description: Account and bank identifier number data used to configure the test account. All values are optional.
properties:
account:
type: string
description: Will be used for the account number.
ach_routing:
type: string
description: Must be a valid ACH routing number.
ach_wire_routing:
type: string
description: Must be a valid wire transfer routing number.
eft_institution:
type: string
description: EFT institution number. Must be specified alongside `eft_branch`.
eft_branch:
type: string
description: EFT branch number. Must be specified alongside `eft_institution`.
international_bic:
type: string
description: Bank identifier code (BIC). Must be specified alongside `international_iban`.
international_iban:
type: string
description: International bank account number (IBAN). If no account number is specified via `account`, will also be used as the account number by default. Must be specified alongside `international_bic`.
bacs_sort_code:
type: string
description: BACS sort code
TransactionOverride:
title: TransactionOverride
type: object
additionalProperties: true
description: Data to populate as test transaction data. If not specified, random transactions will be generated instead.
properties:
date_transacted:
type: string
format: date
description: The date of the transaction, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format. Transactions in Sandbox will move from pending to posted once their transaction date has been reached.
date_posted:
type: string
format: date
description: The date the transaction posted, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format. Posted dates in the past or present will result in posted transactions; posted dates in the future will result in pending transactions.
amount:
type: number
description: The transaction amount. Can be negative.
description:
type: string
description: The transaction description.
currency:
type: string
description: The ISO-4217 format currency code for the transaction.
required:
- date_transacted
- date_posted
- amount
- description
SecurityOverride:
type: object
title: SecurityOverride
description: Specify the security associated with the holding or investment transaction. When inputting custom security data to the Sandbox, Plaid will perform post-data-retrieval normalization and enrichment. These processes may cause the data returned by the Sandbox to be slightly different from the data you input. An ISO-4217 currency code and a security identifier (`ticker_symbol`, `cusip`, `isin`, or `sedol`) are required.
properties:
isin:
description: 12-character ISIN, a globally unique securities identifier.
type: string
cusip:
description: 9-character CUSIP, an identifier assigned to North American securities.
type: string
sedol:
description: 7-character SEDOL, an identifier assigned to securities in the UK.
type: string
name:
description: A descriptive name for the security, suitable for display.
type: string
ticker_symbol:
description: The security’s trading symbol for publicly traded securities, and otherwise a short identifier if available.
type: string
currency:
description: Either a valid `iso_currency_code` or `unofficial_currency_code`
type: string
HoldingsOverride:
type: object
title: HoldingsOverride
description: Specify the holdings on the account.
properties:
institution_price:
description: The last price given by the institution for this security
type: number
institution_price_as_of:
description: The date at which `institution_price` was current. Must be formatted as an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) date.
type: string
format: date
cost_basis:
description: The average original value of the holding. Multiple cost basis values for the same security purchased at different prices are not supported.
type: number
quantity:
description: The total quantity of the asset held, as reported by the financial institution.
type: number
currency:
description: Either a valid `iso_currency_code` or `unofficial_currency_code`
type: string
security:
$ref: "#/components/schemas/SecurityOverride"
required:
- institution_price
- quantity
- currency
- security
Investments_TransactionsOverride:
type: object
description: Specify the list of investments transactions on the account.
title: Investments_TransactionsOverride
properties:
date:
description: Posting date for the transaction. Must be formatted as an [ISO 8601](https://wikipedia.org/wiki/ISO_8601) date.
type: string
format: date
name:
description: The institution's description of the transaction.
type: string
quantity:
description: The number of units of the security involved in this transaction. Must be positive if the type is a buy and negative if the type is a sell.
type: number
price:
description: The price of the security at which this transaction occurred.
type: number
fees:
description: The combined value of all fees applied to this transaction.
type: number
type:
description: |-
The type of the investment transaction. Possible values are:
`buy`: Buying an investment
`sell`: Selling an investment
`cash`: Activity that modifies a cash position
`fee`: A fee on the account
`transfer`: Activity that modifies a position, but not through buy/sell activity e.g. options exercise, portfolio transfer
type: string
currency:
description: Either a valid `iso_currency_code` or `unofficial_currency_code`
type: string
security:
$ref: "#/components/schemas/SecurityOverride"
required:
- date
- name
- quantity
- price
- type
- currency
LiabilityOverride:
type: object
additionalProperties: true
title: LiabilityOverride
properties:
type:
description: The type of the liability object, either `credit` or `student`. Mortgages are not currently supported in the custom Sandbox.
type: string
purchase_apr:
description: The purchase APR percentage value. For simplicity, this is the only interest rate used to calculate interest charges. Can only be set if `type` is `credit`.
type: number
cash_apr:
type: number
description: The cash APR percentage value. Can only be set if `type` is `credit`.
balance_transfer_apr:
type: number
description: The balance transfer APR percentage value. Can only be set if `type` is `credit`. Can only be set if `type` is `credit`.
special_apr:
type: number
description: The special APR percentage value. Can only be set if `type` is `credit`.
last_payment_amount:
type: number
description: Override the `last_payment_amount` field. Can only be set if `type` is `credit`.
minimum_payment_amount:
type: number
description: Override the `minimum_payment_amount` field. Can only be set if `type` is `credit` or `student`.
is_overdue:
type: boolean
description: Override the `is_overdue` field
origination_date:
type: string
format: date
description: The date on which the loan was initially lent, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format. Can only be set if `type` is `student`.
principal:
description: The original loan principal. Can only be set if `type` is `student`.
type: number
nominal_apr:
description: The interest rate on the loan as a percentage. Can only be set if `type` is `student`.
type: number
interest_capitalization_grace_period_months:
type: number
description: If set, interest capitalization begins at the given number of months after loan origination. By default interest is never capitalized. Can only be set if `type` is `student`.
repayment_model:
$ref: "#/components/schemas/StudentLoanRepaymentModel"
expected_payoff_date:
type: string
format: date
description: Override the `expected_payoff_date` field. Can only be set if `type` is `student`.
guarantor:
type: string
description: Override the `guarantor` field. Can only be set if `type` is `student`.
is_federal:
description: Override the `is_federal` field. Can only be set if `type` is `student`.
type: boolean
loan_name:
type: string
description: Override the `loan_name` field. Can only be set if `type` is `student`.
loan_status:
$ref: "#/components/schemas/StudentLoanStatus"
payment_reference_number:
type: string
description: Override the `payment_reference_number` field. Can only be set if `type` is `student`.
pslf_status:
$ref: "#/components/schemas/PSLFStatus"
repayment_plan_description:
type: string
description: Override the `repayment_plan.description` field. Can only be set if `type` is `student`.
repayment_plan_type:
description: 'Override the `repayment_plan.type` field. Can only be set if `type` is `student`. Possible values are: `"extended graduated"`, `"extended standard"`, `"graduated"`, `"income-contingent repayment"`, `"income-based repayment"`, `"interest only"`, `"other"`, `"pay as you earn"`, `"revised pay as you earn"`, or `"standard"`.'
type: string
sequence_number:
type: string
description: Override the `sequence_number` field. Can only be set if `type` is `student`.
servicer_address:
$ref: "#/components/schemas/Address"
required:
- type
- purchase_apr
- cash_apr
- balance_transfer_apr
- special_apr
- last_payment_amount
- minimum_payment_amount
- is_overdue
- origination_date
- principal
- nominal_apr
- interest_capitalization_grace_period_months
- repayment_model
- expected_payoff_date
- guarantor
- is_federal
- loan_name
- loan_status
- payment_reference_number
- pslf_status
- repayment_plan_description
- repayment_plan_type
- sequence_number
- servicer_address
description: Used to configure Sandbox test data for the Liabilities product
StudentLoanRepaymentModel:
title: StudentLoanRepaymentModel
type: object
additionalProperties: true
properties:
type:
type: string
description: The only currently supported value for this field is `standard`.
non_repayment_months:
description: Configures the number of months before repayment starts.
type: number
repayment_months:
description: Configures the number of months of repayments before the loan is paid off.
type: number
required:
- type
- non_repayment_months
- repayment_months
description: Student loan repayment information used to configure Sandbox test data for the Liabilities product
InflowModel:
title: InflowModel
type: object
additionalProperties: true
description: The `inflow_model` allows you to model a test account that receives regular income or make regular payments on a loan. Any transactions generated by the `inflow_model` will appear in addition to randomly generated test data or transactions specified by `override_accounts`.
properties:
type:
type: string
description: "Inflow model. One of the following:\n\n`none`: No income\n\n`monthly-income`: Income occurs once per month `monthly-balance-payment`: Pays off the balance on a liability account at the given statement day of month.\n\n`monthly-interest-only-payment`: Makes an interest-only payment on a liability account at the given statement day of month. \n\nNote that account types supported by Liabilities will accrue interest in the Sandbox. The types impacted are account type `credit` with subtype `credit` or `paypal`, and account type `loan` with subtype `student` or `mortgage`."
income_amount:
type: number
description: Amount of income per month. This value is required if `type` is `monthly-income`.
payment_day_of_month:
description: Number between 1 and 28, or `last` meaning the last day of the month. The day of the month on which the income transaction will appear. The name of the income transaction. This field is required if `type` is `monthly-income`, `monthly-balance-payment` or `monthly-interest-only-payment`.
type: number
transaction_name:
type: string
description: The name of the income transaction. This field is required if `type` is `monthly-income`, `monthly-balance-payment` or `monthly-interest-only-payment`.
statement_day_of_month:
description: Number between 1 and 28, or `last` meaning the last day of the month. The day of the month on which the balance is calculated for the next payment. The name of the income transaction. This field is required if `type` is `monthly-balance-payment` or `monthly-interest-only-payment`.
type: string
required:
- type
- income_amount
- payment_day_of_month
- transaction_name
- statement_day_of_month
IncomeOverride:
title: IncomeOverride
type: object
description: Specify payroll data on the account.
properties:
paystubs:
type: array
description: A list of paystubs associated with the account.
items:
$ref: "#/components/schemas/PaystubOverride"
PaystubOverride:
title: PaystubOverride
type: object
description: An object representing data from a paystub.
properties:
employer:
type: object
description: The employer on the paystub.
properties:
name:
type: string
description: The name of the employer.
employee:
type: object
description: The employee on the paystub.
properties:
name:
type: string
description: The name of the employee.
address:
type: object
description: The address of the employee.
properties:
city:
type: string
description: The full city name.
region:
type: string
description: |-
The region or state
Example: `"NC"`
street:
type: string
description: |-
The full street address
Example: `"564 Main Street, APT 15"`
postal_code:
type: string
description: 5 digit postal code.
country:
type: string
description: The country of the address.
income_breakdown:
type: array
items:
$ref: "#/components/schemas/IncomeBreakdown"
pay_period_details:
$ref: "#/components/schemas/PayPeriodDetails"
ItemId:
title: ItemId
type: string
description: The `item_id` of the Item associated with this webhook, warning, or error
AutomaticallyVerifiedWebhook:
title: AutomaticallyVerifiedWebhook
type: object
additionalProperties: true
description: Fired when an Item is verified via automated micro-deposits. We recommend communicating to your users when this event is received to notify them that their account is verified and ready for use.
properties:
webhook_type:
type: string
description: "`AUTH`"
webhook_code:
type: string
description: "`AUTOMATICALLY_VERIFIED`"
account_id:
type: string
description: The `account_id` of the account associated with the webhook
item_id:
$ref: "#/components/schemas/ItemId"
required:
- webhook_type
- webhook_code
- account_id
- item_id
x-examples:
example-1:
webhook_type: AUTH
webhook_code: AUTOMATICALLY_VERIFIED
item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6
account_id: dVzbVMLjrxTnLjX4G66XUp5GLklm4oiZy88yK
JWTHeader:
title: JWTHeader
type: object
additionalProperties: true
properties:
id:
type: string
required:
- id
description: A JWT Header, used for webhook validation
VerificationExpiredWebhook:
title: VerificationExpiredWebhook
type: object
additionalProperties: true
description: Fired when an Item was not verified via automated micro-deposits after seven days since the automated micro-deposit was made.
x-examples:
example-1:
webhook_type: AUTH
webhook_code: VERIFICATION_EXPIRED
item_id: eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6
account_id: BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp
properties:
webhook_type:
type: string
description: "`AUTH`"
webhook_code:
type: string
description: "`VERIFICATION_EXPIRED`"
item_id:
$ref: "#/components/schemas/ItemId"
account_id:
type: string
description: The `account_id` of the account associated with the webhook
required:
- webhook_type
- webhook_code
- item_id
- account_id
WebhookUpdateAcknowledgedWebhook:
title: WebhookUpdateAcknowledgedWebhook
type: object
additionalProperties: true
description: Fired when an Item's webhook is updated. This will be sent to the newly specified webhook.
x-examples:
example-1:
webhook_type: ITEM
webhook_code: WEBHOOK_UPDATE_ACKNOWLEDGED
item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb
error: null
new_webhook_url: https://plaid.com/example/webhook
properties:
webhook_type:
type: string
description: "`ITEM`"
webhook_code:
type: string
description: "`WEBHOOK_UPDATE_ACKNOWLEDGED`"
item_id:
$ref: "#/components/schemas/ItemId"
new_webhook_url:
type: string
description: The new webhook URL
error:
$ref: "#/components/schemas/PlaidError"
required:
- webhook_type
- webhook_code
- item_id
- new_webhook_url
PendingExpirationWebhook:
title: PendingExpirationWebhook
type: object
additionalProperties: true
description: Fired when an Item’s access consent is expiring in 7 days. Some Items have explicit expiration times and we try to relay this when possible to reduce service disruption. This can be resolved by having the user go through Link’s update mode.
properties:
webhook_type:
type: string
description: "`ITEM`"
webhook_code:
type: string
description: "`PENDING_EXPIRATION`"
item_id:
$ref: "#/components/schemas/ItemId"
consent_expiration_time:
type: string
format: date-time
description: The date and time at which the Item's access consent will expire, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format
required:
- webhook_type
- webhook_code
- item_id
- consent_expiration_time
x-examples:
example-1:
webhook_type: ITEM
webhook_code: PENDING_EXPIRATION
item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb
consent_expiration_time: "2020-01-15T13:25:17.766Z"
ItemErrorWebhook:
title: ItemErrorWebhook
type: object
additionalProperties: true
description: Fired when an error is encountered with an Item. The error can be resolved by having the user go through Link’s update mode.
properties:
webhook_type:
type: string
description: "`ITEM`"
webhook_code:
type: string
description: "`ERROR`"
item_id:
$ref: "#/components/schemas/ItemId"
error:
$ref: "#/components/schemas/PlaidError"
required:
- webhook_type
- webhook_code
- item_id
- error
x-examples:
example-1:
webhook_type: ITEM
webhook_code: ERROR
item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb
error:
display_message: null
error_code: ITEM_LOGIN_REQUIRED
error_message: the login details of this item have changed (credentials, MFA, or required user action) and a user login is required to update this information. use Link's update mode to restore the item to a good state
error_type: ITEM_ERROR
status: 400
ItemProductReadyWebhook:
title: ItemProductReadyWebhook
type: object
additionalProperties: true
description: Fired once Plaid calculates income from an Item.
properties:
webhook_type:
type: string
description: "`INCOME`"
webhook_code:
type: string
description: "`PRODUCT_READY`"
item_id:
$ref: "#/components/schemas/ItemId"
error:
$ref: "#/components/schemas/PlaidError"
required:
- webhook_type
- webhook_code
- item_id
x-examples:
example-1:
webhook_type: INCOME
webhook_code: PRODUCT_READY
item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb
error: null
Recaptcha_RequiredError:
title: Recaptcha_RequiredError
type: object
additionalProperties: true
description: The request was flagged by Plaid's fraud system, and requires additional verification to ensure they are not a bot.
x-examples:
example-1:
error_type: RECAPTCHA_ERROR
error_code: RECAPTCHA_REQUIRED
error_message: This request requires additional verification. Please resubmit the request after completing the challenge
display_message: null
http_code: 400
request_id: HNTDNrA8F1shFEW
properties:
error_type:
type: string
description: RECAPTCHA_ERROR
error_code:
type: string
description: RECAPTCHA_REQUIRED
display_message:
type: string
http_code:
type: string
description: "400"
link_user_experience:
type: string
description: Your user will be prompted to solve a Google reCAPTCHA challenge in the Link Recaptcha pane. If they solve the challenge successfully, the user's request is resubmitted and they are directed to the next Item creation step.
common_causes:
type: string
description: Plaid's fraud system detects abusive traffic and considers a variety of parameters throughout Item creation requests. When a request is considered risky or possibly fraudulent, Link presents a reCAPTCHA for the user to solve.
troubleshooting_steps:
type: string
description: |-
Link will automatically guide your user through reCAPTCHA verification. As a general rule, we recommend instrumenting basic fraud monitoring to detect and protect your website from spam and abuse.
If your user cannot verify their session, please submit a Support ticket with the following identifiers: `link_session_id` or `request_id`
required:
- error_type
- error_code
- display_message
- http_code
- link_user_experience
- common_causes
- troubleshooting_steps
BankTransfersEventsUpdateWebhook:
title: BankTransfersEventsUpdateWebhook
type: object
additionalProperties: true
description: Fired when new bank transfer events are available. Receiving this webhook indicates you should fetch the new events from `/bank_transfer/event/sync`.
x-examples:
example-1:
webhook_type: BANK_TRANSFERS
webhook_code: BANK_TRANSFERS_EVENTS_UPDATE
properties:
webhook_type:
type: string
description: "`BANK_TRANSFERS`"
webhook_code:
type: string
description: "`BANK_TRANSFERS_EVENTS_UPDATE`"
required:
- webhook_type
- webhook_code
InvestmentsDefaultUpdateWebhook:
title: TransactionsUpdateInvestmentsWebhook
type: object
additionalProperties: true
description: Fired when new or canceled transactions have been detected on an investment account.
x-examples:
example-1:
webhook_type: INVESTMENTS_TRANSACTIONS
webhook_code: DEFAULT_UPDATE
item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb
error: null
new_investments_transactions: 16
canceled_investments_transactions: 0
properties:
webhook_type:
type: string
description: "`INVESTMENTS_TRANSACTIONS`"
webhook_code:
type: string
description: "`DEFAULT_UPDATE`"
item_id:
$ref: "#/components/schemas/ItemId"
error:
$ref: "#/components/schemas/PlaidError"
new_investments_transactions:
type: number
description: The number of new transactions reported since the last time this webhook was fired.
canceled_investments_transactions:
type: number
description: The number of canceled transactions reported since the last time this webhook was fired.
required:
- webhook_type
- webhook_code
- item_id
- new_investments_transactions
- canceled_investments_transactions
HoldingsDefaultUpdateWebhook:
title: HoldingsDefaultUpdateWebhook
type: object
additionalProperties: true
description: Fired when new or updated holdings have been detected on an investment account. The webhook typically fires once per day, after market close, in response to any newly added holdings or price changes to existing holdings.
x-examples:
example-1:
webhook_type: HOLDINGS
webhook_code: DEFAULT_UPDATE
item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb
error: null
new_holdings: 19
updated_holdings: 0
properties:
webhook_type:
type: string
description: "`HOLDINGS`"
webhook_code:
type: string
description: "`DEFAULT_UPDATE`"
item_id:
$ref: "#/components/schemas/ItemId"
error:
$ref: "#/components/schemas/PlaidError"
new_holdings:
type: number
description: The number of new holdings reported since the last time this webhook was fired.
updated_holdings:
type: number
description: The number of updated holdings reported since the last time this webhook was fired.
required:
- webhook_type
- webhook_code
- item_id
- new_holdings
- updated_holdings
LiabilitiesDefaultUpdateWebhook:
title: LiabilitiesDefaultUpdateWebhook
type: object
description: The webhook of type `LIABILITIES` and code `DEFAULT_UPDATE` will be fired when new or updated liabilities have been detected on a liabilities item.
x-examples:
example-1:
webhook_type: LIABILITIES
webhook_code: DEFAULT_UPDATE
item_id: wz666MBjYWTp2PDzzggYhM6oWWmBb
error: null
account_ids_with_new_liabilities:
- XMBvvyMGQ1UoLbKByoMqH3nXMj84ALSdE5B58
- BxBXxLj1m4HMXBm9WZZmCWVbPjX16EHwv99vp
account_ids_with_updated_liabilities:
XMBvvyMGQ1UoLbKByoMqH3nXMj84ALSdE5B58:
- past_amount_due
properties:
webhook_type:
type: string
description: "`LIABILITIES`"
webhook_code:
type: string
description: "`DEFAULT_UPDATE`"
item_id:
$ref: "#/components/schemas/ItemId"
error:
$ref: "#/components/schemas/PlaidError"
account_ids_with_new_liabilities:
type: array
description: An array of `account_id`'s for accounts that contain new liabilities.
items:
type: string
account_ids_with_updated_liabilities:
type: object
additionalProperties:
type: array
items:
type: string
description: |
An object with keys of `account_id`'s that are mapped to their respective liabilities fields that changed.
Example: `{ "XMBvvyMGQ1UoLbKByoMqH3nXMj84ALSdE5B58": ["past_amount_due"] }`
required:
- webhook_type
- webhook_code
- item_id
- error
- account_ids_with_new_liabilities
- account_ids_with_updated_liabilities
AssetsProductReadyWebhook:
title: AssetsProductReadyWebhook
type: object
additionalProperties: true
description: Fired when the Asset Report has been generated and `/asset_report/get` is ready to be called. If you attempt to retrieve an Asset Report before this webhook has fired, you’ll receive a response with the HTTP status code 400 and a Plaid error code of `PRODUCT_NOT_READY`.
properties:
webhook_type:
type: string
description: "`ASSETS`"
webhook_code:
type: string
description: "`PRODUCT_READY`"
asset_report_id:
type: string
description: The `asset_report_id` that can be provided to `/asset_report/get` to retrieve the Asset Report.
required:
- webhook_type
- webhook_code
- asset_report_id
x-examples:
example-1:
webhook_type: ASSETS
webhook_code: PRODUCT_READY
asset_report_id: 47dfc92b-bba3-4583-809e-ce871b321f05
AssetsErrorWebhook:
title: AssetsErrorWebhook
type: object
additionalProperties: true
description: Fired when Asset Report generation has failed. The resulting `error` will have an `error_type` of `ASSET_REPORT_ERROR`.
x-examples:
example-1:
webhook_type: ASSETS
webhook_code: ERROR
asset_report_id: 47dfc92b-bba3-4583-809e-ce871b321f05
error:
display_message: null
error_code: PRODUCT_NOT_ENABLED
error_message: "the 'assets' product is not enabled for the following access tokens: access-sandbox-fb88b20c-7b74-4197-8d01-0ab122dad0bc. please ensure that 'assets' is included in the 'product' array when initializing Link and create the Item(s) again."
error_type: ASSET_REPORT_ERROR
request_id: m8MDnv9okwxFNBV
properties:
webhook_type:
type: string
description: "`ASSETS`"
webhook_code:
type: string
description: "`ERROR`"
error:
$ref: "#/components/schemas/PlaidError"
asset_report_id:
type: string
description: The ID associated with the Asset Report.
required:
- webhook_type
- webhook_code
- error
- asset_report_id
Cause:
title: Cause
type: object
additionalProperties: true
properties:
item_id:
$ref: "#/components/schemas/ItemId"
error:
$ref: "#/components/schemas/PlaidError"
required:
- item_id
- error
description: An error object and associated `item_id` used to identify a specific Item and error when a batch operation operating on multiple Items has encountered an error in one of the Items.
Warning:
title: Warning
type: object
additionalProperties: true
description: It is possible for an Asset Report to be returned with missing account owner information. In such cases, the Asset Report will contain warning data in the response, indicating why obtaining the owner information failed.
properties:
warning_type:
type: string
description: The warning type, which will always be `ASSET_REPORT_WARNING`
warning_code:
type: string
enum:
- OWNERS_UNAVAILABLE
description: The warning code identifies a specific kind of warning. Currently, the only possible warning code is `OWNERS_UNAVAILABLE`, which indicates that account-owner information is not available.
cause:
$ref: "#/components/schemas/Cause"
required:
- warning_type
- warning_code
- cause
x-examples:
example-1:
warning_type: ASSET_REPORT_WARNING
warning_code: OWNERS_UNAVAILABLE
cause:
error_type: ITEM_ERROR
http_code: 400
error_code: PRODUCTS_NOT_SUPPORTED
error_message: "The following products are not supported by this institution: Identity"
display_message: null
request_id: s32PXYOyplhGTHd
PaymentAmount:
title: PaymentAmount
type: object
additionalProperties: true
properties:
currency:
type: string
enum:
- GBP
- EUR
description: The ISO-4217 currency code of the payment. For standing orders, `"GBP"` must be used.
minLength: 3
maxLength: 3
value:
type: number
description: The amount of the payment. Must contain at most two digits of precision e.g. `1.23`. Minimum accepted value is `1`.
required:
- currency
- value
description: The amount and currency of a payment
AssetReportUser:
title: AssetReportUser
type: object
additionalProperties: true
description: The user object allows you to provide additional information about the user to be appended to the Asset Report. All fields are optional. The `first_name`, `last_name`, and `ssn` fields are required if you would like the Report to be eligible for Fannie Mae’s Day 1 Certainty™ program.
properties:
client_user_id:
type: string
nullable: true
description: An identifier you determine and submit for the user.
first_name:
type: string
nullable: true
description: The user's first name. Required for the Fannie Mae Day 1 Certainty™ program.
middle_name:
type: string
nullable: true
description: The user's middle name
last_name:
type: string
nullable: true
description: The user's last name. Required for the Fannie Mae Day 1 Certainty™ program.
ssn:
type: string
nullable: true
description: |-
The user's Social Security Number. Required for the Fannie Mae Day 1 Certainty™ program.
Format: "ddd-dd-dddd"
phone_number:
type: string
nullable: true
description: 'The user''s phone number, in E.164 format: +{countrycode}{number}. For example: "+14151234567". Phone numbers provided in other formats will be parsed on a best-effort basis.'
email:
type: string
nullable: true
description: The user's email address.
AssetReportId:
title: AssetReportId
description: A unique ID identifying an Asset Report. Like all Plaid identifiers, this ID is case sensitive.
type: string
AssetReportToken:
title: AssetReportToken
type: string
description: A token that can be provided to endpoints such as `/asset_report/get` or `/asset_report/pdf/get` to fetch or update an Asset Report.
AssetReportRefreshAssetReportToken:
title: AssetReportRefreshAssetReportToken
type: string
description: The `asset_report_token` returned by the original call to `/asset_report/create`
StandaloneCurrencyCodeList:
title: StandaloneCurrencyCodeList
type: object
additionalProperties: true
description: The following currency codes are supported by Plaid.
properties:
iso_currency_code:
description: Plaid supports all ISO 4217 currency codes.
type: string
unofficial_currency_code:
$ref: "#/components/schemas/UnofficialCurrencyCodeList"
required:
- iso_currency_code
- unofficial_currency_code
UnofficialCurrencyCodeList:
title: UnofficialCurrencyCodeList
type: string
description: List of unofficial currency codes
properties:
ADA:
type: string
description: Cardano
BAT:
type: string
description: Basic Attention Token
BCH:
type: string
description: Bitcoin Cash
BNB:
type: string
description: Binance Coin
BTC:
type: string
description: Bitcoin
BTG:
type: string
description: Bitcoin Gold
BSV:
type: string
description: Bitcoin Satoshi Vision
CNH:
type: string
description: Chinese Yuan (offshore)
DASH:
type: string
description: Dash
DOGE:
type: string
description: Dogecoin
ETC:
type: string
description: Ethereum Classic
ETH:
type: string
description: Ethereum
GBX:
type: string
description: Pence sterling, i.e. British penny
LSK:
type: string
description: Lisk
NEO:
type: string
description: Neo
OMG:
type: string
description: OmiseGO
QTUM:
type: string
description: Qtum
USDT:
type: string
description: TehterUS
XLM:
type: string
description: Stellar Lumen
XMR:
type: string
description: Monero
XRP:
type: string
description: Ripple
ZEC:
type: string
description: Zcash
ZRX:
type: string
description: 0x
required:
- ADA
- BAT
- BCH
- BNB
- BTC
- BTG
- CNH
- DASH
- DOGE
- ETC
- ETH
- GBX
- LSK
- NEO
- OMG
- QTUM
- USDT
- XLM
- XMR
- XRP
- ZEC
- ZRX
StandaloneAccountType:
title: StandaloneAccountType
description: The schema below describes the various `types` and corresponding `subtypes` that Plaid recognizes and reports for financial institution accounts.
type: object
additionalProperties: true
properties:
depository:
$ref: "#/components/schemas/DepositoryAccount"
credit:
$ref: "#/components/schemas/CreditAccount"
loan:
$ref: "#/components/schemas/LoanAccount"
investment:
$ref: "#/components/schemas/InvestmentAccountSubtype"
other:
type: string
description: "Other or unknown account type. Supported products for `other` accounts are: Balance, Transactions, Identity, and Assets."
required:
- depository
- credit
- loan
- investment
- other
DepositoryAccount:
title: DepositoryAccount
description: "An account type holding cash, in which funds are deposited. Supported products for `depository` accounts are: Auth, Balance, Transactions, Identity, Payment Initiation, and Assets."
type: string
properties:
checking:
type: string
description: Checking account
savings:
type: string
description: Savings account
hsa:
type: string
description: Health Savings Account (US only) that can only hold cash
cd:
type: string
description: Certificate of deposit account
money market:
type: string
description: Money market account
paypal:
type: string
description: PayPal depository account
prepaid:
type: string
description: Prepaid debit card
cash management:
type: string
description: A cash management account, typically a cash account at a brokerage
ebt:
type: string
description: An Electronic Benefit Transfer (EBT) account, used by certain public assistance programs to distribute funds (US only)
required:
- checking
- savings
- hsa
- cd
- money market
- paypal
- prepaid
- cash management
- ebt
CreditAccount:
title: CreditAccount
type: string
description: "A credit card type account. Supported products for `credit` accounts are: Balance, Transactions, Identity, and Liabilities."
properties:
credit card:
type: string
description: Bank-issued credit card
paypal:
type: string
description: PayPal-issued credit card
required:
- credit card
- paypal
LoanAccount:
title: LoanAccount
type: string
description: "A loan type account. Supported products for `loan` accounts are: Balance, Liabilities, and Transactions."
properties:
auto:
type: string
description: Auto loan
business:
type: string
description: Business loan
commercial:
type: string
description: Commercial loan
construction:
type: string
description: Construction loan
consumer:
type: string
description: Consumer loan
home equity:
type: string
description: Home Equity Line of Credit (HELOC)
loan:
type: string
description: General loan
mortgage:
type: string
description: Mortgage loan
overdraft:
type: string
description: Pre-approved overdraft account, usually tied to a checking account
line of credit:
type: string
description: Pre-approved line of credit
student:
type: string
description: Student loan
other:
type: string
description: Other loan type or unknown loan type
required:
- auto
- business
- commercial
- construction
- consumer
- home equity
- loan
- mortgage
- overdraft
- line of credit
- student
- other
InvestmentAccountSubtype:
title: InvestmentAccountSubtype
type: string
description: "An investment account. Supported products for `investment` accounts are: Balance and Investments. In API versions 2018-05-22 and earlier, this type is called `brokerage`."
properties:
"529":
type: string
description: |
Tax-advantaged college savings and prepaid tuition 529 plans (US)
401a:
type: string
description: Employer-sponsored money-purchase 401(a) retirement plan (US)
401k:
type: string
description: Standard 401(k) retirement account (US)
403B:
type: string
description: 403(b) retirement savings account for non-profits and schools (US)
457b:
type: string
description: Tax-advantaged deferred-compensation 457(b) retirement plan for governments and non-profits (US)
brokerage:
type: string
description: Standard brokerage account
cash isa:
type: string
description: Individual Savings Account (ISA) that pays interest tax-free (UK)
education savings account:
type: string
description: Tax-advantaged Coverdell Education Savings Account (ESA) (US)
fixed annuity:
type: string
description: Fixed annuity
gic:
type: string
description: Guaranteed Investment Certificate (Canada)
health reimbursement arrangement:
type: string
description: Tax-advantaged Health Reimbursement Arrangement (HRA) benefit plan (US)
hsa:
type: string
description: |
Non-cash tax-advantaged medical Health Savings Account (HSA) (US)
ira:
type: string
description: Traditional Invididual Retirement Account (IRA) (US)
isa:
type: string
description: Non-cash Individual Savings Account (ISA) (UK)
keogh:
type: string
description: Keogh self-employed retirement plan (US)
lif:
type: string
description: |
Life Income Fund (LIF) retirement account (Canada)
life insurance:
type: string
description: Life insurance account
lira:
type: string
description: Locked-in Retirement Account (LIRA) (Canada)
lrif:
type: string
description: Locked-in Retirement Income Fund (LRIF) (Canada)
lrsp:
type: string
description: Locked-in Retirement Savings Plan (Canada)
mutual fund:
type: string
description: Mutual fund account
non-taxable brokerage account:
type: string
description: A non-taxable brokerage account that is not covered by a more specific subtype
other:
type: string
description: An account whose type could not be determined
other annuity:
type: string
description: An annuity account not covered by other subtypes
other insurance:
type: string
description: An insurance account not covered by other subtypes
pension:
type: string
description: Standard pension account
prif:
type: string
description: Prescribed Registered Retirement Income Fund (Canada)
profit sharing plan:
type: string
description: Plan that gives employees share of company profits
qshr:
type: string
description: Qualifying share account
rdsp:
type: string
description: Registered Disability Savings Plan (RSDP) (Canada)
resp:
type: string
description: Registered Education Savings Plan (Canada)
retirement:
type: string
description: Retirement account not covered by other subtypes
rlif:
type: string
description: Restricted Life Income Fund (RLIF) (Canada)
roth:
type: string
description: Roth IRA (US)
roth 401k:
type: string
description: Employer-sponsored Roth 401(k) plan (US)
rrif:
type: string
description: Registered Retirement Income Fund (RRIF) (Canada)
rrsp:
type: string
description: Registered Retirement Savings Plan (Canadian, similar to US 401(k))
sarsep:
type: string
description: Salary Reduction Simplified Employee Pension Plan (SARSEP), discontinued retirement plan (US)
sep ira:
type: string
description: Simplified Employee Pension IRA (SEP IRA), retirement plan for small businesses and self-employed (US)
simple ira:
type: string
description: Savings Incentive Match Plan for Employees IRA, retirement plan for small businesses (US)
sipp:
type: string
description: Self-Invested Personal Pension (SIPP) (UK)
stock plan:
type: string
description: Standard stock plan account
tfsa:
type: string
description: Tax-Free Savings Account (TFSA), a retirement plan similar to a Roth IRA (Canada)
trust:
type: string
description: Account representing funds or assets held by a trustee for the benefit of a beneficiary. Includes both revocable and irrevocable trusts.
ugma:
type: string
description: "'Uniform Gift to Minors Act' (brokerage account for minors, US)"
utma:
type: string
description: |
'Uniform Transfers to Minors Act' (brokerage account for minors, US)
variable annuity:
type: string
description: Tax-deferred capital accumulation annuity contract
required:
- "529"
- 401a
- 401k
- 403B
- 457b
- brokerage
- cash isa
- education savings account
- fixed annuity
- gic
- health reimbursement arrangement
- hsa
- ira
- isa
- keogh
- lif
- life insurance
- lira
- lrif
- lrsp
- mutual fund
- non-taxable brokerage account
- other
- other annuity
- other insurance
- pension
- prif
- profit sharing plan
- qshr
- rdsp
- resp
- retirement
- rlif
- roth
- roth 401k
- rrif
- rrsp
- sarsep
- sep ira
- simple ira
- sipp
- stock plan
- tfsa
- trust
- ugma
- utma
- variable annuity
AssetReport:
title: AssetReport
type: object
additionalProperties: true
description: An object representing an Asset Report
properties:
asset_report_id:
$ref: "#/components/schemas/AssetReportId"
client_report_id:
type: string
nullable: true
description: An identifier you determine and submit for the Asset Report.
date_generated:
type: string
format: date-time
description: The date and time when the Asset Report was created, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (e.g. "2018-04-12T03:32:11Z").
days_requested:
type: number
description: The duration of transaction history you requested
user:
$ref: "#/components/schemas/AssetReportUser"
items:
type: array
description: Data returned by Plaid about each of the Items included in the Asset Report.
items:
$ref: "#/components/schemas/AssetReportItem"
required:
- asset_report_id
- client_report_id
- date_generated
- days_requested
- user
- items
AssetReportItem:
title: AssetReportItem
type: object
additionalProperties: true
description: A representation of an Item within an Asset Report.
properties:
item_id:
$ref: "#/components/schemas/ItemId"
institution_name:
type: string
description: The full financial institution name associated with the Item.
institution_id:
description: The id of the financial institution associated with the Item.
type: string
date_last_updated:
type: string
format: date-time
description: The date and time when this Item’s data was last retrieved from the financial institution, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format.
accounts:
type: array
description: Data about each of the accounts open on the Item.
items:
$ref: "#/components/schemas/AccountAssets"
required:
- item_id
- institution_name
- institution_id
- date_last_updated
- accounts
PaymentStatusUpdateWebhook:
title: PaymentStatusUpdateWebhook
type: object
additionalProperties: true
description: Fired when the status of a payment has changed.
x-examples:
example-1:
webhook_type: PAYMENT_INITIATION
webhook_code: PAYMENT_STATUS_UPDATE
payment_id: payment-id-production-2ba30780-d549-4335-b1fe-c2a938aa39d2
new_payment_status: PAYMENT_STATUS_INITIATED
old_payment_status: PAYMENT_STATUS_PROCESSING
original_reference: Account Funding 99744
adjusted_reference: Account Funding 99
original_start_date: "2017-09-14"
adjusted_start_date: "2017-09-15"
timestamp: "2017-09-14T14:42:19.350Z"
error: null
properties:
webhook_type:
type: string
description: "`PAYMENT_INITIATION`"
webhook_code:
type: string
description: "`PAYMENT_STATUS_UPDATE`"
payment_id:
type: string
description: The `payment_id` for the payment being updated
new_payment_status:
enum:
- PAYMENT_STATUS_INPUT_NEEDED
- PAYMENT_STATUS_PROCESSING
- PAYMENT_STATUS_INITIATED
- PAYMENT_STATUS_COMPLETED
- PAYMENT_STATUS_INSUFFICIENT_FUNDS
- PAYMENT_STATUS_FAILED
- PAYMENT_STATUS_BLOCKED
- PAYMENT_STATUS_UNKNOWN
type: string
description: |-
The new status of the payment.
`PAYMENT_STATUS_INPUT_NEEDED`: This is the initial state of all payments. It indicates that the payment is waiting on user input to continue processing. A payment may re-enter this state later on if further input is needed.
`PAYMENT_STATUS_PROCESSING`: The payment is currently being processed. The payment will automatically exit this state when processing is complete.
`PAYMENT_STATUS_INITIATED`: The payment has been successfully initiated and is considered complete.
`PAYMENT_STATUS_COMPLETED`: Indicates that the standing order has been successfully established. This state is only used for standing orders.
`PAYMENT_STATUS_INSUFFICIENT_FUNDS`: The payment has failed due to insufficient funds.
`PAYMENT_STATUS_FAILED`: The payment has failed to be initiated. This error is retryable once the root cause is resolved.
`PAYMENT_STATUS_BLOCKED`: The payment has been blocked. This is a retryable error.
`PAYMENT_STATUS_UNKNOWN`: The payment status is unknown.
old_payment_status:
type: string
enum:
- PAYMENT_STATUS_INPUT_NEEDED
- PAYMENT_STATUS_PROCESSING
- PAYMENT_STATUS_INITIATED
- PAYMENT_STATUS_COMPLETED
- PAYMENT_STATUS_INSUFFICIENT_FUNDS
- PAYMENT_STATUS_FAILED
- PAYMENT_STATUS_BLOCKED
- PAYMENT_STATUS_UNKNOWN
description: |-
The previous status of the payment.
`PAYMENT_STATUS_INPUT_NEEDED`: This is the initial state of all payments. It indicates that the payment is waiting on user input to continue processing. A payment may re-enter this state later on if further input is needed.
`PAYMENT_STATUS_PROCESSING`: The payment is currently being processed. The payment will automatically exit this state when processing is complete.
`PAYMENT_STATUS_INITIATED`: The payment has been successfully initiated and is considered complete.
`PAYMENT_STATUS_COMPLETED`: Indicates that the standing order has been successfully established. This state is only used for standing orders.
`PAYMENT_STATUS_INSUFFICIENT_FUNDS`: The payment has failed due to insufficient funds.
`PAYMENT_STATUS_FAILED`: The payment has failed to be initiated. This error is retryable once the root cause is resolved.
`PAYMENT_STATUS_BLOCKED`: The payment has been blocked. This is a retryable error.
`PAYMENT_STATUS_UNKNOWN`: The payment status is unknown.
original_reference:
type: string
description: The original value of the reference when creating the payment.
nullable: true
adjusted_reference:
type: string
description: The value of the reference sent to the bank after adjustment to pass bank validation rules.
nullable: true
original_start_date:
format: date
type: string
description: The original value of the `start_date` provided during the creation of a standing order. If the payment is not a standing order, this field will be `null`.
nullable: true
adjusted_start_date:
format: date
type: string
description: The start date sent to the bank after adjusting for holidays or weekends. Will be provided in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DD). If the start date did not require adjustment, or if the payment is not a standing order, this field will be `null`.
nullable: true
timestamp:
type: string
format: date-time
description: The timestamp of the update, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `"2017-09-14T14:42:19.350Z"`
error:
$ref: "#/components/schemas/PlaidError"
required:
- webhook_type
- webhook_code
- payment_id
- new_payment_status
- old_payment_status
- original_reference
- original_start_date
- adjusted_start_date
- timestamp
Holding:
title: Holding
type: object
additionalProperties: true
description: A securities holding at an institution.
properties:
account_id:
type: string
description: The Plaid `account_id` associated with the holding.
security_id:
type: string
description: The Plaid `security_id` associated with the holding.
institution_price:
type: number
description: The last price given by the institution for this security.
institution_price_as_of:
type: string
format: date
description: The date at which `institution_price` was current.
nullable: true
institution_value:
type: number
description: The value of the holding, as reported by the institution.
cost_basis:
type: number
description: The cost basis of the holding.
nullable: true
quantity:
description: The total quantity of the asset held, as reported by the financial institution. If the security is an option, `quantity` will reflect the total number of options (typically the number of contracts multiplied by 100), not the number of contracts.
type: number
iso_currency_code:
type: string
description: The ISO-4217 currency code of the holding. Always `null` if `unofficial_currency_code` is non-`null`.
nullable: true
unofficial_currency_code:
type: string
description: |
The unofficial currency code associated with the holding. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.
See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.
nullable: true
required:
- account_id
- security_id
- institution_price
- institution_price_as_of
- institution_value
- cost_basis
- quantity
- iso_currency_code
- unofficial_currency_code
Security:
title: Security
type: object
additionalProperties: true
description: Contains details about a security
properties:
security_id:
type: string
description: A unique, Plaid-specific identifier for the security, used to associate securities with holdings. Like all Plaid identifiers, the `security_id` is case sensitive.
isin:
type: string
nullable: true
description: 12-character ISIN, a globally unique securities identifier.
cusip:
nullable: true
type: string
description: 9-character CUSIP, an identifier assigned to North American securities.
sedol:
nullable: true
type: string
description: 7-character SEDOL, an identifier assigned to securities in the UK.
institution_security_id:
nullable: true
type: string
description: An identifier given to the security by the institution
institution_id:
nullable: true
type: string
description: If `institution_security_id` is present, this field indicates the Plaid `institution_id` of the institution to whom the identifier belongs.
proxy_security_id:
nullable: true
type: string
description: In certain cases, Plaid will provide the ID of another security whose performance resembles this security, typically when the original security has low volume, or when a private security can be modeled with a publicly traded security.
name:
nullable: true
type: string
description: A descriptive name for the security, suitable for display.
ticker_symbol:
type: string
nullable: true
description: The security’s trading symbol for publicly traded securities, and otherwise a short identifier if available.
is_cash_equivalent:
nullable: true
type: boolean
description: Indicates that a security is a highly liquid asset and can be treated like cash.
type:
nullable: true
type: string
description: |-
The security type of the holding. Valid security types are:
`cash`: Cash, currency, and money market funds
`derivative`: Options, warrants, and other derivative instruments
`equity`: Domestic and foreign equities
`etf`: Multi-asset exchange-traded investment funds
`fixed income`: Bonds and certificates of deposit (CDs)
`loan`: Loans and loan receivables.
`mutual fund`: Open- and closed-end vehicles pooling funds of multiple investors.
`other`: Unknown or other investment types
close_price:
type: number
nullable: true
description: Price of the security at the close of the previous trading session. `null` for non-public securities. If the security is a foreign currency or a cryptocurrency this field will be updated daily and will be priced in USD.
close_price_as_of:
type: string
nullable: true
format: date
description: Date for which `close_price` is accurate. Always `null` if `close_price` is `null`.
iso_currency_code:
type: string
nullable: true
description: The ISO-4217 currency code of the price given. Always `null` if `unofficial_currency_code` is non-`null`.
unofficial_currency_code:
nullable: true
type: string
description: |-
The unofficial currency code associated with the security. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.
See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.
required:
- cusip
- sedol
- isin
- institution_security_id
- institution_id
- proxy_security_id
- name
- ticker_symbol
- is_cash_equivalent
- close_price
- close_price_as_of
- iso_currency_code
- unofficial_currency_code
- security_id
- type
InvestmentTransaction:
title: InvestmentTransaction
type: object
additionalProperties: true
description: A transaction within an investment account.
properties:
investment_transaction_id:
type: string
description: The ID of the Investment transaction, unique across all Plaid transactions. Like all Plaid identifiers, the `investment_transaction_id` is case sensitive.
cancel_transaction_id:
type: string
deprecated: true
description: A legacy field formerly used internally by Plaid to identify certain canceled transactions.
nullable: true
account_id:
type: string
description: The `account_id` of the account against which this transaction posted.
security_id:
type: string
description: The `security_id` to which this transaction is related.
nullable: true
date:
type: string
format: date
description: The [ISO 8601](https://wikipedia.org/wiki/ISO_8601) posting date for the transaction.
name:
type: string
description: The institution’s description of the transaction.
quantity:
type: number
description: The number of units of the security involved in this transaction.
amount:
description: The complete value of the transaction. Positive values when cash is debited, e.g. purchases of stock; negative values when cash is credited, e.g. sales of stock. Treatment remains the same for cash-only movements unassociated with securities.
type: number
price:
description: The price of the security at which this transaction occurred.
type: number
fees:
type: number
description: The combined value of all fees applied to this transaction
nullable: true
type:
type: string
enum:
- buy
- sell
- cancel
- cash
- fee
- transfer
description: |-
Value is one of the following:
`buy`: Buying an investment
`sell`: Selling an investment
`cancel`: A cancellation of a pending transaction
`cash`: Activity that modifies a cash position
`fee`: A fee on the account
`transfer`: Activity which modifies a position, but not through buy/sell activity e.g. options exercise, portfolio transfer
For descriptions of possible transaction types and subtypes, see the [Investment transaction types schema](https://plaid.com/docs/api/accounts/#investment-transaction-types-schema).
subtype:
type: string
description: For descriptions of possible transaction types and subtypes, see the [Investment transaction types schema](https://plaid.com/docs/api/accounts/#investment-transaction-types-schema).
enum:
- account fee
- assignment
- buy
- buy to cover
- contribution
- deposit
- distribution
- dividend
- dividend reinvestment
- exercise
- expire
- fund fee
- interest
- interest receivable
- interest reinvestment
- legal fee
- loan payment
- long-term capital gain
- long-term capital gain reinvestment
- management fee
- margin expense
- merger
- miscellaneous fee
- non-qualified dividend
- non-resident tax
- pending credit
- pending debit
- qualified dividend
- rebalance
- return of principal
- sell
- sell short
- short-term capital gain
- short-term capital gain reinvestment
- spin off
- split
- stock distribution
- tax
- tax withheld
- transfer
- transfer fee
- trust fee
- unqualified gain
- withdrawal
iso_currency_code:
type: string
description: The ISO-4217 currency code of the transaction. Always `null` if `unofficial_currency_code` is non-`null`.
nullable: true
unofficial_currency_code:
type: string
description: |-
The unofficial currency code associated with the holding. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.
See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.
nullable: true
required:
- investment_transaction_id
- account_id
- security_id
- date
- name
- quantity
- amount
- price
- fees
- type
- subtype
- iso_currency_code
- unofficial_currency_code
StandaloneInvestmentTransactionType:
title: StandaloneInvestmentTransactionType
type: object
additionalProperties: true
description: Valid values for investment transaction types and subtypes. Note that transactions representing inflow of cash will appear as negative amounts, outflow of cash will appear as positive amounts.
properties:
buy:
$ref: "#/components/schemas/StandaloneInvestmentTransactionBuyType"
sell:
$ref: "#/components/schemas/StandaloneInvestmentTransactionSellType"
cancel:
type: string
description: A cancellation of a pending transaction
cash:
$ref: "#/components/schemas/StandaloneInvestmentTransactionCashType"
fee:
$ref: "#/components/schemas/StandaloneInvestmentTransactionFeeType"
transfer:
$ref: "#/components/schemas/StandaloneInvestmentTransactionTransferType"
required:
- buy
- sell
- cancel
- cash
- fee
- transfer
StandaloneInvestmentTransactionBuyType:
title: BuyType
description: Buying an investment
type: string
properties:
assignment:
type: string
description: Assignment of short option holding
contribution:
type: string
description: Inflow of assets into a tax-advantaged account
buy:
type: string
description: Purchase to open or increase a position
buy to cover:
type: string
description: Purchase to close a short position
dividend reinvestment:
type: string
description: Purchase using proceeds from a cash dividend
interest reinvestment:
type: string
description: Purchase using proceeds from a cash interest payment
long-term capital gain reinvestment:
type: string
description: Purchase using long-term capital gain cash proceeds
short-term capital gain reinvestment:
type: string
description: Purchase using short-term capital gain cash proceeds
StandaloneInvestmentTransactionCashType:
title: CashType
description: Activity that modifies a cash position
type: string
properties:
account fee:
type: string
description: Fees paid for account maintenance
contribution:
type: string
description: Inflow of assets into a tax-advantaged account
deposit:
type: string
description: Inflow of cash into an account
dividend:
type: string
description: Inflow of cash from a dividend
stock distribution:
type: string
description: Inflow of stock from a distribution
interest:
type: string
description: Inflow of cash from interest
legal fee:
type: string
description: Fees paid for legal charges or services
long-term capital gain:
type: string
description: Long-term capital gain received as cash
management fee:
type: string
description: Fees paid for investment management of a mutual fund or other pooled investment vehicle
margin expense:
type: string
description: Fees paid for maintaining margin debt
non-qualified dividend:
type: string
description: Inflow of cash from a non-qualified dividend
non-resident tax:
type: string
description: Taxes paid on behalf of the investor for non-residency in investment jurisdiction
pending credit:
type: string
description: Pending inflow of cash
pending debit:
type: string
description: Pending outflow of cash
qualified dividend:
type: string
description: Inflow of cash from a qualified dividend
short-term capital gain:
type: string
description: Short-term capital gain received as cash
tax:
type: string
description: Taxes paid on behalf of the investor
tax withheld:
type: string
description: Taxes withheld on behalf of the customer
transfer fee:
type: string
description: Fees incurred for transfer of a holding or account
trust fee:
type: string
description: Fees related to adminstration of a trust account
unqualified gain:
type: string
description: Unqualified capital gain received as cash
withdrawal:
type: string
description: Outflow of cash from an account
StandaloneInvestmentTransactionFeeType:
title: FeeType
description: Fees on the account, e.g. commission, bookkeeping, options-related.
type: string
properties:
account fee:
type: string
description: Fees paid for account maintenance
adjustment:
type: string
description: Increase or decrease in quantity of item
dividend:
type: string
description: Inflow of cash from a dividend
interest:
type: string
description: Inflow of cash from interest
interest receivable:
type: string
description: Inflow of cash from interest receivable
long-term capital gain:
type: string
description: Long-term capital gain received as cash
legal fee:
type: string
description: Fees paid for legal charges or services
management fee:
type: string
description: Fees paid for investment management of a mutual fund or other pooled investment vehicle
margin expense:
type: string
description: Fees paid for maintaining margin debt
non-qualified dividend:
type: string
description: Inflow of cash from a non-qualified dividend
non-resident tax:
type: string
description: Taxes paid on behalf of the investor for non-residency in investment jurisdiction
qualified dividend:
type: string
description: Inflow of cash from a qualified dividend
return of principal:
type: string
description: Repayment of loan principal
short-term capital gain:
type: string
description: Short-term capital gain received as cash
stock distribution:
type: string
description: Inflow of stock from a distribution
tax:
type: string
description: Taxes paid on behalf of the investor
tax withheld:
type: string
description: Taxes withheld on behalf of the customer
transfer fee:
type: string
description: Fees incurred for transfer of a holding or account
trust fee:
type: string
description: Fees related to adminstration of a trust account
unqualified gain:
type: string
description: Unqualified capital gain received as cash
StandaloneInvestmentTransactionSellType:
title: SellType
description: Selling an investment
type: string
properties:
distribution:
type: string
description: Outflow of assets from a tax-advantaged account
exercise:
type: string
description: Exercise of an option or warrant contract
sell:
type: string
description: Sell to close or decrease an existing holding
sell short:
type: string
description: Sell to open a short position
StandaloneInvestmentTransactionTransferType:
title: TransferType
description: Activity that modifies a position, but not through buy/sell activity e.g. options exercise, portfolio transfer
type: string
properties:
assignment:
type: string
description: Assignment of short option holding
adjustment:
type: string
description: Increase or decrease in quantity of item
exercise:
type: string
description: Exercise of an option or warrant contract
expire:
type: string
description: Expiration of an option or warrant contract
merger:
type: string
description: Stock exchanged at a pre-defined ratio as part of a merger between companies
spin off:
type: string
description: Inflow of stock from spin-off transaction of an existing holding
split:
type: string
description: Inflow of stock from a forward split of an existing holding
transfer:
type: string
description: Movement of assets into or out of an account
AccountSubtypes:
title: AccountSubtypes
type: array
description: "An array of account subtypes to display in Link. If not specified, all account subtypes will be shown. For a full list of valid types and subtypes, see the [Account schema](https://plaid.com/docs/api/accounts#accounts-schema). "
items:
$ref: "#/components/schemas/AccountSubtype"
UserPermissionRevokedWebhook:
title: UserPermissionRevokedWebhook
type: object
additionalProperties: true
description: The `USER_PERMISSION_REVOKED` webhook is fired to when an end user has used the [my.plaid.com portal](https://my.plaid.com) to revoke the permission that they previously granted to access an Item. Once access to an Item has been revoked, it cannot be restored. If the user subsequently returns to your application, a new Item must be created for the user.
x-examples:
example-1:
webhook_type: ITEM
webhook_code: USER_PERMISSION_REVOKED
error:
error_code: USER_PERMISSION_REVOKED
error_message: the holder of this account has revoked their permission for your application to access it
error_type: ITEM_ERROR
status: 400
item_id: gAXlMgVEw5uEGoQnnXZ6tn9E7Mn3LBc4PJVKZ
properties:
webhook_type:
type: string
description: "`ITEM`"
webhook_code:
type: string
description: "`USER_PERMISSION_REVOKED`"
item_id:
$ref: "#/components/schemas/ItemId"
error:
$ref: "#/components/schemas/PlaidError"
required:
- webhook_type
- webhook_code
- item_id
DepositSwitchGetRequest:
title: DepositSwitchGetRequest
description: DepositSwitchGetRequest defines the request schema for `/deposit_switch/get`
type: object
x-examples: {}
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
deposit_switch_id:
type: string
description: The ID of the deposit switch
required:
- deposit_switch_id
DepositSwitchGetResponse:
title: DepositSwitchGetResponse
type: object
additionalProperties: true
description: DepositSwitchGetResponse defines the response schema for `/deposit_switch/get`
properties:
deposit_switch_id:
type: string
description: The ID of the deposit switch.
target_account_id:
type: string
nullable: true
description: The ID of the bank account the direct deposit was switched to.
target_item_id:
type: string
nullable: true
description: The ID of the Item the direct deposit was switched to.
state:
type: string
enum:
- initialized
- processing
- completed
- error
description: |2-
The state, or status, of the deposit switch.
- `initialized` – The deposit switch has been initialized with the user entering the information required to submit the deposit switch request.
- `processing` – The deposit switch request has been submitted and is being processed.
- `completed` – The user's employer has fulfilled the deposit switch request.
- `error` – There was an error processing the deposit switch request.
switch_method:
nullable: true
type: string
enum:
- instant
- mail
- pdf
- null
description: |-
The method used to make the deposit switch.
- `instant` – User instantly switched their direct deposit to a new or existing bank account by connecting their payroll or employer account.
- `mail` – User requested that Plaid contact their employer by mail to make the direct deposit switch.
- `pdf` – User generated a PDF or email to be sent to their employer with the information necessary to make the deposit switch.'
account_has_multiple_allocations:
nullable: true
type: boolean
description: When `true`, user’s direct deposit goes to multiple banks. When false, user’s direct deposit only goes to the target account. Always `null` if the deposit switch has not been completed.
is_allocated_remainder:
nullable: true
type: boolean
description: When `true`, the target account is allocated the remainder of direct deposit after all other allocations have been deducted. When `false`, user’s direct deposit is allocated as a percent or amount. Always `null` if the deposit switch has not been completed.
percent_allocated:
type: number
nullable: true
description: The percentage of direct deposit allocated to the target account. Always `null` if the target account is not allocated a percentage or if the deposit switch has not been completed or if `is_allocated_remainder` is true.
amount_allocated:
type: number
nullable: true
description: The dollar amount of direct deposit allocated to the target account. Always `null` if the target account is not allocated an amount or if the deposit switch has not been completed.
employer_name:
type: string
nullable: true
description: The name of the employer selected by the user. If the user did not select an employer, the value returned is `null`.
employer_id:
type: string
nullable: true
description: The ID of the employer selected by the user. If the user did not select an employer, the value returned is `null`.
institution_name:
type: string
nullable: true
description: The name of the institution selected by the user. If the user did not select an institution, the value returned is `null`.
institution_id:
type: string
nullable: true
description: The ID of the institution selected by the user. If the user did not select an institution, the value returned is `null`.
date_created:
description: |
[ISO 8601](https://wikipedia.org/wiki/ISO_8601) date the deposit switch was created.
type: string
format: date
date_completed:
type: string
format: date
nullable: true
description: |
[ISO 8601](https://wikipedia.org/wiki/ISO_8601) date the deposit switch was completed. Always `null` if the deposit switch has not been completed.
request_id:
$ref: "#/components/schemas/RequestID"
required:
- deposit_switch_id
- target_account_id
- target_item_id
- state
- account_has_multiple_allocations
- is_allocated_remainder
- percent_allocated
- amount_allocated
- date_created
- date_completed
- request_id
DepositSwitchStateUpdateWebhook:
title: DepositSwitchStateUpdateWebhook
type: object
description: Fired when the status of a deposit switch request has changed.
x-examples:
example-1:
webhook_type: DEPOSIT_SWITCH
webhook_code: SWITCH_STATE_UPDATE
state: completed
deposit_switch_id: f6f5132f-853b-421c-8c41-d24f93ebc39f
properties:
webhook_type:
type: string
description: '`"DEPOSIT_SWITCH"`'
webhook_code:
type: string
description: '`"SWITCH_STATE_UPDATE"`'
state:
type: string
description: |2-
The state, or status, of the deposit switch.
`initialized`: The deposit switch has been initialized with the user entering the information required to submit the deposit switch request.
`processing`: The deposit switch request has been submitted and is being processed.
`completed`: The user's employer has fulfilled and completed the deposit switch request.
`error`: There was an error processing the deposit switch request.
For more information, see the [Deposit Switch API reference](/docs/api/products#deposit_switchget).
deposit_switch_id:
type: string
description: The ID of the deposit switch.
AssetReportAuditCopyGetRequest:
title: AssetReportAuditCopyGetRequest
type: object
description: AssetReportAuditCopyGetRequest defines the request schema for `/asset_report/audit_copy/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
audit_copy_token:
type: string
description: The `audit_copy_token` granting access to the Audit Copy you would like to get.
required:
- audit_copy_token
TransferGetRequest:
title: TransferGetRequest
type: object
description: Defines the request schema for `/transfer/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
transfer_id:
$ref: "#/components/schemas/TransferID"
required:
- transfer_id
BankTransferGetRequest:
title: BankTransferGetRequest
type: object
description: Defines the request schema for `/bank_transfer/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
bank_transfer_id:
$ref: "#/components/schemas/BankTransferID"
required:
- bank_transfer_id
TransferGetResponse:
title: TransferGetResponse
type: object
additionalProperties: true
description: Defines the response schema for `/transfer/get`
properties:
transfer:
$ref: "#/components/schemas/Transfer"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- transfer
- request_id
BankTransferGetResponse:
title: BankTransferGetResponse
type: object
additionalProperties: true
description: Defines the response schema for `/bank_transfer/get`
properties:
bank_transfer:
$ref: "#/components/schemas/BankTransfer"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- bank_transfer
- request_id
TransferID:
type: string
title: TransferID
description: Plaid’s unique identifier for a transfer.
TransferSweepID:
type: string
title: TransferSweepID
description: Plaid’s unique identifier for a sweep.
TransferAuthorizationID:
type: string
title: TransferAuthorizationID
description: Plaid’s unique identifier for a transfer authorization.
BankTransferID:
type: string
title: BankTransferID
description: Plaid’s unique identifier for a bank transfer.
Transfer:
title: Transfer
type: object
additionalProperties: true
description: Represents a transfer within the Transfers API.
properties:
id:
$ref: "#/components/schemas/TransferID"
ach_class:
$ref: "#/components/schemas/ACHClass"
account_id:
type: string
description: The account ID that should be credited/debited for this transfer.
type:
$ref: "#/components/schemas/TransferType"
user:
$ref: "#/components/schemas/TransferUserInResponse"
amount:
$ref: "#/components/schemas/TransferAmount"
description:
type: string
description: The description of the transfer.
created:
type: string
format: date-time
description: The datetime when this transfer was created. This will be of the form `2006-01-02T15:04:05Z`
status:
$ref: "#/components/schemas/TransferStatus"
sweep_status:
$ref: "#/components/schemas/TransferSweepStatus"
network:
$ref: "#/components/schemas/TransferNetwork"
cancellable:
type: boolean
description: When `true`, you can still cancel this transfer.
failure_reason:
$ref: "#/components/schemas/TransferFailure"
metadata:
$ref: "#/components/schemas/TransferMetadata"
origination_account_id:
type: string
description: Plaid’s unique identifier for the origination account that was used for this transfer.
iso_currency_code:
type: string
description: The currency of the transfer amount, e.g. "USD"
required:
- id
- ach_class
- account_id
- type
- user
- amount
- description
- created
- status
- network
- cancellable
- failure_reason
- metadata
- origination_account_id
- iso_currency_code
BankTransfer:
title: BankTransfer
type: object
additionalProperties: true
description: Represents a bank transfer within the Bank Transfers API.
properties:
id:
$ref: "#/components/schemas/BankTransferID"
ach_class:
$ref: "#/components/schemas/ACHClass"
account_id:
type: string
description: The account ID that should be credited/debited for this bank transfer.
type:
$ref: "#/components/schemas/BankTransferType"
user:
$ref: "#/components/schemas/BankTransferUser"
amount:
$ref: "#/components/schemas/BankTransferAmount"
iso_currency_code:
type: string
description: The currency of the transfer amount, e.g. "USD"
description:
type: string
description: The description of the transfer.
created:
type: string
format: date-time
description: The datetime when this bank transfer was created. This will be of the form `2006-01-02T15:04:05Z`
status:
$ref: "#/components/schemas/BankTransferStatus"
network:
$ref: "#/components/schemas/BankTransferNetwork"
cancellable:
type: boolean
description: When `true`, you can still cancel this bank transfer.
failure_reason:
$ref: "#/components/schemas/BankTransferFailure"
custom_tag:
type: string
description: A string containing the custom tag provided by the client in the create request. Will be null if not provided.
nullable: true
metadata:
$ref: "#/components/schemas/BankTransferMetadata"
origination_account_id:
type: string
description: Plaid’s unique identifier for the origination account that was used for this transfer.
direction:
$ref: "#/components/schemas/BankTransferDirection"
required:
- id
- ach_class
- account_id
- type
- user
- amount
- iso_currency_code
- description
- created
- status
- network
- cancellable
- failure_reason
- custom_tag
- metadata
- origination_account_id
- direction
ACHClass:
type: string
title: ACHClass
enum:
- arc
- cbr
- ccd
- cie
- cor
- ctx
- iat
- mte
- pbr
- pop
- pos
- ppd
- rck
- tel
- web
description: |-
Specifies the use case of the transfer. Required for transfers on an ACH network.
`"arc"` - Accounts Receivable Entry
`"cbr`" - Cross Border Entry
`"ccd"` - Corporate Credit or Debit - fund transfer between two corporate bank accounts
`"cie"` - Customer Initiated Entry
`"cor"` - Automated Notification of Change
`"ctx"` - Corporate Trade Exchange
`"iat"` - International
`"mte"` - Machine Transfer Entry
`"pbr"` - Cross Border Entry
`"pop"` - Point-of-Purchase Entry
`"pos"` - Point-of-Sale Entry
`"ppd"` - Prearranged Payment or Deposit - the transfer is part of a pre-existing relationship with a consumer, eg. bill payment
`"rck"` - Re-presented Check Entry
`"tel"` - Telephone-Initiated Entry
`"web"` - Internet-Initiated Entry - debits from a consumer’s account where their authorization is obtained over the Internet
TransferAmount:
title: TransferAmount
type: string
description: The amount of the transfer (decimal string with two digits of precision e.g. “10.00”).
TransferSweepAmount:
title: TransferSweepAmount
type: string
description: A signed amount of how much was `swept` or `reverse_swept` (decimal string with two digits of precision e.g. “-5.50”).
TransferIntentGetFailureReason:
title: TransferIntentGetFailureReason
type: object
nullable: true
additionalProperties: true
description: The reason for a failed transfer intent. Returned only if the transfer intent status is `failed`. Null otherwise.
properties:
error_type:
type: string
description: A broad categorization of the error.
error_code:
type: string
description: |-
A code representing the reason for a failed transfer intent (i.e., an API error or the authorization being declined).
For a full listing of bank transfer errors, see [Bank Transfers errors](https://plaid.com/docs/errors/bank-transfers/).
error_message:
type: string
description: A human-readable description of the code associated with a failed transfer intent.
TransferIntentCreateMode:
title: TransferIntentCreateMode
type: string
enum:
- PAYMENT
- DISBURSEMENT
description: |-
The direction of the flow of transfer funds.
- `PAYMENT` – Transfers funds from an end user's account to your business account.
- `DISBURSEMENT` – Transfers funds from your business account to an end user's account.
BankTransferAmount:
title: BankTransferAmount
type: string
description: The amount of the bank transfer (decimal string with two digits of precision e.g. “10.00”).
TransferCreateIdempotencyKey:
title: TransferCreateIdempotencyKey
type: string
maxLength: 50
description: |-
A random key provided by the client, per unique transfer. Maximum of 50 characters.
The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. For example, if a request to create a transfer fails due to a network connection error, you can retry the request with the same idempotency key to guarantee that only a single transfer is created.
BankTransferIdempotencyKey:
title: BankTransferIdempotencyKey
type: string
maxLength: 50
description: |-
A random key provided by the client, per unique bank transfer. Maximum of 50 characters.
The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. For example, if a request to create a bank transfer fails due to a network connection error, you can retry the request with the same idempotency key to guarantee that only a single bank transfer is created.
TransferUserInRequest:
title: TransferUserInRequest
type: object
additionalProperties: true
description: The legal name and other information for the account holder.
properties:
legal_name:
type: string
description: The user's legal name.
phone_number:
type: string
description: The user's phone number.
email_address:
type: string
description: The user's email address.
address:
$ref: "#/components/schemas/TransferUserAddressInRequest"
required:
- legal_name
TransferUserInResponse:
title: TransferUserInResponse
type: object
additionalProperties: true
description: The legal name and other information for the account holder.
properties:
legal_name:
type: string
description: The user's legal name.
phone_number:
type: string
description: The user's phone number.
nullable: true
email_address:
type: string
description: The user's email address.
nullable: true
address:
$ref: "#/components/schemas/TransferUserAddressInResponse"
required:
- legal_name
- phone_number
- email_address
- address
TransferUserAddressInRequest:
title: TransferUserAddressInRequest
type: object
additionalProperties: true
description: The address associated with the account holder.
properties:
street:
type: string
description: The street number and name (i.e., "100 Market St.").
city:
type: string
description: Ex. "San Francisco"
region:
type: string
description: The state or province (e.g., "California").
postal_code:
type: string
description: The postal code (e.g., "94103").
country:
type: string
description: A two-letter country code (e.g., "US").
TransferUserAddressInResponse:
title: TransferUserAddressInResponse
type: object
nullable: true
additionalProperties: true
description: The address associated with the account holder.
properties:
street:
type: string
description: The street number and name (i.e., "100 Market St.").
nullable: true
city:
type: string
description: Ex. "San Francisco"
nullable: true
region:
type: string
description: The state or province (e.g., "California").
nullable: true
postal_code:
type: string
description: The postal code (e.g., "94103").
nullable: true
country:
type: string
description: A two-letter country code (e.g., "US").
nullable: true
required:
- street
- city
- region
- postal_code
- country
BankTransferUser:
title: BankTransferUser
type: object
additionalProperties: true
description: The legal name and other information for the account holder.
properties:
legal_name:
type: string
description: The account holder’s full legal name. If the transfer description is `ccd`, this should be the business name of the account holder.
email_address:
type: string
description: The account holder’s email.
nullable: true
routing_number:
type: string
description: The account holder's routing number. This field is only used in response data. Do not provide this field when making requests.
readOnly: true
required:
- legal_name
TransferAuthorizationDecisionRationale:
title: TransferAuthorizationDecisionRationale
type: object
nullable: true
additionalProperties: true
description: The rationale for Plaid's decision regarding a proposed transfer. Will be null for `approved` decisions.
properties:
code:
type: string
description: |-
A code representing the rationale for permitting or declining the proposed transfer. Possible values are:
`NSF` – Transaction likely to result in a return due to insufficient funds.
`RISK` - Transaction is high-risk.
`MANUALLY_VERIFIED_ITEM` – Item created via same-day micro deposits, limited information available. Plaid can only offer `permitted` as a transaction decision.
`LOGIN_REQUIRED` – Unable to collect the account information required for an authorization decision due to Item staleness. Can be rectified using Link update mode.
`ERROR` – Unable to collect the account information required for an authorization decision due to an error.
enum:
- NSF
- RISK
- MANUALLY_VERIFIED_ITEM
- LOGIN_REQUIRED
- ERROR
description:
type: string
description: A human-readable description of the code associated with a permitted transfer or transfer decline.
required:
- code
- description
TransferAuthorizationProposedTransfer:
title: TransferAuthorizationProposedTransfer
type: object
additionalProperties: true
description: Details regarding the proposed transfer.
properties:
ach_class:
$ref: "#/components/schemas/ACHClass"
account_id:
type: string
description: The Plaid `account_id` for the account that will be debited or credited.
type:
$ref: "#/components/schemas/TransferType"
user:
$ref: "#/components/schemas/TransferUserInResponse"
amount:
$ref: "#/components/schemas/TransferAmount"
network:
type: string
description: The network or rails used for the transfer.
origination_account_id:
type: string
description: Plaid's unique identifier for the origination account that was used for this transfer.
iso_currency_code:
type: string
description: The currency of the transfer amount. The default value is "USD".
required:
- ach_class
- account_id
- type
- user
- amount
- network
- origination_account_id
- iso_currency_code
TransferAuthorizationDevice:
title: TransferAuthorizationDevice
type: object
additionalProperties: true
description: Information about the device being used to initiate the authorization.
properties:
ip_address:
type: string
description: The IP address of the device being used to initiate the authorization.
user_agent:
type: string
description: The user agent of the device being used to initiate the authorization.
TransferMetadata:
type: object
additionalProperties:
type: string
title: TransferMetadata
nullable: true
maxProperties: 50
description: |
The Metadata object is a mapping of client-provided string fields to any string value. The following limitations apply:
- The JSON values must be Strings (no nested JSON objects allowed)
- Only ASCII characters may be used
- Maximum of 50 key/value pairs
- Maximum key length of 40 characters
- Maximum value length of 500 characters
BankTransferMetadata:
type: object
additionalProperties:
type: string
title: BankTransferMetadata
nullable: true
maxProperties: 50
description: |
The Metadata object is a mapping of client-provided string fields to any string value. The following limitations apply:
- The JSON values must be Strings (no nested JSON objects allowed)
- Only ASCII characters may be used
- Maximum of 50 key/value pairs
- Maximum key length of 40 characters
- Maximum value length of 500 characters
TransferType:
type: string
title: TransferType
description: The type of transfer. This will be either `debit` or `credit`. A `debit` indicates a transfer of money into the origination account; a `credit` indicates a transfer of money out of the origination account.
enum:
- debit
- credit
BankTransferType:
type: string
title: BankTransferType
description: The type of bank transfer. This will be either `debit` or `credit`. A `debit` indicates a transfer of money into the origination account; a `credit` indicates a transfer of money out of the origination account.
enum:
- debit
- credit
TransferStatus:
type: string
title: TransferStatus
description: The status of the transfer.
enum:
- pending
- posted
- cancelled
- failed
- reversed
TransferSweepStatus:
type: string
nullable: true
title: TransferSweepStatus
description: |-
The status of the sweep for the transfer.
`unswept`: The transfer hasn't been swept yet.
`swept`: The transfer was swept to the sweep account.
`reverse_swept`: The transfer was reversed, funds were pulled back or pushed back to the sweep account.
`null`: The transfer will never be swept (e.g. if the transfer is cancelled or reversed before being swept)
enum:
- null
- unswept
- swept
- reverse_swept
BankTransferStatus:
type: string
title: BankTransferStatus
description: The status of the transfer.
enum:
- pending
- posted
- cancelled
- failed
- reversed
TransferNetwork:
type: string
title: TransferNetwork
description: The network or rails used for the transfer. Valid options are `ach` or `same-day-ach`.
enum:
- ach
- same-day-ach
BankTransferNetwork:
type: string
title: BankTransferNetwork
description: The network or rails used for the transfer. Valid options are `ach`, `same-day-ach`, or `wire`.
enum:
- ach
- same-day-ach
- wire
TransferFailure:
title: TransferFailure
type: object
additionalProperties: true
nullable: true
description: The failure reason if the type of this transfer is `"failed"` or `"reversed"`. Null value otherwise.
properties:
ach_return_code:
type: string
nullable: true
description: The ACH return code, e.g. `R01`. A return code will be provided if and only if the transfer status is `reversed`. For a full listing of ACH return codes, see [Bank Transfers errors](https://plaid.com/docs/errors/bank-transfers/#ach-return-codes).
description:
type: string
description: A human-readable description of the reason for the failure or reversal.
BankTransferFailure:
title: BankTransferFailure
type: object
additionalProperties: true
nullable: true
description: The failure reason if the type of this transfer is `"failed"` or `"reversed"`. Null value otherwise.
properties:
ach_return_code:
type: string
nullable: true
description: The ACH return code, e.g. `R01`. A return code will be provided if and only if the transfer status is `reversed`. For a full listing of ACH return codes, see [Bank Transfers errors](https://plaid.com/docs/errors/bank-transfers/#ach-return-codes).
description:
type: string
description: A human-readable description of the reason for the failure or reversal.
TransferAuthorizationCreateRequest:
title: TransferAuthorizationCreateRequest
type: object
description: Defines the request schema for `/transfer/authorization/create`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
access_token:
$ref: "#/components/schemas/TransferAccessToken"
account_id:
type: string
description: The Plaid `account_id` for the account that will be debited or credited.
type:
$ref: "#/components/schemas/TransferType"
network:
$ref: "#/components/schemas/TransferNetwork"
amount:
$ref: "#/components/schemas/TransferAmount"
ach_class:
$ref: "#/components/schemas/ACHClass"
user:
$ref: "#/components/schemas/TransferUserInRequest"
device:
$ref: "#/components/schemas/TransferAuthorizationDevice"
origination_account_id:
type: string
description: Plaid's unique identifier for the origination account for this authorization. If not specified, the default account will be used.
iso_currency_code:
type: string
description: The currency of the transfer amount. The default value is "USD".
required:
- access_token
- account_id
- type
- network
- amount
- ach_class
- user
TransferCreateRequest:
title: TransferCreateRequest
type: object
description: Defines the request schema for `/transfer/create`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
idempotency_key:
$ref: "#/components/schemas/TransferCreateIdempotencyKey"
access_token:
$ref: "#/components/schemas/TransferAccessToken"
account_id:
type: string
description: The Plaid `account_id` for the account that will be debited or credited.
authorization_id:
$ref: "#/components/schemas/TransferAuthorizationID"
type:
$ref: "#/components/schemas/TransferType"
network:
$ref: "#/components/schemas/TransferNetwork"
amount:
$ref: "#/components/schemas/TransferAmount"
description:
type: string
description: The transfer description. Maximum of 10 characters.
maxLength: 10
ach_class:
$ref: "#/components/schemas/ACHClass"
user:
$ref: "#/components/schemas/TransferUserInRequest"
metadata:
$ref: "#/components/schemas/TransferMetadata"
origination_account_id:
type: string
nullable: true
description: Plaid’s unique identifier for the origination account for this transfer. If you have more than one origination account, this value must be specified. Otherwise, this field should be left blank.
iso_currency_code:
type: string
description: The currency of the transfer amount. The default value is "USD".
required:
- idempotency_key
- access_token
- account_id
- authorization_id
- type
- network
- amount
- description
- ach_class
- user
BankTransferCreateRequest:
title: BankTransferCreateRequest
type: object
description: Defines the request schema for `/bank_transfer/create`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
idempotency_key:
$ref: "#/components/schemas/BankTransferIdempotencyKey"
access_token:
$ref: "#/components/schemas/BankTransferAccessToken"
account_id:
type: string
description: The Plaid `account_id` for the account that will be debited or credited.
type:
$ref: "#/components/schemas/BankTransferType"
network:
$ref: "#/components/schemas/BankTransferNetwork"
amount:
$ref: "#/components/schemas/BankTransferAmount"
iso_currency_code:
type: string
description: The currency of the transfer amount – should be set to "USD".
description:
type: string
description: The transfer description. Maximum of 10 characters.
maxLength: 10
ach_class:
$ref: "#/components/schemas/ACHClass"
user:
$ref: "#/components/schemas/BankTransferUser"
custom_tag:
type: string
maxLength: 100
nullable: true
description: An arbitrary string provided by the client for storage with the bank transfer. May be up to 100 characters.
metadata:
$ref: "#/components/schemas/BankTransferMetadata"
origination_account_id:
type: string
nullable: true
description: Plaid’s unique identifier for the origination account for this transfer. If you have more than one origination account, this value must be specified. Otherwise, this field should be left blank.
required:
- idempotency_key
- access_token
- account_id
- type
- network
- amount
- iso_currency_code
- description
- user
TransferAuthorizationCreateResponse:
title: TransferAuthorizationCreateResponse
type: object
additionalProperties: true
description: Defines the response schema for `/transfer/authorization/create`
properties:
authorization:
$ref: "#/components/schemas/TransferAuthorization"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- authorization
- request_id
TransferAuthorization:
title: TransferAuthorization
type: object
additionalProperties: true
description: TransferAuthorization contains the authorization decision for a proposed transfer
properties:
id:
$ref: "#/components/schemas/TransferAuthorizationID"
created:
type: string
format: date-time
description: The datetime representing when the authorization was created, in the format `2006-01-02T15:04:05Z`.
decision:
type: string
description: "\nA decision regarding the proposed transfer.\n\n`approved` – The proposed transfer has received the end user's consent and has been approved for processing. Plaid has also reviewed the proposed transfer and has approved it for processing. \n\n`permitted` – Plaid was unable to fetch the information required to approve or decline the proposed transfer. You may proceed with the transfer, but further review is recommended. Plaid is awaiting further instructions from the client.\n\n`declined` – Plaid reviewed the proposed transfer and declined processing. Refer to the `code` field in the `decision_rationale` object for details."
enum:
- approved
- permitted
- declined
decision_rationale:
$ref: "#/components/schemas/TransferAuthorizationDecisionRationale"
proposed_transfer:
$ref: "#/components/schemas/TransferAuthorizationProposedTransfer"
required:
- id
- created
- decision
- decision_rationale
- proposed_transfer
TransferCreateResponse:
title: TransferCreateResponse
type: object
additionalProperties: true
description: Defines the response schema for `/transfer/create`
properties:
transfer:
$ref: "#/components/schemas/Transfer"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- transfer
- request_id
BankTransferCreateResponse:
title: BankTransferCreateResponse
type: object
additionalProperties: true
description: Defines the response schema for `/bank_transfer/create`
properties:
bank_transfer:
$ref: "#/components/schemas/BankTransfer"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- bank_transfer
- request_id
TransferListRequest:
title: TransferListRequest
type: object
description: Defines the request schema for `/transfer/list`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
start_date:
type: string
format: date-time
nullable: true
description: The start datetime of transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)
end_date:
type: string
format: date-time
nullable: true
description: The end datetime of transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)
count:
type: integer
minimum: 1
maximum: 25
default: 25
description: The maximum number of transfers to return.
offset:
type: integer
default: 0
minimum: 0
description: The number of transfers to skip before returning results.
origination_account_id:
type: string
nullable: true
description: Filter transfers to only those originated through the specified origination account.
BankTransferListRequest:
title: BankTransferListRequest
type: object
description: Defines the request schema for `/bank_transfer/list`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
start_date:
type: string
format: date-time
nullable: true
description: The start datetime of bank transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)
end_date:
type: string
format: date-time
nullable: true
description: The end datetime of bank transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)
count:
type: integer
minimum: 1
maximum: 25
default: 25
description: The maximum number of bank transfers to return.
offset:
type: integer
default: 0
minimum: 0
description: The number of bank transfers to skip before returning results.
origination_account_id:
type: string
nullable: true
description: Filter bank transfers to only those originated through the specified origination account.
direction:
$ref: "#/components/schemas/BankTransferDirection"
TransferListResponse:
title: TransferListResponse
type: object
additionalProperties: true
description: Defines the response schema for `/transfer/list`
properties:
transfers:
type: array
items:
$ref: "#/components/schemas/Transfer"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- transfers
- request_id
BankTransferListResponse:
title: BankTransferListResponse
type: object
additionalProperties: true
description: Defines the response schema for `/bank_transfer/list`
properties:
bank_transfers:
type: array
items:
$ref: "#/components/schemas/BankTransfer"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- bank_transfers
- request_id
BankTransferDirection:
type: string
nullable: true
title: BankTransferDirection
description: "Indicates the direction of the transfer: `outbound` for API-initiated transfers, or `inbound` for payments received by the FBO account."
enum:
- outbound
- inbound
- null
TransferCancelRequest:
title: TransferCancelRequest
type: object
description: Defines the request schema for `/transfer/cancel`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
transfer_id:
$ref: "#/components/schemas/TransferID"
required:
- transfer_id
BankTransferCancelRequest:
title: BankTransferCancelRequest
type: object
description: Defines the request schema for `/bank_transfer/cancel`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
bank_transfer_id:
$ref: "#/components/schemas/BankTransferID"
required:
- bank_transfer_id
TransferCancelResponse:
title: TransferCancelResponse
type: object
additionalProperties: true
description: Defines the response schema for `/transfer/cancel`
properties:
request_id:
$ref: "#/components/schemas/RequestID"
required:
- request_id
BankTransferCancelResponse:
title: BankTransferCancelResponse
type: object
additionalProperties: true
description: Defines the response schema for `/bank_transfer/cancel`
properties:
request_id:
$ref: "#/components/schemas/RequestID"
required:
- request_id
TransferEventListRequest:
title: TransferEventListRequest
type: object
description: Defines the request schema for `/transfer/event/list`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
start_date:
type: string
format: date-time
description: The start datetime of transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)
nullable: true
end_date:
type: string
format: date-time
description: The end datetime of transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)
nullable: true
transfer_id:
type: string
title: TransferID
description: Plaid’s unique identifier for a transfer.
nullable: true
account_id:
type: string
description: The account ID to get events for all transactions to/from an account.
nullable: true
transfer_type:
type: string
nullable: true
title: TransferType
description: The type of transfer. This will be either `debit` or `credit`. A `debit` indicates a transfer of money into your origination account; a `credit` indicates a transfer of money out of your origination account.
enum:
- debit
- credit
- null
event_types:
type: array
description: Filter events by event type.
items:
$ref: "#/components/schemas/TransferEventType"
sweep_id:
$ref: "#/components/schemas/TransferSweepID"
count:
type: integer
description: The maximum number of transfer events to return. If the number of events matching the above parameters is greater than `count`, the most recent events will be returned.
default: 25
maximum: 25
minimum: 1
nullable: true
offset:
type: integer
default: 0
minimum: 0
description: The offset into the list of transfer events. When `count`=25 and `offset`=0, the first 25 events will be returned. When `count`=25 and `offset`=25, the next 25 bank transfer events will be returned.
nullable: true
origination_account_id:
type: string
description: The origination account ID to get events for transfers from a specific origination account.
nullable: true
BankTransferEventListRequest:
title: BankTransferEventListRequest
type: object
description: Defines the request schema for `/bank_transfer/event/list`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
start_date:
type: string
format: date-time
description: The start datetime of bank transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)
nullable: true
end_date:
type: string
format: date-time
description: The end datetime of bank transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)
nullable: true
bank_transfer_id:
type: string
title: BankTransferID
description: Plaid’s unique identifier for a bank transfer.
nullable: true
account_id:
type: string
description: The account ID to get events for all transactions to/from an account.
nullable: true
bank_transfer_type:
type: string
nullable: true
title: BankTransferType
description: The type of bank transfer. This will be either `debit` or `credit`. A `debit` indicates a transfer of money into your origination account; a `credit` indicates a transfer of money out of your origination account.
enum:
- debit
- credit
- null
event_types:
type: array
description: Filter events by event type.
items:
$ref: "#/components/schemas/BankTransferEventType"
count:
type: integer
description: The maximum number of bank transfer events to return. If the number of events matching the above parameters is greater than `count`, the most recent events will be returned.
default: 25
maximum: 25
minimum: 1
nullable: true
offset:
type: integer
default: 0
minimum: 0
description: The offset into the list of bank transfer events. When `count`=25 and `offset`=0, the first 25 events will be returned. When `count`=25 and `offset`=25, the next 25 bank transfer events will be returned.
nullable: true
origination_account_id:
type: string
description: The origination account ID to get events for transfers from a specific origination account.
nullable: true
direction:
type: string
title: BankTransferDirection
description: |-
Indicates the direction of the transfer: `outbound`: for API-initiated transfers
`inbound`: for payments received by the FBO account.
enum:
- inbound
- outbound
- null
nullable: true
TransferEventType:
type: string
title: TransferEventType
description: |-
The type of event that this transfer represents.
`pending`: A new transfer was created; it is in the pending state.
`cancelled`: The transfer was cancelled by the client.
`failed`: The transfer failed, no funds were moved.
`posted`: The transfer has been successfully submitted to the payment network.
`reversed`: A posted transfer was reversed.
`swept`: The transfer was swept to / from the sweep account.
`reverse_swept`: Due to the transfer reversing, funds were pulled from or pushed back to the sweep account.
enum:
- pending
- cancelled
- failed
- posted
- reversed
- swept
- reverse_swept
BankTransferEventType:
type: string
title: BankTransferEventType
description: |-
The type of event that this bank transfer represents.
`pending`: A new transfer was created; it is in the pending state.
`cancelled`: The transfer was cancelled by the client.
`failed`: The transfer failed, no funds were moved.
`posted`: The transfer has been successfully submitted to the payment network.
`reversed`: A posted transfer was reversed.
`receiver_pending`: The matching transfer was found as a pending transaction in the receiver's account
`receiver_posted`: The matching transfer was found as a posted transaction in the receiver's account
enum:
- pending
- cancelled
- failed
- posted
- reversed
- receiver_pending
- receiver_posted
TransferEvent:
title: TransferEvent
type: object
additionalProperties: true
description: Represents an event in the Transfers API.
properties:
event_id:
type: integer
description: Plaid’s unique identifier for this event. IDs are sequential unsigned 64-bit integers.
minimum: 0
timestamp:
type: string
format: date-time
description: The datetime when this event occurred. This will be of the form `2006-01-02T15:04:05Z`.
event_type:
$ref: "#/components/schemas/TransferEventType"
account_id:
type: string
description: The account ID associated with the transfer.
transfer_id:
$ref: "#/components/schemas/TransferID"
origination_account_id:
type: string
description: The ID of the origination account that this balance belongs to.
nullable: true
transfer_type:
$ref: "#/components/schemas/TransferType"
transfer_amount:
$ref: "#/components/schemas/TransferAmount"
failure_reason:
$ref: "#/components/schemas/TransferFailure"
sweep_id:
$ref: "#/components/schemas/TransferSweepID"
sweep_amount:
$ref: "#/components/schemas/TransferSweepAmount"
required:
- event_id
- timestamp
- event_type
- account_id
- transfer_id
- origination_account_id
- transfer_type
- transfer_amount
- failure_reason
BankTransferEvent:
title: BankTransferEvent
type: object
additionalProperties: true
description: Represents an event in the Bank Transfers API.
properties:
event_id:
type: integer
description: Plaid’s unique identifier for this event. IDs are sequential unsigned 64-bit integers.
minimum: 0
timestamp:
type: string
format: date-time
description: The datetime when this event occurred. This will be of the form `2006-01-02T15:04:05Z`.
event_type:
$ref: "#/components/schemas/BankTransferEventType"
account_id:
type: string
description: The account ID associated with the bank transfer.
bank_transfer_id:
$ref: "#/components/schemas/BankTransferID"
origination_account_id:
type: string
description: The ID of the origination account that this balance belongs to.
nullable: true
bank_transfer_type:
$ref: "#/components/schemas/BankTransferType"
bank_transfer_amount:
type: string
description: The bank transfer amount.
bank_transfer_iso_currency_code:
type: string
description: The currency of the bank transfer amount.
failure_reason:
$ref: "#/components/schemas/BankTransferFailure"
direction:
$ref: "#/components/schemas/BankTransferDirection"
receiver_details:
$ref: "#/components/schemas/BankTransferReceiverDetails"
required:
- event_id
- timestamp
- event_type
- account_id
- bank_transfer_id
- origination_account_id
- bank_transfer_type
- bank_transfer_amount
- bank_transfer_iso_currency_code
- failure_reason
- direction
- receiver_details
TransferEventListResponse:
title: TransferEventListResponse
type: object
additionalProperties: true
description: Defines the response schema for `/transfer/event/list`
properties:
transfer_events:
type: array
items:
$ref: "#/components/schemas/TransferEvent"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- transfer_events
- request_id
BankTransferEventListResponse:
title: BankTransferEventListResponse
type: object
additionalProperties: true
description: Defines the response schema for `/bank_transfer/event/list`
properties:
bank_transfer_events:
type: array
items:
$ref: "#/components/schemas/BankTransferEvent"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- bank_transfer_events
- request_id
BankTransferEventSyncRequest:
title: BankTransferEventSyncRequest
type: object
description: Defines the request schema for `/bank_transfer/event/sync`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
after_id:
type: integer
description: The latest (largest) `event_id` fetched via the sync endpoint, or 0 initially.
minimum: 0
count:
type: integer
default: 25
minimum: 1
maximum: 25
description: The maximum number of bank transfer events to return.
nullable: true
required:
- after_id
TransferEventSyncRequest:
title: TransferEventSyncRequest
type: object
description: Defines the request schema for `/transfer/event/sync`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
after_id:
type: integer
description: The latest (largest) `event_id` fetched via the sync endpoint, or 0 initially.
minimum: 0
count:
type: integer
default: 25
minimum: 1
maximum: 25
description: The maximum number of transfer events to return.
nullable: true
required:
- after_id
BankTransferEventSyncResponse:
title: BankTransferEventSyncResponse
type: object
additionalProperties: true
description: Defines the response schema for `/bank_transfer/event/sync`
properties:
bank_transfer_events:
type: array
items:
$ref: "#/components/schemas/BankTransferEvent"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- bank_transfer_events
- request_id
TransferEventSyncResponse:
title: TransferEventSyncResponse
type: object
additionalProperties: true
description: Defines the response schema for `/transfer/event/sync`
properties:
transfer_events:
type: array
items:
$ref: "#/components/schemas/TransferEvent"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- transfer_events
- request_id
BankTransferSweepGetRequest:
title: BankTransferSweepGetRequest
type: object
description: Defines the request schema for `/bank_transfer/sweep/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
sweep_id:
type: string
description: Identifier of the sweep.
required:
- sweep_id
TransferSweepGetRequest:
title: TransferSweepGetRequest
type: object
description: Defines the request schema for `/transfer/sweep/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
sweep_id:
$ref: "#/components/schemas/TransferSweepID"
required:
- sweep_id
BankTransferSweepGetResponse:
title: BankTransferSweepGetResponse
type: object
additionalProperties: true
description: BankTransferSweepGetResponse defines the response schema for `/bank_transfer/sweep/get`
properties:
sweep:
$ref: "#/components/schemas/BankTransferSweep"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- sweep
- request_id
TransferSweepGetResponse:
title: TransferSweepGetResponse
type: object
additionalProperties: true
description: Defines the response schema for `/transfer/sweep/get`
properties:
sweep:
$ref: "#/components/schemas/TransferSweep"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- sweep
- request_id
BankTransferSweepListRequest:
title: BankTransferSweepListRequest
type: object
description: BankTransferSweepListRequest defines the request schema for `/bank_transfer/sweep/list`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
origination_account_id:
type: string
description: If multiple origination accounts are available, `origination_account_id` must be used to specify the account that the sweeps belong to.
nullable: true
start_time:
type: string
format: date-time
description: The start datetime of sweeps to return (RFC 3339 format).
nullable: true
end_time:
type: string
format: date-time
description: The end datetime of sweeps to return (RFC 3339 format).
nullable: true
count:
type: integer
minimum: 1
maximum: 25
default: 25
description: The maximum number of sweeps to return.
nullable: true
TransferSweepListRequest:
title: TransferSweepListRequest
type: object
description: Defines the request schema for `/transfer/sweep/list`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
start_date:
type: string
format: date-time
description: The start datetime of sweeps to return (RFC 3339 format).
nullable: true
end_date:
type: string
format: date-time
description: The end datetime of sweeps to return (RFC 3339 format).
nullable: true
count:
type: integer
minimum: 1
maximum: 25
default: 25
description: The maximum number of sweeps to return.
nullable: true
offset:
type: integer
default: 0
minimum: 0
description: The number of sweeps to skip before returning results.
TransferSweepListResponse:
title: TransferSweepListResponse
type: object
additionalProperties: true
description: Defines the response schema for `/transfer/sweep/list`
properties:
sweeps:
type: array
items:
$ref: "#/components/schemas/TransferSweep"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- sweeps
- request_id
BankTransferSweepListResponse:
title: BankTransferSweepListResponse
type: object
additionalProperties: true
description: BankTransferSweepListResponse defines the response schema for `/bank_transfer/sweep/list`
properties:
sweeps:
type: array
items:
$ref: "#/components/schemas/BankTransferSweep"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- sweeps
- request_id
BankTransferSweep:
title: BankTransferSweep
type: object
additionalProperties: true
description: BankTransferSweep describes a sweep transfer.
properties:
id:
type: string
description: Identifier of the sweep.
created_at:
type: string
description: The datetime when the sweep occurred, in RFC 3339 format.
format: date-time
amount:
type: string
description: The amount of the sweep.
iso_currency_code:
type: string
description: The currency of the sweep, e.g. "USD".
required:
- id
- created_at
- amount
- iso_currency_code
TransferSweep:
title: TransferSweep
type: object
additionalProperties: true
description: |-
Describes a sweep of funds to / from the sweep account.
A sweep is associated with many sweep events (events of type `swept` or `reverse_swept`) which
can be retrieved by invoking the `/transfer/event/list` endpoint with the corresponding `sweep_id`.
`swept` events occur when the transfer amount is credited or debited from your sweep account, depending
on the `type` of the transfer. `reverse_swept` events occur when a transfer is reversed and Plaid undoes the credit or debit.
The total sum of the `swept` and `reverse_swept` events is equal to the `amount` of the sweep Plaid creates and matches the amount
of the entry on your sweep account ledger.
properties:
id:
type: string
description: Identifier of the sweep.
created:
type: string
description: The datetime when the sweep occurred, in RFC 3339 format.
format: date-time
amount:
type: string
description: |-
Signed decimal amount of the sweep as it appears on your sweep account ledger (e.g. "-10.00")
If amount is not present, the sweep was net-settled to zero and outstanding debits and credits between
the sweep account and Plaid are balanced.
iso_currency_code:
type: string
description: The currency of the sweep, e.g. "USD".
required:
- id
- created
- amount
- iso_currency_code
SimulatedTransferSweep:
title: SimulatedTransferSweep
type: object
additionalProperties: true
description: |-
A sweep returned from the `/sandbox/transfer/sweep/simulate` endpoint.
Can be null if there are no transfers to include in a sweep.
allOf:
- $ref: "#/components/schemas/TransferSweep"
- type: object
nullable: true
BankTransferBalanceGetRequest:
title: BankTransferBalanceGetRequest
type: object
description: Defines the request schema for `/bank_transfer/balance/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
origination_account_id:
type: string
description: If multiple origination accounts are available, `origination_account_id` must be used to specify the account for which balance will be returned.
nullable: true
BankTransferBalanceGetResponse:
title: BankTransferBalanceGetResponse
type: object
additionalProperties: true
description: Defines the response schema for `/bank_transfer/balance/get`
properties:
balance:
$ref: "#/components/schemas/BankTransferBalance"
origination_account_id:
type: string
description: The ID of the origination account that this balance belongs to.
nullable: true
request_id:
$ref: "#/components/schemas/RequestID"
required:
- balance
- origination_account_id
- request_id
BankTransferBalance:
title: BankTransferBalance
type: object
additionalProperties: true
properties:
available:
type: string
description: The total available balance - the sum of all successful debit transfer amounts minus all credit transfer amounts.
transactable:
type: string
description: The transactable balance shows the amount in your account that you are able to use for transfers, and is essentially your available balance minus your minimum balance.
required:
- available
- transactable
BankTransferMigrateAccountRequest:
title: BankTransferMigrateAccountRequest
type: object
description: Defines the request schema for `/bank_transfer/migrate_account`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
account_number:
type: string
description: The user's account number.
routing_number:
type: string
description: The user's routing number.
account_type:
type: string
description: The type of the bank account (`checking` or `savings`).
required:
- account_number
- routing_number
- account_type
BankTransferMigrateAccountResponse:
title: BankTransferMigrateAccountResponse
type: object
additionalProperties: true
description: Defines the response schema for `/bank_transfer/migrate_account`
properties:
access_token:
type: string
description: The Plaid `access_token` for the newly created Item.
account_id:
type: string
description: The Plaid `account_id` for the newly created Item.
request_id:
$ref: "#/components/schemas/RequestID"
required:
- access_token
- account_id
- request_id
TransferIntentCreateRequest:
title: TransferIntentCreateRequest
type: object
description: Defines the request schema for `/transfer/intent/create`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
account_id:
type: string
description: The Plaid `account_id` for the account that will be debited or credited.
nullable: true
mode:
$ref: "#/components/schemas/TransferIntentCreateMode"
amount:
$ref: "#/components/schemas/TransferAmount"
description:
type: string
description: A description for the underlying transfer. Maximum of 8 characters.
maxLength: 8
ach_class:
$ref: "#/components/schemas/ACHClass"
origination_account_id:
type: string
nullable: true
description: Plaid’s unique identifier for the origination account for the intent. If not provided, the default account will be used.
user:
$ref: "#/components/schemas/TransferUserInRequest"
metadata:
$ref: "#/components/schemas/TransferMetadata"
iso_currency_code:
type: string
description: The currency of the transfer amount, e.g. "USD"
required:
- client_id
- secret
- mode
- amount
- description
- ach_class
- user
TransferIntentCreate:
title: TransferIntentCreate
type: object
additionalProperties: true
description: Represents a transfer intent within Transfer UI.
properties:
id:
type: string
description: Plaid's unique identifier for the transfer intent object.
created:
type: string
format: date-time
description: The datetime the transfer was created. This will be of the form `2006-01-02T15:04:05Z`.
status:
type: string
enum:
- PENDING
- SUCCEEDED
- FAILED
description: |-
The status of the transfer intent.
- `PENDING` – The transfer intent is pending.
- `SUCCEEDED` – The transfer intent was successfully created.
- `FAILED` – The transfer intent was unable to be created.
account_id:
type: string
description: The Plaid `account_id` for the account that will be debited or credited. Returned only if `account_id` was set on intent creation.
nullable: true
origination_account_id:
type: string
description: Plaid’s unique identifier for the origination account for the intent. If not provided, the default account will be used.
amount:
$ref: "#/components/schemas/TransferAmount"
mode:
$ref: "#/components/schemas/TransferIntentCreateMode"
ach_class:
$ref: "#/components/schemas/ACHClass"
user:
$ref: "#/components/schemas/TransferUserInResponse"
description:
type: string
description: A description for the underlying transfer. Maximum of 8 characters.
metadata:
$ref: "#/components/schemas/TransferMetadata"
iso_currency_code:
type: string
description: The currency of the transfer amount, e.g. "USD"
required:
- id
- created
- status
- origination_account_id
- amount
- mode
- ach_class
- user
- description
- iso_currency_code
TransferIntentCreateResponse:
title: TransferIntentCreateResponse
type: object
additionalProperties: true
description: Defines the response schema for `/transfer/intent/create`
properties:
transfer_intent:
$ref: "#/components/schemas/TransferIntentCreate"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- transfer_intent
- request_id
TransferIntentGetRequest:
title: TransferIntentGetRequest
type: object
additionalProperties: true
description: Defines the request schema for `/transfer/intent/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
transfer_intent_id:
type: string
description: Plaid's unique identifier for a transfer intent object.
required:
- client_id
- secret
- transfer_intent_id
TransferIntentGet:
title: TransferIntentGet
type: object
additionalProperties: true
description: Represents a transfer intent within Transfer UI.
properties:
id:
type: string
description: Plaid's unique identifier for a transfer intent object.
created:
type: string
format: date-time
description: The datetime the transfer was created. This will be of the form `2006-01-02T15:04:05Z`.
status:
type: string
enum:
- PENDING
- SUCCEEDED
- FAILED
description: |-
The status of the transfer intent.
- `PENDING` – The transfer intent is pending.
- `SUCCEEDED` – The transfer intent was successfully created.
- `FAILED` – The transfer intent was unable to be created.
transfer_id:
type: string
description: Plaid's unique identifier for the transfer created through the UI. Returned only if the transfer was successfully created. Null value otherwise.
nullable: true
failure_reason:
$ref: "#/components/schemas/TransferIntentGetFailureReason"
authorization_decision:
type: string
enum:
- APPROVED
- PERMITTED
- DECLINED
description: "\nA decision regarding the proposed transfer.\n\n`APPROVED` – The proposed transfer has received the end user's consent and has been approved for processing. Plaid has also reviewed the proposed transfer and has approved it for processing. \n\n`PERMITTED` – Plaid was unable to fetch the information required to approve or decline the proposed transfer. You may proceed with the transfer, but further review is recommended. Plaid is awaiting further instructions from the client.\n\n`DECLINED` – Plaid reviewed the proposed transfer and declined processing. Refer to the `code` field in the `decision_rationale` object for details. Null value otherwise."
nullable: true
authorization_decision_rationale:
$ref: "#/components/schemas/TransferAuthorizationDecisionRationale"
account_id:
type: string
description: The Plaid `account_id` for the account that will be debited or credited. Returned only if `account_id` was set on intent creation.
nullable: true
origination_account_id:
type: string
description: Plaid’s unique identifier for the origination account used for the transfer.
amount:
$ref: "#/components/schemas/TransferAmount"
mode:
$ref: "#/components/schemas/TransferIntentCreateMode"
ach_class:
$ref: "#/components/schemas/ACHClass"
user:
$ref: "#/components/schemas/TransferUserInResponse"
description:
type: string
description: A description for the underlying transfer. Maximum of 8 characters.
metadata:
$ref: "#/components/schemas/TransferMetadata"
iso_currency_code:
type: string
description: The currency of the transfer amount, e.g. "USD"
required:
- id
- created
- status
- transfer_id
- failure_reason
- authorization_decision
- authorization_decision_rationale
- origination_account_id
- amount
- mode
- ach_class
- user
- description
- iso_currency_code
TransferIntentGetResponse:
title: TransferIntentGetResponse
type: object
additionalProperties: true
description: Defines the response schema for `/transfer/intent/get`
properties:
transfer_intent:
$ref: "#/components/schemas/TransferIntentGet"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- transfer_intent
- request_id
SandboxBankTransferSimulateRequest:
title: SandboxBankTransferSimulateRequest
type: object
description: Defines the request schema for `/sandbox/bank_transfer/simulate`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
bank_transfer_id:
$ref: "#/components/schemas/BankTransferID"
event_type:
type: string
description: |
The asynchronous event to be simulated. May be: `posted`, `failed`, or `reversed`.
An error will be returned if the event type is incompatible with the current transfer status. Compatible status --> event type transitions include:
`pending` --> `failed`
`pending` --> `posted`
`posted` --> `reversed`
failure_reason:
$ref: "#/components/schemas/BankTransferFailure"
required:
- bank_transfer_id
- event_type
SandboxTransferSimulateRequest:
title: SandboxTransferSimulateRequest
type: object
description: Defines the request schema for `/sandbox/transfer/simulate`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
transfer_id:
$ref: "#/components/schemas/TransferID"
event_type:
type: string
description: |
The asynchronous event to be simulated. May be: `posted`, `failed`, or `reversed`.
An error will be returned if the event type is incompatible with the current transfer status. Compatible status --> event type transitions include:
`pending` --> `failed`
`pending` --> `posted`
`posted` --> `reversed`
failure_reason:
$ref: "#/components/schemas/TransferFailure"
required:
- transfer_id
- event_type
SandboxTransferSweepSimulateRequest:
title: SandboxTransferSweepSimulateRequest
type: object
description: Defines the request schema for `/sandbox/transfer/sweep/simulate`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
SandboxBankTransferSimulateResponse:
title: SandboxBankTransferSimulateResponse
type: object
additionalProperties: true
description: Defines the response schema for `/sandbox/bank_transfer/simulate`
properties:
request_id:
$ref: "#/components/schemas/RequestID"
required:
- request_id
SandboxTransferSimulateResponse:
title: SandboxTransferSimulateResponse
type: object
additionalProperties: true
description: Defines the response schema for `/sandbox/transfer/simulate`
properties:
request_id:
$ref: "#/components/schemas/RequestID"
required:
- request_id
SandboxTransferSweepSimulateResponse:
title: SandboxTransferSweepSimulateResponse
type: object
additionalProperties: true
description: Defines the response schema for `/sandbox/transfer/sweep/simulate`
properties:
sweep:
$ref: "#/components/schemas/SimulatedTransferSweep"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- request_id
BankTransferReceiverDetails:
title: BankTransferReceiverDetails
type: object
additionalProperties: true
description: The receiver details if the type of this event is `reciever_pending` or `reciever_posted`. Null value otherwise.
nullable: true
properties:
available_balance:
type: string
description: The sign of the available balance for the receiver bank account associated with the receiver event at the time the matching transaction was found. Can be `positive`, `negative`, or null if the balance was not available at the time.
enum:
- positive
- negative
- null
nullable: true
required:
- available_balance
AccountFiltersResponse:
title: AccountFiltersResponse
description: |
The `account_filters` specified in the original call to `/link/token/create`.
type: object
additionalProperties: true
properties:
depository:
$ref: "#/components/schemas/DepositoryFilter"
credit:
$ref: "#/components/schemas/CreditFilter"
loan:
$ref: "#/components/schemas/LoanFilter"
investment:
$ref: "#/components/schemas/InvestmentFilter"
InstitutionsSearchAccountFilter:
title: InstitutionsSearchAccountFilter
type: object
additionalProperties: true
properties:
loan:
type: array
items:
$ref: "#/components/schemas/AccountSubtype"
depository:
type: array
items:
$ref: "#/components/schemas/AccountSubtype"
credit:
type: array
items:
$ref: "#/components/schemas/AccountSubtype"
investment:
type: array
items:
$ref: "#/components/schemas/AccountSubtype"
AccountIdentity:
title: AccountIdentity
allOf:
- $ref: "#/components/schemas/AccountBase"
- type: object
additionalProperties: true
properties:
owners:
type: array
description: Data returned by the financial institution about the account owner or owners. Only returned by Identity or Assets endpoints. Multiple owners on a single account will be represented in the same `owner` object, not in multiple owner objects within the array. In API versions 2018-05-22 and earlier, the `owners` object is not returned, and instead identity information is returned in the top level `identity` object. For more details, see [Plaid API versioning](https://plaid.com/docs/api/versioning/#version-2019-05-29)
items:
$ref: "#/components/schemas/Owner"
required:
- owners
AccountAssets:
title: AccountAssets
allOf:
- $ref: "#/components/schemas/AccountBase"
- type: object
additionalProperties: true
properties:
days_available:
type: number
description: The duration of transaction history available for this Item, typically defined as the time since the date of the earliest transaction in that account. Only returned by Assets endpoints.
transactions:
type: array
description: Transaction history associated with the account. Only returned by Assets endpoints. Transaction history returned by endpoints such as `/transactions/get` or `/investments/transactions/get` will be returned in the top-level `transactions` field instead.
items:
$ref: "#/components/schemas/AssetReportTransaction"
owners:
type: array
description: Data returned by the financial institution about the account owner or owners. Only returned by Identity or Assets endpoints. Multiple owners on a single account will be represented in the same `owner` object, not in multiple owner objects within the array. In API versions 2018-05-22 and earlier, the `owners` object is not returned, and instead identity information is returned in the top level `identity` object. For more details, see [Plaid API versioning](https://plaid.com/docs/api/versioning/#version-2019-05-29)
items:
$ref: "#/components/schemas/Owner"
historical_balances:
type: array
description: Calculated data about the historical balances on the account. Only returned by Assets endpoints.
items:
$ref: "#/components/schemas/HistoricalBalance"
required:
- days_available
- transactions
- owners
- historical_balances
DepositoryFilter:
title: DepositoryFilter
description: A filter to apply to `depository`-type accounts
type: object
additionalProperties: true
properties:
account_subtypes:
$ref: "#/components/schemas/AccountSubtypes"
required:
- account_subtypes
CreditFilter:
title: CreditFilter
description: A filter to apply to `credit`-type accounts
type: object
additionalProperties: true
properties:
account_subtypes:
$ref: "#/components/schemas/AccountSubtypes"
required:
- account_subtypes
LoanFilter:
title: LoanFilter
description: A filter to apply to `loan`-type accounts
type: object
additionalProperties: true
properties:
account_subtypes:
$ref: "#/components/schemas/AccountSubtypes"
required:
- account_subtypes
InvestmentFilter:
title: InvestmentFilter
description: A filter to apply to `investment`-type accounts (or `brokerage`-type acconunts for API versions 2018-05-22 and earlier).
type: object
additionalProperties: true
properties:
account_subtypes:
$ref: "#/components/schemas/AccountSubtypes"
required:
- account_subtypes
EmployersSearchRequest:
title: EmployersSearchRequest
type: object
description: EmployersSearchRequest defines the request schema for `/employers/search`.
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
query:
type: string
description: The employer name to be searched for.
products:
type: array
description: The Plaid products the returned employers should support. Currently, this field must be set to `"deposit_switch"`.
items:
type: string
required:
- query
- products
EmployersSearchResponse:
title: EmployersSearchResponse
type: object
additionalProperties: true
description: EmployersSearchResponse defines the response schema for `/employers/search`.
properties:
employers:
type: array
description: A list of employers matching the search criteria.
items:
$ref: "#/components/schemas/Employer"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- employers
- request_id
Employer:
title: Employer
type: object
additionalProperties: true
description: Data about the employer.
properties:
employer_id:
type: string
description: Plaid's unique identifier for the employer.
name:
type: string
description: The name of the employer
address:
$ref: "#/components/schemas/AddressDataNullable"
confidence_score:
type: number
description: A number from 0 to 1 indicating Plaid's level of confidence in the pairing between the employer and the institution (not yet implemented).
required:
- employer_id
- name
- address
- confidence_score
IncomeVerificationCreateRequest:
title: IncomeVerificationCreateRequest
type: object
description: IncomeVerificationCreateRequest defines the request schema for `/income/verification/create`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
webhook:
type: string
description: The URL endpoint to which Plaid should send webhooks related to the progress of the income verification process.
precheck_id:
type: string
description: The ID of a precheck created with `/income/verification/precheck`. Will be used to improve conversion of the income verification flow.
options:
$ref: "#/components/schemas/IncomeVerificationCreateRequestOptions"
required:
- webhook
IncomeVerificationCreateRequestOptions:
title: IncomeVerificationCreateRequestOptions
type: object
description: IncomeVerificationCreateRequestOptions defines the optional arguments schema for `/income/verification/create`
properties:
access_tokens:
type: array
description: An array of access tokens corresponding to the Items that will be cross-referenced with the product data. Plaid will attempt to correlate transaction history from these Items with data from the user's paystub, such as date and amount. The `verification` status of the paystub as returned by `/income/verification/paystubs/get` will indicate if the verification status was successful, or, if not, why it failed. If the `transactions` product was not initialized for the Items during Link, it will be initialized after this Link session.
items:
$ref: "#/components/schemas/AccessToken"
IncomeVerificationCreateResponse:
title: IncomeVerificationCreateResponse
type: object
additionalProperties: true
description: IncomeVerificationCreateResponse defines the response schema for `/income/verification/create`.
properties:
income_verification_id:
type: string
description: ID of the verification. This ID is persisted throughout the lifetime of the verification.
request_id:
$ref: "#/components/schemas/RequestID"
required:
- income_verification_id
- request_id
IncomeVerificationPrecheckRequest:
title: IncomeVerificationPrecheckRequest
type: object
description: IncomeVerificationPrecheckRequest defines the request schema for `/income/verification/precheck`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
user:
$ref: "#/components/schemas/IncomeVerificationPrecheckUser"
employer:
$ref: "#/components/schemas/IncomeVerificationPrecheckEmployer"
transactions_access_token:
deprecated: true
$ref: "#/components/schemas/AccessTokenNullable"
transactions_access_tokens:
type: array
description: An array of access tokens corresponding to the Items that will be cross-referenced with the product data. If the `transactions` product was not initialized for the Items during link, it will be initialized after this Link session.
items:
$ref: "#/components/schemas/AccessToken"
us_military_info:
$ref: "#/components/schemas/IncomeVerificationPrecheckMilitaryInfo"
IncomeVerificationPrecheckEmployer:
title: IncomeVerificationPrecheckEmployer
type: object
nullable: true
properties:
name:
type: string
nullable: true
description: The employer's name
address:
$ref: "#/components/schemas/IncomeVerificationPrecheckEmployerAddress"
tax_id:
type: string
nullable: true
description: The employer's tax id
url:
type: string
nullable: true
description: The URL for the employer's public website
IncomeVerificationPrecheckEmployerAddress:
title: IncomeVerificationPrecheckEmployerAddress
description: The address of the employer
type: object
nullable: true
allOf:
- $ref: "#/components/schemas/IncomeVerificationPrecheckEmployerAddressData"
- type: object
additionalProperties: true
IncomeVerificationPrecheckEmployerAddressData:
title: AddressData
type: object
additionalProperties: true
description: Data about the components comprising an address.
properties:
city:
type: string
description: The full city name
region:
type: string
description: |-
The region or state. In API versions 2018-05-22 and earlier, this field is called `state`.
Example: `"NC"`
street:
type: string
description: |-
The full street address
Example: `"564 Main Street, APT 15"`
postal_code:
type: string
description: The postal code. In API versions 2018-05-22 and earlier, this field is called `zip`.
country:
type: string
description: The ISO 3166-1 alpha-2 country code
IncomeVerificationPrecheckMilitaryInfo:
title: IncomeVerificationPrecheckMilitaryInfo
type: object
nullable: true
properties:
is_active_duty:
type: boolean
nullable: true
description: Is the user currently active duty in the US military
branch:
type: string
nullable: true
description: If the user is currently serving in the US military, the branch of the military they are serving in
enum:
- AIR FORCE
- ARMY
- COAST GUARD
- MARINES
- NAVY
- UNKNOWN
IncomeVerificationPrecheckUser:
title: IncomeVerificationPrecheckUser
type: object
nullable: true
properties:
first_name:
type: string
nullable: true
description: The user's first name
last_name:
type: string
nullable: true
description: The user's last name
email_address:
type: string
nullable: true
description: The user's email address
home_address:
$ref: "#/components/schemas/SignalAddressData"
IncomeVerificationPrecheckResponse:
title: IncomeVerificationPrecheckResponse
type: object
description: IncomeVerificationPrecheckResponse defines the response schema for `/income/verification/precheck`.
properties:
precheck_id:
type: string
description: ID of the precheck.
request_id:
$ref: "#/components/schemas/RequestID"
confidence:
$ref: "#/components/schemas/IncomeVerificationPrecheckConfidence"
required:
- precheck_id
- confidence
- request_id
IncomeVerificationPrecheckConfidence:
description: |-
The confidence that Plaid can support the user in the income verification flow. One of the following:
`"HIGH"`: This precheck information submitted is definitively tied to a Plaid-supported integration.
"`LOW`": This precheck information submitted is known not to be supported by Plaid.
`"UNKNOWN"`: It was not possible to determine if the user is supportable with the information passed.
type: string
enum:
- HIGH
- LOW
- UNKNOWN
LinkTokenCreateRequestIncomeVerification:
title: LinkTokenCreateRequestIncomeVerification
type: object
description: Specifies options for initializing Link for use with the Income (beta) product. This field is required if `income_verification` is included in the `products` array.
properties:
income_verification_id:
type: string
deprecated: true
description: The `income_verification_id` of the verification instance, as provided by `/income/verification/create`.
asset_report_id:
type: string
description: The `asset_report_id` of an asset report associated with the user, as provided by `/asset_report/create`. Providing an `asset_report_id` is optional and can be used to verify the user through a streamlined flow. If provided, the bank linking flow will be skipped.
precheck_id:
type: string
description: The ID of a precheck created with `/income/verification/precheck`. Will be used to improve conversion of the income verification flow.
access_tokens:
type: array
description: An array of access tokens corresponding to the Items that will be cross-referenced with the product data. If the `transactions` product was not initialized for the Items during link, it will be initialized after this Link session.
items:
$ref: "#/components/schemas/AccessToken"
IncomeVerificationStatusWebhook:
title: IncomeVerificationStatusWebhook
type: object
additionalProperties: true
description: Fired when the status of an income verification instance has changed. It will typically take several minutes for this webhook to fire after the end user has uploaded their documents in the Document Income flow.
x-examples:
example-1:
webhook_type: INCOME
webhook_code: income_verification
income_verification_id: f6f5132f-853b-421c-8c41-d24f93ebc39f
item_id: gAXlMgVEw5uEGoQnnXZ6tn9E7Mn3LBc4PJVKZ
verification_status: VERIFICATION_STATUS_PROCESSING_COMPLETE
properties:
webhook_type:
type: string
description: '`"INCOME"`'
webhook_code:
type: string
description: "`income_verification`"
income_verification_id:
type: string
description: The `income_verification_id` of the verification instance whose status is being reported.
item_id:
type: string
description: The Item ID associated with the verification.
verification_status:
type: string
description: |-
`VERIFICATION_STATUS_PROCESSING_COMPLETE`: The income verification status processing has completed. If the user uploaded multiple documents, this webhook will fire when all documents have finished processing. Call the `/paystubs/get` endpoint and check the document metadata to see which documents were successfully parsed.
`VERIFICATION_STATUS_PROCESSING_FAILED`: A failure occurred when attempting to process the verification documentation.
`VERIFICATION_STATUS_PENDING_APPROVAL`: The income verification has been sent to the user for review.
required:
- webhook_type
- webhook_code
- income_verification_id
- item_id
- verification_status
IncomeVerificationSummaryGetRequest:
title: IncomeVerificationSummaryGetRequest
type: object
description: IncomeVerificationSummaryGetRequest defines the request schema for `/income/verification/summary/get`.
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
income_verification_id:
type: string
nullable: true
deprecated: true
description: The ID of the verification.
access_token:
$ref: "#/components/schemas/AccessTokenNullable"
IncomeVerificationSummaryGetResponse:
title: IncomeVerificationSummaryGetResponse
type: object
additionalProperties: true
description: IncomeVerificationSummaryGetResponse defines the response schema for `/income/verification/summary/get`.
properties:
income_summaries:
type: array
description: A list of income summaries.
items:
$ref: "#/components/schemas/IncomeSummary"
error:
$ref: "#/components/schemas/PlaidError"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- income_summaries
- request_id
IncomeVerificationRefreshRequest:
type: object
description: IncomeVerificationRefreshRequest defines the request schema for `/income/verification/refresh`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
income_verification_id:
type: string
nullable: true
deprecated: true
description: The ID of the verification.
access_token:
$ref: "#/components/schemas/AccessTokenNullable"
IncomeVerificationRefreshResponse:
type: object
description: IncomeVerificationRequestResponse defines the response schema for `/income/verification/refresh`
properties:
request_id:
$ref: "#/components/schemas/RequestID"
verification_refresh_status:
$ref: "#/components/schemas/VerificationRefreshStatus"
required:
- request_id
- verification_refresh_status
IncomeSummary:
title: IncomeSummary
type: object
additionalProperties: true
description: The verified fields from a paystub verification. All fields are provided as reported on the paystub.
properties:
employer_name:
$ref: "#/components/schemas/EmployerIncomeSummaryFieldString"
employee_name:
$ref: "#/components/schemas/EmployeeIncomeSummaryFieldString"
ytd_gross_income:
$ref: "#/components/schemas/YTDGrossIncomeSummaryFieldNumber"
ytd_net_income:
$ref: "#/components/schemas/YTDNetIncomeSummaryFieldNumber"
pay_frequency:
$ref: "#/components/schemas/PayFrequency"
projected_wage:
$ref: "#/components/schemas/ProjectedIncomeSummaryFieldNumber"
verified_transaction:
$ref: "#/components/schemas/TransactionData"
required:
- employer_name
- employee_name
- ytd_gross_income
- ytd_net_income
- pay_frequency
- projected_wage
- verified_transaction
TransactionData:
title: TransactionData
type: object
additionalProperties: true
nullable: true
description: Information about the matched direct deposit transaction used to verify a user's payroll information.
properties:
description:
type: string
description: The description of the transaction.
amount:
type: number
description: The amount of the transaction.
date:
type: string
format: date
description: The date of the transaction, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ("yyyy-mm-dd").
account_id:
type: string
description: A unique identifier for the end user's account.
transaction_id:
type: string
description: A unique identifier for the transaction.
required:
- description
- amount
- date
- account_id
- transaction_id
IncomeSummaryFieldString:
title: IncomeSummaryFieldString
type: object
additionalProperties: true
nullable: true
properties:
value:
type: string
description: The value of the field.
verification_status:
$ref: "#/components/schemas/VerificationStatus"
required:
- value
- verification_status
EmployerIncomeSummaryFieldString:
allOf:
- $ref: "#/components/schemas/IncomeSummaryFieldString"
- type: object
additionalProperties: true
description: The name of the employer, as reported on the paystub.
EmployeeIncomeSummaryFieldString:
allOf:
- $ref: "#/components/schemas/IncomeSummaryFieldString"
- type: object
additionalProperties: true
description: The name of the employee, as reported on the paystub.
IncomeSummaryFieldNumber:
title: IncomeSummaryFieldNumber
type: object
additionalProperties: true
nullable: true
properties:
value:
type: number
description: The value of the field.
verification_status:
$ref: "#/components/schemas/VerificationStatus"
required:
- value
- verification_status
YTDGrossIncomeSummaryFieldNumber:
allOf:
- $ref: "#/components/schemas/IncomeSummaryFieldNumber"
- type: object
additionalProperties: true
description: Year-to-date pre-tax earnings, as reported on the paystub.
YTDNetIncomeSummaryFieldNumber:
allOf:
- $ref: "#/components/schemas/IncomeSummaryFieldNumber"
- type: object
additionalProperties: true
description: Year-to-date earnings after any tax withholdings, benefit payments or deductions, as reported on the paystub.
ProjectedIncomeSummaryFieldNumber:
allOf:
- $ref: "#/components/schemas/IncomeSummaryFieldNumber"
- type: object
additionalProperties: true
description: The employee's estimated annual salary, as derived from information reported on the paystub.
PayFrequency:
title: PayFrequency
type: object
additionalProperties: true
nullable: true
properties:
value:
$ref: "#/components/schemas/PayFrequencyValue"
verification_status:
$ref: "#/components/schemas/VerificationStatus"
required:
- value
- verification_status
PayFrequencyValue:
type: string
title: PayFrequencyValue
enum:
- monthly
- semimonthly
- weekly
- biweekly
- unknown
- null
description: The frequency of the pay period.
VerificationStatus:
type: string
title: VerificationStatus
description: |-
The verification status. One of the following:
`"VERIFIED"`: The information was successfully verified.
`"UNVERIFIED"`: The verification has not yet been performed.
`"NEEDS_INFO"`: The verification was attempted but could not be completed due to missing information.
"`UNABLE_TO_VERIFY`": The verification was performed and the information could not be verified.
`"UNKNOWN"`: The verification status is unknown.
enum:
- VERIFIED
- UNVERIFIED
- NEEDS_INFO
- UNABLE_TO_VERIFY
- UNKNOWN
VerificationRefreshStatus:
type: string
title: VerificationRefreshStatus
description: |-
The verification refresh status. One of the following:
`"VERIFICATION_REFRESH_STATUS_USER_PRESENCE_REQUIRED"` User presence is required to refresh an income verification.
`"VERIFICATION_REFRESH_SUCCESSFUL"` The income verification refresh was successful.
`"VERIFICATION_REFRESH_NOT_FOUND"` No new data was found after the income verification refresh.
enum:
- VERIFICATION_REFRESH_STATUS_USER_PRESENCE_REQUIRED
- VERIFICATION_REFRESH_SUCCESSFUL
- VERIFICATION_REFRESH_NOT_FOUND
IncomeVerificationPaystubGetRequest:
title: IncomeVerificationPaystubGetRequest
type: object
description: IncomeVerificationPaystubGetRequest defines the request schema for `/income/verification/paystub/get`.
deprecated: true
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
income_verification_id:
type: string
nullable: true
deprecated: true
description: The ID of the verification for which to get paystub information.
access_token:
$ref: "#/components/schemas/AccessTokenNullable"
IncomeVerificationPaystubGetResponse:
title: IncomeVerificationPaystubGetResponse
type: object
additionalProperties: true
deprecated: true
description: IncomeVerificationPaystubGetResponse defines the response schema for `/income/verification/paystub/get`.
properties:
paystub:
$ref: "#/components/schemas/Paystub"
error:
$ref: "#/components/schemas/PlaidError"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- paystub
- request_id
IncomeVerificationPaystubsGetRequest:
title: IncomeVerificationPaystubsGetRequest
type: object
description: IncomeVerificationPaystubsGetRequest defines the request schema for `/income/verification/paystubs/get`.
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
income_verification_id:
type: string
nullable: true
deprecated: true
description: The ID of the verification for which to get paystub information.
access_token:
$ref: "#/components/schemas/AccessTokenNullable"
IncomeVerificationPaystubsGetResponse:
title: IncomeVerificationPaystubsGetResponse
type: object
additionalProperties: true
description: IncomeVerificationPaystubsGetResponse defines the response schema for `/income/verification/paystubs/get`.
properties:
document_metadata:
type: array
items:
$ref: "#/components/schemas/DocumentMetadata"
paystubs:
type: array
items:
$ref: "#/components/schemas/Paystub"
error:
$ref: "#/components/schemas/PlaidError"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- paystubs
- request_id
DocumentMetadata:
title: DocumentMetadata
type: object
additionalProperties: true
description: An object representing metadata from the end user's uploaded document.
properties:
name:
type: string
description: The name of the document.
status:
type: string
description: The processing status of the document.
doc_id:
type: string
description: An identifier of the document that is also present in the paystub response.
doc_type:
$ref: "#/components/schemas/DocType"
DocType:
title: DocType
type: string
description: |-
The type of document.
`DOCUMENT_TYPE_PAYSTUB`: A paystub.
`DOCUMENT_TYPE_BANK_STATEMENT`: A bank statement.
`DOCUMENT_TYPE_US_TAX_W2`: A W-2 wage and tax statement provided by a US employer reflecting wages earned by the employee.
`DOCUMENT_TYPE_US_MILITARY_ERAS`: An electronic Retirement Account Statement (eRAS) issued by the US military.
`DOCUMENT_TYPE_US_MILITARY_LES`: A Leave and Earnings Statement (LES) issued by the US military.
`DOCUMENT_TYPE_US_MILITARY_CLES`: A Civilian Leave and Earnings Statment (CLES) issued by the US military.
`DOCUMENT_TYPE_GIG`: Used to indicate that the income is related to gig work. Does not necessarily correspond to a specific document type.
`UNKNOWN`: Document type could not be determined.
enum:
- UNKNOWN
- DOCUMENT_TYPE_PAYSTUB
- DOCUMENT_TYPE_BANK_STATEMENT
- DOCUMENT_TYPE_US_TAX_W2
- DOCUMENT_TYPE_US_MILITARY_ERAS
- DOCUMENT_TYPE_US_MILITARY_LES
- DOCUMENT_TYPE_US_MILITARY_CLES
- DOCUMENT_TYPE_GIG
Paystub:
title: Paystub
type: object
additionalProperties: true
description: An object representing data extracted from the end user's paystub.
properties:
deductions:
$ref: "#/components/schemas/Deductions"
doc_id:
type: string
description: An identifier of the document referenced by the document metadata.
earnings:
$ref: "#/components/schemas/Earnings"
employee:
$ref: "#/components/schemas/Employee"
employer:
$ref: "#/components/schemas/PaystubEmployer"
employment_details:
$ref: "#/components/schemas/EmploymentDetails"
net_pay:
$ref: "#/components/schemas/NetPay"
pay_period_details:
$ref: "#/components/schemas/PayPeriodDetails"
paystub_details:
$ref: "#/components/schemas/PaystubDetails"
income_breakdown:
type: array
deprecated: true
items:
$ref: "#/components/schemas/IncomeBreakdown"
ytd_earnings:
$ref: "#/components/schemas/PaystubYTDDetails"
verification:
$ref: "#/components/schemas/PaystubVerification"
required:
- deductions
- doc_id
- earnings
- employee
- employer
- net_pay
- pay_period_details
- verification
Deductions:
title: Deductions
type: object
description: An object with the deduction information found on a paystub.
additionalProperties: true
properties:
subtotals:
deprecated: true
type: array
items:
$ref: "#/components/schemas/Total"
breakdown:
type: array
items:
$ref: "#/components/schemas/DeductionsBreakdown"
totals:
deprecated: true
type: array
items:
$ref: "#/components/schemas/Total"
total:
$ref: "#/components/schemas/DeductionsTotal"
required:
- breakdown
- total
DeductionsBreakdown:
title: DeductionsBreakdown
type: object
additionalProperties: true
description: An object representing the deduction line items for the pay period
properties:
current_amount:
type: number
description: Raw amount of the deduction
nullable: true
description:
type: string
description: Description of the deduction line item
nullable: true
iso_currency_code:
type: string
description: The ISO-4217 currency code of the line item. Always `null` if `unofficial_currency_code` is non-null.
nullable: true
unofficial_currency_code:
nullable: true
type: string
description: |-
The unofficial currency code associated with the line item. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.
See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.
ytd_amount:
type: number
description: The year-to-date amount of the deduction
nullable: true
DeductionsTotal:
title: DeductionsTotal
type: object
description: An object representing the total deductions for the pay period
additionalProperties: true
properties:
current_amount:
type: number
description: Raw amount of the deduction
nullable: true
iso_currency_code:
type: string
description: The ISO-4217 currency code of the line item. Always `null` if `unofficial_currency_code` is non-null.
nullable: true
unofficial_currency_code:
nullable: true
type: string
description: |-
The unofficial currency code associated with the line item. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.
See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.
ytd_amount:
type: number
description: The year-to-date total amount of the deductions
nullable: true
Total:
title: Total
type: object
deprecated: true
description: An object representing both the current pay period and year to date amount for a category.
additionalProperties: true
properties:
canonical_description:
$ref: "#/components/schemas/TotalCanonicalDescription"
description:
type: string
description: Text of the line item as printed on the paystub.
nullable: true
current_pay:
$ref: "#/components/schemas/Pay"
ytd_pay:
$ref: "#/components/schemas/Pay"
TotalCanonicalDescription:
type: string
nullable: true
description: Commonly used term to describe the line item.
enum:
- BONUS
- COMMISSION
- OVERTIME
- PAID TIME OFF
- REGULAR PAY
- VACATION
- EMPLOYEE MEDICARE
- FICA
- SOCIAL SECURITY EMPLOYEE TAX
- MEDICAL
- VISION
- DENTAL
- NET PAY
- TAXES
- NOT_FOUND
- OTHER
- null
Pay:
title: Pay
type: object
deprecated: true
description: An object representing a monetary amount.
additionalProperties: true
properties:
amount:
type: number
description: A numerical amount of a specific currency.
nullable: true
currency:
type: string
description: Currency code, e.g. USD
nullable: true
minLength: 3
maxLength: 3
Earnings:
title: Earnings
type: object
description: An object representing both a breakdown of earnings on a paystub and the total earnings.
additionalProperties: true
properties:
subtotals:
deprecated: true
type: array
items:
$ref: "#/components/schemas/EarningsTotal"
totals:
deprecated: true
type: array
items:
$ref: "#/components/schemas/EarningsTotal"
breakdown:
type: array
items:
$ref: "#/components/schemas/EarningsBreakdown"
total:
$ref: "#/components/schemas/EarningsTotal"
EarningsBreakdown:
title: EarningsBreakdown
type: object
additionalProperties: true
description: An object representing the earnings line items for the pay period.
properties:
canonical_description:
$ref: "#/components/schemas/EarningsBreakdownCanonicalDescription"
current_amount:
type: number
description: Raw amount of the earning line item.
nullable: true
description:
type: string
description: Description of the earning line item.
nullable: true
hours:
type: number
description: Number of hours applicable for this earning.
nullable: true
iso_currency_code:
type: string
description: The ISO-4217 currency code of the line item. Always `null` if `unofficial_currency_code` is non-null.
nullable: true
rate:
type: number
description: Hourly rate applicable for this earning.
nullable: true
unofficial_currency_code:
nullable: true
type: string
description: |-
The unofficial currency code associated with the line item. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.
See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.
ytd_amount:
type: number
description: The year-to-date amount of the deduction.
nullable: true
EarningsBreakdownCanonicalDescription:
type: string
description: Commonly used term to describe the earning line item.
enum:
- BONUS
- COMMISSION
- OVERTIME
- PAID TIME OFF
- REGULAR PAY
- VACATION
- OTHER
- null
nullable: true
EarningsTotal:
title: EarningsTotal
type: object
description: An object representing both the current pay period and year to date amount for an earning category.
additionalProperties: true
properties:
current_amount:
type: number
description: Total amount of the earnings for this pay period
nullable: true
current_pay:
$ref: "#/components/schemas/Pay"
ytd_pay:
$ref: "#/components/schemas/Pay"
hours:
type: number
description: Total number of hours worked for this pay period
nullable: true
iso_currency_code:
type: string
description: The ISO-4217 currency code of the line item. Always `null` if `unofficial_currency_code` is non-null.
nullable: true
unofficial_currency_code:
nullable: true
type: string
description: |-
The unofficial currency code associated with the security. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.
See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.
ytd_amount:
type: number
description: The total year-to-date amount of the earnings
nullable: true
EmploymentDetails:
title: EmploymentDetails
type: object
deprecated: true
description: An object representing employment details found on a paystub.
additionalProperties: true
properties:
annual_salary:
$ref: "#/components/schemas/Pay"
hire_date:
type: string
format: date
description: Date on which the employee was hired, in the YYYY-MM-DD format.
nullable: true
NetPay:
title: NetPay
type: object
description: An object representing information about the net pay amount on the paystub.
additionalProperties: true
properties:
current_amount:
type: number
description: Raw amount of the net pay for the pay period
nullable: true
description:
type: string
description: Description of the net pay
nullable: true
iso_currency_code:
type: string
description: The ISO-4217 currency code of the net pay. Always `null` if `unofficial_currency_code` is non-null.
nullable: true
unofficial_currency_code:
nullable: true
type: string
description: |-
The unofficial currency code associated with the net pay. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.
See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.
ytd_amount:
type: number
description: The year-to-date amount of the net pay
nullable: true
total:
$ref: "#/components/schemas/Total"
PaystubDetails:
title: PaystubDetails
type: object
deprecated: true
description: An object representing details that can be found on the paystub.
additionalProperties: true
properties:
pay_period_start_date:
type: string
format: date
description: Beginning date of the pay period on the paystub in the 'YYYY-MM-DD' format.
nullable: true
pay_period_end_date:
type: string
format: date
description: Ending date of the pay period on the paystub in the 'YYYY-MM-DD' format.
nullable: true
pay_date:
type: string
format: date
description: Pay date on the paystub in the 'YYYY-MM-DD' format.
nullable: true
paystub_provider:
type: string
description: The name of the payroll provider that generated the paystub, e.g. ADP
nullable: true
pay_frequency:
$ref: "#/components/schemas/PaystubPayFrequency"
PaystubPayFrequency:
type: string
description: "The frequency at which the employee is paid. Possible values: `MONTHLY`, `BI-WEEKLY`, `WEEKLY`, `SEMI-MONTHLY`."
enum:
- MONTHLY
- BI-WEEKLY
- WEEKLY
- SEMI-MONTHLY
- null
nullable: true
IncomeBreakdown:
title: IncomeBreakdown
type: object
description: An object representing a breakdown of the different income types on the paystub.
additionalProperties: true
deprecated: true
properties:
type:
$ref: "#/components/schemas/IncomeBreakdownType"
rate:
type: number
description: The hourly rate at which the income is paid.
nullable: true
hours:
type: number
description: The number of hours logged for this income for this pay period.
nullable: true
total:
type: number
description: The total pay for this pay period.
nullable: true
required:
- type
- rate
- hours
- total
IncomeBreakdownType:
type: string
description: |-
The type of income. Possible values include:
`"regular"`: regular income
`"overtime"`: overtime income
`"bonus"`: bonus income
enum:
- bonus
- overtime
- regular
- null
nullable: true
Employee:
title: Employee
type: object
additionalProperties: true
description: Data about the employee.
properties:
address:
$ref: "#/components/schemas/PaystubAddress"
name:
type: string
description: The name of the employee.
nullable: true
marital_status:
type: string
description: Marital status of the employee.
nullable: true
taxpayer_id:
$ref: "#/components/schemas/TaxpayerID"
required:
- name
- address
TaxpayerID:
title: TaxpayerID
type: object
additionalProperties: true
description: Taxpayer ID of the individual receiving the paystub.
properties:
id_type:
type: string
description: Type of ID, e.g. 'SSN'
nullable: true
id_mask:
type: string
description: ID mask; i.e. last 4 digits of the taxpayer ID
nullable: true
last_4_digits:
deprecated: true
type: string
description: Last 4 digits of unique number of ID.
minLength: 4
maxLength: 4
nullable: true
PaystubEmployer:
title: Employer
type: object
additionalProperties: true
properties:
address:
$ref: "#/components/schemas/PaystubAddress"
name:
type: string
description: The name of the employer on the paystub.
nullable: true
required:
- name
PaystubAddress:
title: Address
type: object
additionalProperties: true
properties:
city:
type: string
description: The full city name.
nullable: true
country:
type: string
description: The ISO 3166-1 alpha-2 country code.
nullable: true
postal_code:
type: string
description: The postal code of the address.
nullable: true
region:
type: string
description: |-
The region or state
Example: `"NC"`
nullable: true
street:
type: string
description: The full street address.
nullable: true
line1:
deprecated: true
type: string
description: Street address line 1.
nullable: true
line2:
deprecated: true
type: string
description: Street address line 2.
nullable: true
state_code:
deprecated: true
type: string
description: |-
The region or state
Example: `"NC"`
nullable: true
PayPeriodDetails:
title: PayPeriodDetails
type: object
additionalProperties: true
description: Details about the pay period.
properties:
check_amount:
type: number
description: The amount of the paycheck.
nullable: true
distribution_breakdown:
type: array
items:
$ref: "#/components/schemas/DistributionBreakdown"
end_date:
type: string
format: date
description: 'The pay period end date, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format: "yyyy-mm-dd".'
nullable: true
gross_earnings:
type: number
description: Total earnings before tax/deductions.
nullable: true
pay_date:
type: string
format: date
description: The date on which the paystub was issued, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ("yyyy-mm-dd").
nullable: true
pay_frequency:
type: string
description: The frequency at which an individual is paid.
enum:
- PAY_FREQUENCY_UNKNOWN
- PAY_FREQUENCY_WEEKLY
- PAY_FREQUENCY_BIWEEKLY
- PAY_FREQUENCY_SEMIMONTHLY
- PAY_FREQUENCY_MONTHLY
- null
nullable: true
pay_day:
deprecated: true
type: string
format: date
description: The date on which the paystub was issued, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format ("yyyy-mm-dd").
nullable: true
start_date:
type: string
format: date
description: 'The pay period start date, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format: "yyyy-mm-dd".'
nullable: true
DistributionBreakdown:
title: DistributionBreakdown
type: object
description: Information about the accounts that the payment was distributed to.
additionalProperties: true
properties:
account_name:
type: string
description: Name of the account for the given distribution.
nullable: true
bank_name:
type: string
description: The name of the bank that the payment is being deposited to.
nullable: true
current_amount:
type: number
description: The amount distributed to this account.
nullable: true
iso_currency_code:
type: string
description: The ISO-4217 currency code of the net pay. Always `null` if `unofficial_currency_code` is non-null.
nullable: true
mask:
type: string
description: The last 2-4 alphanumeric characters of an account's official account number.
nullable: true
type:
type: string
description: Type of the account that the paystub was sent to (e.g. 'checking').
nullable: true
unofficial_currency_code:
nullable: true
type: string
description: |-
The unofficial currency code associated with the net pay. Always `null` if `iso_currency_code` is non-`null`. Unofficial currency codes are used for currencies that do not have official ISO currency codes, such as cryptocurrencies and the currencies of certain countries.
See the [currency code schema](https://plaid.com/docs/api/accounts#currency-code-schema) for a full listing of supported `iso_currency_code`s.
current_pay:
$ref: "#/components/schemas/Pay"
PaystubDeduction:
title: PaystubDeduction
type: object
additionalProperties: true
properties:
type:
type: string
description: 'The description of the deduction, as provided on the paystub. For example: `"401(k)"`, `"FICA MED TAX"`.'
nullable: true
is_pretax:
type: boolean
description: "`true` if the deduction is pre-tax; `false` otherwise."
nullable: true
total:
type: number
description: The amount of the deduction.
nullable: true
required:
- type
- is_pretax
- total
PaystubYTDDetails:
title: PaystubYTDDetails
type: object
deprecated: true
additionalProperties: true
properties:
gross_earnings:
type: number
description: Year-to-date gross earnings.
nullable: true
net_earnings:
type: number
description: Year-to-date net (take home) earnings.
nullable: true
description: The amount of income earned year to date, as based on paystub data.
PaystubVerification:
title: PaystubVerification
description: An object containing details on the paystub's verification status. This object will only be populated if the [`income_verification.access_tokens`](/docs/api/tokens/#link-token-create-request-income-verification-access-tokens) parameter was provided during the `/link/token/create` call or if a problem was detected with the information supplied by the user; otherwise it will be `null`.
type: object
additionalProperties: true
nullable: true
properties:
verification_status:
$ref: "#/components/schemas/PaystubVerificationStatus"
verification_attributes:
type: array
items:
$ref: "#/components/schemas/VerificationAttribute"
required:
- verification_status
- verification_attributes
PaystubVerificationStatus:
type: string
title: PaystubVerificationStatus
description: Derived verification status.
nullable: true
enum:
- PAYSTUB_VERIFICATION_STATUS_UNKNOWN
- PAYSTUB_VERIFICATION_STATUS_VERIFIED
- PAYSTUB_VERIFICATION_STATUS_FRAUDULENT
- null
VerificationAttribute:
title: VerificationAttribute
description: Details about a certain reason as to why a document could potentially be fraudulent
type: object
additionalProperties: true
nullable: true
properties:
type:
title: VerificationAttributeType
type: string
description: Message indicating the reason as to why the verification failed
nullable: true
enum:
- VERIFICATION_ATTRIBUTE_TYPE_UNKNOWN
- VERIFICATION_ATTRIBUTE_TYPE_AMOUNT_MATCH
- VERIFICATION_ATTRIBUTE_TYPE_DATE_MATCH
- VERIFICATION_ATTRIBUTE_TYPE_DATE_MISMATCH
- VERIFICATION_ATTRIBUTE_TYPE_FILE_TAMPERING
- VERIFICATION_ATTRIBUTE_TYPE_DESCRIPTION_MATCH
- VERIFICATION_ATTRIBUTE_TYPE_DESCRIPTION_MISMATCH
- VERIFICATION_ATTRIBUTE_TYPE_FIRST_NAME_MATCH
- VERIFICATION_ATTRIBUTE_TYPE_FIRST_NAME_MISMATCH
- VERIFICATION_ATTRIBUTE_TYPE_LAST_NAME_MATCH
- VERIFICATION_ATTRIBUTE_TYPE_LAST_NAME_MISMATCH
- null
required:
- type
IncomeVerificationDocumentsDownloadRequest:
title: IncomeVerificationDocumentsDownloadRequest
type: object
description: IncomeVerificationDocumentsDownloadRequest defines the request schema for `/income/verification/documents/download`.
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
income_verification_id:
type: string
nullable: true
deprecated: true
description: The ID of the verification.
access_token:
$ref: "#/components/schemas/AccessTokenNullable"
document_id:
type: string
nullable: true
description: The document ID to download. If passed, a single document will be returned in the resulting zip file, rather than all document
IncomeVerificationTaxformsGetRequest:
title: IncomeVerificationTaxformsGetRequest
type: object
description: IncomeVerificationTaxformsGetRequest defines the request schema for `/income/verification/taxforms/get`
additionalProperties: true
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
income_verification_id:
type: string
description: The ID of the verification.
nullable: true
deprecated: true
access_token:
$ref: "#/components/schemas/AccessTokenNullable"
IncomeVerificationTaxformsGetResponse:
title: IncomeVerificationTaxformsGetResponse
type: object
additionalProperties: true
description: IncomeVerificationTaxformsGetResponse defines the response schema for `/income/verification/taxforms/get`
properties:
request_id:
$ref: "#/components/schemas/RequestID"
document_metadata:
type: array
items:
$ref: "#/components/schemas/DocumentMetadata"
taxforms:
type: array
description: A list of taxforms.
items:
$ref: "#/components/schemas/Taxform"
error:
$ref: "#/components/schemas/PlaidError"
required:
- taxforms
- document_metadata
Taxform:
title: Taxform
type: object
additionalProperties: true
properties:
doc_id:
type: string
description: An identifier of the document referenced by the document metadata.
document_type:
type: string
description: The type of tax document.
w2:
$ref: "#/components/schemas/W2"
required:
- document_type
W2:
title: W2
type: object
additionalProperties: true
description: W2 is an object that represents income data taken from a W2 tax document.
properties:
employer:
$ref: "#/components/schemas/PaystubEmployer"
employee:
$ref: "#/components/schemas/Employee"
tax_year:
type: string
description: The tax year of the W2 document.
nullable: true
employer_id_number:
type: string
description: An employee identification number or EIN.
nullable: true
wages_tips_other_comp:
type: string
description: Wages from tips and other compensation.
nullable: true
federal_income_tax_withheld:
type: string
description: Federal income tax withheld for the tax year.
nullable: true
social_security_wages:
type: string
description: Wages from social security.
nullable: true
social_security_tax_withheld:
type: string
description: Social security tax withheld for the tax year.
nullable: true
medicare_wages_and_tips:
type: string
description: Wages and tips from medicare.
nullable: true
medicare_tax_withheld:
type: string
description: Medicare tax withheld for the tax year.
nullable: true
social_security_tips:
type: string
description: Tips from social security.
nullable: true
allocated_tips:
type: string
description: Allocated tips.
nullable: true
box_9:
type: string
description: Contents from box 9 on the W2.
nullable: true
dependent_care_benefits:
type: string
description: Dependent care benefits.
nullable: true
nonqualified_plans:
type: string
description: Nonqualified plans.
nullable: true
box_12:
type: array
items:
$ref: "#/components/schemas/W2Box12"
statutory_employee:
type: string
description: Statutory employee.
nullable: true
retirement_plan:
type: string
description: Retirement plan.
nullable: true
third_party_sick_pay:
type: string
description: Third party sick pay.
nullable: true
other:
type: string
description: Other.
nullable: true
state_and_local_wages:
type: array
items:
$ref: "#/components/schemas/W2StateAndLocalWages"
W2Box12:
title: W2Box12
type: object
additionalProperties: true
properties:
code:
type: string
description: W2 Box 12 code.
nullable: true
amount:
type: string
description: W2 Box 12 amount.
nullable: true
W2StateAndLocalWages:
title: W2StateAndLocalWages
type: object
additionalProperties: true
properties:
state:
type: string
description: State associated with the wage.
nullable: true
employer_state_id_number:
type: string
description: State identification number of the employer.
nullable: true
state_wages_tips:
type: string
description: Wages and tips from the specified state.
nullable: true
state_income_tax:
type: string
description: Income tax from the specified state.
nullable: true
local_wages_tips:
type: string
description: Wages and tips from the locality.
nullable: true
local_income_tax:
type: string
description: Income tax from the locality.
nullable: true
locality_name:
type: string
description: Name of the locality.
nullable: true
IncomeVerificationWebhookStatus:
title: IncomeVerificationWebhookStatus
type: object
additionalProperties: true
properties:
id:
type: string
required:
- id
EmploymentVerificationGetRequest:
title: EmploymentVerificationGetRequest
type: object
description: EmploymentVerificationGetRequest defines the request schema for `/employment/verification/get`.
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
access_token:
$ref: "#/components/schemas/AccessToken"
required:
- access_token
EmploymentVerificationGetResponse:
title: EmploymentVerificationGetResponse
type: object
additionalProperties: true
description: EmploymentVerificationGetResponse defines the response schema for `/employment/verification/get`.
properties:
employments:
type: array
description: A list of employment verification summaries.
items:
$ref: "#/components/schemas/EmploymentVerification"
error:
$ref: "#/components/schemas/PlaidError"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- employments
- request_id
EmploymentVerification:
title: EmploymentVerification
type: object
additionalProperties: true
description: An object containing proof of employment data for an individual
properties:
status:
$ref: "#/components/schemas/EmploymentVerificationStatus"
start_date:
format: date
type: string
description: Start of employment in ISO_8601 format (YYYY-MM-DD).
nullable: true
end_date:
format: date
type: string
description: End of employment, if applicable. In ISO_8601 format (YYY-MM-DD).
nullable: true
employer:
$ref: "#/components/schemas/EmployerVerification"
title:
type: string
description: Current title of employee.
nullable: true
platform_ids:
$ref: "#/components/schemas/PlatformIds"
EmploymentVerificationStatus:
type: string
description: Current employment status.
nullable: true
enum:
- EMPLOYMENT_STATUS_ACTIVE
- EMPLOYMENT_STATUS_INACTIVE
- null
EmployerVerification:
title: EmployerVerification
type: object
additionalProperties: true
description: An object containing employer data.
properties:
name:
type: string
description: Name of employer.
nullable: true
PlatformIds:
title: PlatformIds
type: object
additionalProperties: true
description: An object containing a set of ids related to an employee
properties:
employee_id:
type: string
description: The ID of an employee as given by their employer
nullable: true
payroll_id:
type: string
description: The ID of an employee as given by their payroll
nullable: true
position_id:
type: string
description: The ID of the position of the employee
nullable: true
AssetReportTransaction:
title: AssetReportTransaction
allOf:
- $ref: "#/components/schemas/TransactionBase"
- type: object
additionalProperties: true
properties:
date_transacted:
type: string
nullable: true
description: The date on which the transaction took place, in IS0 8601 format.
required:
- original_description
HealthIncident:
title: HealthIncident
type: object
additionalProperties: true
properties:
start_date:
type: string
format: date-time
description: The start date of the incident, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `"2020-10-30T15:26:48Z"`.
end_date:
type: string
format: date-time
description: The end date of the incident, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `"2020-10-30T15:26:48Z"`.
title:
type: string
description: The title of the incident
incident_updates:
type: array
description: Updates on the health incident.
items:
$ref: "#/components/schemas/IncidentUpdate"
required:
- start_date
- title
- incident_updates
IncidentUpdate:
title: IncidentUpdate
type: object
additionalProperties: true
properties:
description:
type: string
description: The content of the update.
status:
type: string
description: The status of the incident.
enum:
- INVESTIGATING
- IDENTIFIED
- SCHEDULED
- RESOLVED
- UNKNOWN
updated_date:
type: string
format: date-time
description: The date when the update was published, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format, e.g. `"2020-10-30T15:26:48Z"`.
DepositSwitchAltCreateRequest:
title: DepositSwitchAltCreateRequest
type: object
description: DepositSwitchAltCreateRequest defines the request schema for `/deposit_switch/alt/create`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
target_account:
$ref: "#/components/schemas/DepositSwitchTargetAccount"
target_user:
$ref: "#/components/schemas/DepositSwitchTargetUser"
options:
$ref: "#/components/schemas/DepositSwitchCreateRequestOptions"
country_code:
type: string
title: CountryCode
enum:
- US
- CA
description: ISO-3166-1 alpha-2 country code standard.
nullable: true
required:
- target_account
- target_user
DepositSwitchAltCreateResponse:
title: DepositSwitchAltCreateResponse
type: object
additionalProperties: true
properties:
deposit_switch_id:
type: string
description: ID of the deposit switch. This ID is persisted throughout the lifetime of the deposit switch.
request_id:
$ref: "#/components/schemas/RequestID"
required:
- deposit_switch_id
- request_id
description: DepositSwitchAltCreateResponse defines the response schema for `/deposit_switch/alt/create`
DepositSwitchTargetAccount:
title: DepositSwitchTargetAccount
type: object
additionalProperties: true
properties:
account_number:
type: string
description: Account number for deposit switch destination
routing_number:
type: string
description: Routing number for deposit switch destination
account_name:
type: string
description: The name of the deposit switch destination account, as it will be displayed to the end user in the Deposit Switch interface. It is not required to match the name used in online banking.
account_subtype:
type: string
description: The account subtype of the account, either `checking` or `savings`.
enum:
- checking
- savings
required:
- account_number
- routing_number
- account_name
- account_subtype
DepositSwitchTargetUser:
title: DepositSwitchTargetUser
type: object
additionalProperties: true
properties:
given_name:
type: string
description: The given name (first name) of the user.
family_name:
type: string
description: The family name (last name) of the user.
phone:
type: string
description: The phone number of the user. The endpoint can accept a variety of phone number formats, including E.164.
email:
type: string
description: The email address of the user.
address:
$ref: "#/components/schemas/DepositSwitchAddressData"
tax_payer_id:
type: string
description: The taxpayer ID of the user, generally their SSN, EIN, or TIN.
required:
- given_name
- family_name
- phone
- email
DepositSwitchAddressData:
title: DepositSwitchAddressData
type: object
additionalProperties: true
description: The user's address.
properties:
city:
type: string
description: The full city name
region:
type: string
description: |-
The region or state
Example: `"NC"`
street:
type: string
description: |-
The full street address
Example: `"564 Main Street, APT 15"`
postal_code:
type: string
description: The postal code
country:
type: string
description: The ISO 3166-1 alpha-2 country code
required:
- street
- city
- region
- postal_code
- country
SandboxBankTransferFireWebhookRequest:
title: SandboxBankTransferFireWebhookRequest
type: object
description: Defines the request schema for `/sandbox/bank_transfer/fire_webhook`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
webhook:
type: string
description: The URL to which the webhook should be sent.
required:
- webhook
SandboxBankTransferFireWebhookResponse:
title: SandboxBankTransferFireWebhookResponse
type: object
description: Defines the response schema for `/sandbox/bank_transfer/fire_webhook`
properties:
request_id:
$ref: "#/components/schemas/RequestID"
required:
- request_id
ApplicationID:
title: ApplicationID
type: string
description: This field will map to the application ID that is returned from /item/applications/list, or provided to the institution in an oauth redirect.
Application:
type: object
description: Metadata about the application
properties:
application_id:
$ref: "#/components/schemas/ApplicationID"
name:
type: string
description: The name of the application
created_at:
type: string
format: date
description: The date this application was linked in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format in UTC.
logo_url:
nullable: true
type: string
description: A URL that links to the application logo image.
application_url:
nullable: true
type: string
description: The URL for the application's website
reason_for_access:
nullable: true
type: string
description: A string provided by the connected app stating why they use their respective enabled products.
required:
- application_id
- created_at
- name
- logo_url
- application_url
- reason_for_access
ApplicationGetRequest:
description: ApplicationGetResponse defines the schema for `/application/get`
type: object
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
application_id:
$ref: "#/components/schemas/ApplicationID"
required:
- client_id
- secret
- application_id
ApplicationGetResponse:
description: The request ID associated with this call.
type: object
properties:
request_id:
$ref: "#/components/schemas/RequestID"
application:
$ref: "#/components/schemas/Application"
required:
- request_id
- application
ProductAccess:
description: The product access being requested. Used to or disallow product access across all accounts. If unset, defaults to all products allowed.
type: object
additionalProperties: true
properties:
statements:
description: Allow access to statements. Only used by certain partners. If relevant to the partner and unset, defaults to `true`.
type: boolean
nullable: true
default: true
identity:
description: Allow access to the Identity product (name, email, phone, address). Only used by certain partners. If relevant to the partner and unset, defaults to `true`.
type: boolean
nullable: true
default: true
auth:
description: Allow access to account number details. Only used by certain partners. If relevant to the partner and unset, defaults to `true`.
type: boolean
nullable: true
default: true
transactions:
description: Allow access to transaction details. Only used by certain partners. If relevant to the partner and unset, defaults to `true`.
type: boolean
nullable: true
default: true
AccountAccess:
description: Allow or disallow product access by account. Unlisted (e.g. missing) accounts will be considered `new_accounts`.
type: object
properties:
unique_id:
description: The unique account identifier for this account. This value must match that returned by the data access API for this account.
type: string
authorized:
description: Allow the application to see this account (and associated details, including balance) in the list of accounts If unset, defaults to `true`.
type: boolean
nullable: true
default: true
account_product_access:
$ref: "#/components/schemas/AccountProductAccessNullable"
required:
- unique_id
AccountProductAccessNullable:
nullable: true
allOf:
- $ref: "#/components/schemas/AccountProductAccess"
- type: object
additionalProperties: true
AccountProductAccess:
description: Allow the application to access specific products on this account
type: object
properties:
account_data:
description: Allow the application to access account data. Only used by certain partners. If relevant to the partner and unset, defaults to `true`.
type: boolean
nullable: true
default: true
statements:
description: Allow the application to access bank statements. Only used by certain partners. If relevant to the partner and unset, defaults to `true`.
type: boolean
nullable: true
default: true
tax_documents:
description: Allow the application to access tax documents. Only used by certain partners. If relevant to the partner and unset, defaults to `true`.
type: boolean
nullable: true
default: true
ScopesNullable:
nullable: true
allOf:
- $ref: "#/components/schemas/Scopes"
- type: object
additionalProperties: true
Scopes:
description: The scopes object
type: object
properties:
product_access:
$ref: "#/components/schemas/ProductAccess"
accounts:
type: array
items:
$ref: "#/components/schemas/AccountAccess"
new_accounts:
description: Allow access to newly opened accounts as they are opened. If unset, defaults to `true`.
type: boolean
nullable: true
default: true
RequestedScopes:
type: object
description: Scope of required and optional account features or content from a ConnectedApplication.
properties:
required_product_access:
$ref: "#/components/schemas/ProductAccess"
optional_product_access:
$ref: "#/components/schemas/ProductAccess"
account_filters:
$ref: "#/components/schemas/AccountFilter"
account_selection_cardinality:
$ref: "#/components/schemas/AccountSelectionCardinality"
required:
- required_product_access
- optional_product_access
- account_selection_cardinality
ScopesState:
description: When scopes are updated during enrollment, this field must be populated with the state sent to the partner in the OAuth Login URI. This field is required when the context is `ENROLLMENT`.
type: string
ScopesContext:
description: An indicator for when scopes are being updated. When scopes are updated via enrollment (i.e. OAuth), the partner must send `ENROLLMENT`. When scopes are updated in a post-enrollment view, the partner must send `PORTAL`.
type: string
enum:
- ENROLLMENT
- PORTAL
ItemApplicationScopesUpdateRequest:
description: ItemApplicationScopesUpdateRequest defines the request schema for `/item/application/scopes/update`
type: object
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
access_token:
$ref: "#/components/schemas/AccessToken"
application_id:
$ref: "#/components/schemas/ApplicationID"
scopes:
$ref: "#/components/schemas/Scopes"
state:
$ref: "#/components/schemas/ScopesState"
context:
$ref: "#/components/schemas/ScopesContext"
required:
- application_id
- access_token
- scopes
- context
ItemApplicationScopesUpdateResponse:
description: ItemApplicationScopesUpdateResponse defines the response schema for `/item/application/scopes/update`
type: object
properties:
request_id:
$ref: "#/components/schemas/RequestID"
required:
- request_id
ItemApplicationListRequest:
description: Request to list connected applications for a user.
type: object
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
access_token:
$ref: "#/components/schemas/AccessTokenNullable"
ItemApplicationListResponse:
description: Describes the connected application for a particular end user.
type: object
properties:
request_id:
$ref: "#/components/schemas/RequestID"
applications:
type: array
description: A list of connected applications.
items:
$ref: "#/components/schemas/ConnectedApplication"
required:
- applications
ConnectedApplication:
description: Describes the connected application for a particular end user.
type: object
properties:
application_id:
$ref: "#/components/schemas/ApplicationID"
name:
type: string
description: The name of the application
logo:
nullable: true
type: string
description: A URL that links to the application logo image (will be deprecated in the future, please use logo_url).
deprecated: true
logo_url:
nullable: true
type: string
description: A URL that links to the application logo image.
application_url:
nullable: true
type: string
description: The URL for the application's website
reason_for_access:
nullable: true
type: string
description: A string provided by the connected app stating why they use their respective enabled products.
created_at:
type: string
format: date
description: The date this application was linked in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format in UTC.
example: "2020-01-01"
product_data_types:
type: array
description: (Deprecated) A list of enums representing the data collected and products enabled for this connected application.
items:
type: string
enum:
- ACCOUNT_BALANCE
- ACCOUNT_USER_INFO
- ACCOUNT_TRANSACTIONS
scopes:
$ref: "#/components/schemas/ScopesNullable"
requested_scopes:
$ref: "#/components/schemas/RequestedScopes"
required:
- application_id
- name
- created_at
- logo
- logo_url
- application_url
- reason_for_access
- product_data_types
AccountSelectionCardinality:
type: string
description: |-
The application requires that accounts be limited to a specific cardinality.
`MULTI_SELECT`: indicates that the user should be allowed to pick multiple accounts.
`SINGLE_SELECT`: indicates that the user should be allowed to pick only a single account.
`ALL`: indicates that the user must share all of their accounts and should not be given the opportunity to de-select
enum:
- SINGLE_SELECT
- MULTI_SELECT
- ALL
AccountFilter:
type: object
description: Enumerates the account subtypes that the application wishes for the user to be able to select from. For more details refer to Plaid documentation on account filters.
properties:
depository:
$ref: "#/components/schemas/AccountFilterSubtypes"
credit:
$ref: "#/components/schemas/AccountFilterSubtypes"
loan:
$ref: "#/components/schemas/AccountFilterSubtypes"
investment:
$ref: "#/components/schemas/AccountFilterSubtypes"
AccountFilterSubtypes:
type: array
description: A list of account subtypes to be filtered.
items:
type: string
description: List of account subtypes.
SandboxIncomeFireWebhookRequest:
title: SandboxIncomeFireWebhookRequest
type: object
description: SandboxIncomeFireWebhookRequest defines the request schema for `/sandbox/income/fire_webhook`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
income_verification_id:
type: string
description: The ID of the verification.
item_id:
type: string
description: The Item ID associated with the verification.
webhook:
type: string
description: The URL to which the webhook should be sent.
verification_status:
type: string
enum:
- VERIFICATION_STATUS_PROCESSING_COMPLETE
- VERIFICATION_STATUS_PROCESSING_FAILED
- VERIFICATION_STATUS_PENDING_APPROVAL
description: |-
`VERIFICATION_STATUS_PROCESSING_COMPLETE`: The income verification status processing has completed. If the user uploaded multiple documents, this webhook will fire when all documents have finished processing. Call the `/paystubs/get` endpoint and check the document metadata to see which documents were successfully parsed.
`VERIFICATION_STATUS_PROCESSING_FAILED`: A failure occurred when attempting to process the verification documentation.
`VERIFICATION_STATUS_PENDING_APPROVAL`: The income verification has been sent to the user for review.
required:
- income_verification_id
- item_id
- webhook
- verification_status
SandboxIncomeFireWebhookResponse:
title: SandboxIncomeFireWebhookResponse
type: object
description: SandboxIncomeFireWebhookResponse defines the response schema for `/sandbox/income/fire_webhook`
properties:
request_id:
$ref: "#/components/schemas/RequestID"
required:
- request_id
ItemApplicationListUserAuth:
type: object
nullable: true
description: User authentication parameters, for clients making a request without an `access_token`. This is only allowed for select clients and will not be supported in the future. Most clients should call /item/import to obtain an access token before making a request.
properties:
user_id:
nullable: true
type: string
description: Account username.
fi_username_hash:
nullable: true
type: string
description: Account username hashed by FI.
SignalEvaluateRequest:
title: SignalEvaluateRequest
description: SignalEvaluateRequest defines the request schema for `/signal/evaluate`
type: object
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
access_token:
$ref: "#/components/schemas/AccessToken"
account_id:
type: string
description: The `account_id` of the account whose verification status is to be modified
client_transaction_id:
type: string
description: The unique ID that you would like to use to refer to this transaction. For your convenience mapping your internal data, you could use your internal ID/identifier for this transaction. The max length for this field is 36 characters.
minLength: 1
maxLength: 36
amount:
type: number
description: The transaction amount, in USD (e.g. `102.05`)
user_present:
type: boolean
description: "`true` if the end user is present while initiating the ACH transfer and the endpoint is being called; `false` otherwise (for example, when the ACH transfer is scheduled and the end user is not present, or you call this endpoint after the ACH transfer but before submitting the Nacha file for ACH processing)."
nullable: true
client_user_id:
type: string
description: A unique ID that identifies the end user in your system. This ID is used to correlate requests by a user with multiple Items. The max length for this field is 36 characters.
maxLength: 36
user:
$ref: "#/components/schemas/SignalUser"
device:
$ref: "#/components/schemas/SignalDevice"
required:
- access_token
- account_id
- client_transaction_id
- amount
SignalUser:
title: SignalUser
type: object
description: Details about the end user initiating the transaction (i.e., the account holder).
properties:
name:
$ref: "#/components/schemas/SignalPersonName"
phone_number:
type: string
description: 'The user''s phone number, in E.164 format: +{countrycode}{number}. For example: "+14151234567"'
nullable: true
email_address:
type: string
description: The user's email address.
nullable: true
address:
$ref: "#/components/schemas/SignalAddressData"
SignalPersonName:
title: SignalPersonName
type: object
description: The user's legal name
nullable: true
properties:
prefix:
type: string
description: The user's name prefix (e.g. "Mr.")
nullable: true
given_name:
type: string
description: The user's given name. If the user has a one-word name, it should be provided in this field.
nullable: true
middle_name:
type: string
description: The user's middle name
nullable: true
family_name:
type: string
description: The user's family name / surname
nullable: true
suffix:
type: string
description: The user's name suffix (e.g. "II")
nullable: true
SignalAddressData:
title: AddressData
type: object
nullable: true
additionalProperties: true
description: Data about the components comprising an address.
properties:
city:
type: string
description: The full city name
region:
type: string
description: |-
The region or state
Example: `"NC"`
nullable: true
street:
type: string
description: |-
The full street address
Example: `"564 Main Street, APT 15"`
postal_code:
type: string
description: The postal code
nullable: true
country:
type: string
description: The ISO 3166-1 alpha-2 country code
nullable: true
SignalDevice:
title: SignalEvaluateDevice
type: object
description: Details about the end user's device
properties:
ip_address:
type: string
description: The IP address of the device that initiated the transaction
nullable: true
user_agent:
type: string
description: The user agent of the device that initiated the transaction (e.g. "Mozilla/5.0")
nullable: true
SignalEvaluateResponse:
title: SignalEvaluateResponse
description: SignalEvaluateResponse defines the response schema for `/signal/income/evaluate`
type: object
additionalProperties: true
properties:
request_id:
$ref: "#/components/schemas/RequestID"
scores:
$ref: "#/components/schemas/SignalScores"
core_attributes:
$ref: "#/components/schemas/SignalEvaluateCoreAttributes"
required:
- request_id
- scores
SignalScores:
title: SignalEvaluateScores
description: Risk scoring details broken down by risk category.
type: object
additionalProperties: true
properties:
customer_initiated_return_risk:
$ref: "#/components/schemas/CustomerInitiatedReturnRisk"
bank_initiated_return_risk:
$ref: "#/components/schemas/BankInitiatedReturnRisk"
SignalScore:
description: "A score from 0-99 that indicates the transaction return risk: a higher risk score suggests a higher return likelihood."
type: integer
minimum: 0
maximum: 100
CustomerInitiatedRiskTier:
description: |
A tier corresponding to the projected likelihood that the transaction, if initiated, will be subject to a return.
In the `customer_initiated_return_risk` object, there are five risk tiers corresponding to the scores:
1: Predicted customer-initiated return incidence rate between 0.00% - 0.02%
2: Predicted customer-initiated return incidence rate between 0.02% - 0.05%
3: Predicted customer-initiated return incidence rate between 0.05% - 0.1%
4: Predicted customer-initiated return incidence rate between 0.1% - 0.5%
5: Predicted customer-initiated return incidence rate greater than 0.5%
type: integer
minimum: 1
maximum: 5
CustomerInitiatedReturnRisk:
title: CustomerInitiatedReturnRisk
type: object
description: 'The object contains a risk score and a risk tier that evaluate the transaction return risk of an unauthorized debit. Common return codes in this category include: “R05”, "R07", "R10", "R11", "R29". These returns typically have a return time frame of up to 60 calendar days. During this period, the customer of financial institutions can dispute a transaction as unauthorized.'
properties:
score:
$ref: "#/components/schemas/SignalScore"
risk_tier:
$ref: "#/components/schemas/CustomerInitiatedRiskTier"
required:
- risk_tier
- score
BankInitiatedRiskTier:
description: |
In the `bank_initiated_return_risk` object, there are eight risk tiers corresponding to the scores:
1: Predicted bank-initiated return incidence rate between 0.0% - 0.5%
2: Predicted bank-initiated return incidence rate between 0.5% - 1.5%
3: Predicted bank-initiated return incidence rate between 1.5% - 3%
4: Predicted bank-initiated return incidence rate between 3% - 5%
5: Predicted bank-initiated return incidence rate between 5% - 10%
6: Predicted bank-initiated return incidence rate between 10% - 15%
7: Predicted bank-initiated return incidence rate between 15% and 50%
8: Predicted bank-initiated return incidence rate greater than 50%
type: integer
minimum: 1
maximum: 8
BankInitiatedReturnRisk:
title: BankInitiatedReturnRisk
type: object
description: 'The object contains a risk score and a risk tier that evaluate the transaction return risk because an account is overdrawn or because an ineligible account is used. Common return codes in this category include: "R01", "R02", "R03", "R04", "R06", “R08”, "R09", "R13", "R16", "R17", "R20", "R23". These returns have a turnaround time of 2 banking days.'
properties:
score:
$ref: "#/components/schemas/SignalScore"
risk_tier:
$ref: "#/components/schemas/BankInitiatedRiskTier"
required:
- risk_tier
- score
SignalEvaluateCoreAttributes:
title: SignalEvaluateCoreAttributes
type: object
description: |-
The core attributes object contains additional data that can be used to assess the ACH return risk. Examples of data include:
`days_since_first_plaid_connection`: The number of days since the first time the Item was connected to an application via Plaid
`plaid_connections_count_7d`: The number of times the Item has been connected to applications via Plaid over the past 7 days
`plaid_connections_count_30d`: The number of times the Item has been connected to applications via Plaid over the past 30 days
`total_plaid_connections_count`: The number of times the Item has been connected to applications via Plaid
`is_savings_or_money_market_account`: Indicates whether the ACH transaction funding account is a savings/money market account
For the full list and detailed documentation of core attributes available, or to request that core attributes not be returned, contact Sales or your Plaid account manager
properties:
unauthorized_transactions_count_7d:
type: integer
description: We parse and analyze historical transaction metadata to identify the number of possible past returns due to unauthorized transactions over the past 7 days from the account that will be debited.
unauthorized_transactions_count_30d:
type: integer
description: We parse and analyze historical transaction metadata to identify the number of possible past returns due to unauthorized transactions over the past 30 days from the account that will be debited.
unauthorized_transactions_count_60d:
type: integer
description: We parse and analyze historical transaction metadata to identify the number of possible past returns due to unauthorized transactions over the past 60 days from the account that will be debited.
unauthorized_transactions_count_90d:
type: integer
description: We parse and analyze historical transaction metadata to identify the number of possible past returns due to unauthorized transactions over the past 90 days from the account that will be debited.
nsf_overdraft_transactions_count_7d:
type: integer
description: We parse and analyze historical transaction metadata to identify the number of possible past returns due to non-sufficient funds/overdrafts over the past 7 days from the account that will be debited.
nsf_overdraft_transactions_count_30d:
type: integer
description: We parse and analyze historical transaction metadata to identify the number of possible past returns due to non-sufficient funds/overdrafts over the past 30 days from the account that will be debited.
nsf_overdraft_transactions_count_60d:
type: integer
description: We parse and analyze historical transaction metadata to identify the number of possible past returns due to non-sufficient funds/overdrafts over the past 60 days from the account that will be debited.
nsf_overdraft_transactions_count_90d:
type: integer
description: We parse and analyze historical transaction metadata to identify the number of possible past returns due to non-sufficient funds/overdrafts over the past 90 days from the account that will be debited.
days_since_first_plaid_connection:
type: integer
description: The number of days since the first time the Item was connected to an application via Plaid
nullable: true
plaid_connections_count_7d:
type: integer
description: The number of times the Item has been connected to applications via Plaid over the past 7 days
nullable: true
plaid_connections_count_30d:
type: integer
description: The number of times the Item has been connected to applications via Plaid over the past 30 days
nullable: true
total_plaid_connections_count:
type: integer
description: The total number of times the Item has been connected to applications via Plaid
nullable: true
is_savings_or_money_market_account:
type: boolean
description: Indicates if the ACH transaction funding account is a savings/money market account
total_credit_transactions_amount_10d:
type: number
description: The total credit (inflow) transaction amount over the past 10 days from the account that will be debited
total_debit_transactions_amount_10d:
type: number
description: The total debit (outflow) transaction amount over the past 10 days from the account that will be debited
p50_credit_transactions_amount_28d:
type: number
description: The 50th percentile of all credit (inflow) transaction amounts over the past 28 days from the account that will be debited
nullable: true
p50_debit_transactions_amount_28d:
type: number
description: The 50th percentile of all debit (outflow) transaction amounts over the past 28 days from the account that will be debited
nullable: true
p95_credit_transactions_amount_28d:
type: number
description: The 95th percentile of all credit (inflow) transaction amounts over the past 28 days from the account that will be debited
nullable: true
p95_debit_transactions_amount_28d:
type: number
description: The 95th percentile of all debit (outflow) transaction amounts over the past 28 days from the account that will be debited
nullable: true
days_with_negative_balance_count_90d:
type: integer
description: The number of days within the past 90 days when the account that will be debited had a negative end-of-day available balance
nullable: true
p90_eod_balance_30d:
type: number
description: The 90th percentile of the end-of-day available balance over the past 30 days of the account that will be debited
nullable: true
p90_eod_balance_60d:
type: number
description: The 90th percentile of the end-of-day available balance over the past 60 days of the account that will be debited
nullable: true
p90_eod_balance_90d:
type: number
description: The 90th percentile of the end-of-day available balance over the past 90 days of the account that will be debited
nullable: true
p10_eod_balance_30d:
type: number
description: The 10th percentile of the end-of-day available balance over the past 30 days of the account that will be debited
nullable: true
p10_eod_balance_60d:
type: number
description: The 10th percentile of the end-of-day available balance over the past 60 days of the account that will be debited
nullable: true
p10_eod_balance_90d:
type: number
description: The 10th percentile of the end-of-day available balance over the past 90 days of the account that will be debited
nullable: true
available_balance:
type: number
description: Available balance, as of the `balance_last_updated` time. The available balance is the current balance less any outstanding holds or debits that have not yet posted to the account.
nullable: true
current_balance:
type: number
description: Current balance, as of the `balance_last_updated` time. The current balance is the total amount of funds in the account.
nullable: true
balance_last_updated:
type: string
format: date-time
description: Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DDTHH:mm:ssZ) indicating the last time that the balance for the given account has been updated.
nullable: true
phone_change_count_28d:
type: integer
description: The number of times the account's phone numbers on file have changed over the past 28 days
nullable: true
phone_change_count_90d:
type: integer
description: The number of times the account's phone numbers on file have changed over the past 90 days
nullable: true
email_change_count_28d:
type: integer
description: The number of times the account's email addresses on file have changed over the past 28 days
nullable: true
email_change_count_90d:
type: integer
description: The number of times the account's email addresses on file have changed over the past 90 days
nullable: true
address_change_count_28d:
type: integer
description: The number of times the account's addresses on file have changed over the past 28 days
nullable: true
address_change_count_90d:
type: integer
description: The number of times the account's addresses on file have changed over the past 90 days
nullable: true
SignalDecisionReportRequest:
title: SignalDecisionReportRequest
description: SignalDecisionReportRequest defines the request schema for `/signal/decision/report`
type: object
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
client_transaction_id:
type: string
description: Must be the same as the `client_transaction_id` supplied when calling `/signal/evaluate`
minLength: 1
maxLength: 36
initiated:
type: boolean
description: "`true` if the ACH transaction was initiated, `false` otherwise."
days_funds_on_hold:
type: integer
description: The actual number of days (hold time) since the ACH debit transaction that you wait before making funds available to your customers. The holding time could affect the ACH return rate. For example, use 0 if you make funds available to your customers instantly or the same day following the debit transaction, or 1 if you make funds available the next day following the debit initialization.
minimum: 0
nullable: true
required:
- client_transaction_id
- initiated
SignalDecisionReportResponse:
title: SignalDecisionReportResponse
description: SignalDecisionReportResponse defines the response schema for `/signal/decision/report`
additionalProperties: true
type: object
properties:
request_id:
$ref: "#/components/schemas/RequestID"
required:
- request_id
SignalReturnReportRequest:
title: SignalReturnReportRequest
description: SignalReturnReportRequest defines the request schema for `/signal/return/report`
type: object
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
client_transaction_id:
type: string
description: Must be the same as the `client_transaction_id` supplied when calling `/signal/evaluate`
minLength: 1
maxLength: 36
return_code:
type: string
description: Must be a valid ACH return code (e.g. "R01")
required:
- client_transaction_id
- return_code
SignalReturnReportResponse:
title: SignalReturnReportResponse
description: SignalReturnReportResponse defines the response schema for `/signal/return/report`
additionalProperties: true
type: object
properties:
request_id:
$ref: "#/components/schemas/RequestID"
required:
- request_id
SandboxOauthSelectAccountsRequest:
title: SandboxOauthSelectAccountsRequest
type: object
description: Defines the request schema for `sandbox/oauth/select_accounts`
properties:
oauth_state_id:
type: string
accounts:
type: array
items:
type: string
required:
- oauth_state_id
- accounts
SandboxOauthSelectAccountsResponse:
title: SandboxOauthSelectAccountsResponse
type: object
description: Defines the response schema for `/sandbox/oauth/select_accounts`
NewAccountsAvailableWebhook:
title: NewAccountsAvailableWebhook
type: object
description: Fired when Plaid detects a new account for Items created or updated with [Account Select v2](https://plaid.com/docs/link/customization/#account-select). Upon receiving this webhook, you can prompt your users to share new accounts with you through [Account Select v2 update mode](https://plaid.com/docs/link/update-mode/#using-update-mode-to-request-new-accounts).
x-examples:
example-1:
webhook_type: ITEM
webhook_code: NEW_ACCOUNTS_AVAILABLE
item_id: gAXlMgVEw5uEGoQnnXZ6tn9E7Mn3LBc4PJVKZ
error: null
properties:
webhook_type:
type: string
description: "`ITEM`"
webhook_code:
type: string
description: "`NEW_ACCOUNTS_AVAILABLE`"
item_id:
$ref: "#/components/schemas/ItemId"
error:
$ref: "#/components/schemas/PlaidError"
WalletGetRequest:
type: object
description: WalletGetRequest defines the request schema for `/wallet/get`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
wallet_id:
type: string
description: The ID of the e-wallet
minLength: 1
required:
- wallet_id
WalletGetResponse:
type: object
additionalProperties: true
description: WalletGetResponse defines the response schema for `/wallet/get`
properties:
wallet_id:
type: string
description: A unique ID identifying the e-wallet
balance:
$ref: "#/components/schemas/WalletBalance"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- wallet_id
- balance
- request_id
WalletBalance:
title: WalletBalance
type: object
additionalProperties: true
nullable: true
description: An object representing the e-wallet balance
properties:
iso_currency_code:
type: string
description: The ISO-4217 currency code of the balance
current:
type: number
description: The total amount of funds in the account
required:
- iso_currency_code
- current
WalletTransactionExecuteRequest:
type: object
description: WalletTransactionExecuteRequest defines the request schema for `/wallet/transaction/execute`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
idempotency_key:
$ref: "#/components/schemas/WalletTransactionIdempotencyKey"
wallet_id:
type: string
description: The ID of the e-wallet to debit from
minLength: 1
counterparty:
$ref: "#/components/schemas/WalletTransactionCounterparty"
amount:
$ref: "#/components/schemas/WalletTransactionAmount"
reference:
type: string
maxLength: 18
minLength: 1
description: A reference for the transaction. This must be an alphanumeric string with at most 18 characters and must not contain any special characters or spaces.
required:
- idempotency_key
- wallet_id
- counterparty
- amount
- reference
WalletTransactionIdempotencyKey:
title: WalletTransactionIdempotencyKey
type: string
maxLength: 128
minLength: 1
description: |-
A random key provided by the client, per unique wallet transaction. Maximum of 128 characters.
The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. If a request to execute a wallet transaction fails due to a network connection error, then after a minimum delay of one minute, you can retry the request with the same idempotency key to guarantee that only a single wallet transaction is created. If the request was successfully processed, it will prevent any transaction that uses the same idempotency key, and was received within 24 hours of the first request, from being processed.
WalletTransactionCounterparty:
title: WalletTransactionCounterparty
type: object
additionalProperties: true
description: An object representing the e-wallet transaction's counterparty
properties:
name:
type: string
description: The name of the counterparty
minLength: 1
numbers:
$ref: "#/components/schemas/WalletTransactionCounterpartyNumbers"
required:
- name
- numbers
WalletTransactionCounterpartyNumbers:
title: WalletTransactionCounterpartyNumbers
type: object
description: The counterparty's bank account numbers
properties:
bacs:
$ref: "#/components/schemas/WalletTransactionCounterpartyBACS"
required:
- bacs
WalletTransactionCounterpartyBACS:
allOf:
- $ref: "#/components/schemas/RecipientBACS"
- type: object
additionalProperties: true
description: The account number and sort code of the counterparty's account
WalletTransactionAmount:
title: WalletTransactionAmount
type: object
additionalProperties: true
properties:
iso_currency_code:
type: string
enum:
- GBP
description: The ISO-4217 currency code of the transaction. Currently, only `"GBP"` is supported.
minLength: 3
maxLength: 3
value:
type: number
minimum: 1
description: The amount of the transaction. Must contain at most two digits of precision e.g. `1.23`.
required:
- iso_currency_code
- value
description: The amount and currency of a transaction
WalletTransactionExecuteResponse:
type: object
additionalProperties: true
description: WalletTransactionExecuteResponse defines the response schema for `/wallet/transaction/execute`
properties:
transaction_id:
type: string
description: A unique ID identifying the transaction
status:
$ref: "#/components/schemas/WalletTransactionStatus"
request_id:
$ref: "#/components/schemas/RequestID"
required:
- transaction_id
- status
- request_id
WalletTransactionStatus:
type: string
enum:
- INITIATED
- EXECUTED
- BLOCKED
- FAILED
description: |-
The status of the transaction.
`INITIATED`: This is the initial state of all transactions. It indicates that the transaction has been initiated and is currently being processed.
`EXECUTED`: The transaction has been successfully executed.
`FAILED`: The transaction failed to process successfully. This is a terminal status.
`BLOCKED`: The transaction has been blocked for violating compliance rules. This is a terminal status.
WalletTransactionsListRequest:
type: object
description: WalletTransactionsListRequest defines the request schema for `/wallet/transactions/list`
properties:
client_id:
$ref: "#/components/schemas/APIClientID"
secret:
$ref: "#/components/schemas/APISecret"
wallet_id:
type: string
description: The ID of the e-wallet to fetch transactions from
minLength: 1
cursor:
type: string
maxLength: 256
description: A base64 value representing the latest transaction that has already been requested. Set this to `next_cursor` received from the previous `/wallet/transactions/list` request. If provided, the response will only contain transactions created before that transaction. If omitted, the response will contain transactions starting from the most recent, and in descending order by the `created_at` time.
count:
type: integer
description: The number of transactions to fetch
minimum: 1
maximum: 200
default: 10
required:
- wallet_id
WalletTransactionsListResponse:
type: object
additionalProperties: true
description: WalletTransactionsListResponse defines the response schema for `/wallet/transactions/list`
properties:
transactions:
type: array
description: An array of transactions of an e-wallet, associated with the given `wallet_id`
items:
$ref: "#/components/schemas/WalletTransaction"
next_cursor:
type: string
description: Cursor used for fetching transactions created before the latest transaction provided in this response
request_id:
$ref: "#/components/schemas/RequestID"
required:
- transactions
- request_id
WalletTransaction:
title: WalletTransaction
type: object
additionalProperties: true
properties:
transaction_id:
type: string
description: A unique ID identifying the transaction
reference:
type: string
description: A reference for the transaction
type:
type: string
enum:
- PAYOUT
description: The type of of the transaction. Currently, only `"PAYOUT"` is supported.
amount:
$ref: "#/components/schemas/WalletTransactionAmount"
counterparty:
$ref: "#/components/schemas/WalletTransactionCounterparty"
status:
$ref: "#/components/schemas/WalletTransactionStatus"
created_at:
type: string
description: Timestamp when the transaction was created, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format.
format: date-time
required:
- transaction_id
- reference
- type
- amount
- counterparty
- status
- created_at
description: The transaction details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment