---
title: "Create a new transfer"
method: POST
path: "/transactions"
tags: ["transactions"]
---

# Create a new transfer

`POST /transactions`

Initiates a transfer through the custody lifecycle. The transaction
passes through policy evaluation and, if approved, enters the
PENDING_SIGNATURE state. The signing payload must be retrieved
and signed externally using your post-quantum key.

## Headers

- `Idempotency-Key` string

## Request body

- CreateTransferRequest
  - `sourceWalletId` string, uuid, required
  - `destinationAddr` string, required
  - `assetId` string, uuid, required
  - `amount` string, required — Wei-denominated amount as string
  - `externalId` string — Client-provided idempotency/correlation ID
  - `note` string
  - `metadata` object

## Response `201`

Transaction created

- Transaction
  - `id` string, uuid, required
  - `tenantId` string, uuid, required
  - `externalId` string
  - `sourceVaultId` string, uuid, required
  - `sourceWalletId` string, uuid, required
  - `destinationAddr` string, required
  - `assetId` string, uuid, required
  - `amount` string, required — Wei-denominated amount as string
  - `fee` string
  - `gasLimit` integer
  - `nonce` integer
  - `status` 'SUBMITTED' | 'QUEUED' | 'PENDING_AML_SCREENING' | 'PENDING_AUTHORIZATION' | 'APPROVED' | 'REJECTED' | 'PENDING_SIGNATURE' | 'SIGNED' | 'BROADCASTING' | 'CONFIRMING' | 'COMPLETED' | 'FAILED' | 'CANCELLED' | 'BLOCKED', required
  - `failureReason` string
  - `chainTxHash` string
  - `blockNumber` integer
  - `confirmations` integer
  - `note` string
  - `metadata` object
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time
  - `broadcastAt` string, date-time
  - `confirmedAt` string, date-time

---

[API](https://skmtc.net/quantum-chain-pte-ltd/apis/qustody-api.md) · [All operations](https://skmtc.net/quantum-chain-pte-ltd/apis/qustody-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/quantum-chain-pte-ltd/qustody-api/revisions/ecb2cea3c096/schema)
