Start here
A company has a diary of money called the general ledger. Almost nothing “just appears” there. Someone or some system posts a journal entry — a balanced batch of pluses and minuses.
This walkthrough (code TAN) is PwC writing down how that actually works at BlackBerry in FY25, then pointing at the checks (controls) that are supposed to stop bad entries.
A walkthrough of one process: posting journal entries.
A tutorial on debit/credit math. They explicitly skip T-accounts.
Auditors need to see the path from “someone wants a number changed” to “it is in the books.”
How money reaches the general ledger
Same picture as the whiteboard: every path ends in NetSuite, which is the G/L. Automated pipes on the left. Manual Accounting Ops blob on the bottom. FAM and automated JEs sit on the NetSuite side.
machine pipe human / Accounting Ops the books
How a manual journal entry is born
What must be on every entry
- Company code (which legal entity)
- Currency
- Date and posting period (which month the books should feel it)
- Reversal date if it is a temporary accrual
- Memo (plain-language “why”)
- Amounts that balance, plus GL account and cost-center split
You can type into a closed calendar date. You cannot post to a closed posting period — NetSuite rejects that.
What the poster checks before upload
- Group rows by company code + currency (NetSuite makes separate JE IDs that way).
- Date format and period look sane.
- Kill leading zeros, extra decimals, bad External IDs.
- “Defer Entry” must be blank (or reversals can hide).
- Debits = credits. If not, send it back.
- If key fields changed after review, it needs re-approval.
After upload they watch Job Status. One template can spawn many JEs. Errors like “record already exists” or “debits and credits don’t balance” get chased. They attach the template to each NetSuite JE, then submit the approval workflow.
Machines also post journal entries
Not everything is a human with Excel. Automated JEs come from other processes (see those EGAs). Examples in this narrative:
- Treasury: FIS Quantum pushes cash/interest entries to NetSuite daily.
- Trademark patents: Serengeti builds an A/P batch; someone uploads it to the NetSuite file cabinet.
- Orders: Salesforce → Mulesoft → NetSuite after fulfillment; contract decides the entry.
- Payroll: ADP GL report lands on SharePoint; Workday integration uploads the JE.
- Fixed assets: NetSuite FAM posts additions, disposals, monthly amortization, gains/losses.
- Sales tax: native NetSuite logic + custom scripts on each sale/purchase.
Manual JEs can be started by Finance (including Tax & FP&A) or non-finance. Accounting Operations still owns processing and posting. Recurring ones get ticked on a monthly Excel checklist.
Approvals — the dollar ladders
| Size | What happens |
|---|---|
| Under $100k | Workflow posts it. No extra manager click. PwC flags this as a control gap for those risks. |
| Over $100k | Accounting Manager (or Revenue Manager) must approve. Email has the template + a PDF of the NetSuite JE. |
| Over $5M | Accounting Director approves after the manager. |
| Weird / huge / judgment | Controller or CFO approve outside NetSuite (usually email) before it is keyed or before system approval. Example: goodwill, impairment, acquisition. |
What a reviewer actually looks at
- Right posting period vs date/memo
- Recurring vs unusual
- Support attached (except reversals, bank moves, some bank fees). Revenue support lives on a shared drive, not always on the JE.
- FX, line of business, cost center, reversal date on accruals
- Memo matches the accounts (salary accrual should hit payroll accounts)
Rejects need a comment. You cannot approve your own entry. Accounting Director role cannot create JEs — but some humans hold a second role that can, so the system still blocks self-approval.
If you set a reversal date on the original, approving the original also approves the later auto-reversal. The reversal does not scream “I am a reversal” until you open it.
TAN02 is the key control for accuracy, right account, right period, matches support, and duties — but only above the $100k line.
Who is even allowed to create a JE
Twelve NetSuite roles can create manual JEs: Administrator, BB-AP Payments, BB-Accounting Analyst, BB-Accounting Corrections, BB-Accounting Manager, BB-Accounting WatchDox, BB-Assets, BB-Cash App, BB-Consolidation Manager, BB-Intercompany Analyst, BB-Revenue Analyst, BB-Revenue Manager.
- AN13 — Quarterly Access Review. Head of Accounting Operations checks who still needs those roles.
- AN11 — When a role is new or changed, Corporate Controller does a two-level SOD check (job vs permissions, then person vs access).
- AN08 — Admin role can post (cutovers). A log is reviewed monthly by someone who is not an admin.
- Accounting Corrections exists to fix missing line of business / cost center / location. Only two people get it, and it can skip the normal approval workflow.
Missing labels (the “segment reclass”)
An income-statement JE can post without a cost center, line of business, or location. Then the P&L is hard to read. Risk codes: LSPM-J16, LSPM-J8, LSPM-J17.
OpEx cleanup — template 394 · TAN08
Accounting Manager prepares. Finance Manager checks the CFO Income Statement by line of business. Director, Accounting Operations checks External ID, period, totals vs the Revenue Details Flat File, color-coded reverse vs reclass lines, and Cost Center Hierarchy.
Revenue cleanup — template 387 · TAN07
Revenue Accounting Manager prepares. Financial Accounting Manager ties totals, checks missing material group / location / LOB using Material Group Listing, Location, and Complete Items Extraction reports.
TAN06: because Corrections bypasses workflow, Director later runs “JE Created by Accounting Corrections Role” and confirms only the expected people posted only the expected memos.
Parked / leftover entries — TAN04
Before the month is locked: scan SharePoint so nothing is waiting, then run NetSuite “Approve Journals” for anything uploaded but not submitted/approved. Tiny balance-sheet items (<$5k) might get pushed to next period. P&L items stay in this period. Screenshot of “No records to show” is the evidence. Then they close the period. This is the key control that JEs were complete (LSPM-J2).
Risks the auditor named, and the control that answers
| Risk | Plain English | Control |
|---|---|---|
| LSPM-J1 | Entry posted wrong | TAN02 (not under $100k) |
| LSPM-J2 | Entry never posted | TAN04 |
| LSPM-J3 | Wrong GL account | TAN02 |
| LSPM-J4 | Wrong month | TAN02 |
| LSPM-J5 | NetSuite ≠ template/support | TAN02 |
| LSPM-J6 | Wrong people have create-access | AN13 / AN11 |
| LSPM-J7 | Same person creates and approves | AN13 / AN11 + workflow |
| LSPM-J8 | 387/394 templates wrong, no approval | TAN07 / TAN08 |
| LSPM-J16 | Missing LOB / cost center / location | TAN07 / TAN08 |
| LSPM-J17 | Corrections role used for extra stuff | TAN06 |
Other pages: accounting policies · reconciliations · Session 1 close
Original document
Every short form
Hover any dotted term in the page. Or search here. One line each.