---
title: "Create a crypto transfer"
method: POST
path: "/v2/wallets/transfers"
tags: ["Crypto Transfer"]
---

# Create a crypto transfer

`POST /v2/wallets/transfers`

Create a crypto transfer between two wallet addresses among users.

## Request body

- CreateCryptoTransfer
  - `requestId` string, required — unique identifier for the transfer request (recommend using uuid v4)
  - `currency` 'usdc' | 'usdt' | 'usdHifi' — crypto currency (note: `usdHifi` is only available in sandbox to simulate token movement)
  - `amount` number, float — amount of crypto currency to send
  - `chain` 'POLYGON' | 'ETHEREUM' | 'BASE' | 'SOLANA'
  - `source` CryptoTransferSource, required
    - `userId` string, uuid, required — user who is sending the crypto
  - `destination` CryptoTransferDestination, required
    - `userId` string, uuid, required — user who is receiving the crypto (should provide either `userId` or `walletAddress`)
    - `walletAddress` string — wallet address that is receiving the crypto (should provide either `userId` or `walletAddress`)
  - `fee` CryptoTransferFee
    - `type` 'FIX' | 'PERCENT', required
    - `value` number, float, required — custom transaction fee (`0.01` represents `1%` when `type` is set to `PERCENT`, checkout https://docs.hifibridge.com/v2/docs/fee-collection for more information)
  - `requireApproval` boolean — Whether this transfer requires approval before processing. - `true`: Transfer will enter approval workflow - `false` or omitted: Transfer proceeds immediately

## Response `200`

Success

- CryptoToCryptoTransferObject
  - `transferType` string
  - `transferDetails` object
    - `id` string, uuid
    - `requestId` string, uuid
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
    - `chain` string
    - `currency` string
    - `contractAddress` string
    - `status` string
    - `failedReason` string
    - `source` object
      - `userId` string, uuid
      - `walletAddress` string
      - `walletType` string
      - `user` object
        - `email` string
        - `lastName` string
        - `firstName` string
        - `businessName` string
    - `destination` object
      - `userId` string, uuid
      - `walletType` string
      - `walletAddress` string
      - `user` object
        - `email` string
        - `lastName` string
        - `firstName` string
        - `businessName` string
    - `amount` number, float
    - `amountIncludeDeveloperFee` number, float
    - `receipt` object
      - `transactionHash` string
      - `userOpHash` string
    - `developerFee` object
      - `feeId` string, uuid
      - `feeType` string
      - `feeAmount` number, float
      - `feePercent` number, float
      - `status` string
      - `transactionHash` string
      - `failedReason` string
    - `approval` object
      - `id` string, uuid
      - `status` string
      - `createdAt` string, date-time
      - `updatedAt` string, date-time
      - `transferId` string, uuid
      - `transferType` string
      - `fromDashboard` boolean
      - `initiatorProfileId` string, uuid
      - `votes` object[] — Array of approval votes (only present when status is PENDING_APPROVAL or REJECTED)
        - `approverId` string, uuid
        - `vote` 'APPROVE' | 'REJECT'
        - `comment` string
        - `createdAt` string, date-time

## Other responses

- `401` — Unauthorized
- `404` — Resource not found
- `500` — Internal Server Error

---

[API](https://skmtc.net/hifibridge/apis/hifi-api.md) · [All operations](https://skmtc.net/hifibridge/apis/hifi-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/hifibridge/hifi-api/versions/74d9e530fbea/schema)
