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

# Request statement

> Requests a statement over a calendar-day period. The statement is returned `PENDING` and its file is produced asynchronously; a `STATEMENT_STATUS_UPDATED` webhook follows once it is `GENERATED` or `FAILED`. The period may span at most 31 days, must start on or after 2026-06-01, and must end at least two days before today (UTC) so the rows it covers are final. At most 5 statements may be pending per project at once.



## OpenAPI

````yaml /api-reference/openapi.json post /statements/
openapi: 3.1.0
info:
  title: Reap API
  version: 1.0.0
  description: Reap platform API
servers:
  - url: https://sg.sandbox.api.reap.global
    description: Singapore sandbox
  - url: https://sg.prod.api.reap.global
    description: Singapore production
  - url: https://mx.sandbox.api.reap.global
    description: Mexico sandbox
  - url: https://mx.prod.api.reap.global
    description: Mexico production
  - url: https://sandbox.api.reap.global
    description: Singapore sandbox (alias)
  - url: https://prod.api.reap.global
    description: Singapore production (alias)
security:
  - bearerAuth: []
tags:
  - name: Accounts
  - name: Activities
  - name: Card Designs
  - name: Card Shipments
  - name: Card Transactions
  - name: Cards
  - name: Companies
  - name: Crypto Deposits
  - name: Crypto Withdrawals
  - name: Disputes
  - name: Fees
  - name: Fiat Deposits
  - name: Fraud Alerts
  - name: Policies
  - name: Simulation
  - name: Statements
  - name: Users
  - name: Virtual Asset Postings
  - name: Virtual Assets
  - name: Webhooks
  - name: Agentic
paths:
  /statements/:
    post:
      tags:
        - Statements
      summary: Request statement
      description: >-
        Requests a statement over a calendar-day period. The statement is
        returned `PENDING` and its file is produced asynchronously; a
        `STATEMENT_STATUS_UPDATED` webhook follows once it is `GENERATED` or
        `FAILED`. The period may span at most 31 days, must start on or after
        2026-06-01, and must end at least two days before today (UTC) so the
        rows it covers are final. At most 5 statements may be pending per
        project at once.
      operationId: create_statements
      parameters:
        - name: Reap-Version
          in: header
          required: true
          schema:
            type: string
            enum:
              - '2025-02-14'
            description: API version (YYYY-MM-DD)
            example: '2025-02-14'
        - name: Idempotency-Key
          in: header
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 255
            description: >-
              Unique key for safely retrying this request. Up to 255 characters;
              we recommend a UUIDv4. The first request executes and its response
              is cached; subsequent requests with the same key replay the cached
              response (24h retention).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                type:
                  type: string
                  enum:
                    - CARD_TRANSACTION_FEES
                    - CARD_NON_TRANSACTION_FEES
                  description: What the statement itemises
                  example: CARD_TRANSACTION_FEES
                period:
                  $ref: '#/components/schemas/StatementPeriod'
                  description: >-
                    Inclusive calendar-day range to cover, UTC. At most 31 days,
                    starting no earlier than 2026-06-01 and ending at least two
                    days before today.
                fields:
                  examples:
                    - - occurredAt
                      - transactionId
                      - billAmount
                  description: >-
                    Columns to include, in file order. Omit for every column of
                    the type.
                  minItems: 1
                  type: array
                  items:
                    type: string
                    minLength: 1
                format:
                  default: CSV
                  description: File format
                  type: string
                  enum:
                    - CSV
                  example: CSV
              required:
                - type
                - period
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                type:
                  type: string
                  enum:
                    - CARD_TRANSACTION_FEES
                    - CARD_NON_TRANSACTION_FEES
                  description: What the statement itemises
                  example: CARD_TRANSACTION_FEES
                period:
                  $ref: '#/components/schemas/StatementPeriod'
                  description: >-
                    Inclusive calendar-day range to cover, UTC. At most 31 days,
                    starting no earlier than 2026-06-01 and ending at least two
                    days before today.
                fields:
                  examples:
                    - - occurredAt
                      - transactionId
                      - billAmount
                  description: >-
                    Columns to include, in file order. Omit for every column of
                    the type.
                  minItems: 1
                  type: array
                  items:
                    type: string
                    minLength: 1
                format:
                  default: CSV
                  description: File format
                  type: string
                  enum:
                    - CSV
                  example: CSV
              required:
                - type
                - period
          multipart/form-data:
            schema:
              type: object
              properties:
                type:
                  type: string
                  enum:
                    - CARD_TRANSACTION_FEES
                    - CARD_NON_TRANSACTION_FEES
                  description: What the statement itemises
                  example: CARD_TRANSACTION_FEES
                period:
                  $ref: '#/components/schemas/StatementPeriod'
                  description: >-
                    Inclusive calendar-day range to cover, UTC. At most 31 days,
                    starting no earlier than 2026-06-01 and ending at least two
                    days before today.
                fields:
                  examples:
                    - - occurredAt
                      - transactionId
                      - billAmount
                  description: >-
                    Columns to include, in file order. Omit for every column of
                    the type.
                  minItems: 1
                  type: array
                  items:
                    type: string
                    minLength: 1
                format:
                  default: CSV
                  description: File format
                  type: string
                  enum:
                    - CSV
                  example: CSV
              required:
                - type
                - period
      responses:
        '200':
          description: Statement resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Statement'
        '400':
          description: Response for status 400
          content:
            application/json:
              schema:
                anyOf:
                  - type: object
                    properties:
                      error:
                        type: object
                        properties:
                          code:
                            type: string
                            const: STATEMENT_TYPE_NOT_AVAILABLE
                          message:
                            type: string
                          detail:
                            anyOf:
                              - type: object
                                additionalProperties: {}
                              - type: 'null'
                        required:
                          - code
                          - message
                          - detail
                    required:
                      - error
                    title: StatementTypeNotAvailableError
                    description: This statement type is not available yet
                  - type: object
                    properties:
                      error:
                        type: object
                        properties:
                          code:
                            type: string
                            const: STATEMENT_UNKNOWN_FIELD
                          message:
                            type: string
                          detail:
                            anyOf:
                              - type: object
                                additionalProperties: {}
                              - type: 'null'
                        required:
                          - code
                          - message
                          - detail
                    required:
                      - error
                    title: StatementUnknownFieldError
                    description: >-
                      One or more requested fields are not columns of this
                      statement type
                  - type: object
                    properties:
                      error:
                        type: object
                        properties:
                          code:
                            type: string
                            const: STATEMENT_PERIOD_INVALID
                          message:
                            type: string
                          detail:
                            anyOf:
                              - type: object
                                additionalProperties: {}
                              - type: 'null'
                        required:
                          - code
                          - message
                          - detail
                    required:
                      - error
                    title: StatementPeriodInvalidError
                    description: >-
                      Statement period must be a valid date range of at most 31
                      days
                  - type: object
                    properties:
                      error:
                        type: object
                        properties:
                          code:
                            type: string
                            const: STATEMENT_PERIOD_TOO_RECENT
                          message:
                            type: string
                          detail:
                            anyOf:
                              - type: object
                                additionalProperties: {}
                              - type: 'null'
                        required:
                          - code
                          - message
                          - detail
                    required:
                      - error
                    title: StatementPeriodTooRecentError
                    description: >-
                      Statement period must end at least two days before today
                      (UTC)
                  - type: object
                    properties:
                      error:
                        type: object
                        properties:
                          code:
                            type: string
                            const: STATEMENT_PERIOD_TOO_EARLY
                          message:
                            type: string
                          detail:
                            anyOf:
                              - type: object
                                additionalProperties: {}
                              - type: 'null'
                        required:
                          - code
                          - message
                          - detail
                    required:
                      - error
                    title: StatementPeriodTooEarlyError
                    description: Statement period starts before data is available
        '409':
          description: >-
            Too many statements are pending for this project; retry once one
            finishes
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        const: STATEMENT_LIMIT_REACHED
                      message:
                        type: string
                      detail:
                        anyOf:
                          - type: object
                            additionalProperties: {}
                          - type: 'null'
                    required:
                      - code
                      - message
                      - detail
                required:
                  - error
                title: StatementLimitReachedError
components:
  schemas:
    StatementPeriod:
      type: object
      properties:
        from:
          type: string
          format: date
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
          examples:
            - '2025-03-01'
          description: First calendar day covered, inclusive, UTC
        to:
          type: string
          format: date
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
          examples:
            - '2025-03-31'
          description: Last calendar day covered, inclusive, UTC
      required:
        - from
        - to
    Statement:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique statement identifier
        type:
          type: string
          enum:
            - CARD_TRANSACTION_FEES
            - CARD_NON_TRANSACTION_FEES
          description: What the statement itemises
          example: CARD_TRANSACTION_FEES
        origin:
          type: string
          enum:
            - CLIENT
            - REAP
          description: Who requested the statement
          example: CLIENT
        status:
          type: string
          enum:
            - PENDING
            - GENERATED
            - FAILED
          description: Current statement status
          example: PENDING
        period:
          $ref: '#/components/schemas/StatementPeriod'
        fields:
          anyOf:
            - type: array
              items:
                type: string
            - type: 'null'
          examples:
            - - occurredAt
              - transactionId
              - billAmount
          description: >-
            Columns in the file, in order. `null` means every column of the
            type.
        format:
          type: string
          enum:
            - CSV
          description: File format
          example: CSV
        version:
          type: string
          examples:
            - '2025-02-14'
          description: >-
            API version the statement was requested under. Fixes the column
            definitions the file follows.
        rowCount:
          anyOf:
            - type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            - type: 'null'
          examples:
            - 1842
          description: Number of data rows in the file, once generated
        byteSize:
          anyOf:
            - type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            - type: 'null'
          examples:
            - 412034
          description: Size of the file in bytes, once generated
        dataAsOf:
          anyOf:
            - type: string
            - type: 'null'
          examples:
            - '2025-04-02T03:15:00Z'
          description: >-
            ISO 8601 timestamp of how fresh the source data was when the file
            was produced, when known
        generatedAt:
          anyOf:
            - type: string
            - type: 'null'
          examples:
            - '2025-04-02T03:20:12Z'
          description: ISO 8601 timestamp of when the file became available
        createdAt:
          type: string
          examples:
            - '2025-04-02T03:20:00Z'
          description: ISO 8601 timestamp of creation
        updatedAt:
          type: string
          examples:
            - '2025-04-02T03:20:12Z'
          description: ISO 8601 timestamp of last update
      required:
        - id
        - type
        - origin
        - status
        - period
        - fields
        - format
        - version
        - rowCount
        - byteSize
        - dataAsOf
        - generatedAt
        - createdAt
        - updatedAt
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key as Bearer token

````