Skip to main content
POST
/
api
/
v1
/
transfer
Create transfer
curl --request POST \
  --url https://api.paratro.com/api/v1/transfer \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "from_address": "<string>",
  "to_address": "<string>",
  "chain": "<string>",
  "token_symbol": "<string>",
  "amount": "1.5",
  "memo": "<string>"
}
'
{
  "tx_id": "tx_w1x2y3z4a5",
  "status": "PENDING",
  "message": "Transfer initiated successfully."
}

Create Transfer

Create a transfer transaction. Atomically creates a transaction record, locks the transfer amount, and initiates MPC signing. The system automatically locates the source asset by matching from_address + chain + token_symbol under the authenticated client.
from_address
string
required
Source blockchain address (must belong to the authenticated client, max 255 characters).
to_address
string
required
Destination blockchain address (max 255 characters).
chain
string
required
Enabled chain name for the transfer.
token_symbol
string
required
Token symbol (e.g., USDT, ETH, BTC, max 20 characters).
amount
string
required
Transfer amount in user-facing units (e.g., “1.5” BTC). Must be greater than 0 and must not exceed the asset’s decimal precision.
memo
string
Optional memo or tag (max 100 characters).

Address Validation

The destination address format is validated against the specified chain:
ChainFormat
EVM chains0x-prefixed 42-character hex
TronBase58check-encoded T-prefix
BitcoinValid mainnet/testnet format
SolanaValid base58 Ed25519 public key

Response

{
  "tx_id": "tx_01HXYZ...",
  "status": "PENDING",
  "message": "Transfer task created"
}

Errors

HTTPCodeCondition
400invalid_parameterInvalid request body, non-positive amount, excessive decimal precision, or identical from_address / to_address
400insufficient_balanceInsufficient available balance
400invalid_addressAddress format invalid for the chain
400wallet_not_activeWallet is not in active state
400business_errorTransaction amount exceeds wallet limit
404not_foundNo asset found for the given address/chain/token combination
500internal_errorInternal processing failure

Authorizations

Authorization
string
header
required

JWT access token obtained from the /api/v1/auth/token endpoint.

Body

application/json
from_address
string
required

The sender's blockchain address.

Maximum string length: 255
to_address
string
required

The recipient's blockchain address.

Maximum string length: 255
chain
string
required

Enabled chain name for the transfer.

token_symbol
string
required

The symbol of the token to transfer (e.g., ETH, USDT, BTC).

Maximum string length: 20
amount
string
required

The amount to transfer as a string. Must be greater than 0 and must not exceed the asset's supported decimal precision.

Example:

"1.5"

memo
string

Optional memo or note for the transfer.

Maximum string length: 100

Response

Transfer initiated successfully.

tx_id
string
required

Unique identifier for the created transaction.

Example:

"tx_w1x2y3z4a5"

status
string
required

Initial transfer status returned by the gateway. Currently PENDING when the task is created.

Example:

"PENDING"

message
string
required

A human-readable message about the transfer status.

Example:

"Transfer initiated successfully."