Check That Two Tables Tie Out
Description
Section titled “Description”Before you close, you need to know that one set of figures agrees with another: the general ledger with the trial balance, a source system with its load, this month’s closing balances with next month’s opening ones. A reconciliation names the two sides and how their rows match, and Weave answers in one of three ways:
GL Actuals ties out to Trial Balance: all 1,204 accounts agree exactly. Both total 12,345,678.90.
GL Actuals doesn’t tie to Trial Balance: 3 of 1,204 accounts differ, by 4,210.00 in all ignoring sign. Netted, GL Actuals is 3,900.00 higher. The largest is 4000, 3,900.00 apart (GL Actuals 1,000,000.00, Trial Balance 996,100.00).
Weave couldn’t check whether GL Actuals ties out to Trial Balance: neither side has any rows matching this reconciliation’s filters. If that data hasn’t been loaded yet, load it and check again.
Weave never says a reconciliation ties out when it couldn’t read both sides in full. The comparison is a query on your data; no AI is involved.
Make a Reconciliation
Section titled “Make a Reconciliation”Only a project Architect can make, edit or delete a reconciliation, and the project must be unlocked.
- Open the project’s Weave tab and click Reconciliations in its toolbar.
- Click New.
- Give it a Name, and under Rows are called say what one compared row is, in the plural — “accounts”, or “account and cost center pairs”. Weave uses it in every sentence; it says “items” when you leave it blank.
- Under First side and Second side, give each side a Label — the name Weave uses for it, such as “GL Actuals” — and pick its Table. Under Measure, choose how its rows add up — Sum of, Count of, Distinct count of, Smallest, Largest or Average of — and the column.
- Add Filters to either side to read only some of its rows. Separate several values with commas. To compare two periods of one table, pick the same table on both sides and filter each side to its period; don’t add the period column under Match on, or no rows will match.
- Under Match on, add one row per key column. Each row pairs a column of the
first side with a column of the second, so
accountcan matchacct. Give the row a heading, such as “Account”; it heads that column in the list of differences. With no keys, each side is compared as a single figure — its total, for a sum or a count. - Optionally set a Tolerance per row: how far apart a row’s two values can
be and still agree, in the measure’s own units, such as
0.01. It is not a percentage. Leave it at 0 to have every row agree exactly. - Optionally pick a Workflow to put the reconciliation on that workflow’s close readiness checklist. See On the Readiness Checklist.
- Click Save Draft.
Weave refuses a reconciliation it couldn’t compare fairly, and says why:
- The two sides need the same number of keys, up to 8, and different labels, and they can’t be identical apart from their labels.
- Paired key columns must hold the same kind of value — numbers, text, dates,
dates and times, or true/false. Columns of floating-point numbers (types such as
floatordouble) can’t be keys, and a key can’t be a column namedvalueorrows. - A measure must be a number column, unless it counts.
- An average, or a sum, smallest or largest of a column of floating-point numbers, needs a tolerance above 0, because such values rarely agree exactly.
- Every table and column it names must be in the project, and the workflow it is linked to must be in the project too.
- Saving with nothing changed is refused.
The two sides may use different measures, such as a sum on one side and a count on the other. Missing rows count as 0 only when both sides use Sum of or Count of; see Read the Result.
Approval
Section titled “Approval”A reconciliation can mark a workflow ready to close, so it takes two people. What you save is a draft. Another Architect selects it and clicks Approve, and from then on that version is the one readers and the readiness checklist run. You can’t approve a version you were the last to edit, so a project needs a second Architect to put a reconciliation to use. Approval checks the tables again, and it is refused if the draft has changed since the approver read it.
Editing an approved reconciliation saves a new draft, and the approved version stays in use until the new one is approved. When a newer draft is waiting, the result says so. Architects can click Check the Draft to run the working version before it is approved.
Read the Result
Section titled “Read the Result”Select a reconciliation to run it. Click Check Again to run it after the data changes.
When it doesn’t tie, the rows that differ are listed beneath the sentence, the largest first, with up to 50 shown. Each shows its keys, both sides’ values and the first side less the second. A row found on only one side shows no rows for the other side, never 0, and a row whose value is empty shows no value. When more rows differ than are shown, a caption says how many are left out and what they differ by together; add filters to look at fewer rows at a time.
-
Tolerance. A row agrees when its two values are no further apart than the tolerance. Those small differences still add up, so a reconciliation can tie out row by row while its totals differ, and the sentence then says so:
GL Actuals ties out to Trial Balance: every one of the 1,204 accounts is within its 0.01 tolerance. Across all accounts those small differences net to 0.37: GL Actuals totals 12,345,679.27 and Trial Balance 12,345,678.90, so GL Actuals is 0.37 higher.
-
Missing rows. When both sides use Sum of or Count of, a row that only one side has counts as 0 on the other side, so a row at 0 on one side and absent from the other agrees. A side with no rows at all, while the other has some, is always a difference.
-
Other measures. For a distinct count, the smallest, the largest or an average, a row that one side lacks is a difference, and no total is given, since those values don’t add up.
Weave says it couldn’t check when it can’t compare the two sides in full, and gives the reason, including when:
- your role can’t read table data, or can’t see one of the tables a side reads;
- row access lets you see only some of a side’s rows — a tie on part of the data isn’t a tie;
- a table or column the reconciliation uses has been removed or renamed, a key column now holds a different kind of value, or a measure column no longer holds numbers or now needs a tolerance it doesn’t have;
- a lookup in a side now matches more than one row for some entries;
- neither side has any rows matching its filters, or neither has a value for any row;
- the reconciliation hasn’t been approved yet;
- it couldn’t be run just now, such as when the warehouse is slow to answer.
On the Readiness Checklist
Section titled “On the Readiness Checklist”A reconciliation linked to a workflow appears on that workflow’s item in every readiness set that includes the workflow, as the line Reconciliations tie out, with each reconciliation’s own sentence and Open Reconciliation. A reconciliation that doesn’t tie makes the workflow Not ready. One Weave couldn’t check, or that hasn’t been approved, makes it Couldn’t check, unless another line already makes it Not ready.
The checklist runs the approved version of each one, as the person checking it, so its answer reflects the rows that person can see. It runs up to 25 per checklist and gives them a minute together; any beyond that say so instead of running, and count as Couldn’t check. When Weave checks a set ahead of its due time, it runs them as the set’s owner, and reads tables only if the owner could when they last saved the set.
Who Can See What
Section titled “Who Can See What”Anyone who can open the project’s Weave tab can list its approved reconciliations. Running one also needs a role that can read table data. A reader who isn’t an Architect sees each reconciliation’s name and side labels, never its tables, columns or filters, and the reasons Weave gives them name only the sides.
Through the API
Section titled “Through the API”Reconciliations are available through the platform API:
GET /analyze/weave/reconciliations lists a project’s reconciliations, and
GET, POST, PUT and DELETE on /analyze/weave/reconciliation read, create,
replace and delete one. POST /analyze/weave/reconciliation/approve approves a
draft: send digest, set to the content_digest you read with it, which
identifies exactly the version you reviewed. GET /analyze/weave/reconciliation/run runs one.
A side can also look up other tables — a join from the side’s table to a lookup table, which must find at most one row for each of the side’s rows. Lookups and the Weighted average of measure, which needs a tolerance above 0 like an average, can be set only through the API; the form keeps them when you edit.
AI agents connected through MCP can find and run reconciliations with
reconciliation_find and reconciliation_run. An Architect connected with their
own sign-in can also save a draft with reconciliation_upsert; an AI acting on
someone’s behalf, such as an agent session, Microsoft 365 Copilot or the in-app
chat, can’t. No MCP tool approves one.