Statements
API reference for Statements endpoints and webhooks
For how-to guidance, see the Statements documentation.
| Endpoint | Description |
|---|---|
/statements/list | Get a list of statements available to download |
/statements/download | Download a single bank statement |
/statements/refresh | Trigger on-demand statement extractions |
| Webhook Name | Description |
|---|---|
STATEMENTS_REFRESH_COMPLETE | Statements refresh completed |
Endpoints
/statements/list
Retrieve a list of all statements associated with an item.
The /statements/list endpoint retrieves a list of all statements associated with an item.
Request fields
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.secret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.const listRequest: StatementsListRequest = {
access_token: access_token,
};
const listResponse = await plaidClient.statementsList(listRequest);
accounts = listResponse.accounts;
statements = listResponse.accounts[0].statements;
Response fields
date 2010 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.{
"item_id": "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6",
"institution_id": "ins_3",
"institution_name": "Chase",
"accounts": [
{
"account_id": "3gE5gnRzNyfXpBK5wEEKcymJ5albGVUqg77gr",
"account_mask": "0000",
"account_name": "Plaid Saving",
"account_official_name": "Plaid Silver Standard 0.1% Interest Saving",
"account_subtype": "savings",
"account_type": "depository",
"statements": [
{
"statement_id": "vzeNDwK7KQIm4yEog683uElbp9GRLEFXGK98D",
"month": 5,
"year": 2023,
"date_posted": "2023-05-01"
}
]
}
],
"request_id": "eYupqX1mZkEuQRx"
}/statements/download
Retrieve a single statement.
The /statements/download endpoint retrieves a single statement PDF in binary format. The response will contain a Plaid-Content-Hash header containing a SHA 256 checksum of the statement. This can be used to verify that the file being sent by Plaid is the same file that was downloaded to your system.
Request fields
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.secret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.let downloadRequest: StatementsDownloadRequest = {
access_token: accessToken,
statement_id: statement.statement_id,
};
let downloadResponse = await plaidClient.statementsDownload(
downloadRequest,
{responseType: 'arraybuffer'},
);
let pdf = downloadResponse.data.toString('base64');
Response
This endpoint returns a single statement, exactly as provided by the financial institution, in the form of binary PDF data.
/statements/refresh
Refresh statements data.
/statements/refresh initiates an on-demand extraction to fetch the statements for the provided dates.
Request fields
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.secret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.date date const refreshRequest: StatementsRefreshRequest = {
access_token: accessToken,
start_date: '2023-11-01',
end_date: '2024-02-01',
};
const refreshResponse = await plaidClient.statementsRefresh(refreshRequest);
Response fields
{
"request_id": "eYupqX1mZkEuQRx"
}Webhooks
Statement webhooks are sent to indicate that statements refresh has finished processing. All webhooks related to statements have a webhook_type of STATEMENTS.
STATEMENTS_REFRESH_COMPLETE
Fired when refreshed statements extraction is completed or failed to be completed. Triggered by calling /statements/refresh.
Properties
STATEMENTSSTATEMENTS_REFRESH_COMPLETEitem_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.SUCCESS: The statements were successfully extracted and can be listed via /statements/list/ and downloaded via /statements/download/.FAILURE: The statements failed to be extracted.SUCCESS, FAILUREsandbox, production{
"webhook_type": "STATEMENTS",
"webhook_code": "STATEMENTS_REFRESH_COMPLETE",
"item_id": "eVBnVMp7zdTJLkRNr33Rs6zr7KNJqBFL9DrE6",
"result": "SUCCESS",
"environment": "production"
}