Create internal transfer
curl --request POST \
--url https://api.orderly.org/v1/internal_transfer \
--header 'Content-Type: application/json' \
--header 'orderly-account-id: <orderly-account-id>' \
--header 'orderly-key: <orderly-key>' \
--header 'orderly-signature: <orderly-signature>' \
--header 'orderly-timestamp: <orderly-timestamp>' \
--data '
{
"token": "USDC",
"receiver_list": [
{
"account_id": "0x0000000",
"amount": 100
}
]
}
'import requests
url = "https://api.orderly.org/v1/internal_transfer"
payload = {
"token": "USDC",
"receiver_list": [
{
"account_id": "0x0000000",
"amount": 100
}
]
}
headers = {
"orderly-timestamp": "<orderly-timestamp>",
"orderly-account-id": "<orderly-account-id>",
"orderly-key": "<orderly-key>",
"orderly-signature": "<orderly-signature>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'orderly-timestamp': '<orderly-timestamp>',
'orderly-account-id': '<orderly-account-id>',
'orderly-key': '<orderly-key>',
'orderly-signature': '<orderly-signature>',
'Content-Type': 'application/json'
},
body: JSON.stringify({token: 'USDC', receiver_list: [{account_id: '0x0000000', amount: 100}]})
};
fetch('https://api.orderly.org/v1/internal_transfer', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.orderly.org/v1/internal_transfer",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'token' => 'USDC',
'receiver_list' => [
[
'account_id' => '0x0000000',
'amount' => 100
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"orderly-account-id: <orderly-account-id>",
"orderly-key: <orderly-key>",
"orderly-signature: <orderly-signature>",
"orderly-timestamp: <orderly-timestamp>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.orderly.org/v1/internal_transfer"
payload := strings.NewReader("{\n \"token\": \"USDC\",\n \"receiver_list\": [\n {\n \"account_id\": \"0x0000000\",\n \"amount\": 100\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("orderly-timestamp", "<orderly-timestamp>")
req.Header.Add("orderly-account-id", "<orderly-account-id>")
req.Header.Add("orderly-key", "<orderly-key>")
req.Header.Add("orderly-signature", "<orderly-signature>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.orderly.org/v1/internal_transfer")
.header("orderly-timestamp", "<orderly-timestamp>")
.header("orderly-account-id", "<orderly-account-id>")
.header("orderly-key", "<orderly-key>")
.header("orderly-signature", "<orderly-signature>")
.header("Content-Type", "application/json")
.body("{\n \"token\": \"USDC\",\n \"receiver_list\": [\n {\n \"account_id\": \"0x0000000\",\n \"amount\": 100\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orderly.org/v1/internal_transfer")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["orderly-timestamp"] = '<orderly-timestamp>'
request["orderly-account-id"] = '<orderly-account-id>'
request["orderly-key"] = '<orderly-key>'
request["orderly-signature"] = '<orderly-signature>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"token\": \"USDC\",\n \"receiver_list\": [\n {\n \"account_id\": \"0x0000000\",\n \"amount\": 100\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"timestamp": 1702989203989,
"data": {
"internal_transfer_request_id": 123
}
}Assets/withdraw/settle PnL
Create internal transfer
Limit: 10 requests per 1 second
POST /v1/internal_transfer
This endpoint will return internal transfer is not available for Delegate Signer account if the from is a Delegate Signer account.
Scenarios where internal transfers are allowed:
a. Main and sub accounts
b. Accounts within the same wallet group
c. Same address across all brokers.
d. A whitelisted account_id can be used as from address
e. If 2 account_id are under the same broker_id and the broker_id is whitelisted.
POST
/
v1
/
internal_transfer
Create internal transfer
curl --request POST \
--url https://api.orderly.org/v1/internal_transfer \
--header 'Content-Type: application/json' \
--header 'orderly-account-id: <orderly-account-id>' \
--header 'orderly-key: <orderly-key>' \
--header 'orderly-signature: <orderly-signature>' \
--header 'orderly-timestamp: <orderly-timestamp>' \
--data '
{
"token": "USDC",
"receiver_list": [
{
"account_id": "0x0000000",
"amount": 100
}
]
}
'import requests
url = "https://api.orderly.org/v1/internal_transfer"
payload = {
"token": "USDC",
"receiver_list": [
{
"account_id": "0x0000000",
"amount": 100
}
]
}
headers = {
"orderly-timestamp": "<orderly-timestamp>",
"orderly-account-id": "<orderly-account-id>",
"orderly-key": "<orderly-key>",
"orderly-signature": "<orderly-signature>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'orderly-timestamp': '<orderly-timestamp>',
'orderly-account-id': '<orderly-account-id>',
'orderly-key': '<orderly-key>',
'orderly-signature': '<orderly-signature>',
'Content-Type': 'application/json'
},
body: JSON.stringify({token: 'USDC', receiver_list: [{account_id: '0x0000000', amount: 100}]})
};
fetch('https://api.orderly.org/v1/internal_transfer', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.orderly.org/v1/internal_transfer",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'token' => 'USDC',
'receiver_list' => [
[
'account_id' => '0x0000000',
'amount' => 100
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"orderly-account-id: <orderly-account-id>",
"orderly-key: <orderly-key>",
"orderly-signature: <orderly-signature>",
"orderly-timestamp: <orderly-timestamp>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.orderly.org/v1/internal_transfer"
payload := strings.NewReader("{\n \"token\": \"USDC\",\n \"receiver_list\": [\n {\n \"account_id\": \"0x0000000\",\n \"amount\": 100\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("orderly-timestamp", "<orderly-timestamp>")
req.Header.Add("orderly-account-id", "<orderly-account-id>")
req.Header.Add("orderly-key", "<orderly-key>")
req.Header.Add("orderly-signature", "<orderly-signature>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.orderly.org/v1/internal_transfer")
.header("orderly-timestamp", "<orderly-timestamp>")
.header("orderly-account-id", "<orderly-account-id>")
.header("orderly-key", "<orderly-key>")
.header("orderly-signature", "<orderly-signature>")
.header("Content-Type", "application/json")
.body("{\n \"token\": \"USDC\",\n \"receiver_list\": [\n {\n \"account_id\": \"0x0000000\",\n \"amount\": 100\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orderly.org/v1/internal_transfer")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["orderly-timestamp"] = '<orderly-timestamp>'
request["orderly-account-id"] = '<orderly-account-id>'
request["orderly-key"] = '<orderly-key>'
request["orderly-signature"] = '<orderly-signature>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"token\": \"USDC\",\n \"receiver_list\": [\n {\n \"account_id\": \"0x0000000\",\n \"amount\": 100\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"timestamp": 1702989203989,
"data": {
"internal_transfer_request_id": 123
}
}Headers
Timestamp of the signed request in milliseconds.
Account ID of the authenticated account.
Public orderly key used to sign the request.
Signature of the request payload generated with the orderly key.
Body
application/json
⌘I