> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ebury.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a statement request

Create a new statement request. The statement will be generated asynchronously and made available via the delivery channel specified by `send_via`. Use `Get Statement Details` to poll for completion and retrieve a download URL.

Supports `accounts`, `trades`, and `incoming_funds` statement types.

Valid `statement_type` / `format` combinations:

* `accounts`: `csv`, `pdf`, `xls`, `coda`
* `trades`: `pdf`, `xls`
* `incoming_funds`: `csv`, `pdf`, `xls`

The `currencies` field is only valid when `statement_type` is `accounts`.


## OpenAPI

````yaml /openapi.json post /statements
openapi: 3.0.0
info:
  description: |
    Ebury API allows customers:
      to retrieve accounts, balances, beneficiaries, and transactions;
      to get buy/sell estimates and quotes, book trades and retrieve trade history;
      to allocate payments to a trade and beneficiary, and to submit payments in bulk;
      to download documents such as trade receipt, payment instruction and payment receipt;
      to manage the authorised persons on their account.
    The Metadata API allows applications to clarify some parts of the Ebury API
      that are impractical to express schematically.
  termsOfService: https://docs.ebury.io/#terms-of-use
  title: Ebury API
  version: '0.1'
servers:
  - url: https://{environment}.ebury.io
    variables:
      environment:
        default: api
        enum:
          - api
          - sandbox
security:
  - api_key: []
paths:
  /statements:
    post:
      tags:
        - Statements
      summary: Create a statement request
      description: >
        Create a new statement request. The statement will be generated
        asynchronously and made available via the delivery channel specified by
        `send_via`. Supports `accounts`, `trades`, and `incoming_funds`
        statement types.


        Valid `statement_type` / `format` combinations:

        - `accounts`: `csv`, `pdf`, `xls`, `coda`

        - `trades`: `pdf`, `xls`

        - `incoming_funds`: `csv`, `pdf`, `xls`


        The `currencies` field is only valid when `statement_type` is
        `accounts`.
      parameters:
        - description: The ID of the client
          in: query
          name: client_id
          required: true
          schema:
            type: string
        - name: Authorization
          in: header
          description: The access token
          required: true
          schema:
            type: string
        - description: The ID of the contact
          in: header
          name: X-Contact-ID
          required: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - statement_type
                - date_from
                - date_to
                - format
              properties:
                statement_type:
                  type: string
                  enum:
                    - accounts
                    - trades
                    - incoming_funds
                  description: The type of statement to create.
                date_from:
                  type: string
                  format: date
                  description: Start date for the statement (YYYY-MM-DD)
                  example: '2020-01-01'
                date_to:
                  type: string
                  format: date
                  description: End date for the statement (YYYY-MM-DD)
                  example: '2020-01-31'
                format:
                  type: string
                  enum:
                    - csv
                    - pdf
                    - xls
                    - coda
                  description: >
                    The file format of the statement. Allowed values depend on
                    `statement_type` — see the endpoint description for valid
                    combinations.
                currencies:
                  type: string
                  pattern: ^([A-Z]{3},?)+$
                  description: >
                    Comma-separated list of currency codes (ISO 4217). Only
                    valid when `statement_type` is `accounts`.
                  example: EUR,GBP,USD
                send_via:
                  type: string
                  enum:
                    - push
                    - email
                    - both
                  description: How the generated statement should be delivered
        description: Statement creation parameters
        required: true
      responses:
        '202':
          description: Statement request accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatementRequestDetail'
        '400':
          description: >-
            Formatting, parameter or schema validation error. See error message
            for further details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '401':
          description: Access denied due to authentication failure
        '403':
          description: >-
            Could not complete action due to data constraints. Refer to error
            message for additional details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
        '404':
          description: Client ID not found
        '502':
          description: Internal integration error. Contact support
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
components:
  schemas:
    StatementRequestDetail:
      description: Statement request details with download URL for completed statements
      type: object
      required:
        - uuid
        - statement_type
        - file_format
        - status
        - status_display
        - start_datetime
        - end_datetime
        - created_at
      properties:
        uuid:
          type: string
          description: Unique identifier for the statement request
          example: 86f62d50-baa2-38dd-f61c-0eacc34ead50
        statement_type:
          type: string
          description: Type of statement
          enum:
            - accounts
            - trades
            - mt940
            - incoming_funds
          example: accounts
        file_format:
          type: string
          description: Format of the statement file
          enum:
            - pdf
            - csv
            - xls
            - mt940
            - coda
          example: pdf
        status:
          type: integer
          description: Status code (0=Pending, 1=Running, 2=Completed, 3=Failed)
          example: 2
        status_display:
          type: string
          description: Human-readable status
          example: Completed
        start_datetime:
          type: string
          format: date-time
          description: Start date/time for the statement period
          example: '2026-01-01T00:00:00'
        end_datetime:
          type: string
          format: date-time
          description: End date/time for the statement period
          example: '2026-03-31T23:59:59.999999'
        created_at:
          type: string
          format: date-time
          description: When the request was created
          example: '2026-04-07T21:18:49.061735'
        completed_at:
          type: string
          format: date-time
          nullable: true
          description: When the statement was completed (null if not yet complete)
          example: '2026-04-07T21:19:00.123456'
        file_name:
          type: string
          nullable: true
          description: Name of the generated file (null if not yet complete)
          example: statement_2026-01-01_2026-03-31.pdf
        download_url:
          type: string
          nullable: true
          description: >-
            Pre-signed S3 URL for downloading the statement (null if not yet
            complete, expires after 15 minutes)
          example: https://s3.amazonaws.com/bucket/file.pdf?X-Amz-Signature=abc123
        error_message:
          type: string
          nullable: true
          description: Error message if the request failed
          example: null
    ErrorMessage:
      description: An error message.
      properties:
        code:
          type: string
          description: The code for the error.
        details:
          description: Error details
          type: string
        message:
          type: string
          description: A short description of the cause of the error.
      required:
        - code
        - message
        - details
      type: object
  securitySchemes:
    api_key:
      description: An API Key.
      in: header
      name: x-api-key
      type: apiKey

````