Finance & Banking
How operational documents feed the general ledger, the standard journal entry per document type, A/R and A/P aging, payments, bank reconciliation, dimensions, and the period close โ plus how Norma reads the books.
Finance is the backbone of SAP Business One. The crucial thing to understand is that most journal entries are not typed by an accountant โ they are created automatically by operational documents. A delivery, an invoice, a payment: each posts its own entry the moment it is saved. The finance team’s job is therefore less about writing entries and more about ensuring the automatic ones are correct, complete, and reconciled. This flow explains how the operational world feeds the ledger and how the books are closed; it describes the process, it does not instruct anyone to post.
How operational documents feed the general ledger
Nearly every document in the sales, purchasing, and inventory flows posts to the general ledger automatically. The ledger is the single point they all converge on, and from it the financial statements are derived.
flowchart TD
subgraph OPS["Operational Documents"]
ARI[A/R Invoice]
DEL[Delivery]
API[A/P Invoice]
GRPO[Goods Receipt PO]
IP[Incoming Payment]
OP[Outgoing Payment]
JE[Manual Journal Entry]
end
GL[(General Ledger)]
ARI -- auto --> GL
DEL -- auto --> GL
API -- auto --> GL
GRPO -- auto --> GL
IP -- auto --> GL
OP -- auto --> GL
JE -- manual --> GL
GL --> PL[P&L Statement]
GL --> BS[Balance Sheet]
GL --> TB[Trial Balance]
GL --> CF[Cash Flow]Only the manual journal entry is typed by hand โ used for accruals, adjustments, and corrections that no operational document produces. Everything else is a by-product of running the business, which is why a wrong G/L account determination upstream quietly poisons the statements downstream.
The standard journal entries
Each document type posts a fixed, predictable pattern. Knowing the pattern lets you read any document’s ledger impact without opening the entry. The examples use a โฌ1,000 sale/purchase, โฌ600 cost of goods, and 17% VAT.
A/R Invoice โ customer billing:
DR Accounts Receivable 1,170 โ customer owes us
CR Revenue 1,000 โ we earned this
CR VAT Payable 170 โ owed to the tax authorityDelivery โ goods shipped, perpetual inventory:
DR Cost of Goods Sold 600 โ expense: cost of items shipped
CR Inventory 600 โ inventory value reducedIncoming Payment โ customer pays:
DR Bank Account 1,170 โ cash received
CR Accounts Receivable 1,170 โ customer balance clearedA/P Invoice โ vendor billing:
DR Inventory / Expense 1,000 โ cost recorded (or GRNI cleared)
DR VAT Recoverable 170 โ tax we can reclaim
CR Accounts Payable 1,170 โ we owe the vendorGoods Receipt PO โ goods arrive before the invoice:
DR Inventory 1,000
CR Goods Received Not Invoiced 1,000 โ temporary accrualOutgoing Payment โ paying the vendor:
DR Accounts Payable 1,170
CR Bank Account 1,170Two of these โ the delivery and the goods receipt โ are what separate a company that knows its real-time margin and inventory value from one that discovers it at month-end.
The finance team’s key questions
Most finance work is a question answered from the ledger and its sub-ledgers. Each question has a standard report behind it.
| Question | Where to look in SAP B1 |
|---|---|
| Are customers paying? | A/R Aging Report |
| Are we paying vendors on time? | A/P Aging Report |
| What is our cash position? | Cash Flow Report, Bank Reconciliation |
| Is revenue correct? | Sales Analysis, P&L |
| Is inventory value correct? | Inventory Audit Report, Stock Ledger |
| Are taxes correct? | Tax Report |
| Do bank accounts reconcile? | Bank Reconciliation |
| Are profit centres accurate? | Cost Centre / Dimension Reports |
Accounts receivable aging
A/R aging buckets every open customer balance by how long it has been outstanding. It is the primary early-warning report for bad debt: money in the oldest bucket is the money least likely ever to arrive.
Customer Current 31-60d 61-90d 90d+ Total
Acme Ltd 10,000 5,000 0 2,000 17,000
Beta Corp 0 8,000 3,000 0 11,000Balances in the 90d+ column are high-risk. A rising oldest bucket, or a single customer whose balance keeps sliding right, is the signal to stop extending credit and start collecting.
Accounts payable aging
A/P aging is the same report from the other side โ how much the company owes each vendor, and whether any of it is overdue.
Vendor Current 31-60d 61-90d 90d+ Total
SupplierX 5,000 2,000 0 0 7,000
SupplierY 0 0 1,500 500 2,000SupplierY at 90d+ means the company is late paying โ a relationship and supply-continuity risk, not just an accounting note. A/P aging is also where cash is managed: paying exactly on terms, no earlier and no later, preserves working capital without straining a supplier.
Payments
An incoming payment settles one or more open A/R invoices (debit Bank, credit Accounts Receivable); an outgoing payment settles one or more open A/P invoices (debit Accounts Payable, credit Bank). A payment can be partial, leaving the invoice open for the remainder, or it can be applied across several invoices at once. A payment posted to the wrong bank G/L account is the single most common reason a bank reconciliation refuses to balance.
Bank reconciliation
Bank reconciliation matches the company’s own record of payments against what the bank actually cleared. It is what proves the cash figure on the balance sheet is real.
sequenceDiagram
participant B as Bank Statement
participant S as SAP B1
B->>S: Import bank statement
S->>S: Match statement lines to SAP payments/receipts
S-->>S: Matched items - cleared
S-->>S: Unmatched in SAP - outstanding (not yet in bank)
S-->>S: Unmatched in bank - missing entry (needs a manual journal)
S->>S: Reconcile - SAP balance = bank balanceReconciliation catches three things: payments recorded in SAP but not yet cleared by the bank (timing), bank charges that were never recorded in SAP (missing entries), and outright errors in payment amounts. Items unmatched on the bank side usually need a manual journal entry to bring them into the ledger.
Cost centres and dimensions
SAP Business One supports up to five dimensions โ profit centre, department, project, region, and one more โ on every journal entry line. Dimensions are what let the same ledger answer “P&L by department,” “budget vs. actual by project,” and “margin by region” without a separate chart of accounts for each.
The catch: dimensions do not flow automatically. Unless distribution rules are configured, a dimension has to be present on the document line, or the posting lands with no dimension and drops out of every dimensional report.
Period closing
Closing a period is the controlled ritual that turns a month of transactions into signed-off financial statements. It runs in a fixed order and ends by locking the period so nothing can be posted into it retroactively.
flowchart TD
R[Reconcile Bank] --> V[Verify A/R + A/P Aging]
V --> D[Review open deliveries / invoices]
D --> J[Post accruals / adjustments as journal entries]
J --> T[Run Trial Balance]
T --> C{Balanced?}
C -->|Yes| L[Lock period]
C -->|No| J
L --> P[Generate P&L + Balance Sheet]Once a period is locked in SAP Business One, no document can post to it โ which is exactly what protects a published set of accounts from a stray back-dated entry. Anything discovered after the lock has to be posted in a later, open period.
How Norma reads the books
Norma’s role in finance is overwhelmingly read-only: it answers the finance team’s standard questions faster than opening the reports by hand, and it never posts a journal entry on its own.
Reading the books. Norma calls read-only connector tools that map almost
one-to-one onto the questions above. get_ar_aging and get_ap_aging return the
aging buckets; get_cash_flow_forecast projects the cash position;
get_credit_exposure flags customers over their limit; get_revenue_monthly,
get_revenue_quarterly, get_revenue_annual, and get_gross_margin read revenue
and margin straight from the posted documents; get_order_to_cash_cycle measures how
long cash takes to arrive. Because these only read the Service Layer, they run with
no review gate.
Writing to the ledger. Norma does not post manual journal entries. The only way
it affects the ledger is indirectly, by drafting an operational document โ an
invoice, a payment, a delivery โ through a gated create_* tool. Each is posted to
the connector against the Service Layer create path /b1s/v1/<Docs> and reaches SAP
only after a human reviews and approves it, at which point SAP itself generates the
automatic journal entry. The ledger stays a by-product of approved business
documents, never something Norma edits directly.