> ## 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.

# Turn an account off (pause)

> Turns a trading account off — for example when a trader has not traded for a couple of weeks and a new month is about to start. In one call:

1. Every working order is cancelled and every open position is closed at market. The closing orders carry reason `Admin flatten: <who> — Account turned off: <your reason>` (trigger `admin_flatten`).
2. The account moves to status `inactive`. The trader can no longer place orders on it.
3. Balance, high-water mark, drawdown floor and trading days stay exactly as they are. Your rules still apply to the balance: if closing the positions breaches a limit, the account fails as it otherwise would.

**Billing:** an `inactive` account does not count as an active trader. The current calendar month (US Central time) is already billed and is not refunded; an account that is still `inactive` when the next calendar month starts is not billed for that month. If it was the trader's last active account, their live market data is switched off.

Only `in_progress` and `not_started` accounts can be turned off; `passed`, `failed` and `expired` accounts return **409**. Repeating the call on an `inactive` account is safe: the status does not change (`changed: false`, no webhook) and any order or position left over is closed.

Webhook: `account.status_changed` with `trigger: "firm_deactivated"`, `previousAttributes.status` and your `reason`. Turn the account back on with `POST /trading-accounts/{accountId}/reactivate`; `PATCH` and bulk updates cannot move an `inactive` account back to a live status.

Requires **manage** permission on traders. On **502** retry the call — it is safe to repeat.

```bash
curl -X POST "https://api.hyperprop.com/platform/v1/organization/trading-accounts/7c9e6679-7425-40de-944b-e07fc1f90ae7/deactivate" \
  -H "X-API-Key: hp_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"reason": "No trades for 14 days"}'
```



## OpenAPI

````yaml /api-reference/openapi.json post /v1/organization/trading-accounts/{accountId}/deactivate
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/trading-accounts/{accountId}/deactivate:
    post:
      tags:
        - Trading accounts
      summary: Turn an account off (pause)
      description: >-
        Turns a trading account off — for example when a trader has not traded
        for a couple of weeks and a new month is about to start. In one call:


        1. Every working order is cancelled and every open position is closed at
        market. The closing orders carry reason `Admin flatten: <who> — Account
        turned off: <your reason>` (trigger `admin_flatten`).

        2. The account moves to status `inactive`. The trader can no longer
        place orders on it.

        3. Balance, high-water mark, drawdown floor and trading days stay
        exactly as they are. Your rules still apply to the balance: if closing
        the positions breaches a limit, the account fails as it otherwise would.


        **Billing:** an `inactive` account does not count as an active trader.
        The current calendar month (US Central time) is already billed and is
        not refunded; an account that is still `inactive` when the next calendar
        month starts is not billed for that month. If it was the trader's last
        active account, their live market data is switched off.


        Only `in_progress` and `not_started` accounts can be turned off;
        `passed`, `failed` and `expired` accounts return **409**. Repeating the
        call on an `inactive` account is safe: the status does not change
        (`changed: false`, no webhook) and any order or position left over is
        closed.


        Webhook: `account.status_changed` with `trigger: "firm_deactivated"`,
        `previousAttributes.status` and your `reason`. Turn the account back on
        with `POST /trading-accounts/{accountId}/reactivate`; `PATCH` and bulk
        updates cannot move an `inactive` account back to a live status.


        Requires **manage** permission on traders. On **502** retry the call —
        it is safe to repeat.


        ```bash

        curl -X POST
        "https://api.hyperprop.com/platform/v1/organization/trading-accounts/7c9e6679-7425-40de-944b-e07fc1f90ae7/deactivate"
        \
          -H "X-API-Key: hp_live_your_key_here" \
          -H "Content-Type: application/json" \
          -d '{"reason": "No trades for 14 days"}'
        ```
      operationId: postV1OrganizationTradingaccountsAccountidDeactivate
      parameters:
        - x-format:
            guid: true
          name: accountId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Model830'
      responses:
        '200':
          description: Success - Account is turned off
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/Model832'
        '401':
          description: Authentication required
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/Model9'
        '403':
          description: >-
            Forbidden - This account belongs to a different organization, or the
            caller lacks traders:manage
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/Model833'
        '404':
          description: Not Found - No account exists with this ID
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/Model834'
        '409':
          description: Conflict - The account is passed, failed or expired
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/Model835'
        '500':
          description: An unexpected error occurred
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/Model5'
        '502':
          description: >-
            The change was not confirmed (ENGINE_UNAVAILABLE), or the account is
            off but a position could not be closed yet (FLATTEN_INCOMPLETE).
            Retry the call.
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/Model836'
      security:
        - X-API-Key: []
components:
  schemas:
    Model830:
      type: object
      properties:
        reason:
          type: string
          description: >-
            Why the account is turned off. Recorded on the closing orders, the
            audit trail and the webhook.
          example: No trades for 14 days
          maxLength: 200
          x-convert:
            trim: true
    Model832:
      type: object
      properties:
        success:
          type: boolean
          example: true
        message:
          type: string
          example: Account turned off
        data:
          $ref: '#/components/schemas/Model831'
    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
    Model833:
      type: object
      properties:
        statusCode:
          type: number
          example: 403
        error:
          type: string
          example: Forbidden
        message:
          type: string
          example: This account does not belong to your organization
        code:
          type: string
          example: ACCOUNT_NOT_IN_ORG
    Model834:
      type: object
      properties:
        statusCode:
          type: number
          example: 404
        error:
          type: string
          example: Not Found
        message:
          type: string
          example: Trading account not found
        code:
          type: string
          example: ACCOUNT_NOT_FOUND
    Model835:
      type: object
      properties:
        statusCode:
          type: number
          example: 409
        error:
          type: string
          example: Conflict
        message:
          type: string
          example: Only active accounts can be turned off; this account is failed
        code:
          type: string
          example: ACCOUNT_NOT_PAUSABLE
    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
    Model836:
      type: object
      properties:
        statusCode:
          type: number
          example: 502
        error:
          type: string
          example: Bad Gateway
        message:
          type: string
          example: >-
            The trading engine did not confirm the change. Retry the call, it is
            safe to repeat.
        code:
          type: string
          example: ENGINE_UNAVAILABLE
    Model831:
      type: object
      properties:
        accountId:
          type: string
          example: 7c9e6679-7425-40de-944b-e07fc1f90ae7
          x-format:
            guid: true
        accountNumber:
          type: string
          example: TL-50K-000123
        status:
          type: string
          description: Always `inactive`
          example: inactive
        previousStatus:
          type: string
          example: in_progress
        changed:
          type: boolean
          description: >-
            False when the account was already turned off — nothing changed and
            no webhook was sent
          example: true
        ordersCancelled:
          type: number
          example: 1
        positionsClosed:
          type: number
          example: 1
        reason:
          type: string
          example: No trades for 14 days
        marketDataStopped:
          type: boolean
          description: >-
            True when this was the trader's last active account, so their live
            market data was switched off
          example: true
  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

- [Turn an account back on](/platform-api/trading-accounts/turn-an-account-back-on.md)
- [Continuous futures](/guides/continuous-futures.md)
- [Changelog](/changelog.md)
- [Introduction](/introduction.md)
- [Project next month's bill from the current state](/platform-api/billing/project-next-months-bill-from-the-current-state.md)


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