Provide ChatGPT with payroll and GL data that your organisation allows you to process, then use it to draft a reconciliation by cost centre/account, surface exceptions and off-cycle items, and produce control totals for review. Treat the result as an investigation aid, not an automatic sign-off.
PAYROLL SYSTEM TOTALS Required columns: Cost Centre | Payroll GL Code | Pay Type | Run ID | Amount [Paste payroll rows here] GENERAL LEDGER POSTINGS — SAME ACCOUNTING PERIOD Required columns: Journal Ref | Cost Centre | GL Account | Description | Amount [Paste GL rows here] ACCOUNT MAPPING [Map each Payroll GL Code / Pay Type to the GL Account that should receive it. If codes already match, state "same codes". Do not infer mappings from descriptions.] RECONCILIATION SETTINGS - Accounting period: [e.g. June 2025] - Currency / units: [e.g. GBP] - Sign convention: [state whether payroll/GL expense amounts are positive or negative] - Absolute tolerance: £[e.g. 0.50] - Grouping key: Cost Centre + mapped GL Account - Off-cycle runs should be: [included in the period total / excluded because posted next period] and identify them by Run ID / Pay Type. Rules: 1. Aggregate payroll by Cost Centre + mapped GL Account before comparing with GL. Pay Type may be shown as detail, but do not split the reconciliation by Pay Type unless the account mapping requires separate GL accounts. 2. Aggregate all GL journal lines by the same Cost Centre + GL Account key. 3. Variance = GL Posted − Payroll Total, using the stated sign convention. 4. Status = MATCH only when ABS(Variance) <= tolerance. 5. Payroll key with no GL amount → MISSING FROM GL. 6. GL key with no mapped payroll amount → UNMATCHED GL ENTRY. 7. Equal-and-opposite variances are only a CANDIDATE reclassification/miscoding pattern. Flag them for investigation; do not conclude miscoding without journal detail. 8. Count off-cycle rows once only. If you list them separately for review, state whether they are already included in Payroll Total so the summary is not double-counted. 9. Do not infer a journal entry, correct account, accounting period, or cause without evidence. 10. Recalculate source control totals independently before presenting the result. Output: 1. Reconciliation table: Cost Centre | GL Account | Payroll Total | GL Posted | Variance | Status | Evidence/notes 2. Pay Type / Run ID detail for exception rows only 3. Candidate equal-and-opposite patterns, clearly labelled "investigate" 4. Off-cycle review list with an "included in total? yes/no" column 5. Control summary calculated from the original source data: Payroll source total | GL source total | Net variance | Number of payroll grouping keys | Number of GL grouping keys | Number of keys outside tolerance Do not call this a final sign-off. A reviewer must confirm exceptions and control totals.
Replace all bracketed sections with your real data, then paste the prompt into ChatGPT.
I have a payroll-to-GL variance I need to investigate. Cost Centre: [e.g. Operations] GL Account: [e.g. 6100 — Gross Pay] Payroll system total: [e.g. £60,000] GL posted amount: [e.g. £55,000] Variance: [e.g. -£5,000 (GL understated)] Other accounts showing movement in the same period: [Paste any other GL postings for this cost centre this month] Please investigate this variance without assuming the cause. 1. Recalculate the variance from the figures I supplied. 2. List the plausible explanations supported by the evidence. 3. Tell me what additional payroll run / journal / period detail would confirm or reject each explanation. 4. If an equal-and-opposite amount appears in another account, label it only as a candidate reclassification until the journal detail proves it. 5. Do not propose a correcting journal entry unless the source journal, intended GL account, accounting period and debit/credit direction are all evidenced in the data I provide. 6. If the evidence is sufficient for a reclassification, show the proposed entry separately and label it "review before posting".
Use this after spotting a VARIANCE in the main reconciliation output.
I need to reconcile payroll at employee level only if my GL contains employee-level identifiers. PRIVACY / DATA MINIMISATION Use Employee ID only. Do not include employee names, addresses, bank details, tax IDs, national insurance/social-security numbers, or other unnecessary personal data. PAYROLL EXTRACT Columns: Employee ID | Cost Centre | Payroll GL Code | Gross Pay | Employer Tax | Pension/Benefits | Net Pay [Paste only the fields required for this check] GL POSTINGS FOR THE SAME PERIOD Columns: Journal Ref | Employee ID (if genuinely present) | GL Account | Amount [Paste GL rows] First determine whether the GL is actually granular enough for employee-level matching. If Employee ID is absent or one GL line aggregates multiple employees, stop and say that an employee-level reconciliation cannot be proven from this GL extract. If employee-level IDs do exist: - Map Payroll GL Code to GL Account explicitly. - Aggregate multiple payroll or GL rows by Employee ID + mapped GL Account before comparing. - Do not reuse or double-count lines. - Variance = GL − Payroll using the stated sign convention. - Apply tolerance: £[amount]. - Missing payroll-side counterpart → UNMATCHED GL. - Missing GL-side counterpart → MISSING FROM GL. - Do not infer corrections or causes from the amount alone. Output: 1. Employee ID + GL Account reconciliation table 2. Missing from GL list 3. Unmatched GL list 4. Source control totals and exception count 5. Any limitation caused by aggregation or missing identifiers
For cost-centre level reconciliation use the Full reconciliation tab above.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Cost Centre | GL Account | Pay Type | Payroll | GL | Variance |
| 2 | Operations | 6100 | Gross Pay | £57,800 | £55,300 | −£2,500 |
| 3 | Operations | 6200 | Employer NIC | £19,460 | £21,960 | +£2,500 |
| 4 | Operations total | £77,260 | £77,260 | £0 |
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Cost Centre | GL Acct | Pay Type | Payroll | GL | Variance | Status |
| 2 | Operations | 6100 | Gross Pay | £57,800 | £55,300 | −£2,500 | Investigate pairing |
| 3 | Operations | 6200 | Employer NIC | £19,460 | £21,960 | +£2,500 | Candidate opposite |
| 4 | Operations total | £77,260 | £77,260 | £0 | Total reconciles |
Variance = GL − Payroll 6100 Gross Pay: £55,300 − £57,800 = −£2,500 6200 Employer NIC: £21,960 − £19,460 = +£2,500 Net variance: £0 Pattern → candidate reclassification / miscoding only. Only if the underlying journal proves £2,500 was posted to 6200 instead of 6100: Proposed reclass for review: Dr 6100 Gross Pay £2,500 Cr 6200 Employer NIC £2,500 Do not post from the variance pattern alone. ✓
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Cost Centre | GL Acct | Pay Type | Payroll | GL | Variance |
| 2 | Operations | 6100 | Gross Pay | £60,000 | £55,000 | −£5,000 |
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Date | Run / Journal | Pay Type | Payroll | GL | Result |
| 2 | 30/06/2025 | REG-JUN | Regular | £55,000 | £55,000 | Matched |
| 3 | 15/06/2025 | OC-1506 | Off-cycle | £5,000 | — | Missing from GL |
| 4 | Total | £60,000 | £55,000 | −£5,000 |
Regular payroll: Payroll £55,000 ↔ GL £55,000 = matched Off-cycle run OC-1506: Payroll £5,000 ↔ no GL posting = missing from GL Account variance: £55,000 GL − £60,000 payroll = −£5,000 ✓ Within this example, the Run ID detail identifies the missing payroll-side posting. The correcting journal's credit account cannot be inferred safely from this excerpt; use the payroll journal / clearing-account detail before posting.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Emp ID | Cost Centre | GL Acct | Payroll Gross | GL Amount | Status |
| 2 | EMP-041 | Operations | 6100 | £3,500 | £3,500 | ? |
| 3 | EMP-042 | Operations | 6100 | £4,200 | — | ? |
| 4 | EMP-043 | Sales | 6100 | £2,800 | £2,800 | ? |
| 5 | EMP-091 | Finance | 6100 | £3,250 | £3,200 | ? |
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Emp ID | Cost Centre | GL Acct | Payroll | GL | Variance | Status |
| 2 | EMP-041 | Operations | 6100 | £3,500 | £3,500 | £0 | Matched |
| 3 | EMP-042 | Operations | 6100 | £4,200 | — | — | Missing from GL |
| 4 | EMP-043 | Sales | 6100 | £2,800 | £2,800 | £0 | Matched |
| 5 | EMP-091 | Finance | 6100 | £3,250 | £3,200 | −£50 | Variance |
| 6 | Sample summary | £13,750 | £9,500 | 2 exceptions |
Variance formula keeps numeric variance separate: =IF(E3="","",E3-D3) Status formula can then test missing GL vs tolerance. EMP-041: £3,500 − £3,500 → matched EMP-042: no GL row for Employee ID + 6100 → Missing from GL EMP-043: £2,800 − £2,800 → matched EMP-091: £3,200 GL − £3,250 payroll = −£50 → variance Sample totals: Payroll £13,750 GL £9,500 Net variance = £9,500 − £13,750 = −£4,250 Shown sample: 4 employees, 2 exceptions. ✓
From your payroll system, export a summary by cost centre and pay type — not individual employee rows. You need: Cost Centre, GL Account, Pay Type (Gross Pay / Employer NIC / Pension), and Amount. Most payroll systems have a cost analysis or cost centre summary report for this.
From your accounting system, extract all journal lines posted to the payroll-related GL accounts defined in your own chart of accounts for the period. Include Journal Ref, Cost Centre, GL Account, Description, and Amount. If your payroll and GL use different account codes, prepare a mapping table.
Use the tolerance approved by your reconciliation policy. Set it to £0.00 when exact agreement is required; do not choose £0.50 merely because it appears in the example. Specify the period clearly — ChatGPT uses it in the sign-off summary header.
When one account is short by exactly the amount another is over, the pattern can indicate a reclassification issue, but it does not prove one. Check the source journal, account mapping and payroll run before deciding whether any correcting entry is needed.
Use the main reconciliation output to find the exact combination causing the variance (e.g., Operations - 6100 Gross Pay).
Export only the ledger entries for that specific GL account and cost centre for the period. Do not clutter the prompt with the entire company's ledger.
Use the Variance prompt and supply the payroll total, GL total, and the detailed GL rows. ChatGPT checks against common issues like missing journals, wrong period postings, or manual adjustments.
Use ChatGPT's diagnosis as an investigation aid. Only after the source payroll journal, period, accounts and supporting detail prove the cause should you prepare any reclass, accrual or missing entry for your normal review/approval process.
Export only the payroll fields required for the check, using Employee ID rather than employee name. Avoid unnecessary personal data such as bank details, tax IDs or addresses.
Check whether the GL genuinely contains Employee ID at line level. If the journal aggregates several employees into one posting, employee-level matching cannot be proven from that GL extract; reconcile at the available aggregation level instead.
Paste both datasets into ChatGPT using the Employee-level prompt. If both datasets are employee-granular, aggregate by Employee ID + mapped GL Account and compare those totals. If the granularity differs, stop rather than forcing a match.
Investigate the exceptions list. Investigate orphaned records without assuming the cause. They may reflect timing, aggregation, mapping, an omitted journal or another data-quality/control issue.