Method Name
private/transfer_position
private/transfer_positionTransfers a positions from one subaccount to another, owned by the same wallet.
The transfer is executed as a pair of orders crossing each other.
The maker order is created first, followed by a taker order crossing it.
The order amounts, limit prices and instrument name must be the same for both orders.
Fee is not charged and a zero max_fee must be signed.
The maker order is forcibly considered to be reduce_only, meaning it can only reduce the position size.
History: For position transfer history, use the private/get_trade_history RPC (not private/get_erc20_transfer_history).
Required minimum session key permission level is admin
Parameters
|
wallet
string required Public key (wallet) of the account |
|
maker_params
object required Maker order parameters and signature. Maximum transfer amount is limited by the size of the maker position. Transfers that increase the maker's position size are not allowed. |
|
maker_params.
amount
string required Order amount in units of the base |
|
maker_params.
direction
string required Order direction enum buy sell
|
|
maker_params.
instrument_name
string required Instrument name |
|
maker_params.
limit_price
string required Limit price in quote currency. This field is still required for market orders because it is a component of the signature. However, market orders will not leave a resting order in the book in case of a partial fill. |
|
maker_params.
max_fee
string required Max fee PER contract, denominated in USDC. For resting orders (maker orders), max_fee must be > 2 x max(taker_fee, maker_fee) x spot_price + extra_fee / amount.For crossing orders (taker order), max_fee must be > maker max_fee + base_fee / fill_amount. Note, in this calculation, regardless of the custom account taker / maker fees, the standard taker / maker fees are used. The max(limit_price, index_price) is used to calculate the notional volume. |
|
maker_params.
nonce
integer required Unique nonce defined as (UTC_timestamp in ms)(random_number_up_to_3_digits) (e.g. 1695836058725001, where 001 is the random number). Note, using a random number beyond 3 digits will cause JSON serialization to fail. |
|
maker_params.
signature
string required Ethereum signature of the order |
|
maker_params.
signature_expiry_sec
integer required Unix timestamp in seconds. Order signature becomes invalid after this time, and the system will cancel the order. Expiry MUST be at least 5 min from now. |
|
maker_params.
signer
string required Owner wallet address or registered session key that signed order |
|
maker_params.
subaccount_id
integer required Subaccount ID |
|
taker_params
object required Taker order parameters and signature |
|
taker_params.
amount
string required Order amount in units of the base |
|
taker_params.
direction
string required Order direction enum buy sell
|
|
taker_params.
instrument_name
string required Instrument name |
|
taker_params.
limit_price
string required Limit price in quote currency. This field is still required for market orders because it is a component of the signature. However, market orders will not leave a resting order in the book in case of a partial fill. |
|
taker_params.
max_fee
string required Max fee PER contract, denominated in USDC. For resting orders (maker orders), max_fee must be > 2 x max(taker_fee, maker_fee) x spot_price + extra_fee / amount.For crossing orders (taker order), max_fee must be > maker max_fee + base_fee / fill_amount. Note, in this calculation, regardless of the custom account taker / maker fees, the standard taker / maker fees are used. The max(limit_price, index_price) is used to calculate the notional volume. |
|
taker_params.
nonce
integer required Unique nonce defined as (UTC_timestamp in ms)(random_number_up_to_3_digits) (e.g. 1695836058725001, where 001 is the random number). Note, using a random number beyond 3 digits will cause JSON serialization to fail. |
|
taker_params.
signature
string required Ethereum signature of the order |
|
taker_params.
signature_expiry_sec
integer required Unix timestamp in seconds. Order signature becomes invalid after this time, and the system will cancel the order. Expiry MUST be at least 5 min from now. |
|
taker_params.
signer
string required Owner wallet address or registered session key that signed order |
|
taker_params.
subaccount_id
integer required Subaccount ID |
Response
| id string or integer required |
| result object required |
| result. maker_order object required |
|
result.maker_order.
amount
string required Order amount in units of the base |
|
result.maker_order.
average_price
string required Average fill price |
|
result.maker_order.
cancel_reason
string required If cancelled, reason behind order cancellation enum user_request mmp_trigger insufficient_margin signed_max_fee_too_low cancel_on_disconnect ioc_or_market_partial_fill session_key_deregistered subaccount_withdrawn compliance trigger_failed validation_failed algo_completed
|
|
result.maker_order.
creation_timestamp
integer required Creation timestamp (in ms since Unix epoch) |
|
result.maker_order.
direction
string required Order direction enum buy sell
|
|
result.maker_order.
filled_amount
string required Total filled amount for the order |
|
result.maker_order.
instrument_name
string required Instrument name |
|
result.maker_order.
is_transfer
boolean required Whether the order was generated through private/transfer_position
|
|
result.maker_order.
label
string required Optional user-defined label for the order |
|
result.maker_order.
last_update_timestamp
integer required Last update timestamp (in ms since Unix epoch) |
|
result.maker_order.
limit_price
string required Limit price in quote currency |
|
result.maker_order.
max_fee
string required Max fee PER contract, denominated in USDC.Max fee must be > 2 x max(taker_fee, maker_fee) x spot_price + extra_fee / amount.If the order crosses the book, it must be >= 2 x max(taker_fee, maker_fee) x spot_price + base_fee / fill_amount + extra_fee / amount.Note, in this calculation, regardless of the account taker / maker fees, the standard taker / maker fees are used. |
|
result.maker_order.
mmp
boolean required Whether the order is tagged for market maker protections |
|
result.maker_order.
nonce
integer required Unique nonce defined as (UTC_timestamp in ms)(random_number_up_to_3_digits) (e.g. 1695836058725001, where 001 is the random number) |
|
result.maker_order.
order_fee
string required Order fee paid so far |
|
result.maker_order.
order_id
string required Order ID |
|
result.maker_order.
order_status
string required Order status enum open filled cancelled expired untriggered algo_active
|
|
result.maker_order.
order_type
string required Order type enum limit market
|
|
result.maker_order.
quote_id
string or null required Quote ID if the trade was executed via RFQ |
|
result.maker_order.
signature
string required Ethereum signature of the order |
|
result.maker_order.
signature_expiry_sec
integer required Signature expiry timestamp |
|
result.maker_order.
signer
string required Owner wallet address or registered session key that signed order |
|
result.maker_order.
subaccount_id
integer required Subaccount ID |
|
result.maker_order.
time_in_force
string required Time in force enum gtc post_only fok ioc
|
|
result.maker_order.
algo_duration_sec
integer or null Total execution window in seconds |
|
result.maker_order.
algo_num_slices
integer or null Number of child executions |
|
result.maker_order.
algo_slices_completed
integer or null Number of slices executed so far |
|
result.maker_order.
algo_type
string or null Algo order type (twap or vwap) enum twap
|
|
result.maker_order.
extra_fee
string or null (Optional) Extra fee in USDC added to the total final fee paid by user (must be between 0.000001 and 1,000 USDC). |
|
result.maker_order.
replaced_order_id
string or null If replaced, ID of the order that was replaced |
|
result.maker_order.
signed_limit_price
string or null The original limit price that the user signed. Only set when the order was adjusted (i.e., for post-only orders with reject_post_only=false that would have crossed). Used for on-chain submission. |
|
result.maker_order.
trigger_price
string or null (Required for trigger orders) Index or Market price to trigger order at |
|
result.maker_order.
trigger_price_type
string or null (Required for trigger orders) Trigger with Index or Mark Price enum mark index
|
|
result.maker_order.
trigger_reject_message
string or null (Required for trigger orders) Error message if error occured during trigger |
|
result.maker_order.
trigger_type
string or null (Required for trigger orders) Stop-loss or Take-profit. enum stoploss takeprofit
|
| result. maker_trade object required |
|
result.maker_trade.
direction
string required Order direction enum buy sell
|
|
result.maker_trade.
expected_rebate
string required Expected rebate for this trade |
|
result.maker_trade.
extra_fee
string required Extra fee in USDC added by the referring client (included in trade fee) |
|
result.maker_trade.
index_price
string required Index price of the underlying at the time of the trade |
|
result.maker_trade.
instrument_name
string required Instrument name |
|
result.maker_trade.
is_transfer
boolean required Whether the trade was generated through private/transfer_position
|
|
result.maker_trade.
label
string required Optional user-defined label for the order |
|
result.maker_trade.
liquidity_role
string required Role of the user in the trade enum maker taker
|
|
result.maker_trade.
mark_price
string required Mark price of the instrument at the time of the trade |
|
result.maker_trade.
order_id
string required Order ID |
|
result.maker_trade.
quote_id
string or null required Quote ID if the trade was executed via RFQ |
|
result.maker_trade.
realized_pnl
string required Realized PnL for this trade |
|
result.maker_trade.
realized_pnl_excl_fees
string required Realized PnL for this trade using cost accounting that excludes fees |
|
result.maker_trade.
rfq_id
string or null required RFQ ID if the trade was executed via RFQ |
|
result.maker_trade.
subaccount_id
integer required Subaccount ID |
|
result.maker_trade.
timestamp
integer required Trade timestamp (in ms since Unix epoch) |
|
result.maker_trade.
trade_amount
string required Amount filled in this trade |
|
result.maker_trade.
trade_fee
string required Base_fee (only takers) + unit_fee (adjusted via rebates / discounts) + extra_fee (set by referrring client)) |
|
result.maker_trade.
trade_id
string required Trade ID |
|
result.maker_trade.
trade_price
string required Price at which the trade was filled |
|
result.maker_trade.
transaction_id
string required The transaction id of the related settlement transaction |
|
result.maker_trade.
tx_hash
string or null required Blockchain transaction hash |
|
result.maker_trade.
tx_status
string required Blockchain transaction status enum requested pending settled reverted ignored timed_out
|
| result. taker_order object required |
|
result.taker_order.
amount
string required Order amount in units of the base |
|
result.taker_order.
average_price
string required Average fill price |
|
result.taker_order.
cancel_reason
string required If cancelled, reason behind order cancellation enum user_request mmp_trigger insufficient_margin signed_max_fee_too_low cancel_on_disconnect ioc_or_market_partial_fill session_key_deregistered subaccount_withdrawn compliance trigger_failed validation_failed algo_completed
|
|
result.taker_order.
creation_timestamp
integer required Creation timestamp (in ms since Unix epoch) |
|
result.taker_order.
direction
string required Order direction enum buy sell
|
|
result.taker_order.
filled_amount
string required Total filled amount for the order |
|
result.taker_order.
instrument_name
string required Instrument name |
|
result.taker_order.
is_transfer
boolean required Whether the order was generated through private/transfer_position
|
|
result.taker_order.
label
string required Optional user-defined label for the order |
|
result.taker_order.
last_update_timestamp
integer required Last update timestamp (in ms since Unix epoch) |
|
result.taker_order.
limit_price
string required Limit price in quote currency |
|
result.taker_order.
max_fee
string required Max fee PER contract, denominated in USDC.Max fee must be > 2 x max(taker_fee, maker_fee) x spot_price + extra_fee / amount.If the order crosses the book, it must be >= 2 x max(taker_fee, maker_fee) x spot_price + base_fee / fill_amount + extra_fee / amount.Note, in this calculation, regardless of the account taker / maker fees, the standard taker / maker fees are used. |
|
result.taker_order.
mmp
boolean required Whether the order is tagged for market maker protections |
|
result.taker_order.
nonce
integer required Unique nonce defined as (UTC_timestamp in ms)(random_number_up_to_3_digits) (e.g. 1695836058725001, where 001 is the random number) |
|
result.taker_order.
order_fee
string required Order fee paid so far |
|
result.taker_order.
order_id
string required Order ID |
|
result.taker_order.
order_status
string required Order status enum open filled cancelled expired untriggered algo_active
|
|
result.taker_order.
order_type
string required Order type enum limit market
|
|
result.taker_order.
quote_id
string or null required Quote ID if the trade was executed via RFQ |
|
result.taker_order.
signature
string required Ethereum signature of the order |
|
result.taker_order.
signature_expiry_sec
integer required Signature expiry timestamp |
|
result.taker_order.
signer
string required Owner wallet address or registered session key that signed order |
|
result.taker_order.
subaccount_id
integer required Subaccount ID |
|
result.taker_order.
time_in_force
string required Time in force enum gtc post_only fok ioc
|
|
result.taker_order.
algo_duration_sec
integer or null Total execution window in seconds |
|
result.taker_order.
algo_num_slices
integer or null Number of child executions |
|
result.taker_order.
algo_slices_completed
integer or null Number of slices executed so far |
|
result.taker_order.
algo_type
string or null Algo order type (twap or vwap) enum twap
|
|
result.taker_order.
extra_fee
string or null (Optional) Extra fee in USDC added to the total final fee paid by user (must be between 0.000001 and 1,000 USDC). |
|
result.taker_order.
replaced_order_id
string or null If replaced, ID of the order that was replaced |
|
result.taker_order.
signed_limit_price
string or null The original limit price that the user signed. Only set when the order was adjusted (i.e., for post-only orders with reject_post_only=false that would have crossed). Used for on-chain submission. |
|
result.taker_order.
trigger_price
string or null (Required for trigger orders) Index or Market price to trigger order at |
|
result.taker_order.
trigger_price_type
string or null (Required for trigger orders) Trigger with Index or Mark Price enum mark index
|
|
result.taker_order.
trigger_reject_message
string or null (Required for trigger orders) Error message if error occured during trigger |
|
result.taker_order.
trigger_type
string or null (Required for trigger orders) Stop-loss or Take-profit. enum stoploss takeprofit
|
| result. taker_trade object required |
|
result.taker_trade.
direction
string required Order direction enum buy sell
|
|
result.taker_trade.
expected_rebate
string required Expected rebate for this trade |
|
result.taker_trade.
extra_fee
string required Extra fee in USDC added by the referring client (included in trade fee) |
|
result.taker_trade.
index_price
string required Index price of the underlying at the time of the trade |
|
result.taker_trade.
instrument_name
string required Instrument name |
|
result.taker_trade.
is_transfer
boolean required Whether the trade was generated through private/transfer_position
|
|
result.taker_trade.
label
string required Optional user-defined label for the order |
|
result.taker_trade.
liquidity_role
string required Role of the user in the trade enum maker taker
|
|
result.taker_trade.
mark_price
string required Mark price of the instrument at the time of the trade |
|
result.taker_trade.
order_id
string required Order ID |
|
result.taker_trade.
quote_id
string or null required Quote ID if the trade was executed via RFQ |
|
result.taker_trade.
realized_pnl
string required Realized PnL for this trade |
|
result.taker_trade.
realized_pnl_excl_fees
string required Realized PnL for this trade using cost accounting that excludes fees |
|
result.taker_trade.
rfq_id
string or null required RFQ ID if the trade was executed via RFQ |
|
result.taker_trade.
subaccount_id
integer required Subaccount ID |
|
result.taker_trade.
timestamp
integer required Trade timestamp (in ms since Unix epoch) |
|
result.taker_trade.
trade_amount
string required Amount filled in this trade |
|
result.taker_trade.
trade_fee
string required Base_fee (only takers) + unit_fee (adjusted via rebates / discounts) + extra_fee (set by referrring client)) |
|
result.taker_trade.
trade_id
string required Trade ID |
|
result.taker_trade.
trade_price
string required Price at which the trade was filled |
|
result.taker_trade.
transaction_id
string required The transaction id of the related settlement transaction |
|
result.taker_trade.
tx_hash
string or null required Blockchain transaction hash |
|
result.taker_trade.
tx_status
string required Blockchain transaction status enum requested pending settled reverted ignored timed_out
|
Example
{request_example_shell}{request_example_javascript}{request_example_python}The above command returns JSON structured like this:
{response_example_json}