Goods Issue
A manual stock decrease with no sales document behind it โ inventory falls and posts to an expense account, against a warehouse and never a business partner.
A Goods Issue records stock leaving a warehouse when there is no sales order, no delivery, and no customer behind the movement. It is the mirror image of a Goods Receipt: where the receipt brings stock in against an offset account, the issue takes stock out and charges it to an expense account.
In the Service Layer this is the GoodsIssues service, object code
oInventoryGenExit (60) โ internally an Inventory General Exit, an exit of
goods from stock. It is created at /b1s/v1/InventoryGenExits.
Like the Goods Receipt, a Goods Issue has no CardCode and no CardName. The
stock is not going to a customer โ it is being consumed, scrapped, or written down.
The counterparty is a general ledger expense account, chosen against a warehouse and
an item, never a trading partner.
When it is used
A Goods Issue is the right document whenever stock must decrease for a reason that is not a sale:
- Scrap and damage โ units are broken, expired, or spoiled and must come off the books at cost.
- Internal consumption โ stock used by the company itself (office supplies, workshop parts, materials consumed in a task) rather than sold.
- Shrinkage write-down โ a count shows fewer units than the system holds, and the shortfall is written off.
- Samples and giveaways issued to prospects or staff with no invoice.
- Disposal of obsolete inventory that will never sell.
If the goods are actually being shipped to a customer, the correct document is a
Delivery (oDeliveryNotes, 15), which carries the CardCode and posts cost of goods
sold against that sale. The Goods Issue exists for every stock-out that is not a
customer shipment.
Key fields
The document is a small header over one or more DocumentLines. Each line names its
own warehouse and quantity, so one Goods Issue can remove several items from several
warehouses.
Header
| Field | Type | Notes |
|---|---|---|
DocEntry | Edm.Int32 | Internal primary key (system-assigned) |
DocNum | Edm.Int32 | User-visible document number |
DocObjectCode | SAPB1.BoObjectTypes | Always oInventoryGenExit (60) |
DocDate | Edm.String | Posting date โ YYYYMMDD string |
Reference2 | Edm.String | Free reference to the originating event |
Comments | Edm.String | Free-text reason for the issue |
JournalMemo | Edm.String | Memo written onto the generated journal entry |
Series | Edm.Int32 | Numbering series |
Notably absent: CardCode, CardName, ShipToCode โ no business partner.
Line (DocumentLines)
| Field | Type | Notes |
|---|---|---|
LineNum | Edm.Int32 | Line index (0-based) |
ItemCode | Edm.String | Item being removed from stock |
ItemDescription | Edm.String | Item name |
Quantity | Edm.Double | Units issued โ the amount stock falls by |
WarehouseCode | Edm.String | Which warehouse the stock leaves โ required |
UnitPrice | Edm.Double | Unit cost used to value the issue (usually item cost) |
LineTotal | Edm.Double | Quantity ร unit cost โ the value expensed |
AccountCode | Edm.String | G/L expense account to debit (overrides the default) |
CostingCode | Edm.String | Cost centre / profit-centre dimension |
ProjectCode | Edm.String | Project dimension |
The AccountCode here is the meaningful choice: it names which expense the loss
lands on โ scrap, consumption, write-off โ so the P&L reflects the real reason stock
left.
GL and stock effect
Stock: the on-hand quantity of each line’s ItemCode in its WarehouseCode
decreases by Quantity. This is an unconditional stock-out movement.
Accounting (perpetual inventory): the issue posts a journal entry that debits an expense and credits inventory:
DR Expense / Write-off account (value of goods issued)
CR Inventory (same value)The credit lowers the inventory balance-sheet account by the cost of the goods
removed; the debit charges that cost to the expense account chosen by the item
group’s G/L determination or the line’s AccountCode override. The value is the
item’s carrying cost under its valuation method (moving average, standard, or FIFO),
not a sale price โ no revenue and no customer are involved.
Under non-perpetual inventory no journal entry is generated; only the quantity falls, and finance values the stock reduction periodically.
Service Layer
| Property | Value |
|---|---|
| Service (entity) | GoodsIssues |
| Object code | oInventoryGenExit (60) |
| Create path | POST /b1s/v1/InventoryGenExits |
| Read one | GET /b1s/v1/InventoryGenExits(<DocEntry>) |
| Sub-collection | DocumentLines (carries ItemCode, Quantity, WarehouseCode) |
A minimal create payload names the reason, the item, the quantity, and the warehouse โ no partner:
POST /b1s/v1/InventoryGenExits
{
"Comments": "Scrap โ water-damaged stock, warehouse 01",
"DocumentLines": [
{ "ItemCode": "A00001", "Quantity": 3, "WarehouseCode": "01", "AccountCode": "610000" }
]
}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 DocEntry and DocNum, and โ under perpetual
inventory โ a TransNum pointing at the journal entry the issue created.