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

# Complete A Flagged Deposit With A Resolution Fee

> Releases a deposit that was flagged **only** because it fell below the asset's minimum, by paying the resolution fee out of the deposit itself.

Breet deducts the asset's `flagFeeUSD` from the USD value actually received, converts the remainder at the current rate, credits your wallet, and fires `trade.completed` with `flagFeeUSD` populated. If auto-settlement is enabled on the address, the net amount is paid out to the linked bank account as usual.

Only deposits with `status: "flagged"` and `passAMLCheck: true` are eligible — a deposit flagged by an AML check cannot be resolved this way. The remainder after the fee must be greater than \$1; when it is not, the only route is a top-up to the same address in the same asset. The call is a no-op after the deposit is credited, so a retry on an already-resolved deposit returns `404`.

Read `flagFeeUSD` per asset from [`GET /trades/assets`](/api-reference/assets/fetch-deposit-assets) before calling, and see [Deposits](/deposits#what-happens-when-a-deposit-is-flagged) for the full flow.



## OpenAPI

````yaml /api-reference/openapi.json post /trades/sells/sell/{id}/complete
openapi: 3.0.0
info:
  title: BREET PUBLIC API
  version: 1.0.0
  license:
    name: Proprietary
    url: https://breet.io/terms
servers:
  - url: https://api.breet.io/v1
security:
  - appId: []
    appSecret: []
    breetEnv: []
tags:
  - name: Crypto Wallet
    description: Generate and manage crypto wallet addresses for receiving deposits.
    x-group: Wallets and Deposits
  - name: Withdrawals
    description: >-
      ## Withdrawals


      To help protect your funds, withdrawals support an additional security
      layer through **IP whitelisting**.


      ### IP Whitelisting


      When IP whitelisting is enabled, all withdrawal requests must originate
      from an approved IP address. Any withdrawal request coming from an IP not
      on the whitelist will be automatically blocked.


      You can add up to **7 IP addresses** from your dashboard.


      This feature is recommended for:


      - Production servers
          
      - Preventing unauthorized withdrawal attempts
          

      ### How it works


      - Enable IP whitelisting from your dashboard
          
      - Add up to 7 trusted IP addresses
          
      - Only requests from those IPs will be allowed to initiate withdrawals
          

      If IP whitelisting is disabled, withdrawals can be initiated from any IP
      address.
  - name: Banks
    description: List, validate, add, and remove bank accounts for fiat withdrawals.
  - name: Transactions
    description: Retrieve deposit and trade transaction history.
  - name: Webhooks
    description: >-
      Inspect and retry **outgoing** webhooks we send to your server (trade and
      withdrawal events). Requires an active integration with API access (VIP
      partners). For **incoming** payload shapes and verification, see the
      Webhooks guide in the Guides tab.
  - name: Assets
    description: >-
      Retrieve the list of supported deposit/sell assets and their
      configuration.
  - name: Rates and Prices
    description: >-
      Get live market prices and calculate conversion rates. These endpoints are
      public and do not require authentication.
  - name: Account
    description: Retrieve and update integration account details and preferences.
  - name: Testing
    description: Endpoints for testing your integration in the sandbox environment.
  - name: Conversion
    description: >-
      Convert between USD and local fiat (NGN | GHS). Available for both user
      and integration (business) flows.
  - name: Withdrawal addresses
    description: >-
      Add and remove withdrawal (payout) wallet addresses. If the same address,
      network, and token are sent with a different label, the existing address
      is updated.
paths:
  /trades/sells/sell/{id}/complete:
    post:
      tags:
        - Transactions
      summary: Complete A Flagged Deposit With A Resolution Fee
      description: >-
        Releases a deposit that was flagged **only** because it fell below the
        asset's minimum, by paying the resolution fee out of the deposit itself.


        Breet deducts the asset's `flagFeeUSD` from the USD value actually
        received, converts the remainder at the current rate, credits your
        wallet, and fires `trade.completed` with `flagFeeUSD` populated. If
        auto-settlement is enabled on the address, the net amount is paid out to
        the linked bank account as usual.


        Only deposits with `status: "flagged"` and `passAMLCheck: true` are
        eligible — a deposit flagged by an AML check cannot be resolved this
        way. The remainder after the fee must be greater than \$1; when it is
        not, the only route is a top-up to the same address in the same asset.
        The call is a no-op after the deposit is credited, so a retry on an
        already-resolved deposit returns `404`.


        Read `flagFeeUSD` per asset from [`GET
        /trades/assets`](/api-reference/assets/fetch-deposit-assets) before
        calling, and see
        [Deposits](/deposits#what-happens-when-a-deposit-is-flagged) for the
        full flow.
      operationId: completeFlaggedTradeWithFee
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
          example: 692f91aa729255932afe9078
          description: >-
            ID of the flagged deposit (the `id` on the `trade.flagged` webhook
            payload).
      responses:
        '200':
          description: Deposit resolved, wallet credited
          content:
            application/json:
              example:
                message: sell completed successfully
                success: true
                data: {}
                meta: {}
                summary: {}
                stats: {}
        '400':
          description: >-
            Invalid deposit ID, or the amount left after the resolution fee is
            too low
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                success: false
                message: >-
                  transaction amount too low for resolution fee. Please use Top
                  Up Minimum to resolve this transaction
                meta: {}
                errors: []
                data: {}
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: >-
            No deposit with that ID is flagged for being below the minimum on
            your account, or it has already been resolved
          content:
            application/json:
              example:
                success: false
                message: sell not found or not flagged by minimum only
                meta: {}
                errors: []
                data: {}
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  schemas:
    ErrorResponse:
      type: object
      required:
        - success
        - message
      properties:
        success:
          type: boolean
          enum:
            - false
        message:
          type: string
        meta:
          type: object
        errors:
          type: array
          items:
            type: object
        data:
          type: object
  responses:
    Unauthorized:
      description: Invalid or missing API credentials
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            notAuthenticated:
              summary: Missing credentials
              value:
                success: false
                message: you're not authenticated
                meta: {}
                errors: []
                data: {}
            wrongCredentials:
              summary: Invalid app ID or secret
              value:
                success: false
                message: wrong app id and secret combination
                meta: {}
                errors: []
                data: {}
    Forbidden:
      description: The integration is inactive or the action is not permitted
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            message: you do not have api access
            meta: {}
            errors: []
            data: {}
    InternalServerError:
      description: An unexpected server error occurred
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            message: something went wrong!
            meta: {}
            errors: []
            data: {}
  securitySchemes:
    appId:
      type: apiKey
      in: header
      name: x-app-id
      description: Your application ID from the Breet dashboard
    appSecret:
      type: apiKey
      in: header
      name: x-app-secret
      description: Your application secret from the Breet dashboard
    breetEnv:
      type: apiKey
      in: header
      name: X-Breet-Env
      description: 'Environment selector: sandbox or production'

````