---
title: "Request swap cancellation"
method: POST
path: "/v2/wallets/swaps/{swapId}/cancel"
tags: ["Token Swap"]
---

# Request swap cancellation

`POST /v2/wallets/swaps/{swapId}/cancel`

## Request

- Base URL: `https://production.hifibridge.com`
- URL: `https://production.hifibridge.com/v2/wallets/swaps/{swapId}/cancel`
- Auth: HTTP bearer

Request cancellation of a swap while it is still cancellable. A successful
response confirms that the cancellation request was recorded; it does not
guarantee that the swap has already reached the terminal `CANCELLED` status.

## Path parameters

- `swapId` string, required

## Response `200`

Success

- WalletSwapObject
  - `transferType` string
  - `transferDetails` WalletSwapDetailsObject
    - `id` string, uuid
    - `requestId` string, uuid
    - `status` 'OPEN_QUOTE' | 'CREATED' | 'PENDING' | 'COMPLETED' | 'QUOTE_FAILED' | 'FAILED' | 'CANCELLED'
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
    - `source` WalletSwapSourceObject
      - `currency` 'usdc' | 'usdt' | 'usdg' | 'pyusd' | 'pyusd0'
      - `amount` number
      - `chain` 'POLYGON' | 'ETHEREUM' | 'SOLANA' | 'FLOW_EVM'
      - `userId` string, uuid
    - `destination` WalletSwapDestinationObject
      - `currency` 'usdc' | 'usdt' | 'usdg' | 'pyusd' | 'pyusd0'
      - `userId` string, uuid
      - `externalWalletId` string, uuid, nullable
      - `amount` number, nullable
      - `chain` 'POLYGON' | 'ETHEREUM' | 'SOLANA' | 'FLOW_EVM'
      - `walletAddress` string
    - `error` string, nullable
    - `errorDetails` string, nullable
    - `cancellable` boolean: Whether a new manual cancellation request can be submitted for this swap. `false` after cancellation has been requested, execution has passed the cancellation point of no return, or the swap is in a terminal status.
    - `autoCancelAt` string, date-time, nullable: Absolute automatic-cancellation deadline requested when the swap was created. `null` when no automatic deadline was requested. The deadline is actionable only while `cancellable` is `true`.
    - `cancelRequestedAt` string, date-time, nullable: Server timestamp for the accepted manual cancellation request. `null` until a manual cancellation request has been recorded.
    - `quoteInformation` WalletSwapQuoteInformationObject
      - `sendGross` WalletSwapAmountObject
        - `amount` string
        - `currency` string
      - `sendNet` WalletSwapAmountObject
        - `amount` string
        - `currency` string
      - `receiveGross` WalletSwapAmountObject
        - `amount` string
        - `currency` string
      - `receiveNet` WalletSwapAmountObject
        - `amount` string
        - `currency` string
      - `rate` string
      - `limitPrice` string: The accepted client limit price, expressed as destination-currency units per one source-currency unit. Present only when the swap request included `limitPrice`.
      - `expiresAt` string, date-time

## Other responses

- `400`: Bad request - validation error
- `401`: Unauthorized
- `404`: Resource not found
- `409`: Conflict — the request collides with the current state of the resource (e.g. idempotency-key reuse with a different payload).
- `500`: Internal Server Error

## Changes

- **2026-11-03** `319fa6bd5bc6`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/hifi/apis/hifi-api/changes/v2/wallets/swaps/:swapId/cancel/post.md)

---

[API](https://skmtc.dev/hifi/apis/hifi-api.md) - [All operations](https://skmtc.dev/hifi/apis/hifi-api/llms.txt) - [OpenAPI document](https://skmtc.dev/hifi/apis/hifi-api/revisions/319fa6bd5bc6?raw)
