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

# Create a USDC transfer quote

> Returns a signed, time-bound fee quote for a native USDC transfer. A quote prices the fees a caller must pay and includes a `signedQuote` blob that the `TokenMessengerWithFees` contract verifies onchain.

The `requests` array selects which fees to price: a `FORWARD` request prices destination-chain forwarding, while a `PRE_FINALITY` request prices faster-than-finality settlement. Include at most one request per type.




## OpenAPI

````yaml openapi/cctp.yaml post /v2/quote/burn/usdc/{sourceDomainId}/{destDomainId}
openapi: 3.0.2
info:
  version: '1.0'
  title: Cross-Chain Transfer Protocol (CCTP)
  description: >
    Circle's Cross-Chain Transfer Protocol enables you to build seamless user
    experiences for sending and transacting USDC natively across blockchains.


    CCTP endpoints enable advanced capabilities such as fetching attestations
    for faster-than-finality burn events, verifying public keys across versions,
    accessing transaction details, querying Fast Transfer allowances and fees,
    and initiating re-attestation processes.
servers:
  - url: https://iris-api-sandbox.circle.com
  - url: https://iris-api.circle.com
security: []
tags:
  - name: CCTP
    description: Cross-Chain Transfer Protocol endpoints
  - name: CCTP V1 (Legacy)
    description: Legacy Cross-Chain Transfer Protocol endpoints
  - name: Quotes
    description: Signed, time-bound fee quotes for USDC transfers
paths:
  /v2/quote/burn/usdc/{sourceDomainId}/{destDomainId}:
    post:
      tags:
        - Quotes
      summary: Create a USDC transfer quote
      description: >
        Returns a signed, time-bound fee quote for a native USDC transfer. A
        quote prices the fees a caller must pay and includes a `signedQuote`
        blob that the `TokenMessengerWithFees` contract verifies onchain.


        The `requests` array selects which fees to price: a `FORWARD` request
        prices destination-chain forwarding, while a `PRE_FINALITY` request
        prices faster-than-finality settlement. Include at most one request per
        type.
      operationId: createUsdcBurnQuote
      parameters:
        - name: sourceDomainId
          in: path
          required: true
          description: >-
            Source domain identifier for the blockchain the transfer starts
            from. Must be an EVM blockchain where upfront fees are supported,
            and must satisfy the applicable source-side requirements for
            included request types. For example, a `PRE_FINALITY` request
            requires a source blockchain where Fast Transfer is supported.
          schema:
            type: integer
            minimum: 0
          example: 0
        - name: destDomainId
          in: path
          required: true
          description: >-
            Destination domain identifier for the blockchain the transfer
            settles on. Must differ from `sourceDomainId` and must satisfy the
            applicable destination-side requirements for included request types.
            For example, a `FORWARD` request requires a destination blockchain
            where the Forwarding Service is supported.
          schema:
            type: integer
            minimum: 0
          example: 1
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateUsdcBurnQuoteRequest'
            examples:
              nativeGasFeeToken:
                summary: Fees paid in the source-chain native gas token
                description: >-
                  Uses the zero address for `feeToken`, so fees are priced in
                  the source-chain native gas token.
                value:
                  amount: '1000000'
                  feeToken: '0x0000000000000000000000000000000000000000'
                  requests:
                    - type: FORWARD
                    - type: PRE_FINALITY
              usdcFeeToken:
                summary: Fees paid in USDC
                description: >-
                  Prices fees in USDC by setting `feeToken` to the source-chain
                  USDC address (Ethereum mainnet USDC shown here).
                value:
                  amount: '1000000'
                  feeToken: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
                  requests:
                    - type: FORWARD
      responses:
        '200':
          description: Successfully created a signed USDC transfer quote.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsdcBurnQuoteResponse'
        '400':
          description: >-
            The request is invalid, references an unknown domain or fee token,
            or specifies an unsupported route.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteErrorResponse'
        '403':
          description: The requested transaction type is not authorized for this route.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteErrorResponse'
        '422':
          description: >-
            The pre-finality fee is unavailable or the allowance is insufficient
            for this route.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteErrorResponse'
        '503':
          description: >-
            The quote service is not configured or enabled, or is temporarily
            unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteErrorResponse'
components:
  schemas:
    CreateUsdcBurnQuoteRequest:
      title: CreateUsdcBurnQuoteRequest
      type: object
      description: >-
        Specifies the transfer amount, fee token, and fees to price for a USDC
        transfer quote.
      additionalProperties: false
      required:
        - amount
        - requests
      properties:
        amount:
          type: string
          pattern: ^[1-9]\d*$
          description: >-
            The transfer amount in USDC minor units, as a positive decimal
            integer string.
          example: '1000000'
        feeToken:
          type: string
          pattern: ^0x[a-fA-F0-9]{40}$
          description: >-
            The token used to pay fees, as a source-chain EVM address. Defaults
            to the zero address, which requests fees in the source-chain native
            gas token.
          default: '0x0000000000000000000000000000000000000000'
        requests:
          type: array
          minItems: 1
          maxItems: 2
          description: >-
            The fees to price. Include a `FORWARD` request, a `PRE_FINALITY`
            request, or both. Each type may appear at most once.
          example:
            - type: FORWARD
            - type: PRE_FINALITY
          items:
            oneOf:
              - title: ForwardFeeRequest
                type: object
                description: Prices destination-chain forwarding of the transfer.
                additionalProperties: false
                required:
                  - type
                properties:
                  type:
                    type: string
                    enum:
                      - FORWARD
                    description: >-
                      Requests a Forwarding Service fee. The destination
                      blockchain must support the Forwarding Service.
                  params:
                    type: object
                    description: Forwarding parameters. Defaults to an empty object.
                    additionalProperties: false
                    properties:
                      hookData:
                        type: string
                        pattern: ^0x([a-fA-F0-9]{2})*$
                        description: >-
                          Optional hook data to execute on the destination
                          chain, as 0x-prefixed even-length hexadecimal. If
                          supplied, it must contain forwarding hook data (with
                          `cctp-forward` magic bytes). Omit to price the
                          destination chain's default forwarding behavior.
                      destinationCaller:
                        type: string
                        pattern: ^0x([a-fA-F0-9]{40}|[a-fA-F0-9]{64})$
                        description: >-
                          The address authorized to finalize the transfer on the
                          destination chain, as a 20-byte EVM address or a
                          32-byte value. Defaults to the zero address, which
                          authorizes any caller.
                        default: '0x0000000000000000000000000000000000000000'
              - title: PreFinalityFeeRequest
                type: object
                description: Prices faster-than-finality settlement.
                additionalProperties: false
                required:
                  - type
                properties:
                  type:
                    type: string
                    enum:
                      - PRE_FINALITY
                    description: >-
                      Requests a Fast Transfer fee. The source blockchain must
                      support Fast Transfer.
    UsdcBurnQuoteResponse:
      title: UsdcBurnQuoteResponse
      type: object
      description: A signed, time-bound fee quote for a USDC transfer.
      required:
        - signedQuote
        - issuedAt
        - expiry
        - feeTotalAmount
        - feeToken
        - items
        - nonce
      properties:
        signedQuote:
          type: string
          pattern: ^0x([a-fA-F0-9]{2})*$
          description: >-
            The signed quote blob to submit to the `TokenMessengerWithFees`
            contract.
          example: '0xabcdef'
        issuedAt:
          type: integer
          description: >-
            The server time the quote was issued, as a Unix timestamp in
            seconds. Compute remaining validity relative to this value rather
            than the client clock.
          example: 1735689540
        expiry:
          oneOf:
            - title: TimestampExpiry
              type: object
              description: The quote's expiry when it is encoded as a wall-clock time.
              required:
                - mode
                - expiresAt
              properties:
                mode:
                  type: string
                  enum:
                    - TIMESTAMP
                  description: The expiry encoding used by this quote.
                expiresAt:
                  type: integer
                  description: >-
                    The exact wall-clock time at which the quote expires, as a
                    Unix timestamp in seconds.
                  example: 1735689600
            - title: BlockNumberExpiry
              type: object
              description: >-
                The quote's expiry when it is encoded as a source-chain block
                number.
              required:
                - mode
                - expiresAtBlock
                - blockEstimatedAt
              properties:
                mode:
                  type: string
                  enum:
                    - BLOCK_NUMBER
                  description: The expiry encoding used by this quote.
                expiresAtBlock:
                  type: integer
                  description: >-
                    The authoritative source-chain block at which the quote
                    expires.
                  example: 21000000
                blockEstimatedAt:
                  type: integer
                  description: >-
                    An advisory wall-clock estimate of when `expiresAtBlock` is
                    reached, as a Unix timestamp in seconds, assuming the
                    configured block time.
                  example: 1735689600
          description: >
            The quote's expiry. The `mode` field discriminates the shape:
            `TIMESTAMP` exposes an exact wall-clock `expiresAt`, while
            `BLOCK_NUMBER` exposes the authoritative onchain `expiresAtBlock`
            alongside an advisory `blockEstimatedAt`.
        feeTotalAmount:
          type: string
          description: >-
            The total fee across all items, in the fee token's minor units, as a
            decimal integer string.
          example: '1000'
        feeToken:
          type: string
          pattern: ^0x[a-fA-F0-9]{40}$
          description: >-
            The token the fees are denominated in, as a source-chain EVM
            address.
          example: '0x0000000000000000000000000000000000000000'
        items:
          type: array
          description: The individual fees that sum to `feeTotalAmount`, one per fee type.
          items:
            type: object
            description: A single priced fee within the quote.
            required:
              - type
              - amount
              - args
              - argsHash
            properties:
              type:
                type: string
                enum:
                  - FORWARD
                  - PRE_FINALITY
                description: The fee category this item prices.
              amount:
                type: string
                description: >-
                  The fee amount in the fee token's minor units, as a decimal
                  integer string.
                example: '1000'
              args:
                type: array
                description: >-
                  The ABI-encoded arguments the `TokenMessengerWithFees`
                  contract verifies for this item.
                items:
                  type: string
                example:
                  - >-
                    0x0000000000000000000000000000000000000000000000000000000000000001
              argsHash:
                type: string
                pattern: ^0x[a-fA-F0-9]{64}$
                description: The keccak-256 hash of `args` as a 32-byte hexadecimal string.
                example: >-
                  0x1234567890123456789012345678901234567890123456789012345678901234
        nonce:
          type: string
          description: >-
            Reserved for future use as a unique identifier for the quote. The
            `TokenMessengerWithFees` contract currently enforces a zero nonce.
          example: '0'
        metadata:
          type: object
          description: >-
            Optional pricing metadata. Present when exchange-rate conversion was
            applied.
          required:
            - exchangeRates
          properties:
            exchangeRates:
              type: object
              required:
                - feeTokenUsd
                - destinationTokenUsd
              properties:
                feeTokenUsd:
                  type: string
                  description: The USD price of the fee token used for conversion.
                  example: '1.00'
                destinationTokenUsd:
                  type: string
                  description: The USD price of the destination token used for conversion.
                  example: '1.00'
    QuoteErrorResponse:
      title: QuoteErrorResponse
      type: object
      description: A Quote API error.
      required:
        - errorCode
        - error
      properties:
        errorCode:
          type: string
          description: A stable, client-facing error identifier.
          enum:
            - UNKNOWN_DOMAIN
            - UNSUPPORTED_ROUTE
            - UNSUPPORTED_FEE_TOKEN
            - SERVICE_NOT_CONFIGURED
            - SERVICE_NOT_ENABLED
            - RPC_UNAVAILABLE
            - PRICING_UNAVAILABLE
            - PRE_FINALITY_UNAVAILABLE
            - PRE_FINALITY_INSUFFICIENT_ALLOWANCE
            - INVALID_PAYLOAD
            - UNAUTHORIZED_TRANSACTION_TYPE
            - UNSUPPORTED_CHAIN
            - UNSUPPORTED_WORKFLOW
            - VALIDATION_ERROR
          example: VALIDATION_ERROR
        error:
          type: string
          description: A human-readable description of the error.
          example: Source and destination domain cannot be the same

````