# J2 Bookkeeping — Generic Monthly Close Checklist (Template v1)

**Author:** Ledger (J2 Bookkeeping team) · **Version:** 1.0 · **Date:** 2026-05-12
**For:** Offshore bookkeepers executing monthly close on simpler J2 clients
**Companion (when templatized by Slate):** Google Sheet duplicate of this template, one per engagement

---

## How to use this template

1. Duplicate the file (or — in v2 — Slate's Google Sheet template) for one engagement.
2. Fill in the header block at the top with this engagement's specifics.
3. Work the sections **in order**. Several steps depend on prior steps being clean — do not skip ahead.
4. Use the **Status** column on each row: `Done` / `FLAG` / `REVIEW` / blank (not yet started).
5. Any row marked `FLAG` or `REVIEW` is a stop signal — fix or escalate before continuing.
6. The **Open Items** section at the end is where you log anything you cannot resolve from inside QBO. Hand that list to Jimmie at close-out, not before.

---

## Engagement header (fill in before starting)

| Field | Value |
|-------|-------|
| Client | `{CLIENT_NAME}` |
| Period | `{PERIOD}` (e.g., April 2026) |
| Basis | `{BASIS}` — **Cash** for most simple clients. If accrual, expect more work in Sections 4, 5, and 6. |
| Entity type | `{ENTITY_TYPE}` (Sole prop / LLC / S-Corp / etc.) |
| Platform | `{PLATFORM}` — QBO (default) or IES. Click paths below assume QBO. |
| Payroll provider | `{PAYROLL_PROVIDER}` — Gusto, Rippling, ADP, OnPay, or **None**. If None, skip Section 5. |
| Sales tax applicable | `{HAS_SALES_TAX}` — Yes / No. If No, skip Section 7. |
| Multi-entity | `{MULTI_ENTITY}` — Yes / No. If Yes, escalate — this checklist is for single-entity clients. |
| Bookkeeper | `{BOOKKEEPER_NAME}` |
| Target close date | 10th of following month (5th for priority clients) |

**Stop if:** `{MULTI_ENTITY}` = Yes, or `{BASIS}` = Accrual with complex prepaids/IC/depreciation. Those clients use the complex-close checklist (Jimmie's lane).

---

## Pre-Close Prep — *~15 min*

**WHY:** Sets the baseline. You cannot close clean books if you don't know what state they were in coming into the period, and you cannot reconcile if you don't have the statements in hand.

### Steps

| # | Task | Status | Notes |
|---|------|--------|-------|
| 1 | Confirm prior period is locked. Gear → Account and Settings → Advanced → Accounting → **Closing date should be the last day of the prior period**. If not set, STOP and flag to Jimmie before touching anything. | | |
| 2 | Pull the **General Ledger** for `{PERIOD}`. Reports → Standard → "General Ledger" → set basis to `{BASIS}` → date range = period. Export to PDF and save to client folder. | | |
| 3 | Pull the **Profit & Loss** for `{PERIOD}`. Reports → Standard → "Profit and Loss" → basis = `{BASIS}` → date range = period. | | |
| 4 | Pull the **Balance Sheet** as of period end. Reports → Standard → "Balance Sheet" → basis = `{BASIS}` → as of = last day of `{PERIOD}`. | | |
| 5 | Pull **A/R Aging Summary** as of period end. | | |
| 6 | Pull **A/P Aging Summary** as of period end. | | |
| 7 | Confirm all bank and credit card statements for `{PERIOD}` are in the client's document folder. List the statements available below: | | List statements in Notes |
| 8 | Confirm payroll register for `{PERIOD}` is available {If `{PAYROLL_PROVIDER}` ≠ None}. | | |

**Stop-and-fix flag:** If the prior period is NOT locked, escalate to Jimmie. Working in an unlocked file risks unauthorized changes contaminating the close.

**Acceptance criteria:** Prior period locked, all baseline reports pulled and saved, all source statements in hand. Done when every row above is `Done`.

---

## Section 1: Bank Reconciliation — *~30 min per account*

**WHY:** The entire close hinges on knowing cash is right. Every other section depends on this being clean. Reclassing or posting JEs on top of a broken rec just hides the problem.

### Steps (repeat for each bank account)

| # | Task | Status | Notes |
|---|------|--------|-------|
| 1 | Open Banking → **Reconcile** → select the account → enter statement ending balance and ending date from the PDF. | | |
| 2 | Match all transactions on the statement to QBO transactions. Check the box on each matched item. | | |
| 3 | Investigate any **uncleared** transactions older than 30 days. Likely causes: voided check still showing, duplicate entry, deposit recorded but never made. | | |
| 4 | Resolve the difference to **$0.00** before saving. | | |
| 5 | Save the reconciliation report (auto-saved by QBO under Reports → Standard → "Reconciliation Reports"). | | |

**Stop-and-fix flags:**
- If you cannot resolve to $0.00, **stop here**. Do not move to Section 2. Flag to Jimmie with the difference amount and what you've tried.
- If a prior month's reconciliation broke (shows a beginning balance that doesn't match), flag immediately — that's an integrity issue, not a current-month problem.

**Acceptance criteria:** Every bank account reconciles to $0.00 for `{PERIOD}`. Reconciliation reports saved.

---

## Section 2: Credit Card Reconciliation — *~20 min per card*

**WHY:** Same logic as bank rec — credit card balances feed AP and expense recognition. A broken CC rec can hide unrecorded expenses or duplicated charges.

### Steps (repeat for each credit card)

| # | Task | Status | Notes |
|---|------|--------|-------|
| 1 | Banking → Reconcile → select the credit card account → enter statement ending balance and ending date. | | |
| 2 | Match all transactions. Pay attention to payments and credits (refunds) — these often appear differently in QBO than expected. | | |
| 3 | Resolve to $0.00. | | |
| 4 | Save the reconciliation report. | | |
| 5 | Confirm the CC liability balance on the Balance Sheet matches the statement ending balance. | | |

**Stop-and-fix flag:** CC balance on BS ≠ statement balance after rec → there's a coding error somewhere (likely a payment posted to the wrong account). Stop and fix.

**Acceptance criteria:** Every CC account reconciles to $0.00 and BS balance ties to statement.

---

## Section 3: Accounts Receivable — *~15 min*

**WHY:** AR aging tells you who owes money and how stale it is. {If cash basis}: AR doesn't hit income on cash basis, but tracking it is still required for cash management and client follow-up. {If accrual basis}: AR balance changes flow directly to revenue — this matters for the P&L.

### Steps

| # | Task | Status | Notes |
|---|------|--------|-------|
| 1 | Run **A/R Aging Summary** as of period end. | | |
| 2 | Flag any invoice **60+ days past due**. Note customer name and amount in the Open Items section at the end. | | |
| 3 | Check for **Unapplied Cash Payment Income** on the P&L (cash basis only). If present, customer payments aren't matched to invoices — apply them via Sales → Customers → click customer → find Payment → match to invoice. | | |
| 4 | Confirm no invoices were created or modified after the period-end date that should be in this period. | | |
| 5 | Verify the AR balance on the BS ties to the AR Aging total. | | |

**Stop-and-fix flag:** "Unapplied Cash Payment Income" appearing on a cash-basis P&L means revenue is being double-counted or unrecognized. Clear it before proceeding.

**Acceptance criteria:** AR aging reviewed, problem invoices logged in Open Items, AR balance on BS matches aging total, unapplied cash cleared.

---

## Section 4: Accounts Payable — *~15 min*

**WHY:** AP tells you what the client owes vendors. {If cash basis}: AP balance changes don't hit P&L on cash basis, but unrecorded bills still understate expenses if you forget to enter them. {If accrual basis}: AP balance changes flow to expense — critical for the P&L.

### Steps

| # | Task | Status | Notes |
|---|------|--------|-------|
| 1 | Run **A/P Aging Summary** as of period end. | | |
| 2 | Confirm all vendor bills for `{PERIOD}` have been entered. Cross-reference against expected recurring vendors (subscriptions, rent, utilities). | | |
| 3 | Flag any bill **30+ days past due**. Log in Open Items. | | |
| 4 | Verify the AP balance on the BS ties to the AP Aging total. | | |
| 5 | Check for any account literally named `"Accounts Payable (A/P) (deleted)"` in the COA. If present, flag — there may be orphaned transactions. | | |

**Stop-and-fix flag:** A missing recurring bill (rent, payroll, utility) is more likely than a phantom one. If a vendor that bills every month is absent from this period, **investigate before closing**.

**Acceptance criteria:** AP aging reviewed, all expected bills entered, AP balance on BS matches aging total.

---

## Section 5: Payroll — *~20 min* — *{If `{PAYROLL_PROVIDER}` = None, skip this entire section}*

**WHY:** Payroll is where the most common reclass errors happen. Bank ACH pulls from the payroll provider get auto-categorized as "Contractor Expenses" or generic bank fees, but they should hit Wages and Payroll Tax Expense. Getting this wrong understates payroll, overstates contractor expense, and breaks 1099 prep at year-end.

### Steps

| # | Task | Status | Notes |
|---|------|--------|-------|
| 1 | Pull the **payroll register** from `{PAYROLL_PROVIDER}` for `{PERIOD}`. | | |
| 2 | Verify the payroll journal entry posted to QBO for the period. Should include: DR Wages & Salaries, DR Payroll Tax Expense (ER portion), CR Payroll Liabilities (or direct to bank if paid same-day). | | |
| 3 | Spot-check: total payroll JE wages amount should match the register's gross wages. | | |
| 4 | Verify employer payroll taxes (Social Security, Medicare, FUTA, SUTA) posted to Payroll Tax Expense — not to Contractor Expenses or generic bank fees. | | |
| 5 | If `{PAYROLL_PROVIDER}` = Rippling: verify the Rippling-to-QBO sync ran for the period. Settings → Apps → Rippling → check last sync date. | | |
| 6 | Spot-check the bank feed for any **ACH pulls labeled with the payroll provider's name** that aren't matched to the payroll JE. Common pitfall: auto-categorized as Contractor Expense. | | |

**Stop-and-fix flag:** Any payroll-provider ACH pull sitting in Contractor Expense or uncategorized is a **major** issue — reclass it before closing or year-end 1099 reporting will be wrong.

**Standard JE for misclassified payroll** — see **JE-PAY-01** in the JE Library below.

**Acceptance criteria:** Payroll JE matches the register, employer taxes hit the right account, no payroll-provider ACH pulls misclassified.

---

## Section 6: Expense Categorization Review — *~30 min*

**WHY:** This is where most "rework" originates. The bookkeeper's job here is to scan for **outliers and Uncategorized** entries — not to second-guess every coding decision, but to catch the ones that will distort the P&L.

### Steps

| # | Task | Status | Notes |
|---|------|--------|-------|
| 1 | Run the **Profit & Loss** for `{PERIOD}` on `{BASIS}` basis. | | |
| 2 | Scan for accounts named "Uncategorized Expense", "Uncategorized Income", "Ask My Accountant" — **these must be $0.00 at close.** Reclass every transaction to the right account. | | |
| 3 | For each expense account, click into it (drill-down) and scan the transactions for **outliers** — anything 2x typical size, or showing up in an account where it doesn't fit. | | |
| 4 | Spot-check **Travel, Meals, Entertainment** — these are common miscategorization targets. Travel meals should be in "Meals (Travel)" or sub-account, not "Travel". | | |
| 5 | Spot-check **Owner's Personal** charges — gas, groceries, restaurants, retail — that may have been miscoded to a business expense. These should reclass to **Owner Draw** (see JE-OWN-01). | | |
| 6 | Verify **Bank Fees** balance is reasonable (not absorbing miscellaneous unknowns). | | |
| 7 | Compare this period's P&L to the **prior period's P&L**. Any expense category that doubled or halved warrants a 30-second look. | | |

**Stop-and-fix flags:**
- Any `Uncategorized` or `Ask My Accountant` balance > $0 at close → **stop and clear** before locking.
- Owner-personal expenses mixed into business expenses → reclass to Owner Draw before locking, or P&L will be distorted.

**Acceptance criteria:** No Uncategorized / Ask My Accountant balances. Outlier scan complete. Period-over-period comparison reviewed.

---

## Section 7: Sales Tax — *~15 min* — *{If `{HAS_SALES_TAX}` = No, skip this section}*

**WHY:** Sales tax collected is held in trust for the state. Misalignment between "tax collected on invoices" and "tax remitted to the state" creates either a hidden liability (under-remitted) or an asset/refund (over-remitted).

### Steps

| # | Task | Status | Notes |
|---|------|--------|-------|
| 1 | Open the **Sales Tax Center** (Taxes → Sales Tax). | | |
| 2 | Run a **Sales Tax Liability Report** for `{PERIOD}`. | | |
| 3 | Confirm tax collected = tax billed on invoices for the period. | | |
| 4 | If filing is due this period, file the state return or confirm it was filed and payment recorded. | | |
| 5 | If not filing this period, confirm the liability balance on the BS reflects accumulated unremitted tax. | | |

**Stop-and-fix flag:** If invoices are issued without sales tax applied (when they should have it), this is a client-side configuration issue. Flag to Jimmie — may indicate Jobber, Shopify, or other invoicing tool needs settings review.

**Acceptance criteria:** Sales tax liability traces from invoices through to state remittance (or accrued correctly on BS).

---

## Section 8: Reporting & Lock — *~20 min*

**WHY:** Final integrity check, then deliver, then lock so the books are immutable. This is the last gate before the client sees numbers — it's also the gate before next month's bookkeeper picks up.

### Steps

| # | Task | Status | Notes |
|---|------|--------|-------|
| 1 | Re-run final **Profit & Loss** for `{PERIOD}` on `{BASIS}` basis. | | |
| 2 | Re-run final **Balance Sheet** as of period end. | | |
| 3 | Re-run final **General Ledger** for `{PERIOD}`. | | |
| 4 | Verify P&L net income flows correctly to BS retained earnings (or YTD net income line). | | |
| 5 | Compare P&L to prior period — write a 2-3 sentence variance summary for the client deliverable (large movers and why). | | |
| 6 | Save all three reports as PDF in the client folder. | | |
| 7 | Deliver the close package to the client via **Client Hub** with a short note: "April books are closed and reviewed. Highlights: [variance summary]. Let me know if anything looks off." | | |
| 8 | **Set the closing date** to the last day of `{PERIOD}` with password. Gear → Account and Settings → Advanced → Accounting → Closing date. Use Jimmie's standard close password. | | |

**Stop-and-fix flag:** Do **NOT** lock if any prior section has unresolved FLAG or REVIEW rows. Escalate first.

**Acceptance criteria:** Three reports saved as PDF, delivered to client via Client Hub, closing date set with password.

---

## Open Items / Owner (Jimmie) Input Required

List any item that **cannot be resolved from inside QBO alone**. Examples:

- Missing bank statement
- Owner clarification needed on a specific transaction
- Loan agreement copy needed (for opening balance setup)
- W-9 needed for a contractor not yet collected
- Sales tax exemption confirmation needed
- Prior-year retained earnings roll needed (first close for this client)

| # | Item | Section | What is needed | Who to ask |
|---|------|---------|----------------|------------|
| 1 | | | | |
| 2 | | | | |
| 3 | | | | |

**Process:** At close-out, hand this list to Jimmie. Do not stop the close to wait on these (unless flagged as `STOP` in their section) — log them, deliver the close package, and chase them on the next cycle.

---

## Standard JE Library — Simple Clients

These are the most common adjusting entries needed during a close. Each one includes when to use, the standard DR/CR, and a standard memo. Use Journal Entry (+ New → Journal Entry) in QBO.

### JE-OWN-01 — Reclass owner-personal expense to Owner Draw

**When:** A personal expense (gas at non-business gas station, groceries, personal retail) was coded to a business expense account.

```
DR  Owner Draw / Owner Distributions  {AMOUNT}
CR  {Original Business Expense Account}  {AMOUNT}
```

**Memo:** "Reclass owner-personal expense to Owner Draw — {brief description, e.g., 'Costco 04/12 personal household items'}"

---

### JE-OWN-02 — Record Owner Contribution

**When:** Owner deposits personal funds into the business bank account.

```
DR  Bank Account  {AMOUNT}
CR  Owner Contributions / Owner's Equity  {AMOUNT}
```

**Memo:** "Owner contribution {date} — {source if known}"

---

### JE-PAY-01 — Reclass payroll-provider ACH from Contractor Expense to Payroll

**When:** Payroll-provider ACH pulls (Gusto, Rippling, ADP, E-Bacon, etc.) were auto-categorized as Contractor Expense or generic bank fees by the bank feed.

```
DR  Wages & Salaries  {GROSS_WAGES from register}
DR  Payroll Tax Expense  {ER_TAXES from register}
CR  Contractor Expenses (or original misclass account)  {TOTAL_ACH_AMOUNT}
```

**Memo:** "Reclass {provider} ACH from Contractor Expense to W-2 payroll per payroll register {PERIOD}. Wages {GROSS_WAGES}; ER taxes {ER_TAXES}. Total ACH {TOTAL}."

**Verification source:** Payroll provider register for the period. If amounts don't tie, **stop and reconcile against the register** before posting.

---

### JE-REC-01 — Bank Fee Reclass

**When:** Bank fees were absorbed into a generic "Bank Charges" account but include items that should be elsewhere (merchant processing fees, wire fees on a specific deal, etc.).

```
DR  {Proper account, e.g., Merchant Processing Fees, Wire Transfer Fees}  {AMOUNT}
CR  Bank Charges  {AMOUNT}
```

**Memo:** "Reclass bank fee — {specific nature, e.g., 'Stripe processing fee April'}"

---

### JE-LN-01 — Loan Payment Split (Principal vs. Interest)

**When:** A bank-feed loan payment was posted entirely to one account (commonly the loan principal balance) but should split between principal reduction and interest expense.

```
DR  Loan Principal Balance (Liability)  {PRINCIPAL portion}
DR  Interest Expense  {INTEREST portion}
CR  Bank Account  {TOTAL PAYMENT}
```

OR — if the bank-feed entry already debited a single account, reclass:

```
DR  Interest Expense  {INTEREST portion}
CR  Loan Principal Balance  {INTEREST portion}
```

**Memo:** "Loan payment split per amortization schedule — {LENDER} loan {DATE}. Principal {AMOUNT}; Interest {AMOUNT}."

**Source:** Lender's amortization schedule or monthly statement.

---

### JE-REC-02 — Reclass Misclassified Expense Between Categories

**When:** A transaction is in the wrong expense category (e.g., a software subscription posted to Office Supplies).

```
DR  {Correct Account}  {AMOUNT}
CR  {Incorrect Account}  {AMOUNT}
```

**Memo:** "Reclass {vendor / description} from {incorrect account} to {correct account}"

---

### JE-AR-01 — Customer Refund / Credit Memo

**When:** A customer payment needs to be refunded or credited (not commonly a JE — usually handled in Sales → Customer → Refund Receipt or Credit Memo; this JE is only for prior-period corrections).

```
DR  Sales / Service Revenue  {AMOUNT}
CR  Accounts Receivable (or bank if refunded)  {AMOUNT}
```

**Memo:** "Refund / credit to {customer} — {reason}"

---

### JE-OFF-01 — Year-End Owner Draw Closing (S-Corp / LLC)

**When:** {If `{ENTITY_TYPE}` = S-Corp or LLC} — at year-end, Owner Draws/Distributions zero out into Retained Earnings. Do NOT post this during a monthly close — flag to Jimmie at year-end.

```
DR  Retained Earnings  {YTD OWNER DRAW BALANCE}
CR  Owner Draw / Distributions  {YTD OWNER DRAW BALANCE}
```

---

## Time Estimates — Rollup

| Section | Estimated Time |
|---------|---------------|
| Pre-Close Prep | 15 min |
| Bank Reconciliation | 30 min × number of bank accounts |
| Credit Card Reconciliation | 20 min × number of CC accounts |
| Accounts Receivable | 15 min |
| Accounts Payable | 15 min |
| Payroll {If applicable} | 20 min |
| Expense Categorization Review | 30 min |
| Sales Tax {If applicable} | 15 min |
| Reporting & Lock | 20 min |
| **Subtotal (typical simple client: 1 bank, 1 CC, no payroll, no sales tax)** | **~2.0 hrs** |
| **Subtotal (1 bank, 1 CC, with payroll, with sales tax)** | **~2.5 hrs** |
| **Subtotal (2 banks, 2 CCs, with payroll, with sales tax)** | **~3.5 hrs** |

**Note for Jimmie:** When Slate templatizes this into the Sheet (Layer 2), the actual time-per-step input column will let us cross-reference these estimates against Insightful tracking data to refine the benchmarks.

---

## What to do if you get stuck

1. **First**, re-read the relevant section's WHY and acceptance criteria. Most stuck moments are scope confusion, not technical issues.
2. **Second**, check the JE Library for a standard pattern that matches.
3. **Third**, log the item in the Open Items section and escalate to Jimmie. Do NOT guess on JEs that aren't in the JE Library — wrong JEs are harder to undo than no JE.

---

## Version notes

- **v1 (2026-05-12):** Initial template. Built for cash-basis, single-entity, simpler clients with the offshore bookkeeper as the executor.
- **Future v1.1+:** Will be informed by pilot run on one client and review of bookkeeper feedback.
- **NOT covered in v1:** Multi-entity, accrual-basis complex closes, intercompany, prepaid amortization, depreciation schedules, deferred revenue. Those clients use the complex-close checklist (Jimmie's lane — Fuzebox / Loop pattern).
