SAP Account Determination (OBYC): From Goods Movement to G/L Posting
You post a goods receipt in MIGO. You enter a material, a quantity, a purchase order. At no point does SAP ask which G/L account to post to. And yet an accounting document has just been created.
That is the job of SAP account determination: the system works out the account from a few criteria (the company, the material, the movement) and looks up the answer in a mapping table that you display with transaction OBYC. In this article we start from a real movement and trace the chain back to the account. We also cover what to do on the day SAP tells you it cannot find one.
- A valuated goods movement in SAP MM automatically creates an accounting document in SAP FI. The user never enters an account.
- SAP combines three families of criteria: the organization (the company code’s chart of accounts), the material (its valuation class) and the transaction (the movement type, which triggers transaction keys such as
BSXorWRX). - The criteria-to-account mapping is displayed in
OBYC. A built-in simulation shows the account SAP finds for a given material and transaction. - The error “Account determination for entry … not possible” means one combination of criteria has no account. You diagnose it with the simulation, no guesswork needed.
What happens in accounting when you receive stock?
One goods receipt, two documents
A goods receipt against a purchase order is the second step of the purchasing cycle. When you post it, SAP first creates a material document. It describes the physical side: which material, how much, in which plant, in which storage location.
If the material is valuated, SAP also creates an accounting document. This one describes the money: stock goes up by an amount, and an offsetting entry is recorded while you wait for the vendor invoice. The document goes straight into the general ledger in SAP FI. In S/4HANA it lands in the S/4HANA Universal Journal, like every other posting.
Check it yourself: in MIGO, the material document header gives you access to the related accounting document. It is the same habit as following the document flow on the sales side.
Nobody enters the account: SAP derives it
The warehouse clerk does not know the chart of accounts, and that is exactly how it should be. SAP finds the account without any user input, as long as the accounts were maintained beforehand in a Customizing table.
The practical consequence: if the posting is wrong, it is rarely the fault of the person who entered the receipt. It comes from a setting, a material master field or a combination nobody planned for.
The criteria that decide the account
SAP starts from what you entered and derives a series of keys from it. The chain reads like this: the movement triggers a transaction key, sometimes refined by a modifier; the material brings its valuation class; the company code brings its chart of accounts; the combination of the three gives the G/L account.
The chart of accounts, carried by the company code
You enter a plant on your movement. SAP derives the company code it belongs to, then the chart of accounts assigned to that company code in FI Customizing. The chart of accounts is a key of the account determination table: accounts are maintained chart by chart, because the same account number can mean something different from one chart to another.
The valuation class, carried by the material
The valuation class groups together the materials that should post to the same accounts. It is maintained in the material master, Accounting 1 view, where you also set the valuation (and, if needed, split valuation). Not every class is allowed for every material: the material type is linked to an account category reference, which lists the permitted classes.
The transaction key, triggered by the movement
You pick a movement type (101 for a goods receipt against a purchase order, 201 for a goods issue to a cost center, and so on). It points to a value string, the list of possible postings for that kind of transaction. Each posting carries a three-letter transaction key: BSX for stock, WRX for the clearing account, and so on.
For a goods receipt into the warehouse against a standard purchase order, the value string is called WE01 and contains BSX and WRX, among others. You can display value strings, but you cannot change them.
The modifier and the valuation grouping code: the refinements
Two extra keys refine the result. The first one, the account grouping code (shown on screen in the general modification column, and often simply called the account modifier), splits a transaction key that is too broad into several cases. Under GBB, it is what sends a consumption, a scrapping and an inventory difference to separate accounts. SAP delivers some codes, such as VBR, and you can create your own.
The valuation grouping code lets you assign different accounts per valuation area, for example so that a new plant gets its own stock accounts. When it is active, every valuation area must be given one.
How to read OBYC: from transaction key to G/L account
OBYC is the transaction that displays the account determination table for MM postings. It lists the transaction keys of group RMK, then, for each key, its rules and its accounts.
-
1Open OBYC
The Procedures screen lists the transaction keys of group RMK, the one for MM postings: one description per line, with the code in the Transaction column.
-
2Double-click the key you want
BSX, for example. SAP asks for the chart of accounts in the Enter Chart of Accounts window: enter the one of your company code.
-
3Check the rules with the Rules button
The Accounts are determined based on section shows what the key depends on: valuation grouping code, modifier, valuation class. That tells you which columns you will see in the grid.
-
4Go back to the grid and read the accounts
Row by row: one combination of criteria, one debit account, one credit account.
If someone changes the rules of a key (for example by adding the valuation class), SAP clears its grid: every account already maintained for that key has to be entered again. As a reader, you stay in display mode.
If you are the one configuring it, the Configure Automatic Postings activity sits in the IMG.
SPRO path:
SAP Customizing Implementation Guide → Materials Management → Valuation and Account Assignment → Account Determination → Account Determination Without Wizard → Configure Automatic Postings
| Transaction key | What it posts | When it comes into play | Depends by default on |
|---|---|---|---|
BSX | The stock account | On every movement that changes the stock value (receipt, issue) | Valuation grouping code and valuation class |
WRX | The GR/IR clearing account | Offset of a valuated goods receipt against a purchase order, cleared by the invoice | The chart of accounts only |
GBB | The stock offset for other movements | Goods issues, scrapping, inventory differences, split by modifier | Modifier (and, depending on the rules, the class) |
PRD | Price differences | When a material valuated at standard price is bought or invoiced at another price | Depending on the rules, the modifier and the class |
BSX: the stock account
You receive a valuated material into stock on a purchase order item without account assignment: the stock increase goes through BSX. And when that stock leaves later, BSX is credited again.
WRX: the clearing account between goods receipt and invoice
At goods receipt time, the invoice has not arrived yet. So SAP posts the offset to a clearing account, the GR/IR clearing account. For a purchase order item, that account goes back to zero as soon as everything delivered has also been invoiced.
GBB: the offset for goods issues and other movements
Goods issue to a cost center, scrapping, inventory difference: all of them go through GBB, and the modifier sends each case to its own account.
PRD: price differences
PRD only shows up for a material at standard price (price control S). If the purchase order price or the invoice price differs from the standard price, stock stays valuated at standard and the difference goes to PRD. For a material at moving average price (price control V), an invoice variance adjusts the stock value as long as there is enough stock to cover the quantity, and does not go through PRD.
Other keys exist (KDM for exchange rate differences, UMB for a revaluation); you will read them when you need them.
Follow three movements to their accounts
Picture yourself at Glass+, the fictional glassmaker we use in our training, in the Valencia plant (company code 1030, plant 1230). Material GP-SILICE, silica sand, is kept at a standard price of €150 per ton. The account numbers below are made up for the example; in your system, they are the ones in your company code’s chart of accounts.
- 310000: raw materials stock
- 408100: goods received, awaiting invoice (GR/IR)
- 601000: material consumption
- 609900: purchase price variances
| Movement | Transaction keys | Debit | Credit |
|---|---|---|---|
| 1. Receipt of 20 t against a purchase order at €150/t (movement 101) | BSX, WRX | 310000 Stock: €3,000 | 408100 GR/IR: €3,000 |
| 2. Issue of 5 t to a cost center (movement 201) | GBB (modifier VBR), BSX | 601000 Consumption: €750 | 310000 Stock: €750 |
| 3. Vendor invoice: 20 t at €155/t, so €3,100 | WRX, PRD | 408100 GR/IR: €3,000 609900 Price variance: €100 | Vendor account: €3,100 |
Case 1. The purchase order price equals the standard price: stock is debited at standard, and the clearing account is credited with the same amount. Had the order been placed at €152, the difference would have shown up at goods receipt, on PRD, because stock must stay at standard.
Case 2. Stock goes out, so BSX is credited. The offset goes through GBB, and modifier VBR sends it to the consumption account. A goods issue to a production order (movement 261) follows the same offsetting logic; SAP lets you give it different accounts, precisely so that accounting and controlling can tell production apart from scrap or inventory differences.
Case 3. The invoice clears the €3,000 expected on the clearing account. The extra €100 cannot go to stock, which is valuated at standard: it goes to PRD.
Simulate before you guess: the account determination simulation
Before you conclude that an account is missing, run a simulation. The simulation button sits in the Configure Automatic Postings activity. It is especially useful for goods movements: in MIGO, nothing shows you the posting before you save, whereas vendor invoice entry can simulate the document.
-
1Open the Configure Automatic Postings activity
Then start the simulation.
-
2Choose how you enter the data
By material number or by valuation class.
-
3Choose the application area
An inventory management transaction (a movement type) or an invoice verification transaction.
-
4Enter the plant and the material (or the class)
Then execute.
-
5Read the result
For each transaction key in the value string, SAP displays the account it found and every criterion it used. An “e” between hyphens flags a rule that is not active for that key.
Bonus: the simulation also flags an account that is maintained in OBYC but does not exist in the chart of accounts.
“Account determination for entry … not possible”: read the error and find the gap
The message everyone searches for starts with “Account determination for entry … not possible”. It blocks the posting: SAP built a combination of criteria and found no account for it. The right move: write down everything the message shows, then replay the same combination in the simulation.
This message is number M8147. SAP has a help page that lists the settings to check: the SAP support page on error M8147.
| What you see | Most likely missing link | Who fixes it |
|---|---|---|
| The simulation finds no account for the key in the message | The combination was never maintained in OBYC | The MM consultant, with the accounts supplied by Finance |
| It works for one material, not for another of the same type | Different or missing valuation class in the Accounting 1 view | The master data key user checks, the consultant decides which class is expected |
| It works in one plant, not in the new one | New valuation grouping code with no accounts assigned | The MM consultant |
| The simulation flags an account that does not exist | Account missing from the chart of accounts | Finance (FI) |
Fixing OBYC is the consultant’s job. Yours is to turn “MIGO is broken” into “key BSX has no account for this valuation class in plant 1230”.
What OBYC does not decide
OBYC picks an account. It does not set the material’s price: valuation (standard or moving average price, plus split valuation where relevant) gives the amount. It does not decide the accounts for customer billing either: on the SD side, that is a different mechanism. And it does not clear the GR/IR clearing account: when a difference remains between delivered and invoiced quantities, that account is cleared with a dedicated process (MR11), not by editing OBYC.
Explaining account determination in an interview
The question usually comes in this form: “What happens in accounting when you post a 101?”
“The 101 creates a material document and, if the material is valuated, an accounting document. The movement type points to a value string that contains transaction keys BSX and WRX. SAP combines those keys with the company code’s chart of accounts, the valuation grouping code and the material’s valuation class to find the accounts in OBYC: stock on the debit side, GR/IR clearing on the credit side.”
Add the case of a standard-price material bought at a different price (PRD) and you show that you understand the mechanics. More topics like this one are waiting for you in our SAP consultant interview questions.
Frequently asked questions
What is OBYC used for in SAP?
OBYC displays and maintains the automatic account determination table for postings coming from MM. For each transaction key (BSX, WRX, GBB, PRD and others), it tells SAP which G/L account to post to, based on the chart of accounts, the valuation class and any refinements. That is what lets a goods receipt or a goods issue create an accounting document without anyone entering an account.
How does SAP choose the account for a goods receipt?
It combines three criteria: the company code’s chart of accounts (derived from the plant), the material’s valuation class, and the transaction keys triggered by the movement type, here BSX for stock and WRX for the clearing account.
What is the difference between BSX, WRX and GBB?
BSX posts to the stock account. WRX posts to the GR/IR clearing account, the offset of a goods receipt against a purchase order. GBB is the stock offset for other movements (goods issues, scrapping, inventory differences), split by modifier.
How do you fix the error “Account determination for entry … not possible”?
Write down the values shown in the message, then replay the same combination in the Configure Automatic Postings simulation. It tells you which key has no account and with which criteria. Pass that precise finding on to the MM consultant instead of a plain screenshot of the error.
What is a valuation class?
It is a key in the material master, Accounting 1 view, that groups materials which should post to the same accounts. It is what lets you send raw materials and trading goods to two different stock accounts, for example. The permitted classes depend on the material type.
Summary
SAP account determination fits in one sentence: a movement triggers transaction keys, the material brings its valuation class, the company code brings its chart of accounts, and OBYC maps the combination to the G/L account. Once you can trace that chain back, you can explain any stock posting, and diagnose an error instead of just forwarding it.
A concrete next step: in your test system, take a material you know, open the simulation and see which accounts SAP would find for a 101, then for a 201. If you are aiming for a consultant role, this kind of reflex is built step by step in an SAP consultant training program.