# SellerSync annual EOFY preparation guide

Use this guide every financial year to make SellerSync complete, checked and ready before anything is entered or imported into Manager.io. It is the SellerSync-side companion to [the Manager.io annual EOFY playbook](./Manager-IO-Annual-EOFY-Playbook.md).

It is written for the Simple But Different sole-trader business and an Australian financial year from 1 July to 30 June. Replace every example date and folder name with the year actually being prepared.

SellerSync is the detailed source for orders, sales, refunds, FIFO cost of goods sold, stock value and actual order postage. Manager.io remains the accounting ledger and bank-reconciliation record. This guide stops at the handoff between them.

## 1. Create the annual working folders

Use the structure required by the Manager.io playbook:

```text
exports/YYYY-YYYY/
  01-source-statements/
  02-sellersync-tax-pack/
    final/
    superseded/
  03-manager-import-batches/
  04-manager-checkpoints/
    final/
    milestones/
    legacy-source/
  05-final-reports/
  06-audits-and-handoffs/
```

Keep dated SellerSync database backups under `data/backups/YYYY-YYYY/`. Do not put database copies inside the tax pack or overwrite the live `sellersync.db` with an older copy.

## 2. Collect independent source evidence

Download and retain the complete financial-year records for every active source before relying on the final SellerSync totals:

- marketplace order, transaction, fee, advertising, shipping-label, refund and payout reports;
- WooCommerce/direct-sale records and payment-processor reports;
- supplier invoices, purchase records and goods-receipt evidence;
- Australia Post/MyPost and other postage records;
- bank, card and wallet statements for later Manager.io reconciliation;
- the physical 30 June stocktake or other evidence supporting stock on hand.

Put original files under `01-source-statements`. Do not edit the only copy of a source report.

## 3. Complete SellerSync through 30 June

In SellerSync, import or enter all activity dated from 1 July through 30 June:

1. Sales from every active platform and direct-sales source.
2. Sale lines, quantities, customer postage charged and order status.
3. Actual order postage and its source, including marketplace labels and MyPost.
4. Marketplace, transaction, payment-processing and marketing costs captured against sales.
5. Refunds and cancellations that affected a sale recorded in SellerSync.
6. Purchase orders, supplier invoices, delivery/other costs and payment details.
7. Goods receipts for inventory received by 30 June.
8. Assemblies, disassemblies, stock adjustments and other stock movements dated correctly.

Do not create a fake sale for an order cancelled before SellerSync ever recognised it as a sale. If a recognised sale was later cancelled or refunded, keep the original sale and create a separate refund linked to it.

For returned stock, select `Return to Stock` only when the stock should genuinely be restored: for example, an unshipped cancellation or a physically received, resaleable return. Do not restore stock for an item that was not returned or cannot be resold.

## 4. Reconcile SellerSync to the source reports

Work platform by platform and month by month. Compare SellerSync with the independent reports and investigate differences before export:

- order counts and gross sales;
- customer postage charged;
- refunds, cancellations and disputes;
- marketplace and payment-processing fees;
- advertising or marketing charges;
- shipping-label and actual postage costs;
- payout timing and money still held by a platform at 30 June;
- purchase totals, supplier delivery charges and goods received;
- stock quantities and unexplained adjustments.

A marketplace payout is not the sales control total: it can combine sales, refunds, fees, advertising, postage labels and timing differences. Retain the payout reports for the Manager.io clearing-account stage.

Correct errors in SellerSync and document material corrections. Do not compensate for bad SellerSync data with an unexplained Manager.io journal.

## 5. Take the EOFY database checkpoint

After all known 30 June activity and corrections are complete:

1. Stop editing briefly and make a dated backup of the live SellerSync database.
2. Store it under `data/backups/YYYY-YYYY/` with a name that identifies the date and EOFY stage.
3. Record which database produced the final tax pack.

The export supports historical date ranges, so SellerSync can continue into July. Nevertheless, the checkpoint is the evidence and rollback point for the year-end data used.

## 6. Generate a review pack with explicit dates

Open `Reports` -> `Year End` for the in-app checklist. From the repository root, generate a review pack using all date arguments explicitly:

```powershell
node src\scripts\exportEofyTaxPack.js --db sellersync.db --start YYYY-07-01 --end YYYY-06-30 --stock-as-of YYYY-06-30 --out exports\YYYY-YYYY\02-sellersync-tax-pack\superseded\eofy-tax-pack-YYYY-review
```

The start year is the earlier calendar year and the end/stock-as-of year is the later calendar year. For example, the 2026–27 financial year uses `--start 2026-07-01 --end 2027-06-30 --stock-as-of 2027-06-30`.

Always provide `--start`, `--end` and `--stock-as-of`. The script's built-in defaults are retained for legacy 2025–26 compatibility and must not be trusted for another year.

Use a disposable review or dry-run folder while correcting data. Never mix a review pack with the authoritative final pack.

## 7. Review the control totals and exceptions

Open `summary.json` and confirm that its `date_range`, `stock_as_at_date` and `database_path` identify the intended year and database.

Required clean controls:

| Control | Required result |
| --- | --- |
| `header_sales_vs_lines_plus_postage_delta` | `0` |
| `purchase_cost_audit_review_count` | `0`, unless every flagged row is resolved and documented |
| `purchase_cost_audit_fix_count` | `0` |
| `reconciliation_error_count` | `0` |
| `stock_as_at_warning_count` | `0`, or every row reviewed and documented |

Also inspect the files themselves:

- `reconciliation-issues.csv`: fix all errors and explain every retained warning;
- `purchase-cost-convention-audit.csv`: confirm purchase totals, item lines, delivery and other costs use the intended convention;
- `stock-as-at-warnings.csv`: review movements that may make the historical stock reconstruction unreliable;
- `monthly-accounting-summary.csv`: scan all twelve months for missing, duplicated or implausible activity;
- `manager-io-monthly-platform-clearing-schedule.csv`: compare each platform/month with source reports;
- `refunds.csv`: compare it with marketplace refunds and cancellations;
- `goods-receipts.csv`: confirm stock received by 30 June is represented.

Zero errors do not prove that an entire platform or month is missing. The monthly and source-report comparisons remain mandatory.

## 8. Confirm the 30 June stock value

Use `stock-value-as-at.csv` as the historical 30 June inventory working paper. Reconcile its total to `summary.json -> totals -> stock_as_at_value` and compare quantities with the physical stocktake.

Do not use `current-stock-value.csv` for EOFY after July activity has begun. It is the live value at export time, whereas `stock-value-as-at.csv` reconstructs the specified as-at date.

Investigate stocktake differences, negative or missing lots, unexpected unit costs and every row in `stock-as-at-warnings.csv`. Record any approved stocktake adjustment separately so the Manager.io playbook can reconcile opening inventory, purchases, FIFO COGS and closing inventory.

## 9. Regenerate and freeze the final pack

After every correction and review is complete, regenerate from the authoritative database into the final annual location:

```powershell
node src\scripts\exportEofyTaxPack.js --db sellersync.db --start YYYY-07-01 --end YYYY-06-30 --stock-as-of YYYY-06-30 --out exports\YYYY-YYYY\02-sellersync-tax-pack\final\eofy-tax-pack-YYYY-final
```

Then:

1. Repeat all checks in sections 7 and 8 on the newly generated pack.
2. Move earlier test and pre-correction packs to `02-sellersync-tax-pack/superseded` or remove them from the working area; never label them final.
3. Do not edit generated CSVs to make them agree. Correct SellerSync and regenerate.
4. Record the generation time, database checkpoint and any reviewed warnings in `06-audits-and-handoffs`.
5. Keep the final pack unchanged as audit evidence. If SellerSync is corrected later, preserve the old pack as superseded and generate a new documented final pack.

## 10. SellerSync-to-Manager.io handoff

The principal handoff files are:

| File | Purpose in the Manager.io playbook |
| --- | --- |
| `summary.json` | Whole-year control totals and export identity |
| `sales-invoices.csv` and `sales-lines.csv` | Detailed sales evidence |
| `refunds.csv` | Refund and sales-return evidence |
| `purchase-orders.csv` | Supplier purchases, delivery and other costs |
| `goods-receipts.csv` | Inventory received by year end |
| `fifo-cogs-by-invoice.csv` | FIFO COGS support |
| `monthly-accounting-summary.csv` | Monthly accounting control sheet |
| `manager-io-monthly-platform-clearing-schedule.csv` | Monthly platform-clearing journals and payout reconciliation |
| `stock-value-as-at.csv` | Historical closing-inventory valuation |
| `reconciliation-issues.csv`, `purchase-cost-convention-audit.csv`, `stock-as-at-warnings.csv` | Exception and review evidence |

The clearing schedule is a working paper, not automatically a Manager.io-ready batch file. Manager imports must be mapped to the accounts and identifiers in the actual Manager business.

Once the final SellerSync pack is frozen, continue at section 6 of the [Manager.io annual EOFY playbook](./Manager-IO-Annual-EOFY-Playbook.md). That playbook controls posting order, clearing accounts, bank reconciliation, owner transactions, final reports and lock date.

## 11. Completion checklist

```text
[ ] Annual folders created
[ ] Original marketplace, supplier, postage and financial reports retained
[ ] All sales through 30 June imported and checked
[ ] Refunds/cancellations complete and stock-return choices verified
[ ] Fees, marketing and actual postage complete
[ ] Purchases, delivery costs and goods receipts complete
[ ] Stock movements dated correctly and physical stocktake compared
[ ] SellerSync reconciled platform by platform and month by month
[ ] Dated database checkpoint saved and identified
[ ] Review pack generated with explicit start, end and stock-as-of dates
[ ] summary.json identifies the correct database and dates
[ ] Reconciliation errors and purchase fixes are zero
[ ] All warnings reviewed and documented
[ ] stock-value-as-at.csv agrees with the approved 30 June stock position
[ ] Final pack regenerated into the annual final folder
[ ] Final pack and database checkpoint recorded in the handoff
[ ] Manager.io work begins from the annual playbook without duplicate sales
```
