Cancel a Deal

Cancel a deal that has not yet been settled. Only deals in PROCESSING status can be cancelled. Upon successful cancellation, the deal status changes to CANCELLED, and a cancellation fee may be charged depending on the deal type. The response returns the updated deal details including the cancellation timestamp and any applicable fees.
Request Parameters
idstring
required
Deal ID to cancel. The deal must be in PROCESSING status and belong to the current account.
Response Parameters
resultResult
See Result.
idstring
Unique deal identifier assigned by WorldFirst.
requestIdstring
Idempotency ID supplied when the deal was created.
dealTypestring
Deal type, determined by the quote used.

Valid Values:

SPOT — Standard spot deal. Settles automatically.
UNFUNDED_SPOT — Unfunded spot deal. Requires explicit settlement.
FORWARD — Forward deal. Requires margin and settlement period.
quoteQuote
Quote information associated with this deal.
Show child parametersShow child parameters
sellAmountAmount
Amount being sold in the deal. See Data Types for the Amount structure.
buyAmountAmount
Amount being bought in the deal. See Data Types for the Amount structure.
creditSupportCreditSupport
Margin and credit information. Returned only for FORWARD deals.
Show child parametersShow child parameters
settlementPeriodSettlementPeriod
Settlement period information. Returned for UNFUNDED_SPOT and FORWARD deals.
Show child parametersShow child parameters
unSettleBuyAmountAmount
Unsettled buy amount. Populated after cancellation for UNFUNDED_SPOT and FORWARD deals. See Data Types for the Amount structure.
unSettleSellAmountAmount
Unsettled sell amount. Populated after cancellation for UNFUNDED_SPOT and FORWARD deals. See Data Types for the Amount structure.
cancelFeeAmountAmount
Cancellation fee amount charged for cancelling the deal. Returned when status is CANCELLED. See Data Types for the Amount structure.
statusstring
Current deal status. After a successful cancellation, this value is CANCELLED. See DealStatus.
createdAtdatetime
Timestamp when the deal was created. ISO 8601 format.
cancelledAtdatetime
Timestamp when the deal was cancelled. ISO 8601 format.
Error Codes
resultCoderesultStatusresultMessageTroubleshooting
SUCCESSSsuccessN/A
FUND_ORDER_NOT_EXISTFFund order does not existVerify the deal ID is correct and belongs to the current account.
FX_DEAL_CANCEL_FEE_NOT_ENOUGHFCancel fee not enoughEnsure sufficient funds are available to cover the cancellation fee and retry.
Definition
POST /api/open/v1/fx/deals/cancel
Request
{
"id": "DEAL20260402001"
}
Response
{
"result": {
  "resultCode": "SUCCESS",
  "resultMessage": "success",
  "resultStatus": "S"
},
"id": "DEAL20260402001",
"requestId": "REQ20260402001",
"dealType": "UNFUNDED_SPOT",
"quote": {
  "quoteId": "QT202604021208001",
  "currencyPair": "GBP/EUR",
  "clientRate": 1.162,
  "effectiveAt": "2026-04-02T04:09:30Z",
  "expiresAt": "2026-04-02T04:10:30Z"
},
"sellAmount": {
  "currency": "GBP",
  "value": 5000
},
"buyAmount": {
  "currency": "EUR",
  "value": 5810
},
"settlementPeriod": {
  "endDate": "2026-04-04"
},
"unSettleSellAmount": {
  "currency": "GBP",
  "value": 5000
},
"unSettleBuyAmount": {
  "currency": "EUR",
  "value": 5810
},
"cancelFeeAmount": {
  "currency": "GBP",
  "value": 50
},
"status": "CANCELLED",
"createdAt": "2026-04-02T04:09:35Z",
"cancelledAt": "2026-04-02T04:20:00Z"
}