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

# Cancel Dual Hedge

> Cancels a dual hedge and its underlying customer and supplier legs.



## OpenAPI

````yaml POST /customers/{customerId}/dual-hedges/{dualHedgeId}/cancel
openapi: 3.1.0
info:
  title: Grain API
  version: 1.0.0
  description: >-
    Grain's API provides a comprehensive set of endpoints for managing hedging,
    spot transactions, pricing, and fund movements - enabling seamless
    integration of FX workflows into your platform. Each API call follows REST
    conventions, uses secure authentication, and returns standardized responses
    for consistency across environments.
  license:
    name: Creative Commons Attribution 3.0
  contact:
    name: Grain Finance
    url: https://docs.grainfinance.co
    email: support@grainfinance.co
  termsOfService: https://grainfinance.co/terms-of-service/
  x-apiClientRegistration:
    url: https://grainfinance.co/partners
servers:
  - url: https://api.grainfinance.co/v1
    description: Grain API
security: []
tags:
  - name: Hedges
    description: >-
      Hedge objects represent transactions that lock exchange rates for future
      dates. A single hedge locks an exchange rate for a future transaction
      between two currencies.
  - name: Dual Hedges
    description: >-
      A dual hedge mitigates FX risk by automatically generating two linked
      hedge legs - a customer leg and a supplier leg - both routed through the
      customer's functional currency. This structure reduces exposure to
      currency fluctuations for both cash flow and accounting purposes, while
      allowing independent tracking and reporting of each hedge leg.
  - name: Customers
    description: >-
      Customer objects represent your end customers on the Grain platform. A
      customer must be created before a hedge or spot transaction can be
      initiated.
  - name: Pricing
    description: >-
      Pricing endpoints provide access to FX rates for currency pairs that are
      not being hedged. These endpoints can be used for live rate display or
      bulk retrieval to support high-volume quoting workflows.
  - name: Spots
    description: >-
      Spot objects represent currency conversions executed for immediate or
      near-term settlement.
  - name: Conversions
    description: >-
      Conversion objects represent currency conversions executed for immediate
      or near-term settlement.
  - name: Wallets
    description: Endpoints to view balances, manage funding, and perform transfers.
paths:
  /customers/{customerId}/dual-hedges/{dualHedgeId}/cancel:
    post:
      tags:
        - Dual Hedges
      description: Cancels a dual hedge and its underlying customer and supplier legs.
      operationId: Cancel
      parameters:
        - description: The id of the customer within the Grain platform.
          in: path
          name: customerId
          required: true
          schema:
            type: string
        - description: The id of the dual hedge within the Grain platform.
          in: path
          name: dualHedgeId
          required: true
          schema:
            type: string
        - in: header
          name: X-Customer-IP
          required: true
          schema:
            $ref: '#/components/schemas/CustomerIP'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancelDualHedgeRequestBody'
      responses:
        '200':
          description: Dual Hedge Cancelled
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelDualHedgeResponseBody'
        '401':
          description: >-
            Authentication failed due to missing authorization header, or
            invalid authentication credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: The request failed because the resource does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: The request failed because a business rule constraint was violated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '412':
          description: The request failed because one or more preconditions were not met.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '451':
          description: The request failed due to legal restrictions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RejectedByIPError'
      security:
        - api-key: []
components:
  schemas:
    CustomerIP:
      type: string
      format: IPv4
      description: >-
        The IPv4 address of the browser from which the customer contacts your
        platform. <br />

        _example_: `192.158.1.38`
      pattern: ((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}
    CancelDualHedgeRequestBody:
      description: The request body for cancelling a dual hedge.
      properties:
        reason:
          type: string
          description: The reason for cancelling the dual hedge.
          example: Customer requested cancellation
      type: object
      additionalProperties: false
    CancelDualHedgeResponseBody:
      description: The response of cancelling a dual hedge.
      properties:
        id:
          $ref: '#/components/schemas/UUID'
          description: The id of the dual hedge within the Grain platform.
          example: bf77890b-17e2-48a1-9198-707df23eb127
        transactionId:
          $ref: '#/components/schemas/UUID'
          description: The id of the transaction within the Grain platform.
          example: bf77890b-17e2-48a1-2013-707df23eb111
        hedgeIds:
          items:
            $ref: '#/components/schemas/UUID'
          type: array
          description: >-
            The ids of the individual hedges that were cancelled as part of this
            dual hedge.
          example:
            - bf77890b-17e2-48a1-2013-707df23eb222
            - bf77890b-17e2-48a1-2013-707df23eb333
      required:
        - id
        - transactionId
        - hedgeIds
      type: object
      additionalProperties: false
    ErrorResponse:
      description: An API Error
      properties:
        message:
          type: string
          description: A short explanation of the error.
          example: Can't perform this action
        reason:
          type: string
          description: A detailed description of the reason for the failure.
          example: >-
            Supplied object is in *Cancelled* state, which prevents performing
            this action
      required:
        - message
      type: object
      additionalProperties: false
    RejectedByIPError:
      properties:
        message:
          type: string
          description: A short explanation of the error.
          example: Could not parse IP address (v4 or v6) for ip
      required:
        - message
      type: object
      additionalProperties: false
    UUID:
      type: string
      format: uuid
      description: |-
        Stringified UUIDv4.
        See [RFC 4112](https://tools.ietf.org/html/rfc4122)
      pattern: >-
        [0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}
  securitySchemes:
    api-key:
      type: http
      scheme: basic
      description: >-
        Basic authentication using the partner API keys from
        https://console.grainfinance.co/keys

````