Skip to main content

Internal Transfer With Wallet Signature

The Internal Transfer with Wallet Signature API allows users to transfer assets between Orderly accounts. This API requires a wallet EIP-712 signature to verify the ownership and authorization of the transfer. To create an internal transfer request:
1

Obtain a transfer nonce

Get a valid transfer nonce from the Get Transfer Nonce API.
This API requires Orderly authentication headers:
  • orderly-timestamp: Current timestamp in milliseconds
  • orderly-account-id: Your Orderly Account ID
  • orderly-key: Your Orderly Key
  • orderly-signature: Ed25519 signature of the request message
The signature is generated by signing {timestamp}{http_method}{url_path}{payload} using your Orderly Secret. For production use, it’s recommended to use the Orderly SDK which handles authentication automatically.
2

Obtain a signature from EIP-712

Sign an EIP-712 message of message type InternalTransfer:
where:
The EIP-712 signature uses the on-chain domain. The verifyingContract should be the Ledger contract address, which can be found here.
3

Make an internal transfer request

Call the Create Internal Transfer With Wallet Signature API.The request body must include the generated signature and the message parameters used to create it:
[!WARNING] EIP-712 Signature vs. API Payload Mismatch: The REST API request body message structure includes helper fields chainId and chainType. These fields must NOT be included in the EIP-712 message object during cryptography signing. If you include them in the EIP-712 signature message hash, the gateway validation will fail.
Note that in the API request, receiver is a string (hex format with 0x prefix), while in the EIP-712 signature it must be bytes32. The userAddress must be an EVM address format (0x-prefixed hex string) for EVM chains, or a Solana address for SOL chains.
where:
Ensure the userAddress matches the wallet address associated with the Orderly Account ID making the request. The standard Orderly authentication headers (Orderly Key signature) are also required for this API call.

Full example