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
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.
- 01
List the accounts
Name every follower account, a base volume, and a volume for any account that differs.POST /v1/execution-waves - 02
Accounts come online
Accounts that are offline are brought online. Your barrier policy decides what happens to any that are late. - 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. - 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}
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 -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"
}'{
"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", … }
]
}
}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.
| Aspect | What happens | Use it when |
|---|---|---|
release-ready | Trade the accounts that are online; skip the rest. | A partial entry beats a late one — most copy trading. |
all-or-nothing | Send nothing unless every account is online. | The strategy only makes sense across the whole set. |
wait | Wait past the start time until every account is online, up to a deadline. | Every account must take part and a short delay is acceptable. |
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.
Unresolved, never guessed
Ordinary orders underneath
Cancel before it goes
An outline, end to end.
- 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 withPOST /v1/accounts/prepare. - 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.
- Size each follower. Work out each account's volume from your own rules and put it in
weights. - Send one multi-account order per master trade, with an idempotency key made from that trade.
- 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.
- Reconcile. Store every account's result. Show followers their fills, and treat any
unresolvedresult 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.
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.
| Aspect | fxapis multi-account orders | Desktop copier | Cloud copier service |
|---|---|---|---|
| What it is | An API to build your own copy-trading product | Software that copies between terminals on one computer | A hosted copier you configure in its dashboard |
| What runs where | MT5 hosted by us; your code anywhere | Every terminal on your Windows PC or VPS | The vendor's cloud |
| Whose product | Yours — your app, your brand, your rules | The vendor's | The vendor's |
| Per-account results in your code | Yes, for every account | Not the aim | Depends on the vendor |
| Pricing shape | Plans by accounts and orders | One-time licence or rental (example) | Per account per month (example, example) |
| Ready-made copier settings | No — you write the rules | Yes | Yes |
Comparing hosted copy-trading APIs? Read the CopyFactory alternative and fxapis vs MetaApi.
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.
Build your copier on one API call.
Connect a few demo accounts and send your first multi-account order today.