# List statements

Retrieve all statements associated with an account.

To access this endpoint using an [access token](https://docs.moov.io/api/authentication/access-tokens/) you'll need to specify the `/accounts/{accountID}/profile.read` scope.

## GET

/accounts/{accountID}/statements

### Curl Example

```shell
curl -X GET "https://api.moov.io/accounts/{accountID}/statements" \
  -H "Authorization: Bearer {token}" \
  -H "X-Moov-Version: v2026.04.00"
```

### TypeScript Example

```typescript
import { Moov } from "@moovio/sdk";

const moov = new Moov({
  security: {
    username: "",
    password: "",
  },
});

async function run() {
  const result = await moov.statements.list({
    skip: 60,
    count: 20,
    accountID: "b63ef5ea-db36-47f1-a72e-1a5eb1c43c0f",
  });

console.log(result);
}

run();
```

### PHP Example

```php
declare(strict_types=1);

require 'vendor/autoload.php';

use Moov\MoovPhp;
use Moov\MoovPhp\Models\Components;
use Moov\MoovPhp\Models\Operations;

$sdk = MoovPhp\Moov::builder()
    ->setSecurity(
        new Components\Security(
            username: '',
            password: '',
        )
    )
    ->build();

$request = new Operations\ListStatementsRequest(
    skip: 60,
    count: 20,
    accountID: 'b63ef5ea-db36-47f1-a72e-1a5eb1c43c0f',
);

$response = $sdk->statements->list(
    request: $request
);

if ($response->statements !== null) {
    // handle response
}
```

### Java Example

```java
package hello.world;

import io.moov.sdk.Moov;
import io.moov.sdk.models.components.Security;
import io.moov.sdk.models.errors.GenericError;
import io.moov.sdk.models.operations.ListStatementsRequest;
import io.moov.sdk.models.operations.ListStatementsResponse;
import java.lang.Exception;

public class Application {

public static void main(String[] args) throws GenericError, Exception {

Moov sdk = Moov.builder()
                .security(Security.builder()
                    .username("")
                    .password("")
                    .build())
            .build();

ListStatementsRequest req = ListStatementsRequest.builder()
                .accountID("b63ef5ea-db36-47f1-a72e-1a5eb1c43c0f")
                .skip(60L)
                .count(20L)
                .build();

ListStatementsResponse res = sdk.statements().list()
                .request(req)
                .call();

if (res.statements().isPresent()) {
            System.out.println(res.statements().get());
        }
    }
}
```

### Python Example

```python
from moovio_sdk import Moov
from moovio_sdk.models import components

with Moov(
    security=components.Security(
        username="",
        password="",
    ),
) as moov:

res = moov.statements.list(account_id="b63ef5ea-db36-47f1-a72e-1a5eb1c43c0f", skip=60, count=20)

# Handle response
    print(res)
```

### Ruby Example

```ruby
require 'moov_ruby'

Models = ::Moov::Models
s = ::Moov::Client.new(
  security: Models::Components::Security.new(
    username: '',
    password: ''
  )
)

req = Models::Operations::ListStatementsRequest.new(
  skip: 60,
  count: 20,
  account_id: 'b63ef5ea-db36-47f1-a72e-1a5eb1c43c0f'
)
res = s.statements.list(request: req)

unless res.statements.nil?
  # handle response
end
```

### C# Example

```csharp
using Moov.Sdk;
using Moov.Sdk.Models.Components;
using Moov.Sdk.Models.Requests;

var sdk = new MoovClient(security: new Security() {
    Username = "",
    Password = "",
});

ListStatementsRequest req = new ListStatementsRequest() {
    Skip = 60,
    Count = 20,
    AccountID = "b63ef5ea-db36-47f1-a72e-1a5eb1c43c0f",
};

var res = await sdk.Statements.ListAsync(req);

// handle response
```

### Example Response

```json
[\
  {\
    "statementID": "string",\
    "statementName": "string",\
    "fileName": "string",\
    "fileSize": 0,\
    "billingPeriodStartDateTime": "2019-08-24T14:15:22Z",\
    "billingPeriodEndDateTime": "2019-08-24T14:15:22Z",\
    "subscriptionIDs": [\
      "string"\
    ],\
    "summary": {\
      "cardAcquiring": {\
        "volumeAmount": {\
          "currency": "USD",\
          "valueDecimal": "12.987654321"\
        },\
        "volumeCount": 0,\
        "feeAmount": {\
          "currency": "USD",\
          "valueDecimal": "12.987654321"\
        },\
        "merchantFeesCollected": {\
          "currency": "USD",\
          "valueDecimal": "12.987654321"\
        },\
        "partnerFeesAssessed": {\
          "currency": "USD",\
          "valueDecimal": "12.987654321"\
        },\
        "netIncome": {\
          "currency": "USD",\
          "valueDecimal": "12.987654321"\
        },\
        "interchangeFees": {\
          "visa": {\
            "currency": "USD",\
            "valueDecimal": "12.987654321"\
          },\
          "mastercard": {\
            "currency": "USD",\
            "valueDecimal": "12.987654321"\
          },\
          "discover": {\
            "currency": "USD",\
            "valueDecimal": "12.987654321"\
          },\
          "americanExpress": {\
            "currency": "USD",\
            "valueDecimal": "12.987654321"\
          }\
        }\
      },\
      // ... additional fees and details ...\
    },\
    "createdOn": "2019-08-24T14:15:22Z",\
    "updatedOn": "2019-08-24T14:15:22Z"\
  }\
]
```

### Possible Errors

- **Bad Request**: The server could not understand the request due to invalid syntax.
- **Unauthorized**: The request contained missing or expired authentication.
- **Forbidden**: The user is not authorized to make the request.
- **Rate Limit Exceeded**: Request was refused due to rate limiting.
- **Internal Server Error**: The request failed due to an unexpected error.
- **Service Unavailable**: The request failed because a downstream service failed to respond.

### Versioning
Set the header to `v2026.04.00` to use the API described in this specification.
