SOX walkthrough · TAN · FY25 · 1 of 3

Journal entries, for a finance newbie

This page is the first of four. It explains the Journal Entries walkthrough Barry dropped in Slack — how numbers get into the books, who must approve them, and what can go wrong. People appear only as examples.

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.

is a

A walkthrough of one process: posting journal entries.

is not

A tutorial on debit/credit math. They explicitly skip T-accounts.

why it exists

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.

Journal Entry Process Narrative — systems into NetSuite Journal Entry Process Narrative G/L = general ledger = NetSuite (the ERP) Treasury team FIS Quantum Serengeti file cabinet · A/P batch Quantum SFDC MuleSoft SharePoint biweekly ADP G/L NetSuite ERP · the G/L FAM additions · disposals monthly amortization gains / losses Automated JEs born inside NetSuite Sale / purchase sales tax scripts Manual · Accounting Ops Email backup + approval JE template Excel → CSV

machine pipe human / Accounting Ops the books

How a manual journal entry is born

1. Someone needs a number in the books 2. Fill the Excel JE template + backup 3. Reviewer signs (email / Approvals tab) 4. Poster copies it to CSV 5. Upload to NetSuite 6. Workflow posts or routes more approvals

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

  1. Group rows by company code + currency (NetSuite makes separate JE IDs that way).
  2. Date format and period look sane.
  3. Kill leading zeros, extra decimals, bad External IDs.
  4. “Defer Entry” must be blank (or reversals can hide).
  5. Debits = credits. If not, send it back.
  6. 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:

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

SizeWhat happens
Under $100kWorkflow posts it. No extra manager click. PwC flags this as a control gap for those risks.
Over $100kAccounting Manager (or Revenue Manager) must approve. Email has the template + a PDF of the NetSuite JE.
Over $5MAccounting Director approves after the manager.
Weird / huge / judgmentController or CFO approve outside NetSuite (usually email) before it is keyed or before system approval. Example: goodwill, impairment, acquisition.
Manual JE approval ladder Submit in NetSuite BB Approval Workflow < $100k → posted no extra click · gap > $100k · Manager Acct / Revenue > $5M · Director after the manager Unusual / judgment → Controller or CFO email first

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.

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.

Missing segment reclass Find blanks LOB / CC / location OpEx · ID 394 TAN08 reviews Revenue · ID 387 TAN07 reviews Corrections role skips normal workflow TAN06 after-check only expected memos

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

RiskPlain EnglishControl
LSPM-J1Entry posted wrongTAN02 (not under $100k)
LSPM-J2Entry never postedTAN04
LSPM-J3Wrong GL accountTAN02
LSPM-J4Wrong monthTAN02
LSPM-J5NetSuite ≠ template/supportTAN02
LSPM-J6Wrong people have create-accessAN13 / AN11
LSPM-J7Same person creates and approvesAN13 / AN11 + workflow
LSPM-J8387/394 templates wrong, no approvalTAN07 / TAN08
LSPM-J16Missing LOB / cost center / locationTAN07 / TAN08
LSPM-J17Corrections role used for extra stuffTAN06

Other pages: accounting policies · reconciliations · Session 1 close

Original document

SOX Walkthrough Narrative — Journal Entries — FY25.pdf Open PDF Download

Every short form

Hover any dotted term in the page. Or search here. One line each.