Submit Internal Transfer
Transfer funds between a master account and a linked subaccount.
Available to: Traders (the master account owner); organization administrators (any account in their organization)
Environments: Live
Rate Limit: 600 requests per hour, 30-second back-off, counts all requests
Move funds between a master account and one of its linked subaccounts. Set fromAccountId to the source account and toAccountId to the destination, then specify the fundAmount and fundCurrencyId. The response returns an internalTransferId and a transaction leg for each side of the transfer.
The two accounts must be a linked master account and subaccount, and you must own the master account or be an administrator of its organization.
Field Details
You can look up account IDs using the Query Builder in the Admin Dashboard or the /account/list endpoint.
The fundAmount must be greater than zero. The fundCurrencyId must correspond to either USD or EUR. Currency IDs are environment-specific, so use the /currency/list endpoint to retrieve valid IDs.
The reason field is optional and records a note describing the transfer.
The optional idempotencyKey is accepted on the request and is intended to support safely retrying a transfer. It is not yet used to deduplicate retries, so resubmitting a transfer can move funds more than once.
Response
The response returns two transaction legs, fromFundTransaction and toFundTransaction, one for each side of the transfer, and an internalTransferId that identifies the transfer. Each leg describes the fund transaction on its account: payment type, amount, currency, status, and timestamp.
If the transfer is rejected, the response includes an errorCode and errorText describing the problem.
Response Codes
The FundTransactionErrorCode enum defines two outcome codes for an internal transfer that is accepted but does not complete:
These codes are not yet returned by the endpoint. Today, a transfer that is accepted but does not complete returns Unknown in errorCode, with an errorText of “Internal transfer is pending; do not resubmit” (incomplete) or “Internal transfer could not be completed” (failed). In either case, do not resubmit the transfer.
Error Messages
HTTP 200 with an errorText message, not an error HTTP status. Check errorText to determine whether the request succeeded or failed.Authentication
Bearer authentication of the form Bearer <token>, where token is your auth token.
Request
Response
Non-empty if the request failed
Non-empty if the request failed