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

# Create a crypto transfer

> Create a crypto transfer between two wallet addresses among users.




## OpenAPI

````yaml https://production.hifi.com/api/v2/openapi.json post /v2/wallets/transfers
openapi: 3.0.0
info:
  title: Hifi API
  version: 2.0.0
  description: API documentation for Hifi
servers:
  - url: https://production.hifibridge.com
    description: Production server
  - url: https://sandbox.hifibridge.com
    description: Sandbox server
security:
  - bearerAuth: []
tags:
  - name: Common
    description: Common endpoints
  - name: User
    description: User endpoints
  - name: Kyc
    description: Kyc endpoints
  - name: Wallet
    description: Wallet endpoints
  - name: Account
    description: Account endpoints
  - name: External Account
    description: External Account endpoints for managing beneficiary bank accounts
  - name: Fiat Account
    description: Fiat Account endpoints
  - name: Virtual Account
    description: Virtual Account endpoints
  - name: Onramp
    description: Onramp endpoints
  - name: Offramp
    description: Offramp endpoints
  - name: Orchestration Address
    description: >-
      Orchestration Address endpoints — persistent on-chain wallets that
      automatically off-ramp incoming stablecoin deposits to a USD bank account
  - name: Crypto Transfer
    description: Crypto Transfer endpoints
  - name: Cross-Chain Bridge
    description: Cross-Chain Bridge endpoints
  - name: Token Swap
    description: Token Swap endpoints
  - name: Canton Offers
    description: Canton Offers endpoints
  - name: Transfer Rules
    description: Transfer approval rules and configuration
  - name: Transfer Approvals
    description: Transfer approval workflow and admin actions
  - name: File
    description: File endpoints
  - name: Reporting
    description: Reporting and metrics endpoints
paths:
  /v2/wallets/transfers:
    post:
      tags:
        - Crypto Transfer
      summary: Create a crypto transfer
      description: |
        Create a crypto transfer between two wallet addresses among users.
      requestBody:
        $ref: '#/components/requestBodies/CreateCryptoTransferBody'
      responses:
        '200':
          $ref: '#/components/responses/CryptoToCryptoTransferResponse'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
        '500':
          $ref: '#/components/responses/InternalServerErrorResponse'
components:
  requestBodies:
    CreateCryptoTransferBody:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CreateCryptoTransfer'
  responses:
    CryptoToCryptoTransferResponse:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CryptoToCryptoTransferObject'
    UnauthorizedResponse:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Unauthorized'
    NotFoundResponse:
      description: Resource not found
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                type: string
                enum:
                  - error
              error:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
    InternalServerErrorResponse:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/InternalServerError'
  schemas:
    CreateCryptoTransfer:
      type: object
      title: Crypto Transfer
      properties:
        requestId:
          type: string
          description: unique identifier for the transfer request (recommend using uuid v4)
        currency:
          type: string
          enum:
            - usdc
            - usdt
            - usdg
            - pyusd
          description: >
            crypto currency (note: `usdHifi` is only available in sandbox to
            simulate token movement)
        amount:
          type: number
          format: float
          minimum: 0
          description: amount of crypto currency to send
        chain:
          type: string
          enum:
            - POLYGON
            - ETHEREUM
            - BASE
            - SOLANA
            - BSC
            - FLOW_EVM
            - CANTON
            - TRON
        source:
          $ref: '#/components/schemas/CryptoTransferSource'
          type: object
          description: crypto transfer source
        destination:
          $ref: '#/components/schemas/CryptoTransferDestination'
          type: object
          description: crypto transfer destination
        fee:
          $ref: '#/components/schemas/CryptoTransferFee'
          type: object
          description: crypto transfer fee
        requireApproval:
          type: boolean
          description: |
            Whether this transfer requires approval before processing.
            - `true`: Transfer will enter approval workflow
            - `false` or omitted: Transfer proceeds immediately
          default: false
          example: false
      required:
        - requestId
        - source
        - destination
    CryptoToCryptoTransferObject:
      type: object
      properties:
        transferType:
          type: string
          example: WALLET.TRANSFER
        transferDetails:
          type: object
          properties:
            id:
              type: string
              format: uuid
              example: 006737ca-42d5-4780-b3c2-aeb63279c591
            requestId:
              type: string
              format: uuid
              example: d0d62bec-2623-4f61-afda-148d6a8e1009
            createdAt:
              type: string
              format: date-time
              example: '2025-02-03T16:11:36.654998+00:00'
            updatedAt:
              type: string
              format: date-time
              example: '2025-02-03T16:12:41.503+00:00'
            chain:
              type: string
              example: POLYGON_MAINNET
            currency:
              type: string
              example: usdc
            contractAddress:
              type: string
              example: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359'
            status:
              type: string
              example: CREATED
            failedReason:
              type: string
              example: ''
            source:
              type: object
              properties:
                userId:
                  type: string
                  format: uuid
                  example: aec66b02-4f3f-471c-839a-94820b36abb2
                walletAddress:
                  type: string
                  example: '0xA25641cB6056C371CB65F28aC02450c9206e0fAA'
                walletType:
                  type: string
                  example: INDIVIDUAL
                user:
                  type: object
                  properties:
                    email:
                      type: string
                      example: samuelyoon0@gmail.com
                    lastName:
                      type: string
                      example: Yoon
                    firstName:
                      type: string
                      example: Samuel
                    businessName:
                      type: string
                      example: null
            destination:
              type: object
              properties:
                userId:
                  type: string
                  format: uuid
                  example: aec66b02-4f3f-471c-839a-94820b36abb2
                walletAddress:
                  type: string
                  example: '0xA25641cB6056C371CB65F28aC02450c9206e0fAA'
                walletType:
                  type: string
                  example: INDIVIDUAL
                user:
                  type: object
                  properties:
                    email:
                      type: string
                      example: samuelyoon0@gmail.com
                    lastName:
                      type: string
                      example: Yoon
                    firstName:
                      type: string
                      example: Samuel
                    businessName:
                      type: string
                      example: null
            amount:
              type: number
              format: float
              example: 0.01
            amountIncludeDeveloperFee:
              type: number
              format: float
              example: 0.01
            receipt:
              type: object
              properties:
                transactionHash:
                  type: string
                  example: >-
                    0x5784890f9efd0160e9401439a5cf2aa5350580ecf48f9ca2af617338ae089e53
                userOpHash:
                  type: string
                  example: >-
                    0xef7bdb071b1fcfb5df629bd4d27ffa6dc32d0a5df676f26fb8c25311df1185ac
            developerFee:
              type: object
              properties:
                feeId:
                  type: string
                  format: uuid
                  example: 9b354c37-d20d-4d94-bcd8-c852353ca406
                feeType:
                  type: string
                  example: FIX
                feeAmount:
                  type: number
                  format: float
                  example: 0.5
                feePercent:
                  type: number
                  format: float
                  example: 0
                status:
                  type: string
                  example: CREATED
                transactionHash:
                  type: string
                  example: null
                failedReason:
                  type: string
                  example: null
            approval:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                  example: 006737ca-42d5-4780-b3c2-aeb63279c591
                status:
                  type: string
                  example: PENDING
                createdAt:
                  type: string
                  format: date-time
                  example: '2025-02-03T16:11:36.654998+00:00'
                updatedAt:
                  type: string
                  format: date-time
                  example: '2025-02-03T16:12:41.503+00:00'
                transferId:
                  type: string
                  format: uuid
                  example: 006737ca-42d5-4780-b3c2-aeb63279c591
                transferType:
                  type: string
                  example: WALLET.TRANSFER
                fromDashboard:
                  type: boolean
                  example: true
                initiatorProfileId:
                  type: string
                  format: uuid
                  example: aec66b02-4f3f-471c-839a-94820b36abb2
                votes:
                  type: array
                  description: >-
                    Array of approval votes (only present when status is
                    PENDING_APPROVAL or REJECTED)
                  items:
                    type: object
                    properties:
                      approverId:
                        type: string
                        format: uuid
                        example: aec66b02-4f3f-471c-839a-94820b36abb2
                      vote:
                        type: string
                        enum:
                          - APPROVE
                          - REJECT
                        example: REJECT
                      comment:
                        type: string
                        example: Transfer amount exceeds daily limit
                      createdAt:
                        type: string
                        format: date-time
                        example: '2025-02-03T16:12:41.503+00:00'
      example:
        transferType: WALLET.TRANSFER
        transferDetails:
          id: 006737ca-42d5-4780-b3c2-aeb63279c591
          requestId: d0d62bec-2623-4f61-afda-148d6a8e1009
          createdAt: '2025-02-03T16:11:36.654998+00:00'
          updatedAt: '2025-02-03T16:12:41.503+00:00'
          chain: POLYGON_MAINNET
          currency: usdc
          contractAddress: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359'
          status: CREATED
          failedReason: ''
          source:
            userId: aec66b02-4f3f-471c-839a-94820b36abb2
            walletAddress: '0xA25641cB6056C371CB65F28aC02450c9206e0fAA'
            walletType: INDIVIDUAL
            user:
              email: samuelyoon0@gmail.com
              lastName: Yoon
              firstName: Samuel
              businessName: null
          destination:
            userId: aec66b02-4f3f-471c-839a-94820b36abb2
            walletType: INDIVIDUAL
            walletAddress: '0xA25641cB6056C371CB65F28aC02450c9206e0fAA'
            user:
              email: samuelyoon0@gmail.com
              lastName: Yoon
              firstName: Samuel
              businessName: null
          amount: 0.01
          amountIncludeDeveloperFee: 0.01
          receipt:
            transactionHash: '0x5784890f9efd0160e9401439a5cf2aa5350580ecf48f9ca2af617338ae089e53'
            userOpHash: '0xef7bdb071b1fcfb5df629bd4d27ffa6dc32d0a5df676f26fb8c25311df1185ac'
          developerFee:
            feeId: 9b354c37-d20d-4d94-bcd8-c852353ca406
            feeType: FIX
            feeAmount: 0.5
            feePercent: 0
            status: CREATED
            transactionHash: null
            failedReason: null
    Unauthorized:
      type: object
      properties:
        code:
          type: integer
          description: Error code
        error:
          type: string
          description: Error type
        errorDetails:
          type: string
          description: Detailed error message
    InternalServerError:
      type: object
      properties:
        code:
          type: integer
          description: Error code
        error:
          type: string
          description: Error type
        errorDetails:
          type: string
          description: Detailed error message
    CryptoTransferSource:
      type: object
      properties:
        userId:
          type: string
          format: uuid
          description: user who is sending the crypto
      required:
        - userId
    CryptoTransferDestination:
      type: object
      properties:
        userId:
          type: string
          format: uuid
          description: >
            user who is receiving the crypto (should provide either `userId` or
            `walletAddress`)
        walletAddress:
          type: string
          description: >
            wallet address that is receiving the crypto (should provide either
            `userId` or `walletAddress`)
      required:
        - userId
    CryptoTransferFee:
      type: object
      properties:
        type:
          type: string
          enum:
            - FIX
            - PERCENT
        value:
          type: number
          format: float
          minimum: 0
          description: >
            custom transaction fee (`0.01` represents `1%` when `type` is set to
            `PERCENT`, checkout https://docs.hifi.com/v2/docs/fee-collection for
            more information)
      required:
        - type
        - value
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````