The close pack workbook
Export pack in a month's drawer on Accounting → Close produces one spreadsheet workbook: a cover sheet describing the month, its sign-off and its checklist, then one sheet for each of the nine month-end reports. This page describes the file itself — what it is called, what is on each sheet, and how to read the few lines at the top of every report sheet. For the columns inside those sheets, see close pack: columns on every report sheet.
To produce a pack in the first place, see export the close pack.
What the downloaded file is
- One spreadsheet workbook, in
.xlsxformat. It opens in Excel, Numbers and Google Sheets. There is no PDF version, no CSV version, and no way to download a single report on its own — if a client wants only the balance sheet, copy that sheet out of the workbook yourself. - The name carries the month and the moment it was built, in the form
close-pack-<month>-<date and time>.xlsx. A June 2026 pack built on the afternoon of 12 September 2026 downloads asclose-pack-2026-06-2026-09-12-13-57-23.xlsx. The first date is the month the pack describes, written as a year and a month number; the rest is when the file was produced, down to the second. - Every export writes its own file. Exporting the same month twice gives you two workbooks, and the second never overwrites the first. That is deliberate: a pack you sent to a client stays exactly as you sent it.
The file name tells you only which month the pack covers and when it was built. Everything else — the month's status, who signed it off and what the checklist said — is on the cover sheet inside.
The workbook has no formatting at all
Treat the pack as data to build on, not as a finished document to print. Nothing in it is styled:
| What you might expect | What you get |
|---|---|
| Column widths sized to the content | Default widths — long account names sit under the next cell until you widen them |
| A frozen or bold header row | A plain row of text like any other |
| Currency formatting | Plain numbers rounded to two decimals: 1234.5, never $1,234.50 |
| Thousands separators | None. A round amount reads 1000 |
| Whole-number counts | Whole numbers, with no decimals |
| Yes/no fields | TRUE where the answer is yes — and an empty cell where it is no. The word FALSE appears nowhere in the workbook |
| Zeros | An empty cell. A balance of nil is written as nothing at all |
| Date cells you can sort chronologically | Timestamps written as text |
Three consequences worth planning for:
- An empty cell is not the same as missing data. Zero and "no" both come out
blank, so an amount column can look half-filled when in fact every figure is
present and the gaps are nil. This is the one difference that catches people out
when they compare a sheet against the same report on screen, where the same cells
read
0.00andfalse. If you sum a column it makes no difference; if you count filled cells, or filter onFALSE, it does. - Sorting by a timestamp sorts it as text. The format used (year first, then month, day and time) does sort correctly by luck, but a spreadsheet still treats it as a word — convert the column if you need real date arithmetic.
- Totals are given as values, not formulas. Nothing recalculates if you delete a row. Every figure in the pack is the figure SKU.io produced when the export ran.
The ten sheets, in order
| # | Sheet | What it holds |
|---|---|---|
| 1 | Cover | The month, its state, the sign-off and revision, and the close checklist |
| 2 | Income Statement | The month's revenue, direct costs and expenses, one row per account |
| 3 | Balance Sheet | Assets, liabilities and equity as at the last day of the month |
| 4 | Trial Balance | Opening balance, the month's debits and credits, and the closing balance |
| 5 | Inventory Valuation | Stock value as at the last day of the month, one row per warehouse |
| 6 | COGS | Quantities and cost of goods sold for the month, one row per sales channel |
| 7 | GINR Balance | Goods invoiced not received, as at the last day of the month |
| 8 | Reconciliation Summary | Your totals against the provider's, one row per accounting connection |
| 9 | Trial Balance Reconciliation | Your account balances against the provider's, account by account |
| 10 | Sync Category Reconciliation | Each transaction category's total, split by what reached the provider |
Three rules hold every time:
- All ten sheets are always present. A report with nothing to show still gets its sheet, carrying its heading block, its note and its (nil) totals, but no table. You never have to work out whether a sheet is missing or the month is empty.
- The order never changes, and it does not depend on which report you had open on screen, or which ones you looked at before exporting.
- Each sheet is named after its report card on the Report pack — the same words, in the same case.
Spreadsheets cap a sheet name at 31 characters and reject \ / : * ? [
and ], so a name longer than that is trimmed and any of those characters becomes a
hyphen. None of today's ten names is affected — the two longest, Trial Balance
Reconciliation and Sync Category Reconciliation, are 28 characters each — but the
rule is what governs if a report is ever renamed.
The Cover sheet
The cover is a list of labels in the first cell of each row and their values in the second. Reading down:
| Row | Value |
|---|---|
| Month-End Close Pack | The title, on its own |
| Period | The month in words, for example June 2026 |
| Status | The month's state in the same words the screen uses: Open, In Review, Closing…, Closed, Closed – restated, Hard-locked or Locked, not closed |
| Generated at | When this workbook was built |
| Prepared by | The person who prepared the month: whoever started its close, or took over preparation. Not recorded for a month started before SKU.io recorded preparers, and Former user for someone who has since left |
| Prepared at | When they became the preparer |
A closed month then adds its sign-off. That includes a Closed – restated or Hard-locked month. The first rows describe the month's first close:
| Row | Value |
|---|---|
| Closed at | When the first close finished |
| Closed by | The name of the person who closed it |
| Reviewed by | The closer's name when someone other than the preparer reviewed and closed the month. Nobody independent when nobody else reviewed it, and Not recorded for a month closed before SKU.io recorded reviews |
| Review status | Independently reviewed, Self-reviewed, with a recorded reason or No independent review (see what gets recorded) |
| Self-review reason | Only when the month was self-reviewed: the reason the only accounting user gave for closing without a second reviewer |
| Notes | The close notes typed into the close dialog, or blank if none were typed |
| Revision exported | The number of the sign-off revision the report sheets carry. 1 after a single close. It's higher after a re-sign-off, a close after a reopen, or a balance refresh carried from an earlier month. |
When the latest sign-off by a person was a re-sign-off, five more rows follow, so the cover never pairs new figures with only the first close's names:
| Row | Value |
|---|---|
| Latest sign-off | Re-sign-off (revision 2), with the revision number |
| Re-signed by | The name of the person who re-signed it |
| Re-signed at | When they re-signed it |
| Re-sign-off reason | The reason they typed in the re-sign-off dialog |
| Re-sign-off notes | Their notes, only when they typed some |
A month that is not closed carries a single warning row in place of those rows:
PRELIMINARY — Period is not closed — figures may still change.
That one row is the difference between a draft pack and the month's numbers of record. Anyone reading the workbook without the story behind it should be able to tell which they are holding from the cover alone. See when a closed month changes.
The overrides block
When the month has overrides, a blank row and an Overrides heading follow, with one row per override under the columns Check, Reason, Applied by and Recorded at. Applied by is the person who recorded the override, which under independent review is the preparer rather than the person who closed.
The checklist block
Below a blank row comes a Checklist heading and a table of every item on the month's close checklist, in the order they appear on screen:
| Column | What it holds |
|---|---|
| Item | The check's name, exactly as the checklist shows it |
| Status | One word — see the table below |
| Acknowledged | Yes when the item was acknowledged at close, otherwise blank |
| Completed by | The name of the person who ticked a manual item |
| Completed at | When they ticked it |
| Status | Means |
|---|---|
| Pass | The check ran and found nothing to fix |
| Warn | The check found something, but it does not stop a close |
| Fail | A blocking check found something. Some blocking checks must be fixed before the month can close. Others can be closed over with a written reason and the Accounting → Period Override permission — see which blocking checks can be closed over |
| Pending | The check has not been run for this month yet |
| Skipped | The check does not apply to this month |
| Open | A manual item nobody has ticked |
| Done | A manual item somebody ticked |
Five things about this block catch people out:
- The five categories are not in the workbook. On screen the checklist is grouped under Data completeness, Sync & reconciliation, Review, Sign-off and Custom. The workbook lists the items in that same order but writes no category headings, so the groups are implied rather than labelled.
- Neither is the severity chip. The Blocking chip beside a check on screen has no column of its own here — a blocking check that failed shows as Fail, and a warning-level one shows as Warn.
- Closing over a check is not the same as acknowledging one. A Warn or an
unticked manual item that somebody ticked in the close dialog reads
Yesunder Acknowledged. A blocking check closed over with a written reason, such as Inventory debt settled, stays Fail with Acknowledged blank, because a blocking failure is never acknowledged. It's overridden, and the reason is in the Overrides block above. Don't read that blank as nobody having signed for it. - Completed by and Completed at are only ever filled for manual items. Automated checks leave both blank however they came out, because nobody ticked them. Unticking a manual item clears both again.
- A month nobody has started a close on has no checklist block at all. Exporting such a month records the month so the pack has something to describe, but it does not start the close, so no checklist has been saved yet — the cover ends after the PRELIMINARY row. The live preview you can see on screen is not carried into the file. To get the checklist into the pack, start the close first.
The heading block on every report sheet
Each of the nine report sheets opens with a short block before any data. The first two rows are always there; the rest appear only when they apply.
- The report name, with
As at closeorLivebeside it. This is the single most important cell in the pack. - Generated at, with the time the figures were produced.
- A warning row, when one applies —
PRELIMINARY,SNAPSHOT MISSING, orREPORT UNAVAILABLE. - A
Noterow, when the report has an explanation for being empty. - A blank spacer row.
Then the table: a row of column headings, one row per line of the report, a blank
row, the word Totals, and the report's headline figures as label-and-value pairs.
As at close versus Live
Explain this one line before you hand a pack to anybody.
- As at close means the figure comes from the month's latest sign-off revision, the one named in Revision exported on the cover. It is the month's number of record. Re-exporting the same month gives you the same figure until the month is signed off again.
- Live means the figure was calculated when the export ran. It is honest about the books as they stood at that instant, and it can be different the next time you export.
Every sheet in a pack for an open month reads Live. Every sheet in a pack for a cleanly closed month reads As at close. A mixture is possible and is worth looking into — it means a closed month is missing one of its saved reports.
Closing a month doesn't freeze it, so its live books can move after sign-off. The pack always carries the signed figures, not the live ones:
- After a re-sign-off, the sheets carry the new revision's figures, and the cover's Revision exported and Latest sign-off rows say so. The earlier revision is still kept, and you can open it from the month's History or the Report pack picker.
- A Closed – restated month exports its last signed figures, not the restated live ones. The cover's Status reads Closed – restated, which is your signal that the books have moved since. Check the month's drawer, and re-sign it off first if you want the pack to carry the current figures.
A reopened month is back to Live on every sheet, and its cover carries the PRELIMINARY row again. The earlier sign-off's report pack is kept in History, and the report cards on screen mark it Superseded, but the pack doesn't export it. What you get is the books as they stand now. Closing the month again saves a new revision and makes the pack the month's numbers of record again.
The warning rows
| Row | Text in the second cell | What it tells you |
|---|---|---|
| PRELIMINARY | Period is not closed — figures may still change. | The month is still open or in review. Draft figures. |
| SNAPSHOT MISSING | No saved close snapshot — these are live figures, NOT the authoritative close numbers. | The month is closed but this report was not saved with it. The numbers below are a fresh calculation, not what was signed off. |
| REPORT UNAVAILABLE | The reason SKU.io recorded at the time. | This report could not be produced, so the sheet holds no figures. |
SNAPSHOT MISSING is an integrity gap, not a formatting quirk — you can no longer prove what that report said when the month was signed off. The same condition shows on screen and in Verify. A re-sign-off or a fresh close saves a complete new revision. You can reopen only the latest closed month, and never a Hard-locked one; see reopen a closed month.
REPORT UNAVAILABLE means a report depended on setup that was not in place. One unavailable report never stops the other eight, and never stops a close — the reason travels with the sheet so you can act on it.
The Note row
A report that is legitimately empty says why, in a Note row:
| Note | Appears on |
|---|---|
| No accounting connection | Reconciliation Summary, Trial Balance Reconciliation and Sync Category Reconciliation, when no accounting provider is connected |
| No inventory data | Inventory Valuation, when there is no stock to value |
| No COGS activity | COGS, when the month has no sales |
These are answers, not failures. A business that does not use SKU.io for inventory gets an empty Inventory Valuation every month, and that is correct.
The note is a workbook-only line. Open the same empty report on screen and it says No rows for this period — the wording that tells you why it is empty exists in the exported file and nowhere else. So the workbook is the better artefact to send to someone who was not part of the close, and if you are talking a colleague through an empty report on screen, the explanation has to come from you.
What an empty sheet looks like
- With no rows, no column headings are written either. The headings come from the
data, so a report with nothing in it has a heading block, possibly a note, and then
the
Totalsblock — no table at all. Don't read the missing headings as a broken export. - The
Totalsblock usually survives an empty table, but its figures are nil and a nil is written as an empty cell. An empty COGS sheet ends with the wordTotals, thenTotal Cogswith nothing beside it. The same report on screen showsTotal Cogs 0.00; the blank in the sheet means the same thing. - An unavailable report has no
Totalsblock either, because it produced no figures at all. Its sheet is the heading block and the reason, and nothing else.
How timestamps are written
Every time in the workbook is written the same way — the cover's Generated at, Closed at, Re-signed at and Completed at, and the Generated at at the top of each report sheet. Each is the date and time in your app's timezone, followed by the name of that timezone, so whoever opens the file next can tell what the clock refers to:
2026-09-12 18:40:20 UTC
On a business whose app timezone is America/New_York, that last word is
America/New_York instead. Read the suffix rather than assuming — a bare
18:40:20 in a file that has travelled by email is exactly the ambiguity the label
is there to remove.
Because they are already converted, the times match what the close screen showed you —
the screen writes the same moments in your own date format, so
09/12/2026, 13:57:23 on the Closed by line and 2026-09-12 13:57:23 UTC on the
cover are the same instant written two ways. They are text rather than date cells, so
convert the column before doing date arithmetic with them. For why the timezone
matters to a month's figures rather than only to its timestamps, see
month boundaries and timezones.
Text that begins with an unusual character
Open the workbook and you may find a value that looks left-padded by one space. It is, and it is meant to be.
Any text cell whose first character is =, +, -, @, a tab or a carriage
return gets a single leading space added. Spreadsheet applications treat all of those
as the start of a live formula, and the pack carries text you named yourself —
account names, warehouse names, sales-channel names, connection names, checklist
titles and your close notes. A warehouse called -Overflow would otherwise be
evaluated instead of displayed the moment somebody opened the file.
What this means in practice:
- The space is invisible in Excel, Numbers and Google Sheets. You will not see it unless you look at the cell contents.
- Numbers are untouched. A negative amount is written as a number, not as text, so it keeps its minus sign and stays a number you can sum.
- Match on trimmed text. If you use a lookup or a comparison against a name you typed elsewhere, trim the cell first — otherwise a padded name will not match.
Next steps
- Close pack: columns on every report sheet — what each column on each report sheet means.
- Export the close pack — produce a pack and find the download.
- Read the month's reports — the same nine reports, on screen.
- When a closed month changes — why As at close and Live can be different answers.