SAP transaction codeObjectVKOAModuleSD_O2C

VKOA — VKOA - Revenue Account Determination

VKOA maintains the G/L account assignments used by SD billing documents to post revenue, discounts, freight and cost of goods sold automatically. It is condition-technique configuration, not a flat mapping table: SAP searches a prioritized list of access-sequence tables (chart of accounts, sales org, account assignment group of customer and material, account key) and stops at the first match, which is why the same setup can silently produce different results for different customers or materials.

This page covers what VKOA configures, when a consultant opens it versus troubleshooting the master data feeding it, and how to work through account determination errors on billing release. It focuses on the diagnostic sequence used when a billing document will not post to accounting because no G/L account was found.

Reviewed by an ERPClimb SAP consultant on 15 Sept 2026· 1,214 words

What it does

VKOA is the configuration transaction for revenue account determination in SD. It links combinations of chart of accounts, sales organization, account assignment group of the customer, account assignment group of the material, and account key (derived from the pricing procedure) to a specific G/L account. The structural fact that explains most confusion is that this is built on the same condition technique used for pricing: there is an access sequence of multiple condition tables in priority order for each account determination type (KOFI for revenue, KOFK for cost of goods sold), and SAP evaluates them from most specific to least specific, stopping at the first combination it finds. Two consultants looking at 'the same' VKOA setup can see different tables maintained, and neither is wrong until the access sequence is checked.

When it is used

VKOA is used during SD implementation when setting up revenue recognition for a new sales organization, a new account assignment group, or a new condition type that needs its own account key. It is also the first transaction opened when a billing document fails to release to accounting with an account determination error, or when postings land on an unexpected G/L account. It is not used for tax account determination, which runs through the tax code and FI tax procedure, and not used for CO account assignment such as cost center or profit center derivation, which is separate customizing. Consultants do not reach for a Fiori app here; this remains an IMG-driven configuration transaction with no simplified equivalent.

How to use it

  • Open VKOA and select the account determination type in question: KOFI for standard revenue account determination, KOFK for cost of goods sold postings
  • Review the list of condition tables shown for that type, in the priority order defined by the access sequence
  • Pick the table whose key fields match the business requirement, for example chart of accounts plus sales organization plus account assignment group of customer and material plus account key
  • Enter the specific key values and the target G/L account for that combination
  • Save; check whether a more specific table already covers this combination, since an entry in a lower-priority table will never be read if a higher-priority table also matches

Key fields

  • TVKO - sales organization master, used to resolve the company code and chart of accounts feeding the account determination key
  • T001 - company code master, holding the chart of accounts assignment that VKOA keys against
  • KNVV - customer sales area data, holding the customer's account assignment group used in the account determination key
  • MVKE - material sales area data, holding the material's account assignment group used in the account determination key
  • The generated condition table behind the specific access sequence entry maintained in VKOA - its technical name depends on which combination of fields is active; it is not a single fixed table across all installations, so it has to be identified from the technical settings of the condition table shown in the VKOA screen before querying it directly

How to prove it in the data

Start from the failing billing document: identify the account key involved (visible in the pricing analysis of the sales order or billing document) and the customer and material on the failing item. Look up KNVV for that customer's sales area to get the account assignment group of the customer, and MVKE for the material to get the account assignment group of the material. Confirm the company code's chart of accounts via T001 and the sales org's linkage via TVKO. Then, inside VKOA, walk the access sequence for the relevant account determination type and check whether a row exists whose key fields exactly match those four values plus the account key; a near match is not a match.

ECC vs S/4HANA

VKOA is unchanged on S/4HANA. Revenue account determination still runs through the same condition technique, the same account determination types, and the same transaction. There is no Fiori app that replaces this configuration step; it remains IMG-based work done through the classical transaction, whether accessed via SAP GUI or embedded in an S/4HANA IMG session.

Common pitfalls

  • No combination found - the billing document fails to release to accounting with an account determination error naming the account key and the missing combination; this means no row in any table in the access sequence matches, not that VKOA is broken
  • Wrong account assignment group on master data - an entry exists in VKOA but the customer or material master carries a different account assignment group than the one assumed, so the lookup never reaches that row; check KNVV and MVKE before touching VKOA itself
  • Wrong table maintained relative to the access sequence - a more specific table exists earlier in the sequence but was never populated, so the system either falls through to a generic table with the wrong account or fails outright; maintaining the general table again does not fix a gap in the specific one
  • Chart of accounts mismatch - the company code behind the sales organization uses a different chart of accounts than the one the VKOA entry was built against, common after a company code reassignment that was not followed by an account determination review
  • Account key never reached - the pricing procedure's condition type has no account key assigned in its configuration, so the condition never triggers account determination at all; this looks identical to a missing VKOA entry but the fix is in the pricing procedure, not in VKOA
  • Catch-all entry as a reflex fix - adding a blank or wildcard entry for the account assignment groups to make the error disappear masks a real data quality problem in customer or material master records and routes unrelated transactions to the wrong account going forward

Whose problem this is

Functional SD ownership for the condition table setup, with FI general ledger involvement whenever a new G/L account needs to be created or an account key needs to be mapped to a different account class. A good handover includes the account determination type, the exact key combination attempted, the customer and material account assignment groups involved, and the billing document number showing the failure.

Related SAP objects

Reviewed pages this object connects to in the ERPClimb knowledge graph.

Source: ERPClimb — https://erpclimb.com/sap-tcodes/vkoaERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.