POST /v1/tokens/{tokenId}/transfers
Move supply of a deployed QRC token between participants. The endpoint resolves recipients and senders, applies token-specific compliance checks (allowlist, frozen-account checks, paused-state checks), and routes the transaction through the standard approval and signing flow.
| Aspect | Detail |
|---|---|
| Method | POST |
| Path | /v1/tokens/{tokenId}/transfers |
| Authentication | Bearer API key |
| Required permissions | tokens:transfer |
| Idempotency | Idempotency-Key header required |
| Approval policy | Subject to vault and token-level policy |
| Blockchain effect | Contract call to transfer(address,uint256) (or template-equivalent) |
| Webhook events | transaction.created, transaction.status_changed, transaction.completed, transaction.failed |
Request body
Response (202)
Errors
| Code | Type | Meaning |
|---|---|---|
| 1703 | TOKEN_NOT_DEPLOYED | Token has no on-chain contractAddress. |
| 1712 | TOKEN_INVALID_RECIPIENT | Recipient resolution failed. |
| 1713 | TOKEN_INVALID_AMOUNT | Amount is zero or exceeds the sender’s balance. |
| 1714 | TOKEN_COMPLIANCE_RESTRICTION_FAILED | Allowlist, freeze, or pause check rejected the transfer. |
| 1200 | POLICY_DENIED | Approval policy denied the transfer. |
| 1201 | APPROVAL_REQUIRED | Approval is required and was not yet granted. |
| 1601 | IDEMPOTENCY_CONFLICT | Same Idempotency-Key reused with different body. |
Retry safety
Retries with the sameIdempotency-Key are safe and return the original operation.
Related
- Create transaction (the underlying generic flow)
- Compliance and allowlist
- Security model