Reconciliation
Reconciliation is the process of matching broker executions to UTM trades. It ensures the positions and P&L UTM tracks are accurate against what your broker actually has on record.
When You Need to Reconcile
Reconciliation is most commonly needed in two situations:
- You connected a broker that already has open positions. UTM has no record of how those positions were entered, so you create the matching trade records through the Resolve flow on the reconciliation page.
- An execution was missed. If UTM missed a fill (e.g., due to a connectivity gap), you can add it manually to keep records in sync.
The Reconcile Shell
Navigate to Reconcile in the sidebar. The shell answers one question at a glance: does your book match the broker? It has three parts.
Account filter pills
A row of pills sits at the top: All accounts plus one pill per account in your current trading mode. Each pill is badged with how many items in that account need attention, and All accounts shows the sum. By default the shell shows every account combined (the view you want roughly all of the time); select a single pill when you want to narrow to one book. The selection drives both the queue and the agreement banner.
Agreement banner
Below the pills, the agreement banner states the numbers for the selected scope: how many positions the broker holds, how many UTM tracks, and how many need attention. When nothing needs attention it reads as a calm "everything agrees". The question-mark button explains what each number means.
The three tabs
| Tab | What it holds |
|---|---|
| Needs attention | The combined queue of items where the broker and UTM disagree, across every account, each row tagged with the account it belongs to and described in plain language. Open a row to drill into that account's detail, where you match, create, or set the item aside. |
| Reconciled | The searchable history of reconciled trades. See The Reconciled history below. |
| Not in a position | Historical remnants: broker fills on a symbol that already agrees with the broker, so they cannot be part of any position you hold now. Import each as history or set it aside. See Remnants: fills not in a position below. |
| Set aside | Items you have set aside (marked as expected or left unlinked), together with the routine lifecycle items UTM tidies automatically. Each has a Bring back to attention button, so nothing is ever swept away for good. See Routine items set aside automatically below. |
Opening an item from the queue takes you to its two-sided detail view. The detail states the problem in one plain-language sentence (no enum codes), then lays broker truth on the left against UTM's records on the right, with the gap highlighted. The view it shows depends on the condition:
- Not tracked in UTM. The broker position sits on the left and a "No trade in UTM tracks this position" panel on the right.
- Quantity differs. Both sides are shown with the differing figure highlighted, and the shortfall called out. Because UTM's quantity is always the sum of its own fills (rebuilt automatically on every fill change), a difference here can only mean the broker has a fill, or an external change, UTM never recorded. There is no separate "fills do not add up" category: internal drift is impossible, so it is never shown as its own condition.
- Direction or average-price mismatch. Both sides are shown with the differing figure highlighted.
- Unlinked fills (orphan fills). The unlinked broker fills sit on the left. On the right, UTM shows a suggested match when it has found one (confirm it or pick another), or the candidate trades when it cannot confidently match, in which case it leaves the choice to you.
Each detail also carries an inline "Show the full trail" disclosure, collapsed by default, that expands to the entity chain UTM holds for the symbol: the orders and the fills, with each fill tagged linked or unlinked. The two columns stack on a phone.
Acting from the detail view
Below the two-sided comparison, the detail view offers one guided primary action for the condition you are looking at, with secondaries alongside, so no condition dead-ends. The primary is whichever fix is obviously right for the condition:
- Not tracked in UTM (broker holds a position UTM does not track). When real broker fills exist for the symbol, the primary is Create the trade from these fills, which builds the trade from the real fills. When there are no fills anywhere, the primary is Create the trade in UTM: this opens an allocator where you create one trade for the whole position, or split it across strategies (quantity, strategy, opened-at, and notes per allocation, with a live allocated/remaining check). With no real fill to source the entry from, UTM records a synthetic opening at the broker average and flags it as an estimate wherever the entry is shown, so you never mistake it for a confirmed fill. Re-fetch or add the real fill later if it becomes available. Match to an existing trade sits alongside when there are fills and a candidate trade.
- No longer at broker (UTM still tracks a position the broker has closed out). The primary is Mark this trade closed. Enter the price the broker closed the position at; UTM records a synthetic closing fill, recalculates realised P&L, marks the trade reconciled, and lands it on the Reconciled tab where its Undo reverses it.
- Quantity differs. When the broker holds more than UTM, a fill is missing: the primary is Re-fetch the missing fill from the broker when the broker can supply it (Alpaca), falling back to Add the missing fill manually as a synthetic top-up at the broker average for the missing quantity when it cannot (TradeStation, which UTM builds executions for from its orders). When the broker holds fewer, a closing fill is missing: the primary is Add the missing closing fill. The trade re-derives from its fills either way.
- Direction differs (side mismatch). The primary is Fix the fill when a single fill carries the wrong side; the secondary Flip the trade side is for when the whole trade is recorded the wrong way (it moves no fills and recalculates P&L for the new direction).
- Average price differs (price mismatch). The primary is Fix the fill when a fill's price is wrong; the secondary Override the entry price is a last resort for when the fill is unavailable (the quantity still comes from the fills and does not change). Both are written to the audit log and ask for a short reason.
- Unlinked fills (orphan fills). When UTM has found a confident match it surfaces a Suggested match card you confirm with one click. Otherwise the primary is Create a trade from selected fills: each orphan fill is shown with a checkbox (all ticked by default), UTM derives the side and quantity from the ticked fills (server-computed, not guessed), and unticked fills stay in the queue so you can carve a second trade out afterwards. A single real fill is never split across trades. Match to an existing trade opens a picker with a quantity-fit hint per candidate.
- One dismissal, matched to the condition, each changing no data and reversible from the Set aside tab:
- Do not import for an untracked broker position. Leaves the broker position out of UTM and stops the alert. Use it when the position is not yours to track: a trade placed directly in the broker, or a paper-account leftover.
- Leave unlinked for an orphan fill. Leaves the fill attached to no trade.
- Mark as expected for a genuine, external quantity difference. Use it when the broker differs for a known reason: a corporate action (a split or merger) the broker applied, a trade placed directly in the broker UI, or a paper-account reset.
Every data-changing action (match, create, add fill, re-fetch, import a position, close a missing trade, fix a fill, flip the side, or override the entry price) passes through one shared before/after confirm dialog. The dialog leads with a plain-language consequence sentence that says what will happen and why; the exact numeric before/after sits behind a "Show the exact field changes" disclosure, so the meaning comes first and the raw deltas are there when you want them. It carries the trust line: nothing changes until you confirm, and you can undo it later from the Reconciled tab. The preview is computed on the server, so the "after" you see is precisely what gets written. Dismissals change no data, so they skip the dialog.
On confirm, you return to the Needs attention queue so you can keep clearing it; check the Reconciled tab afterwards to see what you matched, created, or added a fill to. For the rare case the guided actions do not cover, the Full trail and advanced repair disclosure below holds every power action on this same surface; there is no longer a separate repair tool.
The old Reconciliation menu item, the /reconciliation route, and the old per-account repair URL all now redirect to the shell.
Full trail and advanced repair
Below the guided actions, a collapsed-by-default Full trail and advanced repair disclosure holds every power action that used to live on the separate repair tool, on this one surface. The default view stays calm; the power is one click away when you need it. There is deliberately no "rebuild aggregates" control: any fill change re-derives the trade's quantity, average entry, average exit, and P&L automatically, so the numbers can never disagree with the fills.
The disclosure has three parts:
- Fills (broker truth). Every broker fill for the symbol, each with its own actions. A fill already attached to a trade offers Re-match (opens the match picker so you can move it to the correct trade) and Unlink (detaches it; the trade rebuilds from its remaining fills). An unlinked fill offers Match to a trade (the same picker) and Leave unlinked.
- The trade or trades. Each trade carries the per-trade repairs: Add fill, Override entry price, Fix a fill, Re-open, Change side, Acknowledge (when the symbol has a position discrepancy), and Delete trade, plus the Strategy select to reassign it. Override, Fix, Re-open, and Acknowledge are written to the audit log and ask for a short reason (at least ten characters) in the confirm dialog.
- Residue trades. Lifecycle leftovers (an expired trade, or a pre-allocated trade that never filled) are listed separately with their date and originating order or signal, so a bare "LONG 0 @ $0.00, expired" row becomes judgeable and you can decide whether it is still relevant before you Re-open or Delete it.
Every data-changing action here passes through the same before/after confirm dialog as the guided actions, and each is undoable from the Reconciled tab.
The match picker
Both Match to an existing trade (from the guided actions) and Re-match / Match to a trade (from the advanced disclosure) open the same picker. It shows the fill or fills being matched, then a searchable list of your same-symbol trades. Each candidate carries:
- a quantity-fit hint (fits exactly, over-fills, or quantity differs) worked out from the fill quantity against the trade, with the current and resulting fill quantity shown;
- the suggested-match score when UTM has found one for that trade, reusing the same scoring as the suggested-match card; and
- a Show this trade's trail disclosure so you can inspect the trade's orders and fills before you link.
Pick a trade and confirm; the match passes through the before/after confirm dialog and is undoable from the Reconciled tab. When you re-match a fill, the trade it currently sits on is left out of the candidate list, so you cannot accidentally re-match a fill onto its own trade.
Routine items set aside automatically
Some trade lifecycle leaves behind housekeeping debris that is not real reconciliation work: a trade that expired before any order reached the broker, or a pre-allocated trade that a newer signal replaced before any fill landed. UTM keeps these out of the Needs attention queue so you are not asked to action something that was never live.
This is a quiet, fully reversible read filter, not a deletion: nothing is removed. When any have been set aside, a small note sits above the queue, for example "3 routine items were set aside automatically", with a View link that opens the Set aside tab. There each item is listed in plain language ("Expired, no fills" or "Replaced before any fill"), tagged with its account, with a Bring back to attention button that returns it to the queue without changing any position. Permanent removal is never an automatic side effect of the reconcile view; it stays a separate, operator-run maintenance task.
Remnants: fills not in a position
After you reconcile your current positions, the broker still holds fills that no longer back anything UTM tracks: closed round-trips, partial-close leftovers, and activity from before you connected UTM. These are remnants, and they live on the Not in a position tab, with a count in the reconciliation alert alongside the rest of your needs-attention work.
A remnant is an unlinked broker fill on a symbol that already agrees with the broker (the symbol has no outstanding position gap). While a symbol still has a gap, its unlinked fills belong to the "create the trade from these fills" flow for the live position; once the symbol is reconciled, any fill left over cannot be part of the current position, so UTM treats it as history. UTM classifies each remnant from the net of its own fills, as a default you can always override:
- Closed round-trip. The buys and sells net to zero. UTM shows the realised P&L (sell proceeds minus buy cost, correct for both long and short).
- Unclosed opener. A leftover opener with no matching live position. There is no realised P&L to show.
Each remnant offers two actions:
- Import as history. Creates the historical trade, usually closed, with its realised P&L. The shared before/after confirm dialog shows the realised P&L and states Affects current position: No, so importing it never changes what you hold now. Pick the strategy it belongs to, the same as the other import flows. The trade lands on the Reconciled tab with an Undo. When the original fills are no longer returnable from the broker (older fills outside Alpaca's window, and every TradeStation case, since TradeStation has no activities feed), UTM imports a summary instead and flags the trade as an estimate, so you never mistake it for confirmed fills.
- Ignore. Sets the remnant aside without importing it. Reversible from the Set aside tab.
The per-account start date. A banner on the tab shows the account's UTM start date and links to Settings -> Accounts where you set it. Anything before that date is pre-UTM history; the banner offers a one-click Ignore everything before the start date that sets all those fills aside in bulk. Using it is optional: per-item handling is always available, and pre-start-date remnants are de-emphasised and can be shown or hidden. Clearing the date brings the older fills back.
Remnants are the single home for this work. The old Import Review tab on the Trades page has been removed; there is no second place to clear leftover fills.
The Reconciled history
The Reconciled tab is the history of every trade you have reconciled, tucked out of the way of the needs-attention queue. It honours the account filter pills and the live or paper mode, so it shows the same scope as the rest of the shell.
- Search. Type a symbol (or part of one) in the search box to narrow the list. Filtering by anything else is not offered yet; search covers it.
- Sort. Click any column header to sort by it, and click the same header again to flip the direction. The arrow on the active column shows which way it is sorted.
- Open a trade. Each symbol is a link to that trade's detail page, so you can inspect the underlying executions and history.
- Undo. Each row has an Undo button to reverse the reconciliation you made by mistake. It opens the same before/after confirm dialog as every other data-changing action, previewing exactly what will change, and the reversal matches how the trade was reconciled. For a match or create, the trade's broker fills return to Needs attention so you can re-match or recreate them, and any synthetic placeholder fills stay attached. For a manually added fill, that synthetic fill is removed instead and the real broker fills stay attached, so the prior gap reappears. Either way the trade is reopened (unmarked as reconciled), and nothing changes until you confirm.
- Paging. The list is paged; use the page-size selector and the page controls at the bottom to move through a long history.
Automatic Reconciliation
UTM reconciles account positions automatically after every background sync. The results are stored and visible on each trade via the sync status field. You do not need to trigger this manually. The process:
- Pulls current positions from the broker
- Calculates UTM's expected positions from open trades
- Compares symbol by symbol
- Records any discrepancies for review
Discrepancies are resolved automatically when a subsequent sync shows the positions match again.
Reconciliation Statuses
| Status | Meaning |
|---|---|
| Reconciled | Broker data and UTM records match |
| Unreconciled | Gap exists between broker and UTM data |
Use the filter at the top to switch between All, Reconciled, and Unreconciled views.
Discrepancy Types
When automatic reconciliation detects a mismatch, it records the type of discrepancy:
| Type | Code | Description | Default Severity |
|---|---|---|---|
| Missing in UTM | MISSING_IN_UTM | Broker has a position but UTM has no matching open trade. | HIGH |
| Missing in broker | MISSING_IN_BROKER | UTM has an open trade but the broker shows no position. | HIGH |
| Quantity mismatch | QUANTITY_MISMATCH | Both sides show a position but the quantities differ. | HIGH / MEDIUM / LOW (based on percentage difference) |
| Side mismatch | SIDE_MISMATCH | Both sides show a position but the direction differs (long vs short). | HIGH |
| Price mismatch | PRICE_MISMATCH | Quantities match but the average entry price differs significantly. | MEDIUM / LOW |
| Execution aggregate mismatch | EXECUTION_AGGREGATE_MISMATCH | A trade's entryQuantity or closedQuantity disagrees with the sum of its linked executions. With the auto-rebuild invariant a trade can no longer drift from its own fills, so this is no longer surfaced as its own user-facing category; any residual signal is presented as Quantity differs. | HIGH |
Discrepancies appear in the trade sync status as Discrepancy. Review the Reconciliation page to investigate and resolve them.
Resolving a Missing-in-UTM Discrepancy
When the broker shows a position UTM does not know about, click Resolve on the discrepancy. The wizard picks the right primitive for you:
- Real broker executions exist for the symbol. The wizard defaults to Link N existing executions. It creates a trade backed by the real broker fills, with no synthetic row. You only need to pick a strategy.
- No broker executions exist for the symbol. The wizard offers the Create synthetic position flow, which builds a trade from the broker average and quantity. Use this when the broker position pre-dates UTM and there is nothing real to link.
The second path is also available as Create synthetic position (advanced) when broker executions exist, but you should only fall back to it if those executions are wrong (for example, sandbox test fills).
On Alpaca and TradeStation, UTM blocks the import if you already hold a non-terminal trade on the opposite side for the same (account, symbol). The broker nets long and short into one position, so two opposing UTM trade rows would silently desync from the broker. The wizard surfaces the error with the conflicting trade id. Close the existing trade to flat first, then re-run Resolve. Brokers that support hedging (e.g. Interactive Brokers) are unaffected.
Adding Pre-Existing Positions
If you connected a broker that already has open positions, use the Resolve flow for each symbol that shows a Missing in UTM discrepancy. The wizard picks the right primitive automatically:
- Real broker executions exist. The wizard links them to a new trade. Pick a strategy and confirm.
- No broker executions exist. The wizard offers the Create synthetic position flow, which builds a trade from the broker average and quantity.
See Resolving a Missing-in-UTM Discrepancy above for full details.
Accept as Final
After the Resolve wizard creates a trade backed by synthetic data, the reconcile button changes to Accept as Final (shown in yellow).
Clicking it means: "I acknowledge this trade is based on manually entered data, and I accept it as accurate."
This marks the trade as reconciled and allows P&L tracking to proceed.
The standard Reconcile button (green) is used when all executions came directly from the broker. Accept as Final (yellow) signals that at least one execution was entered manually, so you are explicitly accepting the data rather than it being verified against broker records.
Execution origin badges
Every execution row on a trade carries an origin badge so you can tell at a glance where the fill came from:
- Broker. A real fill reported by the broker. It cannot be deleted; detach it with Unlink if it is attached to the wrong trade.
- System. A synthetic fill UTM generated itself, either from the Resolve import flow or from the TradeStation execution bridge that backfills positions for brokers that do not report per-fill data. It cannot be deleted, because it is load-bearing: removing it would just regenerate it on the next sync, or leave a transient gap in the position. Correct it by fixing the underlying broker data and letting the next sync rebuild it.
- Manual. A fill you added by hand to patch a gap. Only Manual fills offer a Delete action. Deleting one soft-deletes it (the row is kept for audit) and recomputes the trade from whatever remains.
Reconciling Broker Executions
When UTM receives a real execution from the broker but has no matching trade, it appears as an unreconciled execution. You can:
- Link to existing trade: Attach the execution to a trade you already have open
- Create trade from execution: Let UTM build a new trade record from the execution data
- Mark as ignored: Exclude the execution if it is not relevant (e.g., a duplicate or test fill)
Ignored executions are permanently excluded from reconciliation. They will not appear as discrepancies in future syncs. Use this for fills that are known to be irrelevant, such as partial fills from cancelled orders or test fills from broker sandbox environments.
Showing and re-matching linked fills
Once a broker fill is attached to a trade, it normally leaves the broker-executions view and is only visible nested under its trade. That is fine until a fill ends up on the wrong trade, because there was previously no way to pull it back out from the reconcile view.
Each symbol now carries a Show linked fills disclosure under its broker executions, collapsed by default so the unlinked (pending-review) fills stay the focus. Expand it to see every broker fill already attached to one of the symbol's trades, each tagged with the trade it currently sits on. Every linked fill offers two actions:
- Re-match: opens the same match picker used elsewhere with the fill pre-selected, so you can move it to the correct trade. UTM recalculates both the trade the fill left and the trade it moved to, so neither trade is left counting a fill it no longer owns.
- Unlink: detaches the fill from its trade.
Only real broker fills appear here. Synthetic System and Manual fills are managed from the trade itself, not re-matched from this list.
Suggested matches
When a pending-review execution looks like it belongs to a trade UTM already has, the reconciliation page surfaces a Suggested match card directly under the execution. UTM builds the suggestion by scoring your open and recently closed trades for the same account and symbol on two things:
- Quantity proximity: how close the execution quantity is to the trade's open or remaining quantity.
- Time proximity: how close the execution time is to when the trade opened or closed.
The card shows the candidate trade, a match percentage, and the criteria behind it (how far apart the quantities and times were). It offers three actions:
- Accept: links the execution to the suggested trade. This is the same link you would make by hand, so the trade's totals and reconciliation status update straight away. The link records that it came from an accepted suggestion, along with the score and criteria, in the audit trail.
- Edit: opens the manual-link dialog pre-filled with the suggested trade selected, so you can change the target before linking.
- Reject: hides the suggestion for the rest of the session. The execution stays in pending review and the normal manual-link options remain available. The suggestion returns next session if it still qualifies.
UTM never links anything on its own. A suggestion is always a proposal you confirm. When no trade clears the confidence bar, no card appears and the execution behaves exactly as before, with the manual-link options only.
The matcher works the same way for every broker, including TradeStation. An operator can tune the quantity tolerance, the time window, the minimum score, and an overall on/off switch from the admin settings. With the feature switched off, orphan executions show the manual-link options only.
Moving the UTM start date earlier
When you first connect a broker, UTM auto-ignores fills that occurred before your UTM start date so they do not crowd the reconciliation queue. If you later move the start date earlier, some of those fills now fall inside the active window and may need reconciling.
The reconciliation page surfaces this with a banner at the top of the account view:
N previously ignored executions now fall within your active window. They may need reconciling.
The banner offers two actions:
- Review: expands the Ignored accordion under each affected symbol and scrolls you to the first match, so you can decide what to do row by row.
- Restore all in window: opens a confirmation dialog and, on confirm, flips every orphan ignored execution at or after the start date back to pending review in one go. Executions linked to a trade are left alone.
Dismissing the banner with the X hides it for the rest of the browser session. It returns next session, or when another account has its own batch of in-window ignored executions.
Executions left behind by a deleted trade
When you delete a trade, UTM does not delete the broker executions that were attached to it. Each execution is detached from the trade and moved back to pending review, so the underlying broker data is never lost.
These orphaned executions always remain visible on the reconciliation page, even when they occurred before your UTM start date or fall outside the default rolling window. This is deliberate: a deleted trade whose fills predate your start date would otherwise leave no trace, making its data appear to have disappeared. You do not need to switch on Show all to see them. Re-link them to a trade, build a new trade from them, or mark them as ignored, just like any other pending-review execution.
The rolling window still applies to ignored executions and to the bulk of historical fills, so large accounts stay fast to load.
Marking a Trade as Reconciled
Once all executions are linked and data looks correct, click Reconcile. The trade moves to the Reconciled view and is excluded from future unreconciled counts.
Common Scenarios
Connecting a Broker Mid-Session
If you connect a broker while positions are open:
- Go to Reconciliation, select the account
- For each symbol showing Missing in UTM: click Resolve and follow the wizard
- From this point forward, new signals will create real executions that reconcile automatically
Missed Fill
If an order filled at the broker but UTM did not record the execution:
- Find the trade in Reconciliation
- Click Add Synthetic Execution with the fill details
- Click Accept as Final
Duplicate Execution
If an execution appears twice:
- Find the duplicate in the unreconciled list
- Use the actions menu to unlink or delete it
- Re-reconcile the trade
Flagging and Repairing a Trade
When a single trade has wrong data, you no longer need an operator to edit it for you. The trade detail page flags the problem; it does not repair it. Every repair lives on one surface, the per-symbol reconcile detail page, so there is a single place to fix things.
Any trade that needs attention shows a yellow Needs repair badge on the reconciliation page (next to its status); click it to jump straight to that symbol's reconcile detail. You can also open a trade from the Trades list: when a trade has a reconciliation issue, its detail page shows an amber Reconciliation issue banner at the top with a Resolve in Reconcile button that opens the same reconcile detail. A healthy trade shows no banner.
On the reconcile detail page, each anomaly explains what was found and offers one or more repairs. Every repair opens a confirmation dialog, shows the change it will make, and requires a short reason (at least 10 characters) that is written to the audit log. Nothing is changed until you confirm.
What UTM detects
| Anomaly | What it means | Repair offered |
|---|---|---|
| Aggregate drift | The trade's stored quantities disagree with the sum of its linked executions. This self-heals automatically the next time the trade's fills change, so no manual action is offered. | None (auto-heals) |
| Missing entry executions | The trade has no entry-side fills, but a filled order for the same symbol is not linked to any trade. | Link order, or Override entry price |
| Entry price out of range | The recorded average entry price differs from the real fill price by more than 5x. | Override entry price |
| Wrong terminal status | The trade is marked failed or expired but has real entry executions. | Re-open trade |
| Permanent position discrepancy | Drift on a delisted ticker or a symbol the broker no longer reports. This will never auto-resolve. | Acknowledge |
| Missing in UTM | The broker holds a position UTM has no open trade for. | Acknowledge |
| Implausible execution price | An execution carries a wrong price (or quantity, or time) the trade derived its totals from. | Fix execution |
The repair actions
- Override entry price sets the average entry price directly. Use it when the broker stored a wrong per-share price and there are no trustworthy executions to rebuild from. UTM refuses a price more than 10x the last market price, and refuses the override entirely when the linked executions already agree with the price you entered (the totals are already derived from those fills automatically).
- Link order attaches a filled, unlinked, same-symbol order and its fills to the trade, then rebuilds the totals.
- Re-open trade flips a failed or expired trade with real entry fills back to open so the position is tracked again.
- Acknowledge suppresses a permanent discrepancy for the symbol so it stops surfacing. Use it for corporate action residuals and delisted tickers.
- Fix execution corrects a single execution that carries a wrong price, quantity, or time, then rebuilds the trade's totals from the corrected fill. Use it when the recorded average looks right but a fill behind it is wrong (for example a cost-basis total stored as a per-share price). Because it edits the source fill, a later sync re-derives the corrected totals rather than undoing the fix. UTM refuses a price more than 10x the last market price.
If a rebuild or re-open would leave UTM tracking more open shares than the broker holds for that symbol and side, the repair is refused with the message "This repair would exceed the broker position. Resolve the conflicting open trade first." Close or fix the conflicting open trade, then retry.
Every repair is recorded in the trade's audit timeline with the reason you supplied, so the history of who changed what and why stays on the trade.
Troubleshooting
"Accept as Final" Not Appearing
The button only appears when a trade has at least one synthetic execution. If you see the standard Reconcile button instead, all executions came from the broker.
Trade P&L Looks Wrong After Reconciliation
Check that the synthetic execution price and quantity are correct. You can edit a synthetic execution from the trade detail view.
Position Shows as Unreconciled After Accepting
Refresh the page. Reconciliation status updates immediately but the filter may need a refresh to reflect the change.