SAP Flow invoice ap_invoice delivery grpo incoming_payment outgoing_payment journal_entry

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 authority

Delivery โ€” goods shipped, perpetual inventory:

DR  Cost of Goods Sold             600   โ† expense: cost of items shipped
CR      Inventory                          600   โ† inventory value reduced

Incoming Payment โ€” customer pays:

DR  Bank Account                 1,170   โ† cash received
CR      Accounts Receivable            1,170   โ† customer balance cleared

A/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 vendor

Goods Receipt PO โ€” goods arrive before the invoice:

DR  Inventory                    1,000
CR      Goods Received Not Invoiced    1,000   โ† temporary accrual

Outgoing Payment โ€” paying the vendor:

DR  Accounts Payable             1,170
CR      Bank Account                   1,170

Two 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.

QuestionWhere 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,000

Balances 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,000

SupplierY 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 balance

Reconciliation 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.