KNVI table — Customer Tax Classification Table KNVI
KNVI stores the customer's tax classification per departure country and tax category, independent of sales area. One row says: for this customer, for this country, for this tax type (for example output tax), the classification is this code. Sales orders and billing documents read KNVI to default the tax classification into VBAP and VBRP, which pricing then uses to find the correct tax condition record.
KNVI holds the tax classification indicator that feeds tax determination in pricing, keyed by customer, departure country, and tax category rather than by sales area. This page covers what actually breaks when tax comes out wrong on an order or invoice, and why the fix is almost never a sales-area change.
Reviewed by an ERPClimb SAP consultant on 15 Sept 2026· 883 words
What it stores
Each row in KNVI represents the tax classification assigned to one customer for one tax category in one departure country. Tax category here means things like output tax under a given tax procedure's access sequence step, not the tax code itself. The classification value (commonly 0, 1, or a country-specific code) tells pricing which tax condition record to pick when the sales document's departure country matches. Unlike KNVV, which is sales-area dependent, KNVI is scoped by country because tax law is territorial, not organizational. A customer with operations serviced from plants in two countries can have two different classification rows, one per departure country, and both feed different orders depending on which plant ships the goods.
Key fields
- MANDT - client
- KUNNR - customer number, links to KNA1 and KNVV
- ALAND - departure country for which the tax classification applies
- TATYP - tax category, identifies which tax condition type or access sequence step the classification is for
- TAXKD - the actual tax classification value assigned to the customer for that country and tax category
How it joins the data model
- KNVI-KUNNR = KNA1-KUNNR
- KNVI-KUNNR = KNVV-KUNNR
- VBAP-TAXK1 (and related tax classification fields) populated from KNVI-TAXKD at order line creation
- VBRP tax classification fields inherit from VBAP via VBFA copy control at billing
How to read it safely
KNVI is small relative to KNVV and rarely a performance concern, but always restrict by MANDT and KUNNR first since ALAND and TATYP alone are not selective. A customer typically has only a handful of rows, one per relevant departure country and tax category combination, so a full customer lookup is cheap. The trap is assuming a missing row means bad master data maintenance when it may simply mean the customer has never transacted with that departure country before, so no row was ever created.
How to prove it in the data
Symptom: an order line shows no tax or the wrong tax code and pricing analysis shows the tax condition found no valid record. Select KNVI where KUNNR equals the sold-to or payer used in the order and ALAND equals the departure country of the shipping plant. If no row exists for that country, the classification defaulted to blank or an inherited value that does not match any tax condition record, which is why pricing came back empty.
ECC vs S/4HANA
KNVI is unchanged in shape on S/4HANA and continues to be maintained through the standard customer master transactions. It is not one of the tables restructured by the S/4HANA business partner data model consolidation in the same way KNA1 and KNVV address fields were affected; tax classification maintenance and storage remain consistent with the ECC design.
Common pitfalls
- Assuming tax classification is sales-org or distribution-channel dependent because it looks similar to KNVV fields on the same customer master screen; it is actually keyed only by country and tax category, so changing sales org never fixes a tax classification issue, changing the departure country or the customer's classification does
- Editing KNVI directly through a table maintenance transaction instead of the customer master transaction, which bypasses change document logging and leaves no audit trail for why tax classification changed
- Confusing TATYP (tax category, which access sequence step it feeds) with the tax code itself; a correct TATYP with a wrong TAXKD still produces a tax determination failure, and neither field is a tax code
- Assuming a blank or missing row is always a data entry mistake; it is often simply that the customer has never been used with that departure country before, so create the row rather than search for a phantom deletion
- Fixing a tax-not-found error by changing the pricing procedure or condition record when the actual gap is a missing KNVI row for the country in question, which wastes time chasing the wrong layer
- Forgetting that a change to KNVI after an order is created does not retroactively update existing open orders; the classification was already copied into VBAP at line creation and needs a manual pricing redetermination to pick up the new value
Whose problem this is
Tax classification setup is typically owned jointly by SD master data and the tax or finance team that defines which classification values map to which tax codes in the pricing procedure. When tax comes out wrong on a document, SD confirms whether KNVI has the expected row; finance or tax confirms whether the classification-to-tax-code mapping in the condition records is correct.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-tables/knviERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.