# Account Statements
URL: https://www.quiltt.dev/api/statements
Description: Learn how to fetch and manage Account Statements through Quiltt's GraphQL API.
Navigation: api → statements
Tags: API, Core Resources

A **Statement** in Quiltt represents a periodic financial report associated with an [Account](/api/accounts) issued by the end-user's financial institution. Statements typically provide a summary of account activity, balances, and other important information for a specific time period.

For a more comprehensive guide to working with statements, including setup and best practices, see our [Account Statements Tutorial](/get-started/tutorials/statements).

Metadata Note:

## Schemas & Types

Profile GraphQL Note:

## GraphQL Queries

Statement queries allow you to fetch data about a specific Statement or a list of Statements associated with the Profile or an Account.

### `statement`
Looks up a Statement by its ID:

GraphQLRequest:

Query:
```graphql
query {
  statement(id: "stmt_11zBVgTOO9DR1vbAZxb6Ldb") {
    id
    startOn
    endOn
    url
    account [id
      name]
  }
}
```

  

Response:
```json
{
  "data": {
    "statement": {
      "id": "stmt_11zBVgTOO9DR1vbAZxb6Ldb",
      "startOn": "2024-05-01",
      "endOn": "2024-05-31",
      "url": "https://example.com/statement.pdf",
      "account": ["id": "acct_12tgD1YP33AwEvbdmSrcRY",
        "name": "Credit Card"]
    }
  }
}
```

### `statements`

Info:
This query uses cursor-based pagination, based on the [Relay Connection Specification](https://relay.dev/graphql/connections.htm). See our [Pagination guide](/api/graphql/pagination) for examples and best practices.

Lists and filters the Statements associated with the Profile:

GraphQLRequest:

Query:
```graphql
query GetStatements {
  statements(first: 10, sort: DATE_DESC) {
    edges {
      node {
        id
        startOn
        endOn
        url
        account [id
          name]
      }
    }
    pageInfo [hasNextPage
      endCursor]
  }
}
```

  

Response:
```json
{
  "data": {
    "statements": {
      "edges": [
        {
          "node": {
            "id": "stmt_11zBVgTOO9DR1vbAZxb6Ldb",
            "startOn": "2024-05-01",
            "endOn": "2024-05-31",
            "url": "https://example.com/statement1.pdf",
            "account": ["id": "acct_12tgD1YP33AwEvbdmSrcRY",
              "name": "Credit Card"]
          }
        },
        {
          "node": {
            "id": "stmt_11zBVgTOO9DR1vbAZxb6Ldc",
            "startOn": "2024-04-01",
            "endOn": "2024-04-30",
            "url": "https://example.com/statement2.pdf",
            "account": ["id": "acct_12tgD1YP33AwEvbdmSrcRY",
              "name": "Credit Card"]
          }
        }
      ],
      "pageInfo": ["hasNextPage": true,
        "endCursor": "cursor_value_here"]
    }
  }
}
```

The `statements` query supports various filtering options:

#### Filtering by Date Range and Account

```graphql
query ForADateRange {
  statements(filter: {
    for: [start: "2024-05-01",
      end: "2024-05-31"],
    accountIds: ["acct_12xBsJKrI455PNcaCkqpGh"]
  }) {
    nodes {
      id
      startOn
      url
      endOn
      account {id}
    }
  }
}
```

#### Filtering for a Specific Date

Useful for bookkeeping or verifying transactions on a particular day:

```graphql
query OnADate {
  statements(filter: [on: "2024-05-15",
    accountIds: ["acct_12xBsJKrI455PNcaCkqpGh"]]) {
    nodes {
      id
      startOn
      url
      endOn
      account {id}
    }
  }
}
```

#### Get Most Recent Statements for All Accounts

```graphql
query MostRecentAccountsStatements {
  accounts {
    id
    name
    mask
    statements(first: 1, sort: DATE_DESC) {
      nodes [id
        startOn
        endOn
        url]
    }
  }
}
```

## Webhooks

Webhooks are the best way to be notified when new statements are available. To set up webhooks:

1. Access the Environment's "Webhooks" page in the Dashboard.
2. Create a new webhook subscription or edit an existing one.
3. Subscribe to the `statement.ready` event to be notified when a Statement is available with period metadata.

### `statement.ready`

This event gets sent whenever a Statement has been fetched and processed.

```json
{
  "id": "evt_12xBw2z462GwN9789v9WOQ",
  "at": "2025-11-10T12:34:56Z",
  "type": "statement.ready",
  "profile": ["id": "p_12xBsIaXKUM3DAZJ8ujQp7",
    "uuid": "0190db0c-0b7d-70fb-afff-dbb1b4fffa21",
    "metadata": null],
  "record": ["id": "stmt_12xBsK2UMUCC25KkCApg66",
    "accountId": "acct_12xBsJKrI455PNcaCkqpGh",
    "startOn": "2025-10-01",
    "endOn": "2025-10-31",
    "url": "https://cdn.quiltt.io/v1/private/.../statement.pdf"],
  "metadata": {}
}
```

## Accessing Statement PDFs

The `url` field in the Statement object provides a link to download the statement PDF. This URL has a 1-hour expiration, so make sure to use it promptly after retrieval.

Info:
Note that the availability of statement PDFs may vary depending on the financial institution and the connection provider. In Sandbox environments, some providers may use fake PDFs or Quiltt may create a "Mock" statement preview.

If you have any questions or need further assistance with Account Statements on the Quiltt Platform, please contact our support team.