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.
- package/assets/skills/api/SKILL.md +1 -1
- package/assets/skills/conversion/SKILL.md +1 -1
- package/assets/skills/jobs/SKILL.md +104 -0
- package/assets/skills/jobs/references/audit-prep.md +319 -0
- package/assets/skills/jobs/references/bank-recon.md +234 -0
- package/assets/skills/jobs/references/building-blocks.md +135 -0
- package/assets/skills/jobs/references/credit-control.md +273 -0
- package/assets/skills/jobs/references/fa-review.md +267 -0
- package/assets/skills/jobs/references/gst-vat-filing.md +250 -0
- package/assets/skills/jobs/references/month-end-close.md +308 -0
- package/assets/skills/jobs/references/payment-run.md +246 -0
- package/assets/skills/jobs/references/quarter-end-close.md +268 -0
- package/assets/skills/jobs/references/supplier-recon.md +330 -0
- package/assets/skills/jobs/references/year-end-close.md +341 -0
- package/assets/skills/transaction-recipes/SKILL.md +1 -1
- package/dist/__tests__/jobs-audit-prep.test.js +125 -0
- package/dist/__tests__/jobs-bank-recon.test.js +108 -0
- package/dist/__tests__/jobs-credit-control.test.js +98 -0
- package/dist/__tests__/jobs-fa-review.test.js +104 -0
- package/dist/__tests__/jobs-gst-vat.test.js +113 -0
- package/dist/__tests__/jobs-month-end.test.js +162 -0
- package/dist/__tests__/jobs-payment-run.test.js +106 -0
- package/dist/__tests__/jobs-quarter-end.test.js +155 -0
- package/dist/__tests__/jobs-supplier-recon.test.js +115 -0
- package/dist/__tests__/jobs-validate.test.js +181 -0
- package/dist/__tests__/jobs-year-end.test.js +149 -0
- package/dist/commands/jobs.js +184 -0
- package/dist/index.js +2 -0
- package/dist/jobs/audit-prep.js +211 -0
- package/dist/jobs/bank-recon.js +163 -0
- package/dist/jobs/credit-control.js +126 -0
- package/dist/jobs/fa-review.js +121 -0
- package/dist/jobs/format.js +102 -0
- package/dist/jobs/gst-vat.js +187 -0
- package/dist/jobs/month-end.js +232 -0
- package/dist/jobs/payment-run.js +199 -0
- package/dist/jobs/quarter-end.js +135 -0
- package/dist/jobs/supplier-recon.js +132 -0
- package/dist/jobs/types.js +36 -0
- package/dist/jobs/validate.js +115 -0
- package/dist/jobs/year-end.js +153 -0
- package/dist/types/index.js +2 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: api
|
|
3
|
-
version: 2.
|
|
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.
|
|
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)
|