Copy trading · Multi-account orders

One order. Every follower's MT5 account.

A multi-account order places the same trade on every account you list, at the same moment, with its own volume per account — and reports a separate result for each. It is the core of a copy-trading product, as one API call.

  • Sized per account
  • A result for each account
  • Safe to retry
EURUSD · buy · 100 accounts
30 msfirst account to last
Benchmark
10 accounts50 accounts100 accounts
Time from the first account's order to the last, by number of accounts, in our benchmark against an instant broker — every multi-account order reports its own spread. The more accounts you trade at once, the less each one adds: 1.7 ms at 10 accounts, 0.3 ms at 100.
How it works

From one request to a hundred fills.

The API calls them execution waves. Every account is brought online first; then all the orders go out together, at the time you set or as soon as every account is ready.

  1. 01

    List the accounts

    Name every follower account, a base volume, and a volume for any account that differs.
    POST /v1/execution-waves
  2. 02

    Accounts come online

    Accounts that are offline are brought online. Your barrier policy decides what happens to any that are late.
  3. 03

    Orders go out together

    All orders are sent at once — 17 ms first to last across 10 accounts, 30 ms across 100, in our benchmark.
  4. 04

    A result per account

    Each account reports its own fill, rejection or pending confirmation, with a summary that counts them.
    GET /v1/execution-waves/{id}
Per-account sizing

The same trade, the right size for each.

Followers rarely have the same balance. A multi-account order takes a base volume and a weights map that sets the volume for any account that should differ. A follower with five times the balance can trade five times the size; a cautious follower can trade a fraction.

The sizing rule is yours — proportional to balance, a fixed lot per follower, or a risk setting each follower chooses in your app. fxapis places exactly the volume you send, as a decimal string, so no size is rounded on the way.

Send the order with an Idempotency-Key derived from the master trade. If your process crashes and retries, the retry returns the first order's result instead of copying the trade twice.

cURL · one trade, three followers
curl -X POST https://api.fxapis.com/v1/execution-waves \
  -H "Authorization: Bearer $FXAPIS_KEY" \
  -H "Idempotency-Key: master-trade-58213" \
  -H "Content-Type: application/json" \
  -d '{
    "accountIds": [
      "0d7c1f5e-4b6a-4c1e-9f0a-2d9e8c7b6a51",
      "5a1e9c33-7f20-4d8b-b1c4-6e0f2a9d8c17",
      "c94b2e70-1d6f-4a35-8e2b-3f7a0c5d9e82"
    ],
    "symbol": "EURUSD",
    "side": "buy",
    "volume": "0.10",
    "weights": {
      "5a1e9c33-7f20-4d8b-b1c4-6e0f2a9d8c17": "0.25",
      "c94b2e70-1d6f-4a35-8e2b-3f7a0c5d9e82": "0.05"
    },
    "stopLoss": "1.0890",
    "takeProfit": "1.1010",
    "barrierPolicy": "release-ready",
    "clientWaveId": "master-trade-58213"
  }'
Response settled
{
  "data": {
    "state": "settled",
    "dispatchSpreadMs": 17,
    "summary": { "total": 3, "filled": 3, "rejected": 0,
                 "skipped": 0, "unresolved": 0 },
    "legs": [
      { "accountId": "0d7c…6a51", "volume": "0.10", "state": "filled", … },
      { "accountId": "5a1e…8c17", "volume": "0.25", "state": "filled", … },
      { "accountId": "c94b…9e82", "volume": "0.05", "state": "filled", … }
    ]
  }
}
Barrier policies

Your rules for accounts that are late.

An account that is offline has to sign in before it can trade. The barrier policy decides what the rest of the order does while it waits.

Barrier policies for multi-account orders
AspectWhat happensUse it when
release-readyTrade the accounts that are online; skip the rest.A partial entry beats a late one — most copy trading.
all-or-nothingSend nothing unless every account is online.The strategy only makes sense across the whole set.
waitWait past the start time until every account is online, up to a deadline.Every account must take part and a short delay is acceptable.
all-or-nothing is about sending, not the outcome: a broker can still reject one account's order after it was sent. If every account is online by the start time, the orders go at the start time. Without a start time, they go as soon as every account is online, waiting up to 60 seconds.
Measured

Honest about what can and can't be synchronised.

A hundred accounts at a hundred brokers cannot fill as one transaction. Fills come at slightly different prices, one account may be rejected for margin, and occasionally one goes unanswered. So a multi-account order never reports a single “success”. It settles, and its summary counts what happened: filled, rejected, skipped, unresolved.

What fxapis controls is how close together the orders leave. That gap is dispatchSpreadMs, reported on every order — 17 ms at 10 accounts, 26 ms at 50 and 30 ms at 100 in our benchmark, against an instant broker so it shows our own contribution. Each broker adds its own latency on top. The benchmarks page has the method.

A spread you can alert on

A growing dispatch spread means accounts are getting different prices. It is on every result.

Unresolved, never guessed

An account whose outcome is unclear is confirmed against its broker's records — and never resent.

Ordinary orders underneath

Every account's trade is a normal order with its own id: queried, confirmed and audited like any other.

Cancel before it goes

A scheduled order can be called off until the first account's order is sent.
Build a copier

An outline, end to end.

  1. Connect every account. Followers connect their MT5 account in your app with POST /v1/accounts. Choose always connected for followers who must react instantly, or on demand and bring them online ahead of known events with POST /v1/accounts/prepare.
  2. Decide where trades come from. The fastest source is your own strategy calling fxapis directly. To follow a master MT5 account, connect it too and read its positions and deals — positions refresh about every 15 seconds while it is online. For strategies in TradingView, see TradingView alerts to MT5.
  3. Size each follower. Work out each account's volume from your own rules and put it in weights.
  4. Send one multi-account order per master trade, with an idempotency key made from that trade.
  5. Copy closes per account. Close each follower's position with its own request and its own idempotency key — a retried close on a hedging account would otherwise open the opposite position.
  6. Reconcile. Store every account's result. Show followers their fills, and treat any unresolved result as “confirming”, never as a reason to resend.

Give your monitoring tools a trading:reduce key: they can close positions and cancel orders across every account, but can never open one. The Trading guide covers each call in depth.

Compared

An API, not another copier to install.

Copier software and copier services are finished products. fxapis is the execution layer for building your own — so the copier is your product, under your brand, with your rules.

fxapis multi-account orders compared with desktop and cloud trade copiers
Aspectfxapis multi-account ordersDesktop copierCloud copier service
What it isAn API to build your own copy-trading productSoftware that copies between terminals on one computerA hosted copier you configure in its dashboard
What runs whereMT5 hosted by us; your code anywhereEvery terminal on your Windows PC or VPSThe vendor's cloud
Whose productYours — your app, your brand, your rulesThe vendor'sThe vendor's
Per-account results in your codeYes, for every accountNot the aimDepends on the vendor
Pricing shapePlans by accounts and ordersOne-time licence or rental (example)Per account per month (example, example)
Ready-made copier settingsNo — you write the rulesYesYes
Examples as published by each vendor on 30 September 2026; check their current terms. Using MetaApi's CopyFactory? See the CopyFactory alternative page.

Comparing hosted copy-trading APIs? Read the CopyFactory alternative and fxapis vs MetaApi.

FAQ

Copy trading questions

How many accounts can one multi-account order reach?

Up to 10 accounts per order on Starter, 100 on Scale and up to 500 on Enterprise. Each account's order counts as one order towards your monthly allowance.

Can each follower trade a different size?

Yes. Give a base volume for the order and a per-account volume in weights for any account that differs — a larger size for a larger balance, a smaller one for a cautious follower. Your code decides the sizing rule.

What happens if some followers' accounts are not online in time?

You choose with the barrier policy. release-ready trades the accounts that are online and skips the rest; all-or-nothing sends nothing unless every account is online; wait holds the order until every account is online, up to a deadline you set.

Do all accounts get the same price?

No, and no system can promise that: each account trades at its own broker, which quotes its own price. What fxapis controls is how close together the orders leave. In our benchmark, 30 ms separated the first and last of 100 accounts, and every order reports its own fill price.

How do I copy trades from a master MT5 account?

Connect the master account too and read its positions and deals through the API, then send a multi-account order to the followers when a new trade appears. Positions refresh about every 15 seconds while an account is online, so for the fastest copy, have your strategy call fxapis directly instead of watching a terminal.

How are closes copied?

Close each follower's position with its own request and an idempotency key made from the master trade and the follower, so a retry can never open an opposite position. Stop losses and take profits sent with the order live at each broker and fire on their own.

Does fxapis provide a ready-made copier with strategies and subscriber settings?

No. fxapis gives you the execution layer — multi-account orders, sizing, results and history — and you build the copier rules and the product around it. If you want a hosted copier with those features built in, a dedicated copy-trading service may suit you better.

> One call → every account

Build your copier on one API call.

Connect a few demo accounts and send your first multi-account order today.