---
title: "Retrieve data for a user's uploaded bank statements"
method: POST
path: "/credit/bank_statements/uploads/get"
tags: ["plaid"]
---

# Retrieve data for a user's uploaded bank statements

`POST /credit/bank_statements/uploads/get`

`/credit/bank_statements/uploads/get` returns parsed data from bank statements uploaded by users as part of the Document Income flow. If your account is not enabled for Document Parsing, contact your account manager to request access.

## Request body

- CreditBankStatementsUploadsGetRequest — CreditBankStatementsUploadsGetRequest defines the request schema for `/credit/bank_statements/uploads/get`
  - `client_id` string — 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.
  - `secret` string — 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.
  - `user_token` string, required — The user token associated with the user for which data is being requested. This field is used only by customers with pre-existing integrations that already use the `user_token` field. All other customers should use the `user_id` instead. For more details, see [New User APIs](https://plaid.com/docs/api/users/user-apis).
  - `user_id` string — A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10, 2025 use this field to identify a user instead of the `user_token`. For more details, see [New User APIs](https://plaid.com/docs/api/users/user-apis).
  - `options` CreditBankStatementsUploadsGetRequestOptions — An optional object for `/credit/bank_statements/uploads/get` request options.
    - `item_ids` string[] — An array of `item_id`s whose bank statements information is returned. Each `item_id` should uniquely identify a bank statements uploaded item. If this field is not provided, all `item_id`s associated with the `user_token` will be returned in the response.

## Response `200`

OK

- CreditBankStatementsUploadsGetResponse — CreditBankStatementsUploadsGetResponse defines the response schema for `/credit/bank_statements/uploads/get`
  - `items` CreditBankStatementUploadItem[], required — Array of bank statement upload items.
    - `item_id` string, required — The `item_id` of the Item associated with this webhook, warning, or error
    - `bank_statements` CreditBankStatementUploadObject[], required
      - `transactions` CreditBankStatementUploadTransaction[], required — An array of transactions appearing on the bank statement.
        - `amount` number, nullable, required — The value of the transaction. A negative amount indicates that money moved into the account (such as a paycheck being deposited).
        - `date` string, date, nullable, required — The date of when the transaction was made, in ISO 8601 format (YYYY-MM-DD).
        - `original_description` string, nullable, required — The raw description of the transaction as it appears on the bank statement.
        - `account_id` string, nullable, required — The unique id of the bank account that this transaction occurs in
      - `document_metadata` CreditDocumentMetadata, required — Object representing metadata pertaining to the document.
        - `name` string, required — The name of the document.
        - `document_type` string, nullable, required — The type of document. `PAYSTUB`: A paystub. `BANK_STATEMENT`: A bank statement. `US_TAX_W2`: A W-2 wage and tax statement provided by a US employer reflecting wages earned by the employee. `US_TAX_1099_MISC`: A 1099-MISC tax form reporting miscellaneous income. `US_TAX_1099_K`: A 1099-K tax form reporting payment card and third-party network transactions. `US_STUDENT_I20`: A Certificate of Eligibility for Nonimmigrant Student Status (Form I-20) issued by a US school. `US_MILITARY_ERAS`: An electronic Retirement Account Statement (eRAS) issued by the US military. `US_MILITARY_LES`: A Leave and Earnings Statement (LES) issued by the US military. `US_MILITARY_CLES`: A Civilian Leave and Earnings Statement (CLES) issued by the US military. `GIG`: Used to indicate that the income is related to gig work. Does not necessarily correspond to a specific document type. `PLAID_GENERATED_PAYSTUB_PDF`: Used to indicate that the PDF for the paystub was generated by Plaid. `NONE`: Used to indicate that there is no underlying document for the data. `UNKNOWN`: Document type could not be determined.
        - `download_url` string, nullable, required — Signed URL to retrieve the document(s). The payload will be a .zip file containing the document(s). For Payroll Income, the file type of the documents will always be PDF, and the documents may not be available, in which case the field will be `null`. If you would like Plaid to generate a PDF if the original is not available, contact your account manager. [Example generated pay stub](https://plaid.com/documents/plaid-generated-mock-paystub.pdf). For Document Income, this field will not be `null`, and the file type of the underlying document(s) will be the original file type uploaded by the user. For more details on available file types, see the [Document Income](https://plaid.com/docs/income/document-income) documentation. This download URL can only be used once and expires after two minutes. To generate a new download URL, call `/credit/payroll_income/get` again.
        - `status` string, nullable, required — The processing status of the document. `PROCESSING_COMPLETE`: The document was successfully processed. `DOCUMENT_ERROR`: The document could not be processed. Possible causes include: The document was an unacceptable document type such as an offer letter or bank statement, the document image was cropped or blurry, or the document was corrupted. `UNKNOWN` or `null`: An internal error occurred. If this happens repeatedly, contact support or your Plaid account manager.
        - `page_count` integer, nullable — The number of pages of the uploaded document (if available).
        - `error_message` string, nullable — The reason why a failure occurred during document processing (if available).
      - `document_id` string, nullable, required — An identifier of the document referenced by the document metadata.
      - `bank_accounts` CreditBankStatementUploadBankAccount[], required — An array of bank accounts associated with the uploaded bank statement.
        - `name` string, nullable, required — The name of the bank account
        - `bank_name` string, nullable, required — The name of the bank institution.
        - `account_type` string, nullable, required — The type of the bank account.
        - `account_number` string, nullable, required — The bank account number.
        - `owner` CreditBankStatementUploadAccountOwner, required — An object containing data about the owner of the bank account for the uploaded bank statement.
          - `name` string, nullable, required — The name of the account owner
          - `address` CreditBankStatementUploadAccountOwnerAddress, required — Address on the uploaded bank statement
            - `city` string, nullable, required — The full city name.
            - `country` string, nullable, required — The ISO 3166-1 alpha-2 country code.
            - `postal_code` string, nullable, required — The postal code of the address.
            - `region` string, nullable, required — The region or state. Example: `"NC"`
            - `street` string, nullable, required — The full street address.
        - `periods` CreditBankStatementUploadBankAccountPeriod[], required — An array of period objects, containing more data on the overall period of the statement.
          - `start_date` string, date, nullable, required — The start date of the statement period in ISO 8601 format (YYYY-MM-DD).
          - `end_date` string, date, nullable, required — The end date of the statement period in ISO 8601 format (YYYY-MM-DD).
          - `starting_balance` number, nullable, required — The starting balance of the bank account for the period.
          - `ending_balance` number, nullable, required — The ending balance of the bank account for the period.
        - `account_id` string, nullable, required — The unique id of the bank account
    - `status` PayrollItemStatus, nullable, required — Details about the status of the payroll item.
      - `processing_status` string, nullable — Denotes the processing status for the verification. `UNKNOWN`: The processing status could not be determined. `PROCESSING_COMPLETE`: The processing has completed and the user has approved for sharing. The data is available to be retrieved. `PROCESSING`: The verification is still processing. The data is not available yet. `FAILED`: The processing failed to complete successfully. `APPROVAL_STATUS_PENDING`: The processing has completed but the user has not yet approved the sharing of the data.
    - `updated_at` string, date-time, nullable, required — Timestamp in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) format (YYYY-MM-DDTHH:mm:ssZ) indicating the last time that the Item was updated.
  - `request_id` string, required — A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.

## Other responses

- `default` — Error response.

---

[API](https://skmtc.net/plaid/apis/the-plaid-api.md) · [All operations](https://skmtc.net/plaid/apis/the-plaid-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/plaid/the-plaid-api/versions/64c4514ea59b/schema)
