SAP Document journal_entry

Journal Entry

A manual, balanced posting straight to the general ledger β€” debit and credit lines against G/L accounts, with no business partner and no item.

A Journal Entry is a manual posting straight to the general ledger. Where almost every other SAP B1 document creates its journal entry automatically as a side effect β€” an A/R invoice posts revenue, a delivery posts cost of goods sold, a payment moves cash β€” a Journal Entry is the one document a person writes directly, naming the G/L accounts and the debit and credit amounts by hand.

In the Service Layer this is the JournalEntries service, object code oJournalEntries (30), created at /b1s/v1/JournalEntries.

A Journal Entry has no business partner and no item. It does not describe a sale, a purchase, or a stock movement β€” it describes an accounting fact. Its content is a set of lines, each hitting one G/L account with a debit or a credit, and the entry is only valid when total debits equal total credits.

When it is used

A Journal Entry is the tool for accounting facts that no operational document captures:

  • Accruals and deferrals at period end β€” recognising an expense incurred but not yet invoiced, or deferring revenue billed in advance.
  • Depreciation β€” writing down asset value against a depreciation expense (outside the fixed-asset module).
  • Reclassifications β€” moving a balance from one G/L account to another to correct a mis-posting.
  • Corrections and adjustments found during reconciliation β€” bank charges, rounding differences, prior-period fixes.
  • Opening balances when first loading the ledger.
  • Provisions β€” booking a liability for a future obligation.

If the fact is really a sale, a purchase, a payment, or a stock movement, the correct document is the operational one (invoice, payment, goods issue…), which posts its own journal entry with the right sub-ledger links. A manual Journal Entry is for the things that live purely in the G/L.

Key fields

The document is a header carrying dates and a memo, over a JournalEntryLines collection where every line names a G/L account and either a debit or a credit.

FieldTypeNotes
JdtNumEdm.Int32Journal entry number (the document’s own key)
NumberEdm.Int32User-visible transaction number
ReferenceDateEdm.StringPosting date β€” YYYYMMDD string
DueDateEdm.StringDue date of the transaction β€” YYYYMMDD string
TaxDateEdm.StringTax point date β€” YYYYMMDD string
MemoEdm.StringDescription of the whole entry (why it was posted)
ReferenceEdm.StringExternal reference (Reference 1)
Reference2Edm.StringSecond external reference
SeriesEdm.Int32Numbering series
AutoVATSAPB1.BoYesNoEnumWhether SAP computes VAT lines automatically

There is deliberately no CardCode, no DocType, no DocumentLines with items β€” this is a ledger document, not a partner or stock document.

Line (JournalEntryLines)

FieldTypeNotes
Line_IDEdm.Int32Line index within the entry
AccountCodeEdm.StringG/L account this line posts to β€” required
DebitEdm.DoubleDebit amount (leave 0 if this line is a credit)
CreditEdm.DoubleCredit amount (leave 0 if this line is a debit)
ShortNameEdm.StringAccount short name (mirrors AccountCode for G/L lines)
LineMemoEdm.StringPer-line description
CostingCodeEdm.StringCost centre / profit-centre dimension
ProjectCodeEdm.StringProject dimension
ReferenceDate1Edm.StringLine-level reference date

Each line is either a debit or a credit against one AccountCode β€” never both. SAP B1 supports up to five dimensions (cost centre, department, project, region, …) per line via CostingCode and related fields, so a single balanced entry can spread cost across the analytical structure.

GL and stock effect

Stock: none. A Journal Entry never touches inventory quantities.

Accounting: the entry posts exactly the debits and credits its lines specify, directly to the named G/L accounts. The one hard rule is balance:

Ξ£ Debit  =  Ξ£ Credit

The document will not post unless total debits equal total credits. A typical accrual entry:

DR  Rent Expense                 2,000   ← expense recognised this period
CR      Accrued Liabilities             2,000   ← obligation to pay next period

Because the accounts are chosen by hand, a Journal Entry can hit any combination of P&L and balance-sheet accounts β€” the responsibility for correctness sits entirely with the person (or agent) writing it. There is no sub-ledger reconciliation behind it the way there is for an invoice or a payment, which is exactly why manual journal entries are the line item reviewers scrutinise most at period close.

Service Layer

PropertyValue
Service (entity)JournalEntries
Object codeoJournalEntries (30)
Create pathPOST /b1s/v1/JournalEntries
Read oneGET /b1s/v1/JournalEntries(<JdtNum>)
Sub-collectionJournalEntryLines (the balanced debit/credit lines)

A create payload names the memo and the balanced lines β€” no partner, no item:

POST /b1s/v1/JournalEntries
{
  "Memo": "Month-end rent accrual",
  "ReferenceDate": "20260731",
  "JournalEntryLines": [
    { "AccountCode": "620000", "Debit": 2000.0, "LineMemo": "Rent expense" },
    { "AccountCode": "210000", "Credit": 2000.0, "LineMemo": "Accrued liability" }
  ]
}

Norma’s connector and mock use the /b1s/v1/ paths shown here; a live SAP B1 on Feature Pack 2405 or later exposes the same entity under /b1s/v2/ with identical shape.

The response returns the assigned JdtNum. If total debits do not equal total credits, the create is rejected β€” an unbalanced journal entry cannot exist.