jaz-cli 2.7.0 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/assets/skills/api/SKILL.md +1 -1
  2. package/assets/skills/conversion/SKILL.md +1 -1
  3. package/assets/skills/jobs/SKILL.md +104 -0
  4. package/assets/skills/jobs/references/audit-prep.md +319 -0
  5. package/assets/skills/jobs/references/bank-recon.md +234 -0
  6. package/assets/skills/jobs/references/building-blocks.md +135 -0
  7. package/assets/skills/jobs/references/credit-control.md +273 -0
  8. package/assets/skills/jobs/references/fa-review.md +267 -0
  9. package/assets/skills/jobs/references/gst-vat-filing.md +250 -0
  10. package/assets/skills/jobs/references/month-end-close.md +308 -0
  11. package/assets/skills/jobs/references/payment-run.md +246 -0
  12. package/assets/skills/jobs/references/quarter-end-close.md +268 -0
  13. package/assets/skills/jobs/references/supplier-recon.md +330 -0
  14. package/assets/skills/jobs/references/year-end-close.md +341 -0
  15. package/assets/skills/transaction-recipes/SKILL.md +1 -1
  16. package/dist/__tests__/jobs-audit-prep.test.js +125 -0
  17. package/dist/__tests__/jobs-bank-recon.test.js +108 -0
  18. package/dist/__tests__/jobs-credit-control.test.js +98 -0
  19. package/dist/__tests__/jobs-fa-review.test.js +104 -0
  20. package/dist/__tests__/jobs-gst-vat.test.js +113 -0
  21. package/dist/__tests__/jobs-month-end.test.js +162 -0
  22. package/dist/__tests__/jobs-payment-run.test.js +106 -0
  23. package/dist/__tests__/jobs-quarter-end.test.js +155 -0
  24. package/dist/__tests__/jobs-supplier-recon.test.js +115 -0
  25. package/dist/__tests__/jobs-validate.test.js +181 -0
  26. package/dist/__tests__/jobs-year-end.test.js +149 -0
  27. package/dist/commands/jobs.js +184 -0
  28. package/dist/index.js +2 -0
  29. package/dist/jobs/audit-prep.js +211 -0
  30. package/dist/jobs/bank-recon.js +163 -0
  31. package/dist/jobs/credit-control.js +126 -0
  32. package/dist/jobs/fa-review.js +121 -0
  33. package/dist/jobs/format.js +102 -0
  34. package/dist/jobs/gst-vat.js +187 -0
  35. package/dist/jobs/month-end.js +232 -0
  36. package/dist/jobs/payment-run.js +199 -0
  37. package/dist/jobs/quarter-end.js +135 -0
  38. package/dist/jobs/supplier-recon.js +132 -0
  39. package/dist/jobs/types.js +36 -0
  40. package/dist/jobs/validate.js +115 -0
  41. package/dist/jobs/year-end.js +153 -0
  42. package/dist/types/index.js +2 -1
  43. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: api
3
- version: 2.7.0
3
+ version: 2.8.0
4
4
  description: Complete reference for the Jaz/Juan REST API — the accounting platform backend. Use this skill whenever building, modifying, debugging, or extending any code that calls the API — including API clients, integrations, data seeding, test data, or new endpoint work. Contains every field name, response shape, error, gotcha, and edge case discovered through live production testing.
5
5
  license: MIT
6
6
  compatibility: Requires Jaz/Juan API key (x-jk-api-key header). Works with Claude Code, Claude Cowork, Claude.ai, and any agent that reads markdown.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: conversion
3
- version: 2.7.0
3
+ version: 2.8.0
4
4
  description: Accounting data conversion skill — migrates customer data from Xero, QuickBooks, Sage, MYOB, and Excel exports to Jaz. Covers config, quick, and full conversion workflows, Excel parsing, CoA/contact/tax/items mapping, clearing accounts, TTB, and TB verification.
5
5
  ---
6
6
 
@@ -0,0 +1,104 @@
1
+ ---
2
+ name: jobs
3
+ version: 2.8.0
4
+ description: 10 accounting jobs for SMB bookkeepers and accountants — month-end, quarter-end, and year-end close playbooks plus 7 ad-hoc operational jobs (bank recon, GST/VAT filing, payment runs, credit control, supplier recon, audit prep, fixed asset review). Each job is a step-by-step blueprint with API calls, recipe references, calculator commands, and verification checks. Paired with an interactive CLI blueprint generator (jaz jobs).
5
+ license: MIT
6
+ compatibility: Works with Claude Code, Claude Cowork, Claude.ai, and any agent that reads markdown. For API payloads, load the jaz-api skill. For individual transaction patterns, load the transaction-recipes skill.
7
+ ---
8
+
9
+ # Jobs Skill
10
+
11
+ You are helping an **SMB accountant or bookkeeper** complete recurring accounting tasks in Jaz — period-end closes, bank reconciliation, tax filing, payment processing, and operational reviews. These are the real jobs that keep the books accurate and the business compliant.
12
+
13
+ **Jobs combine recipes, calculators, and API calls into complete business processes.** If recipes are ingredients, jobs are the meal.
14
+
15
+ ## When to Use This Skill
16
+
17
+ - Closing the books for a month, quarter, or year
18
+ - Catching up on bank reconciliation
19
+ - Preparing GST/VAT returns for filing
20
+ - Running a payment batch to clear outstanding bills
21
+ - Chasing overdue invoices (credit control)
22
+ - Reconciling supplier statements against AP ledger
23
+ - Preparing for an audit or tax filing
24
+ - Reviewing the fixed asset register
25
+
26
+ ## Job Catalog
27
+
28
+ ### Period-Close Jobs (Layered)
29
+
30
+ Period-close jobs build on each other. Quarter = month + extras. Year = quarter + extras. Each level runs **standalone by default** (includes all steps from lower levels). Use `--incremental` to generate only the extras.
31
+
32
+ | Job | CLI Command | Description |
33
+ |-----|-------------|-------------|
34
+ | **Month-End Close** | `jaz jobs month-end --period YYYY-MM` | 5 phases: pre-close prep, accruals, valuations, verification, lock. The foundation. |
35
+ | **Quarter-End Close** | `jaz jobs quarter-end --period YYYY-QN` | Month-end for each month + GST/VAT, ECL review, bonus accruals, intercompany, provisions. |
36
+ | **Year-End Close** | `jaz jobs year-end --period YYYY` | Quarter-end for each quarter + true-ups, dividends, CYE rollover, audit prep, final lock. |
37
+
38
+ ### Ad-Hoc Jobs
39
+
40
+ | Job | CLI Command | Description |
41
+ |-----|-------------|-------------|
42
+ | **Bank Recon** | `jaz jobs bank-recon` | Clear unreconciled items: match, categorize, resolve. |
43
+ | **GST/VAT Filing** | `jaz jobs gst-vat --period YYYY-QN` | Tax ledger review, discrepancy check, filing summary. |
44
+ | **Payment Run** | `jaz jobs payment-run` | Select outstanding bills by due date, process payments. |
45
+ | **Credit Control** | `jaz jobs credit-control` | AR aging review, overdue chase list, bad debt assessment. |
46
+ | **Supplier Recon** | `jaz jobs supplier-recon` | AP vs supplier statement, identify mismatches. |
47
+ | **Audit Preparation** | `jaz jobs audit-prep --period YYYY` | Compile reports, schedules, reconciliations for auditor/tax. |
48
+ | **FA Review** | `jaz jobs fa-review` | Fixed asset register review, disposal/write-off processing. |
49
+
50
+ ## How Jobs Work
51
+
52
+ Each job produces a **blueprint** — a phased checklist of steps, each annotated with:
53
+
54
+ - **API call** — the exact endpoint + request body to execute the step
55
+ - **Recipe reference** — link to the transaction-recipes skill for complex accounting patterns
56
+ - **Calculator command** — `jaz calc` command for financial calculations
57
+ - **Verification check** — how to confirm the step was completed correctly
58
+ - **Conditional flag** — steps that only apply in certain situations (e.g., "only if multi-currency org")
59
+
60
+ **For AI agents:** Read the blueprint and execute each step using the jaz-api skill for payloads.
61
+ **For developers:** Use `--json` output to build automation pipelines.
62
+ **For accountants:** Use the formatted checklist to work through the close systematically.
63
+
64
+ ## CLI Usage
65
+
66
+ ```bash
67
+ # Period-close (standalone = full plan, --incremental = extras only)
68
+ jaz jobs month-end --period 2025-01 [--currency SGD] [--json]
69
+ jaz jobs quarter-end --period 2025-Q1 [--incremental] [--json]
70
+ jaz jobs year-end --period 2025 [--incremental] [--json]
71
+
72
+ # Ad-hoc
73
+ jaz jobs bank-recon [--account "DBS Current"] [--period 2025-01] [--json]
74
+ jaz jobs gst-vat --period 2025-Q1 [--json]
75
+ jaz jobs payment-run [--due-before 2025-02-28] [--json]
76
+ jaz jobs credit-control [--overdue-days 30] [--json]
77
+ jaz jobs supplier-recon [--supplier "Acme Corp"] [--period 2025-01] [--json]
78
+ jaz jobs audit-prep --period 2025 [--json]
79
+ jaz jobs fa-review [--json]
80
+ ```
81
+
82
+ ## Relationship to Other Skills
83
+
84
+ | Skill | Role |
85
+ |-------|------|
86
+ | **api** | Provides the exact API payloads for each step (field names, gotchas, error handling) |
87
+ | **transaction-recipes** | Provides the accounting patterns for complex steps (accruals, FX reval, ECL, etc.) |
88
+ | **jobs** (this skill) | Combines recipes + API into sequenced, verifiable business processes |
89
+
90
+ **Load all three skills together** for the complete picture. Jobs reference recipes by name — an AI agent should read the referenced recipe for implementation details.
91
+
92
+ ## Supporting Files
93
+
94
+ - **[references/building-blocks.md](./references/building-blocks.md)** — Shared concepts: accounting periods, lock dates, period verification, conventions
95
+ - **[references/month-end-close.md](./references/month-end-close.md)** — Month-end close: 5 phases, ~18 steps
96
+ - **[references/quarter-end-close.md](./references/quarter-end-close.md)** — Quarter-end close: monthly + quarterly extras
97
+ - **[references/year-end-close.md](./references/year-end-close.md)** — Year-end close: quarterly + annual extras
98
+ - **[references/bank-recon.md](./references/bank-recon.md)** — Bank reconciliation catch-up
99
+ - **[references/gst-vat-filing.md](./references/gst-vat-filing.md)** — GST/VAT filing preparation
100
+ - **[references/payment-run.md](./references/payment-run.md)** — Payment run (bulk bill payments)
101
+ - **[references/credit-control.md](./references/credit-control.md)** — Credit control / AR chase
102
+ - **[references/supplier-recon.md](./references/supplier-recon.md)** — Supplier statement reconciliation
103
+ - **[references/audit-prep.md](./references/audit-prep.md)** — Audit preparation pack
104
+ - **[references/fa-review.md](./references/fa-review.md)** — Fixed asset register review
@@ -0,0 +1,319 @@
1
+ # Audit Preparation
2
+
3
+ Compile the complete report pack, supporting schedules, and reconciliations that an auditor or tax agent needs. For most SMBs, this is an annual exercise — either for the statutory audit (if required) or for the annual tax filing with IRAS (SG) or BIR (PH).
4
+
5
+ **CLI:** `jaz jobs audit-prep --period 2025 [--json]`
6
+
7
+ ---
8
+
9
+ ## Who Needs This
10
+
11
+ | Situation | SG | PH |
12
+ |-----------|----|----|
13
+ | **Statutory audit required** | Companies with revenue > S$10M, assets > S$10M, or employees > 50 | All stock corporations, companies with paid-up capital > PHP 50K |
14
+ | **Tax filing (no audit)** | All companies file Form C/C-S with IRAS | All companies file ITR with BIR |
15
+ | **Compilation by accountant** | Small exempt private companies — no audit but accountant prepares financial statements | N/A |
16
+
17
+ Even if you're a small exempt company not requiring an audit, your external accountant or tax agent needs the same reports to prepare your financial statements and tax return. This job produces the full pack.
18
+
19
+ ---
20
+
21
+ ## Phase 1: Core Financial Reports
22
+
23
+ Generate the three primary financial statements. These form the backbone of any audit or tax filing.
24
+
25
+ ### Step 1: Trial Balance
26
+
27
+ The master reconciliation tool. Everything else derives from this.
28
+
29
+ ```
30
+ POST /api/v1/generate-reports/trial-balance
31
+ { "startDate": "2025-01-01", "endDate": "2025-12-31" }
32
+ ```
33
+
34
+ **What the auditor checks:** Debits = Credits (always). Any imbalance indicates a system error.
35
+
36
+ ### Step 2: Profit & Loss Statement
37
+
38
+ ```
39
+ POST /api/v1/generate-reports/profit-and-loss
40
+ { "primarySnapshotDate": "2025-12-31", "secondarySnapshotDate": "2025-01-01" }
41
+ ```
42
+
43
+ **Comparative:** If the auditor needs prior year comparison:
44
+
45
+ ```
46
+ POST /api/v1/generate-reports/profit-and-loss
47
+ { "primarySnapshotDate": "2024-12-31", "secondarySnapshotDate": "2024-01-01" }
48
+ ```
49
+
50
+ ### Step 3: Balance Sheet
51
+
52
+ ```
53
+ POST /api/v1/generate-reports/balance-sheet
54
+ { "primarySnapshotDate": "2025-12-31" }
55
+ ```
56
+
57
+ **Key check:** Assets = Liabilities + Equity.
58
+
59
+ ---
60
+
61
+ ## Phase 2: Supporting Ledgers
62
+
63
+ Detailed transaction-level data behind the summary reports.
64
+
65
+ ### Step 4: General Ledger — grouped by account
66
+
67
+ ```
68
+ POST /api/v1/generate-reports/general-ledger
69
+ { "startDate": "2025-01-01", "endDate": "2025-12-31", "groupBy": "ACCOUNT" }
70
+ ```
71
+
72
+ This is the auditor's primary working document. Every transaction, grouped by CoA account, with opening balance, movements, and closing balance.
73
+
74
+ ### Step 5: Cashflow Statement
75
+
76
+ ```
77
+ POST /api/v1/generate-reports/cashflow
78
+ { "primaryStartDate": "2025-01-01", "primaryEndDate": "2025-12-31" }
79
+ ```
80
+
81
+ Classifies cash movements into Operating, Investing, and Financing activities.
82
+
83
+ ### Step 6: Equity Movement
84
+
85
+ ```
86
+ POST /api/v1/generate-reports/equity-movement
87
+ { "primarySnapshotStartDate": "2025-01-01", "primarySnapshotEndDate": "2025-12-31" }
88
+ ```
89
+
90
+ Shows opening equity, net profit, dividends, and other movements during the year.
91
+
92
+ ---
93
+
94
+ ## Phase 3: Aging Reports
95
+
96
+ ### Step 7: AR Aging (Accounts Receivable)
97
+
98
+ ```
99
+ POST /api/v1/generate-reports/ar-report
100
+ { "endDate": "2025-12-31" }
101
+ ```
102
+
103
+ **Auditor use:** Tests recoverability of receivables. Aging > 90 days triggers bad debt assessment. The AR total MUST tie to the Accounts Receivable balance on the trial balance.
104
+
105
+ ### Step 8: AP Aging (Accounts Payable)
106
+
107
+ ```
108
+ POST /api/v1/generate-reports/ap-report
109
+ { "endDate": "2025-12-31" }
110
+ ```
111
+
112
+ **Auditor use:** Completeness assertion — are all liabilities recorded? The AP total MUST tie to the Accounts Payable balance on the trial balance.
113
+
114
+ ---
115
+
116
+ ## Phase 4: Bank and Cash
117
+
118
+ ### Step 9: Bank Reconciliation Summary
119
+
120
+ ```
121
+ POST /api/v1/generate-reports/bank-reconciliation-summary
122
+ { "primarySnapshotDate": "2025-12-31" }
123
+ ```
124
+
125
+ **This is non-negotiable for auditors.** The bank recon proves that the cash balance per books matches the bank statement. Any unreconciled items at year-end must be explained.
126
+
127
+ **For detailed reconciliation (per bank account):**
128
+
129
+ ```
130
+ POST /api/v1/generate-reports/bank-reconciliation-details
131
+ { "primarySnapshotDate": "2025-12-31" }
132
+ ```
133
+
134
+ ### Step 10: Bank Balance Summary
135
+
136
+ ```
137
+ POST /api/v1/generate-reports/bank-balance-summary
138
+ { "primarySnapshotDate": "2025-12-31" }
139
+ ```
140
+
141
+ Summary of all bank account balances at year-end. Cross-reference to bank confirmation letters (which the auditor will request directly from your banks).
142
+
143
+ ---
144
+
145
+ ## Phase 5: Fixed Assets
146
+
147
+ ### Step 11: Fixed Assets Register
148
+
149
+ ```
150
+ POST /api/v1/generate-reports/fixed-assets-summary
151
+ ```
152
+
153
+ Shows all fixed assets: acquisition date, cost, depreciation method, useful life, accumulated depreciation, and net book value.
154
+
155
+ **For FA reconciliation (movements during the year):**
156
+
157
+ ```
158
+ POST /api/v1/generate-reports/fixed-assets-recon-summary
159
+ ```
160
+
161
+ This shows: opening NBV + additions - disposals - depreciation = closing NBV. The auditor reconciles this to the trial balance.
162
+
163
+ ---
164
+
165
+ ## Phase 6: Tax
166
+
167
+ ### Step 12: Tax Ledger / GST Summary
168
+
169
+ ```
170
+ POST /api/v1/generate-reports/vat-ledger
171
+ { "startDate": "2025-01-01", "endDate": "2025-12-31" }
172
+ ```
173
+
174
+ Full year tax ledger for the auditor to verify GST returns filed during the year. The annual total should reconcile to the sum of the four quarterly GST F5 returns.
175
+
176
+ ---
177
+
178
+ ## Phase 7: Data Exports
179
+
180
+ Auditors and tax agents often need the data in Excel format for their own workpapers.
181
+
182
+ ### Step 13: Export all key reports
183
+
184
+ ```
185
+ POST /api/v1/data-exports/trial-balance
186
+ { "startDate": "2025-01-01", "endDate": "2025-12-31" }
187
+ ```
188
+
189
+ ```
190
+ POST /api/v1/data-exports/profit-and-loss
191
+ { "startDate": "2025-01-01", "endDate": "2025-12-31" }
192
+ ```
193
+
194
+ ```
195
+ POST /api/v1/data-exports/general-ledger
196
+ { "startDate": "2025-01-01", "endDate": "2025-12-31", "groupBy": "ACCOUNT" }
197
+ ```
198
+
199
+ ```
200
+ POST /api/v1/data-exports/ar-report
201
+ { "endDate": "2025-12-31" }
202
+ ```
203
+
204
+ ```
205
+ POST /api/v1/data-exports/ap-report
206
+ { "endDate": "2025-12-31" }
207
+ ```
208
+
209
+ **Note:** Data export endpoints use simpler field names than generate-reports. P&L export uses `startDate`/`endDate` instead of `primarySnapshotDate`/`secondarySnapshotDate`.
210
+
211
+ ---
212
+
213
+ ## Phase 8: Supporting Schedules
214
+
215
+ These are typically prepared manually by extracting data from the general ledger. The schedules explain what sits behind specific balance sheet line items.
216
+
217
+ ### Step 14: Compile supporting schedules
218
+
219
+ **Prepaid Expenses Schedule:**
220
+ - Search the general ledger for prepaid asset accounts
221
+ - List each prepaid item: description, original amount, amortization to date, remaining balance
222
+ - If using capsules for prepaid workflows, group the GL by capsule for a clean view
223
+
224
+ **Loan Schedule:**
225
+ - For each active loan: original principal, interest rate, monthly payment, balance at year-end
226
+ - Extract from the loan capsule GL entries
227
+ - **Calculator:** `jaz calc loan` produces the full amortization table
228
+
229
+ **Provision Schedule:**
230
+ - List all provisions: ECL/bad debt, employee leave, warranty, legal, etc.
231
+ - For each: opening balance, additions, utilizations, reversals, closing balance
232
+ - ECL provision: `jaz calc ecl` for the year-end calculation
233
+
234
+ **Lease Schedule (if IFRS 16 applies):**
235
+ - Right-of-use asset: opening, depreciation, closing
236
+ - Lease liability: opening, interest, payments, closing
237
+ - **Calculator:** `jaz calc lease` for the complete schedule
238
+
239
+ **Fixed Deposit Schedule:**
240
+ - List all fixed deposits: bank, principal, rate, maturity date, accrued interest
241
+ - **Calculator:** `jaz calc fixed-deposit` for interest calculations
242
+
243
+ **Intercompany Balances (if applicable):**
244
+ - Receivables and payables with related parties
245
+ - Must be disclosed separately in financial statements
246
+
247
+ ---
248
+
249
+ ## Phase 9: Final Checks
250
+
251
+ ### Step 15: Reconciliation checklist
252
+
253
+ Before handing the pack to the auditor, verify these tie:
254
+
255
+ | Account | Report | Should Match |
256
+ |---------|--------|-------------|
257
+ | Cash / Bank | Bank Recon Summary (Step 9) | Bank statements |
258
+ | Accounts Receivable | AR Aging (Step 7) | Trial balance AR line |
259
+ | Accounts Payable | AP Aging (Step 8) | Trial balance AP line |
260
+ | Fixed Assets (NBV) | FA Register (Step 11) | Trial balance FA lines |
261
+ | Revenue | P&L (Step 2) | GST return Box 1+2+3 totals |
262
+ | GST Receivable/Payable | Tax Ledger (Step 12) | Sum of quarterly GST returns |
263
+
264
+ ### Step 16: Review for completeness
265
+
266
+ Run through this checklist:
267
+
268
+ - [ ] All bank accounts reconciled at year-end (zero unreconciled items or documented timing differences)
269
+ - [ ] All supplier statements reconciled for major suppliers
270
+ - [ ] Lock date set to year-end (prevents backdated entries during audit)
271
+ - [ ] No draft transactions in the period (search for status = DRAFT and resolve)
272
+ - [ ] Depreciation posted for all 12 months
273
+ - [ ] Accruals and prepayments up to date
274
+ - [ ] Intercompany balances agree with counterparty
275
+ - [ ] Related party transactions identified and documented
276
+
277
+ ---
278
+
279
+ ## Audit Prep Checklist (Quick Reference)
280
+
281
+ | # | Step | Phase | Report/Endpoint |
282
+ |---|------|-------|----------------|
283
+ | 1 | Trial Balance | Core | `POST /generate-reports/trial-balance` |
284
+ | 2 | P&L | Core | `POST /generate-reports/profit-and-loss` |
285
+ | 3 | Balance Sheet | Core | `POST /generate-reports/balance-sheet` |
286
+ | 4 | General Ledger | Ledgers | `POST /generate-reports/general-ledger` |
287
+ | 5 | Cashflow | Ledgers | `POST /generate-reports/cashflow` |
288
+ | 6 | Equity Movement | Ledgers | `POST /generate-reports/equity-movement` |
289
+ | 7 | AR Aging | Aging | `POST /generate-reports/ar-report` |
290
+ | 8 | AP Aging | Aging | `POST /generate-reports/ap-report` |
291
+ | 9 | Bank Recon Summary | Bank | `POST /generate-reports/bank-reconciliation-summary` |
292
+ | 10 | Bank Balance Summary | Bank | `POST /generate-reports/bank-balance-summary` |
293
+ | 11 | FA Register | Assets | `POST /generate-reports/fixed-assets-summary` |
294
+ | 12 | Tax Ledger | Tax | `POST /generate-reports/vat-ledger` |
295
+ | 13 | Data Exports | Export | `POST /data-exports/*` |
296
+ | 14 | Supporting schedules | Schedules | Manual from GL + calculators |
297
+ | 15 | Reconciliation checks | Final | Cross-reference all reports |
298
+ | 16 | Completeness review | Final | Checklist |
299
+
300
+ ---
301
+
302
+ ## Tips for SMBs
303
+
304
+ **Start early.** Don't wait for the auditor's request list. Generate the report pack in January for the prior year and have it ready before the engagement begins. A well-prepared client gets a faster, cheaper audit.
305
+
306
+ **The auditor will ask for bank confirmation letters.** These are letters from your bank confirming balances at year-end. Request them from your bank in early January — they can take 2-4 weeks to arrive.
307
+
308
+ **Keep a "passed adjustments" list.** If the auditor proposes adjustments you disagree with (within materiality), track them. Below-materiality items may accumulate — the auditor must consider cumulative effect.
309
+
310
+ **IRAS filing deadlines (SG):**
311
+ - Form C-S/C: November 30 of the following year (e.g., FY 2025 due Nov 30, 2026)
312
+ - ECI (Estimated Chargeable Income): Within 3 months of financial year-end
313
+ - GST F5: 1 month after each quarter-end
314
+
315
+ **Common audit queries you can pre-empt:**
316
+ - "Can you provide a schedule of revenue by customer?" → Run AR summary report
317
+ - "What are the top 10 expenses?" → Run P&L, sort expense lines
318
+ - "Are there any related party transactions?" → Tag them during the year, not at audit time
319
+ - "Can you explain the $X increase in expenses?" → Have month-by-month P&L ready for variance analysis
@@ -0,0 +1,234 @@
1
+ # Bank Reconciliation Catch-Up
2
+
3
+ Clear unreconciled bank statement entries by matching them to existing transactions, creating missing ones, and flagging duplicates. This is the single most impactful thing you can do for book accuracy — a clean bank recon means cash is right, and cash being right means everything else has a fighting chance.
4
+
5
+ **CLI:** `jaz jobs bank-recon [--account "DBS Current"] [--period 2025-01] [--json]`
6
+
7
+ ---
8
+
9
+ ## Phase 1: Identify Bank Accounts
10
+
11
+ List all bank accounts in the org. If `--account` is specified, filter to that one. Otherwise, reconcile all of them.
12
+
13
+ ### Step 1: List bank accounts
14
+
15
+ ```
16
+ GET /api/v1/bank-accounts?limit=100&offset=0
17
+ ```
18
+
19
+ Or via CoA search (more reliable — gives you the resourceId directly):
20
+
21
+ ```
22
+ POST /api/v1/chart-of-accounts/search
23
+ {
24
+ "filter": { "accountType": { "eq": "Bank Accounts" } },
25
+ "sort": { "sortBy": ["name"], "order": "ASC" }
26
+ }
27
+ ```
28
+
29
+ **What you get:** A list of bank-type CoA accounts with `resourceId`, `name`, `currencyCode`. You need the `resourceId` for every subsequent step.
30
+
31
+ ---
32
+
33
+ ## Phase 2: Pull Unreconciled Items
34
+
35
+ For each bank account, pull all unreconciled bank records. This is your working list.
36
+
37
+ ### Step 2: Search unreconciled bank records
38
+
39
+ ```
40
+ POST /api/v1/bank-records/{accountResourceId}/search
41
+ {
42
+ "filter": {
43
+ "status": { "eq": "UNRECONCILED" },
44
+ "valueDate": { "between": ["2025-01-01", "2025-01-31"] }
45
+ },
46
+ "sort": { "sortBy": ["valueDate"], "order": "ASC" },
47
+ "limit": 1000
48
+ }
49
+ ```
50
+
51
+ **Omit the `valueDate` filter** if you want to see ALL unreconciled items regardless of date. For a catch-up, you usually want everything.
52
+
53
+ **What to check:**
54
+ - Count of unreconciled items — this is your work queue
55
+ - Any items older than 60 days are red flags (investigate immediately)
56
+ - `netAmount` positive = cash-in, negative = cash-out
57
+ - `extContactName` and `description` are your best clues for matching
58
+
59
+ ### Step 3: Check for possible duplicates
60
+
61
+ ```
62
+ POST /api/v1/bank-records/{accountResourceId}/search
63
+ {
64
+ "filter": { "status": { "eq": "POSSIBLE_DUPLICATE" } },
65
+ "sort": { "sortBy": ["valueDate"], "order": "ASC" },
66
+ "limit": 1000
67
+ }
68
+ ```
69
+
70
+ **Handle duplicates first.** If two bank feed entries have the same date, amount, and description, the system flags them as `POSSIBLE_DUPLICATE`. Review and archive the genuine duplicates before proceeding — otherwise you'll create double entries trying to reconcile them.
71
+
72
+ ---
73
+
74
+ ## Phase 3: Categorize and Resolve
75
+
76
+ Work through each unreconciled item. There are four resolution paths.
77
+
78
+ ### Path A: Match to existing transaction
79
+
80
+ The bank record matches an invoice payment, bill payment, or journal already in the books. This is the ideal case — the transaction exists, it just hasn't been linked to the bank record.
81
+
82
+ **How to find the match:** Search cashflow transactions for the same amount and approximate date:
83
+
84
+ ```
85
+ POST /api/v1/cashflow-transactions/search
86
+ {
87
+ "filter": {
88
+ "organizationAccountResourceId": { "eq": "<bank-account-uuid>" },
89
+ "totalAmount": { "eq": 2500.00 },
90
+ "valueDate": { "between": ["2025-01-10", "2025-01-20"] }
91
+ },
92
+ "sort": { "sortBy": ["valueDate"], "order": "DESC" },
93
+ "limit": 20
94
+ }
95
+ ```
96
+
97
+ **Tip:** Widen the date range by a few days — bank processing delays mean the book date and bank date often differ by 1-3 business days.
98
+
99
+ ### Path B: Create missing transaction from attachment
100
+
101
+ The bank record represents a real transaction, but nothing has been entered in the books yet. If you have the receipt, invoice, or bill document, use Jaz Magic to create the transaction automatically.
102
+
103
+ ```
104
+ POST /api/v1/magic/createBusinessTransactionFromAttachment
105
+ Content-Type: multipart/form-data
106
+
107
+ Fields:
108
+ - sourceFile: <PDF or JPG of the invoice/receipt>
109
+ - businessTransactionType: "BILL" (for expenses) or "INVOICE" (for income)
110
+ - sourceType: "FILE"
111
+ ```
112
+
113
+ Jaz Magic handles OCR, line item extraction, contact matching, and CoA mapping. It creates a draft transaction that you review and post.
114
+
115
+ **When you don't have a document:** Create the transaction manually using the appropriate endpoint (invoice, bill, cash-in, cash-out).
116
+
117
+ ### Path C: Create cash journal for bank fees/charges
118
+
119
+ Bank fees, interest charges, service charges, and similar items don't have a corresponding invoice or bill. Record them as cash-out journals.
120
+
121
+ ```
122
+ POST /api/v1/cash-out-journals
123
+ {
124
+ "saveAsDraft": false,
125
+ "reference": "BANK-FEE-JAN25-001",
126
+ "valueDate": "2025-01-15",
127
+ "accountResourceId": "<bank-account-uuid>",
128
+ "journalEntries": [
129
+ { "accountResourceId": "<bank-fees-expense-uuid>", "amount": 25.00, "type": "DEBIT", "name": "Monthly service charge — Jan 2025" }
130
+ ]
131
+ }
132
+ ```
133
+
134
+ For bank interest earned (cash-in):
135
+
136
+ ```
137
+ POST /api/v1/cash-in-journals
138
+ {
139
+ "saveAsDraft": false,
140
+ "reference": "BANK-INT-JAN25-001",
141
+ "valueDate": "2025-01-31",
142
+ "accountResourceId": "<bank-account-uuid>",
143
+ "journalEntries": [
144
+ { "accountResourceId": "<interest-income-uuid>", "amount": 12.50, "type": "CREDIT", "name": "Interest earned — Jan 2025" }
145
+ ]
146
+ }
147
+ ```
148
+
149
+ ### Path D: Flag for investigation
150
+
151
+ Some items don't have an obvious match or explanation. Flag these for the business owner or finance manager to investigate. Common causes:
152
+ - Personal transactions through the business account
153
+ - Refunds or chargebacks
154
+ - Intercompany transfers not yet recorded
155
+ - Errors in the bank feed (rare but happens)
156
+
157
+ ---
158
+
159
+ ## Phase 4: Verification
160
+
161
+ After resolving all items, verify the reconciliation is clean.
162
+
163
+ ### Step 4: Re-check unreconciled count
164
+
165
+ ```
166
+ POST /api/v1/bank-records/{accountResourceId}/search
167
+ {
168
+ "filter": { "status": { "eq": "UNRECONCILED" } },
169
+ "sort": { "sortBy": ["valueDate"], "order": "ASC" },
170
+ "limit": 1
171
+ }
172
+ ```
173
+
174
+ **Target:** Zero unreconciled items for the period, or only genuine timing differences (outstanding cheques, deposits in transit that will clear next period).
175
+
176
+ ### Step 5: Bank balance summary
177
+
178
+ ```
179
+ POST /api/v1/generate-reports/bank-balance-summary
180
+ { "primarySnapshotDate": "2025-01-31" }
181
+ ```
182
+
183
+ **What to check:**
184
+ - Book balance per Jaz should match the bank statement closing balance
185
+ - Any difference should equal the sum of known timing items
186
+ - Zero unreconciled difference = clean recon
187
+
188
+ ### Step 6: Bank reconciliation summary report
189
+
190
+ ```
191
+ POST /api/v1/generate-reports/bank-reconciliation-summary
192
+ { "primarySnapshotDate": "2025-01-31" }
193
+ ```
194
+
195
+ This gives you the formal reconciliation statement showing: opening balance + cash in - cash out = closing balance, with the reconciling items listed.
196
+
197
+ ---
198
+
199
+ ## Bank Recon Checklist (Quick Reference)
200
+
201
+ | # | Step | Phase | What |
202
+ |---|------|-------|------|
203
+ | 1 | List bank accounts | Identify | Get all bank-type CoA accounts |
204
+ | 2 | Pull unreconciled items | Pull | Search by status = UNRECONCILED |
205
+ | 3 | Check duplicates | Pull | Review POSSIBLE_DUPLICATE items |
206
+ | A | Match to existing | Resolve | Link to existing invoice/bill/journal |
207
+ | B | Create from attachment | Resolve | Use Jaz Magic for documents |
208
+ | C | Create cash journal | Resolve | Bank fees, interest, charges |
209
+ | D | Flag for investigation | Resolve | Unexplained items |
210
+ | 4 | Re-check count | Verify | Should be zero (or timing items only) |
211
+ | 5 | Bank balance summary | Verify | Book balance = bank statement |
212
+ | 6 | Reconciliation report | Verify | Formal reconciliation statement |
213
+
214
+ ---
215
+
216
+ ## Tips for SMBs
217
+
218
+ **Do this weekly, not monthly.** A weekly 15-minute recon is far easier than a monthly 3-hour catch-up. Monday morning is ideal — reconcile the prior week's bank activity before the new week starts.
219
+
220
+ **Set up bank rules for recurring items.** If you pay the same rent, subscription, or utility every month, create a bank rule to auto-categorize it. This eliminates the most repetitive part of recon.
221
+
222
+ ```
223
+ POST /api/v1/bank-rules
224
+ ```
225
+
226
+ **Use bank feeds if available.** Aspire and Airwallex direct feeds auto-import bank records daily. This eliminates the CSV import step entirely.
227
+
228
+ **Don't let it pile up.** The longer a bank record sits unreconciled, the harder it is to figure out what it was. After 90 days, you're essentially doing forensic accounting. Stay current.
229
+
230
+ **Common SMB bank fee accounts:**
231
+ - Bank Charges / Bank Fees (operating expense)
232
+ - Interest Expense (for overdraft/loan interest)
233
+ - Interest Income (for savings/deposit interest)
234
+ - Foreign Exchange Gain/Loss (for FX conversion fees)