# Journal Entries, Accruals, and Prepaids: Automating Close Entries

> Prepare accruals, prepaid amortization, and recurring journals from source schedules, with the approval, reversal, and roll-forward checks a reviewer needs.

- Canonical page: https://procindex.com/blog/journal-entries-accruals-prepaids
- Author: ProcIndex Editorial Team
- Published: 2026-02-11
- Updated: 2026-11-10
- Topics: journal-entries, accruals, prepaid-expenses, month-end-close, manufacturing-accounting

Your team books the same maintenance accrual every month. In April the supplier's bill for March arrives on the 3rd, AP posts it to March because the service date is March, and the auto-reversal of the accrual lands on April 1 as usual. Nobody notices until the flux review shows March maintenance at double its normal run rate.

Close entries are where small process gaps turn into misstated expense. Automating them is worth doing, because they are repetitive and schedule-driven. But the tool has to carry the source, the approval, and the reversal along with the entry, or you will automate the double count.

## Know which kind of entry you are automating

| Entry type | Source of the amount | Main risk |
| --- | --- | --- |
| Recurring fixed entry | Contract or approved schedule (rent, fixed fees) | Keeps posting after the contract changed or ended |
| Expense accrual | Estimate of goods or services received but not billed | Double count when the bill posts; reversal missing or duplicated |
| Prepaid amortization | Bill with service dates spanning future periods | Wrong start date, missed credit or cancellation |
| Manufacturing variance and WIP entries | Work order activity and costing setup | Late costs mistaken for production variances |
| Reclass or correction | Reviewer's finding | No link back to the original error |

Each type needs the same four things in its record, and different checks on top.

## What every automated journal must carry

A tool can pull the source schedule and propose the entry. The reviewer still needs to see which period, amount, and accounts the schedule supports.

| Check | Evidence to retain |
| --- | --- |
| Amount | Source schedule, calculation, and any change since the prior close |
| Posting details | Entity, period, accounts, dimensions, currency |
| Approval | The version approved, the approver, and the decision |
| Reversal | Whether required, the planned date, and the resulting entry |

Keep "the system accepted it" separate from "it is right." Microsoft documents journal approval workflows and posting validation in Dynamics 365 Finance ([Microsoft's general journal documentation](https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/general-journal-processing)). Validation confirms the entry meets system rules: open period, valid account and dimension combinations, balanced lines. It does not confirm the amount or the accounting treatment. That is the reviewer's job, and it needs the source schedule beside the entry.

## Accruals: estimate, reverse, true up

An expense accrual recognizes cost for goods or services received in the period when the supplier has not yet billed. The standard pattern is to book the estimate at month-end and reverse it on the first day of the next period, so the real bill can post normally.

### Illustrative example: a maintenance accrual

Contract maintenance was performed in March. The supplier has not invoiced. Based on the work orders and the contract rate, the controller approves an estimate of $8,400.

| Date | Entry | Debit | Credit |
| --- | --- | --- | --- |
| Mar 31 | Accrue March service | Maintenance expense $8,400 | Accrued liabilities $8,400 |
| Apr 1 | Auto-reverse | Accrued liabilities $8,400 | Maintenance expense $8,400 |
| Apr 9 | Bill posted in April | Maintenance expense $8,650 | Accounts payable $8,650 |

March expense: $8,400. April expense: −$8,400 + $8,650 = $250, which is the true-up between estimate and actual. Accrued liabilities: $8,400 − $8,400 = $0.

Now replay the opening scenario. If AP posts the $8,650 bill into March instead, March carries $8,400 + $8,650 = $17,050 of maintenance, and April carries −$8,400. Both months are wrong. Two rules prevent this:

- Before posting an accrual, check whether a bill for the same supplier and service period has already posted, or is in the approval queue.
- When a late bill is posted back into a period that already has an accrual for it, reverse the accrual in that same period and cancel the scheduled next-period reversal. Otherwise the April reversal still runs against a liability that is already gone.

If you use automatic reversals, confirm the reversal date and check the next period's ledger before preparing the next accrual. A missing reversal shows up as an accrued liability that grows every month. A duplicated one (system reversal plus a manual reversal someone added "to be safe") shows up as negative expense. The [receipt accrual guide](https://procindex.com/blog/grir-receipt-accrual-reconciliation) covers accruals driven from unbilled receipts at line level.

## Prepaids: build the schedule from service dates

An annual insurance bill arrives before coverage begins. Build the schedule from the policy dates. The date AP receives or pays the bill can differ from the date expense begins.

Record the bill, entity, prepaid account, expense account, service dates, and amount. Have the controller confirm the recognition method and the convention for partial periods.

### Illustrative example: straight-line and a mid-month start

A $12,000 policy covers twelve full months. Under an approved straight-line schedule, expense is $12,000 ÷ 12 = $1,000 a month. After three monthly entries, $12,000 − $3,000 = $9,000 remains prepaid, assuming no credits or changes.

If the same policy starts on March 16 and the controller approves a half-month convention:

- March (half month): $500
- April through the following February (11 months): 11 × $1,000 = $11,000
- March of the following year (half month): $500
- Total: $500 + $11,000 + $500 = $12,000

Write down the convention. A daily-basis schedule gives slightly different monthly amounts, and switching methods mid-life leaves an odd final balance that someone will have to explain.

Oracle documents that NetSuite generates amortization journals from the amounts due on schedules, and that these entries typically debit expense and credit the deferred expense account ([Oracle's amortization journal documentation](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_N1779279.html)). Check the selected period and the schedules before generating entries.

### When the schedule changes

| When this happens | What to check |
| --- | --- |
| New bill enters the schedule | Service dates, amount, entity, accounts |
| Supplier issues a credit or cancels coverage | Which periods and amounts changed, which entries already posted |
| Schedule starts or ends mid-month | Proration convention and the final remaining amount |
| A journal fails or is retried | Whether it already posted before creating another |

### Roll the prepaid balance forward

Reconcile prepaids with a roll-forward, not just a balance comparison. Illustrative month:

| | Amount |
| --- | --- |
| Opening prepaid balance | $46,000 |
| Add: new prepaid bills | $12,000 |
| Less: amortization posted | ($7,500) |
| Less: credits and cancellations | ($1,500) |
| Expected ending balance | $49,000 |

Check: $46,000 + $12,000 − $7,500 − $1,500 = $49,000. Compare that to the ledger. If the ledger shows $50,000, look for a credit that reduced the schedule but never posted, or a new bill coded to prepaid without a schedule. Investigate by bill and schedule, so the reviewer can explain the remaining balance without reopening every invoice.

## Manufacturing: separate production variances from late costs

A work order used more material than planned, and an outside processing invoice arrived after close. The first may be a production variance. The second is a cutoff question. Review them separately before explaining why the job cost more.

Reconcile the work order first. Check quantities issued, returned, scrapped, and completed against the standard for actual output. Confirm which labor and overhead entries posted and which operations are still open. If an issue was recorded twice or a return was missed, correct the source before calling the difference extra consumption.

Oracle documents Work Order Close in NetSuite as the step that generates reconciliation entries to post variances for WIP work orders ([Oracle's guide to using WIP on work orders](https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_N2337938.html)). An order still open at cutoff can legitimately carry WIP. Trace saved variance entries back to the order.

| What changed | What to check | Owner |
| --- | --- | --- |
| Material usage above standard | Issues, returns, scrap, actual output | Production and cost accounting |
| Purchase price differs from the order | Approved price, receipt, supplier bill | Purchasing and AP |
| Outside processing done before cutoff, bill arrives later | Completion evidence; any receipt or accrual already recorded | Controller and AP |
| Labor cost changed without a change in hours | Rate, posting period, labor allocation | Payroll or cost accounting |

For the late outside-processing bill, check whether the ledger already recognized the receipt or service before approving a separate accrual. Then confirm how that accrual clears when the bill posts, using the same reversal discipline as above. Price-driven differences belong in the [purchase price variance guide](https://procindex.com/blog/purchase-price-variance).

## Test the failure cases before you trust the automation

In a test environment, run three cases:

1. **A journal with an invalid dimension.** It should stay visible for correction, not vanish into an error log.
2. **A source schedule that changes after approval.** The entry should follow your reapproval policy rather than posting the old approved amount or the new unapproved one.
3. **A posting that times out.** Before retrying, check whether the original posted. A blind retry is how prepaid amortization gets booked twice.

Afterward, reconcile the ledger to the approved schedules. The [audit trail guide](https://procindex.com/blog/finance-audit-trail-controls) covers the evidence to keep when an entry is corrected.

## What goes wrong

| Symptom | Likely cause |
| --- | --- |
| Accrued liabilities grow every month | Reversals not running, or accruals booked for bills that already posted |
| Negative expense in the first days of a month | Reversal duplicated, or bill posted into the prior period while reversal ran in the current one |
| Prepaid balance doesn't roll forward | Credit or cancellation missed; bill coded to prepaid with no schedule |
| Recurring entry continues after contract ended | No end date or owner on the recurring template |
| Job cost spikes after close | Late outside processing posted as variance instead of cutoff accrual |

## Three fixes to make before the next close

- [ ] Give every recurring template an end date and an owner
- [ ] Make each accrual check for a posted or pending bill for the same supplier and service period
- [ ] Write down the partial-month convention for prepaids and apply it to every new schedule

These entries sit at steps 2 and 5 of the [month-end close sequence](https://procindex.com/blog/month-end-close-automation).

## Sources

- https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/general-journal-processing
- https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_N1779279.html
- https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_N2337938.html

---

Published by ProcIndex, which builds AI accounting agents for construction and manufacturing finance teams. ProcIndex currently connects to NetSuite, Sage Intacct, and QuickBooks. Worked examples in this guide are illustrative, not customer results.
