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

# Reverse a payout

> Reverse a previously executed payout, crediting the withdrawn amount back to the account.

**What happens:**
1. The payout amount is credited back to the account balance
2. High-water mark and daily baseline shift up by the same amount (trailing-drawdown distance preserved)
3. Payout count decreases by one
4. If the payout reset the consistency cycle, the cycle start shifts accordingly

**Requirements:**
- The account must be flat (no open positions or working orders)
- The account must be `in_progress` or `not_started` (not passed, failed, or inactive)
- The payout must not already be reversed

**Idempotency (required):** Send an `Idempotency-Key` header. Replays with the same key return the original result and never credit twice. Use a unique key per reversal attempt; if the response is a 4xx rejection (e.g. `OPEN_EXPOSURE`), flatten the account and retry with a **new** key.

**Webhooks:** `account.payout_reversed` fires with the reversal details and the credited balances.

**Loss floor:** Reversing a payout does not restore the pre-payout loss floor. The locked floor only gains cushion.

**Error codes:**
| Code | Meaning |
|------|---------|
| `OPEN_EXPOSURE` | Account has open positions/orders — flatten first |
| `ACCOUNT_NOT_TRADABLE` | Account is passed, failed, expired, or inactive |
| `PAYOUT_ALREADY_REVERSED` | This payout was already reversed |
| `PAYOUT_NOT_FOUND` | Payout ID not found for this account |
| `REVERSAL_NOT_CONFIRMED` | Uncertain outcome — retry with the same idempotency key |

**Example:**
```bash
curl -X POST ".../v1/organization/accounts/7c9e6679.../payouts/e5f6a7b8.../reverse" \
  -H "X-API-Key: hp_live_your_key_here" \
  -H "Idempotency-Key: reversal-2026-10-10-payout-e5f6" \
  -H "Content-Type: application/json" \
  -d '{ "reason": "Payout cancelled by trader support" }'
```



## OpenAPI

````yaml /api-reference/openapi.json post /v1/organization/accounts/{accountId}/payouts/{payoutId}/reverse
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/accounts/{accountId}/payouts/{payoutId}/reverse:
    post:
      tags:
        - Payouts
      summary: Reverse a payout
      description: >-
        Reverse a previously executed payout, crediting the withdrawn amount
        back to the account.


        **What happens:**

        1. The payout amount is credited back to the account balance

        2. High-water mark and daily baseline shift up by the same amount
        (trailing-drawdown distance preserved)

        3. Payout count decreases by one

        4. If the payout reset the consistency cycle, the cycle start shifts
        accordingly


        **Requirements:**

        - The account must be flat (no open positions or working orders)

        - The account must be `in_progress` or `not_started` (not passed,
        failed, or inactive)

        - The payout must not already be reversed


        **Idempotency (required):** Send an `Idempotency-Key` header. Replays
        with the same key return the original result and never credit twice. Use
        a unique key per reversal attempt; if the response is a 4xx rejection
        (e.g. `OPEN_EXPOSURE`), flatten the account and retry with a **new**
        key.


        **Webhooks:** `account.payout_reversed` fires with the reversal details
        and the credited balances.


        **Loss floor:** Reversing a payout does not restore the pre-payout loss
        floor. The locked floor only gains cushion.


        **Error codes:**

        | Code | Meaning |

        |------|---------|

        | `OPEN_EXPOSURE` | Account has open positions/orders — flatten first |

        | `ACCOUNT_NOT_TRADABLE` | Account is passed, failed, expired, or
        inactive |

        | `PAYOUT_ALREADY_REVERSED` | This payout was already reversed |

        | `PAYOUT_NOT_FOUND` | Payout ID not found for this account |

        | `REVERSAL_NOT_CONFIRMED` | Uncertain outcome — retry with the same
        idempotency key |


        **Example:**

        ```bash

        curl -X POST
        ".../v1/organization/accounts/7c9e6679.../payouts/e5f6a7b8.../reverse" \
          -H "X-API-Key: hp_live_your_key_here" \
          -H "Idempotency-Key: reversal-2026-10-10-payout-e5f6" \
          -H "Content-Type: application/json" \
          -d '{ "reason": "Payout cancelled by trader support" }'
        ```
      operationId: postV1OrganizationAccountsAccountidPayoutsPayoutidReverse
      parameters:
        - name: accountId
          in: path
          required: true
          description: Trading account ID
          schema:
            type: string
            format: uuid
        - name: payoutId
          in: path
          required: true
          description: Payout ID to reverse
          schema:
            type: string
            format: uuid
        - name: Idempotency-Key
          in: header
          required: true
          description: >-
            Unique key for this reversal attempt. Replays with the same key
            never credit twice.
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - reason
              properties:
                reason:
                  type: string
                  description: Reason for the reversal (shown in webhooks and audit log)
                  example: Payout cancelled by trader support
      responses:
        '200':
          description: Payout reversed successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  duplicate:
                    type: boolean
                    description: true if this was an idempotent replay
                  payoutId:
                    type: string
                    description: The reversed payout ID
                  amount:
                    type: number
                    description: Amount credited back
                  balanceBefore:
                    type: number
                    description: Account balance before the credit
                  balanceAfter:
                    type: number
                    description: Account balance after the credit
                  reversedAt:
                    type: string
                    format: date-time
                    description: When the reversal was applied
        '409':
          description: Reversal blocked (open exposure, not tradable, or already reversed)
        '502':
          description: Uncertain outcome — retry with the same idempotency key
      security:
        - X-API-Key: []
components:
  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

- [Webhooks](/guides/webhooks.md)
- [Reverse a position (close + open opposite side)](/trade-api/positions/reverse-a-position-close-+-open-opposite-side.md)
- [Payout queue — bulk payout eligibility](/platform-api/payouts/payout-queue-—-bulk-payout-eligibility.md)
- [Check payout eligibility](/platform-api/payouts/check-payout-eligibility.md)
- [List payouts for an account](/platform-api/payouts/list-payouts-for-an-account.md)


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