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

# Reconcile a trading day in one call

> One call, everything you need to reconcile a trading day — collapses the
separate `/snapshots/accounts` + `/snapshots/fills` requests you previously
had to stitch together.

**Per account you get:**
- `endOfDay` — the immutable EOD snapshot: status (with `previousStatus` /
  `statusChanged` / `violationReason`), starting/ending balances, daily and
  total P&L, high water mark, fill count, contracts traded, first/last fill.
- `current` — the account's status and balance **right now**, so you can spot
  post-EOD changes at a glance.
- `fills` — every fill of that CME trading day, in order, with price, fees,
  commission, and realized P&L per fill. Omit with `?includeFills=false`.
- `customerId` and `userId` for deterministic mapping to your records.

**Defaults for a clean daily job:** with no `tradingDay`, the endpoint uses
`latestCompletedTradingDay` automatically — so a scheduled
`GET /reconciliation` (or one triggered by the `snapshot.ready` webhook)
always reconciles the most recent finished day, never an empty in-progress one.

**Ordering:** accounts are sorted by account number; pages are deterministic.

**Example:**
```http
GET /organization/reconciliation?tradingDay=2026-07-22&accountId=<uuid1>,<uuid2>
```

**Permissions:** requires **view** access to "Analytics".



## OpenAPI

````yaml /api-reference/openapi.json get /v1/organization/reconciliation
openapi: 3.0.0
info:
  title: Hyperprop Platform API
  version: 1.0.0
  description: >-
    REST API for the Hyperprop Trading Platform — provision evaluation and
    funded trading accounts, manage traders and plans, react to account
    lifecycle events via signed webhooks, and reconcile billing. Built for prop
    firms integrating from their own backend.


    Authentication, quick start, error handling, idempotency, pagination, custom
    metadata, webhooks, and the MCP connector are documented at
    https://docs.hyperprop.com.
  x-logo:
    url: https://app.hyperprop.com/logo-icon.svg
    altText: Hyperprop
    href: https://hyperprop.com
servers:
  - url: https://api.hyperprop.com/platform
    description: Production
security: []
tags:
  - name: Trading accounts
    description: Create, update, and inspect trading accounts.
  - name: Traders
    description: Look up and update the traders in your organization.
  - name: Trading plans
    description: Define the plans you sell.
  - name: Trading rules
    description: Define how accounts are evaluated.
  - name: Lockouts
    description: Pause and resume trading on an account.
  - name: Payouts
    description: Check payout eligibility and record payouts.
  - name: Purchases
    description: Purchases recorded for your organization.
  - name: Time Machine
    description: Restore accounts to an earlier trading day or instant.
  - name: Webhooks
    description: Register webhook endpoints and inspect deliveries.
  - name: Events
    description: Your organization's event history and real-time event stream.
  - name: Reconciliation
    description: Balances, end-of-day snapshots, and fills for reconciliation.
  - name: Analytics
    description: Organization performance and plan economics.
  - name: Billing
    description: 'Your Hyperprop bill: activity, billing cycles, and forecasts.'
  - name: Team and roles
    description: Manage dashboard access for your staff.
  - name: API keys
    description: Manage your organization's API key.
  - name: Logs and health
    description: API request logs, the audit log, and integration health.
  - name: Organization profile
    description: Your organization's profile and logo.
  - name: Support
    description: Open and follow up on support tickets.
  - name: Partner access
    description: >-
      Read a trader's journal as an approved partner app, with the trader's own
      key.
paths:
  /v1/organization/reconciliation:
    get:
      tags:
        - Reconciliation
      summary: Reconcile a trading day in one call
      description: >-
        One call, everything you need to reconcile a trading day — collapses the

        separate `/snapshots/accounts` + `/snapshots/fills` requests you
        previously

        had to stitch together.


        **Per account you get:**

        - `endOfDay` — the immutable EOD snapshot: status (with `previousStatus`
        /
          `statusChanged` / `violationReason`), starting/ending balances, daily and
          total P&L, high water mark, fill count, contracts traded, first/last fill.
        - `current` — the account's status and balance **right now**, so you can
        spot
          post-EOD changes at a glance.
        - `fills` — every fill of that CME trading day, in order, with price,
        fees,
          commission, and realized P&L per fill. Omit with `?includeFills=false`.
        - `customerId` and `userId` for deterministic mapping to your records.


        **Defaults for a clean daily job:** with no `tradingDay`, the endpoint
        uses

        `latestCompletedTradingDay` automatically — so a scheduled

        `GET /reconciliation` (or one triggered by the `snapshot.ready` webhook)

        always reconciles the most recent finished day, never an empty
        in-progress one.


        **Ordering:** accounts are sorted by account number; pages are
        deterministic.


        **Example:**

        ```http

        GET
        /organization/reconciliation?tradingDay=2026-07-22&accountId=<uuid1>,<uuid2>

        ```


        **Permissions:** requires **view** access to "Analytics".
      operationId: getV1OrganizationReconciliation
      parameters:
        - description: >-
            CME trading day (YYYY-MM-DD). Defaults to the latest COMPLETED
            trading day — the natural reconciliation target.
          name: tradingDay
          in: query
          required: false
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
        - description: >-
            Scope to specific accounts: one account UUID or a comma-separated
            list (max 100). IDs outside your organization return 404
            ACCOUNT_NOT_FOUND.
          name: accountId
          in: query
          required: false
          schema:
            type: string
        - description: >-
            Include every fill of the day per account (default true). Set false
            for a lighter balances-only response.
          name: includeFills
          in: query
          schema:
            type: boolean
            default: true
        - description: 'Accounts per page (default: 50, max: 100)'
          name: limit
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 50
        - description: Pagination offset
          name: offset
          in: query
          schema:
            type: integer
            minimum: 0
            default: 0
      responses:
        '200':
          description: Reconciliation data retrieved
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/Model106'
        '401':
          description: Authentication required
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/Model9'
        '404':
          description: Not Found - unknown accountId, or no completed snapshots exist yet
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/Model107'
        '500':
          description: An unexpected error occurred
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/Model5'
      security:
        - X-API-Key: []
components:
  schemas:
    Model106:
      type: object
      properties:
        success:
          type: boolean
          example: true
        data:
          $ref: '#/components/schemas/Model105'
    Model9:
      type: object
      properties:
        success:
          type: boolean
          description: Always false on errors
          example: false
        statusCode:
          type: number
          example: 401
        error:
          type: string
          example: Unauthorized
        message:
          type: string
          example: Authentication required
        code:
          type: string
          description: Machine-readable error code — switch on this, not on message text
          example: UNAUTHORIZED
    Model107:
      type: object
      properties:
        statusCode:
          type: number
          example: 404
        error:
          type: string
          example: Not Found
        message:
          type: string
          example: >-
            Account(s) not found in your organization:
            7c9e6679-7425-40de-944b-e07fc1f90ae7
        code:
          type: string
          example: ACCOUNT_NOT_FOUND
    Model5:
      type: object
      properties:
        success:
          type: boolean
          description: Always false on errors
          example: false
        statusCode:
          type: number
          example: 500
        error:
          type: string
          example: Internal Server Error
        message:
          type: string
          example: An unexpected error occurred
        code:
          type: string
          description: Machine-readable error code — switch on this, not on message text
          example: INTERNAL_ERROR
    Model105:
      type: object
      example:
        tradingDay: '2026-07-22'
        latestCompletedTradingDay: '2026-07-22'
        organizationId: a6fcc0ce-eb28-4f43-b256-96a3144b0d34
        organizationName: FakePropFirm
        accounts:
          - accountId: 7c9e6679-7425-40de-944b-e07fc1f90ae7
            accountNumber: ACC-ABCD1234
            customerId: acme-cust-4471
            externalRef: acme-cust-4471
            type: evaluation
            userId: f994bc02-343c-4026-8a57-afc085eca8d5
            endOfDay:
              status: in_progress
              statusChanged: false
              previousStatus: null
              violationReason: null
              initialBalance: 50000
              startingBalance: 50250
              endingBalance: 50875
              dailyPnl: 625
              totalPnl: 875
              highWaterMark: 50900
              totalFills: 2
              totalContractsTraded: 4
              firstFillAt: '2026-07-22T14:30:01Z'
              lastFillAt: '2026-07-22T20:45:12Z'
            current:
              status: in_progress
              balance: 50875
            fills:
              - id: 0d1e6679-7425-40de-944b-e07fc1f90ae9
                contract: MNQU6
                product: MNQ
                symbol: MNQ
                side: buy
                orderType: market
                quantity: 2
                filledQuantity: 2
                filledPrice: 21150.25
                fee: 0.74
                commission: 0.5
                realizedPnl: null
                filledAt: '2026-07-22T14:30:01Z'
        pagination:
          total: 142
          limit: 50
          offset: 0
          hasMore: true
      properties:
        tradingDay:
          type: string
          example: '2026-07-22'
        latestCompletedTradingDay:
          type: string
        organizationId:
          type: string
        organizationName:
          type: string
        accounts:
          $ref: '#/components/schemas/Model103'
        pagination:
          $ref: '#/components/schemas/Model104'
    Model103:
      type: array
      items:
        $ref: '#/components/schemas/Model102'
    Model104:
      type: object
      properties:
        total:
          type: number
        limit:
          type: number
        offset:
          type: number
        hasMore:
          type: boolean
    Model102:
      type: object
      properties:
        accountId:
          type: string
        accountNumber:
          type: string
        customerId:
          type: string
          description: Your customer ID for this account
        externalRef:
          type: string
          description: DEPRECATED alias for customerId (same value)
        type:
          type: string
        userId:
          type: string
        endOfDay:
          $ref: '#/components/schemas/endOfDay'
        current:
          $ref: '#/components/schemas/current'
        fills:
          $ref: '#/components/schemas/fills'
    endOfDay:
      type: object
      properties:
        status:
          type: string
        statusChanged:
          type: boolean
        previousStatus:
          type: string
        violationReason:
          type: string
        initialBalance:
          type: number
        startingBalance:
          type: number
        endingBalance:
          type: number
        dailyPnl:
          type: number
        totalPnl:
          type: number
        highWaterMark:
          type: number
        totalFills:
          type: number
        totalContractsTraded:
          type: number
        firstFillAt:
          type: string
        lastFillAt:
          type: string
    current:
      type: object
      properties:
        status:
          type: string
          description: Account status right now (may differ from EOD)
        balance:
          type: number
          description: Account balance right now
    fills:
      type: array
      items:
        $ref: '#/components/schemas/Model101'
    Model101:
      type: object
      properties:
        id:
          type: string
        contract:
          type: string
        product:
          type: string
        symbol:
          type: string
        side:
          type: string
        orderType:
          type: string
        quantity:
          type: number
        filledQuantity:
          type: number
        filledPrice:
          type: number
        fee:
          type: number
        commission:
          type: number
        realizedPnl:
          type: number
        filledAt:
          type: string
  securitySchemes:
    X-API-Key:
      type: apiKey
      name: X-API-Key
      in: header
      description: >-
        Organization API key. Format: "hp_live_{key}". Organization admins
        manage the key in the dashboard.

````

## Related topics

- [Get account balances (bulk, reconciliation-friendly)](/platform-api/reconciliation/get-account-balances-bulk-reconciliation-friendly.md)
- [Consistency status for one of the caller's accounts](/trade-api/accounts/consistency-status-for-one-of-the-callers-accounts.md)
- [Bulk revert accounts to a trading day or an instant](/platform-api/time-machine/bulk-revert-accounts-to-a-trading-day-or-an-instant.md)
- [Revert an account to a trading day or an instant](/platform-api/time-machine/revert-an-account-to-a-trading-day-or-an-instant.md)
- [Get fills for a trading day](/platform-api/reconciliation/get-fills-for-a-trading-day.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.