Table 290 "VAT Amount Line"
Base Application · Microsoft.Finance.VAT.Calculation
Across versions
- BC23present
- BC24declaration changed
- BC254 procedures added, 4 events added
- BC263 events added, 1 procedures changed
- BC272 events added, 1 events removed
- BC2818 fields changed, 5 procedures removed
- BC2916 fields changed, 1 procedures removed
- BC30unchanged
Neighbourhood 9 connected objects and pages
Base Application · Microsoft.Finance.VAT.Calculation · BC23-30 · source at ea08af5e · facts from BC29
Learn documents this table through its pages: Page 9401 “VAT Amount Lines” (2 Learn pages).
Properties
| Property | Value |
|---|---|
| Caption | VAT Amount Line |
| TableType | Temporary |
| DataClassification | CustomerContent |
Fields
Explanation: the field’s ToolTip in the code; without one, the ToolTip of a page control bound to the field (marked via the page); without that, its Caption (marked caption) when that differs from the name.
| No. | Name | Type | Explanation | Notes |
|---|---|---|---|---|
| 1 | VAT % Δ BC28 Δ BC29 | Decimal | Specifies the VAT % that was used on the sales or purchase lines with this VAT Identifier. | not editable |
| 2 | VAT Base Δ BC28 Δ BC29 | Decimal | Specifies the total net amount (amount excluding VAT) for sales or purchase lines with a specific VAT Identifier. | not editable |
| 3 | VAT Amount Δ BC28 Δ BC29 | Decimal | Specifies the amount of VAT that is included in the total amount. | |
| 4 | Amount Including VAT Δ BC28 Δ BC29 | Decimal | Specifies the net amount, including VAT, for this line. | not editable |
| 5 | VAT Identifier Δ BC29 | Code[20] | Specifies the VAT Identifier value. | not editable |
| 6 | Line Amount Δ BC28 Δ BC29 | Decimal | Specifies the total amount for sales or purchase lines with a specific VAT identifier. | not editable |
| 7 | Inv. Disc. Base Amount Δ BC28 Δ BC29 | Decimal | Specifies the invoice discount base amount. | not editable |
| 8 | Invoice Discount Amount Δ BC28 Δ BC29 | Decimal | Specifies the invoice discount amount for a specific VAT identifier. | |
| 9 | VAT Calculation Type Δ BC29 | Enum “Tax Calculation Type” | Specifies how VAT will be calculated for purchases or sales of items with this particular combination of VAT business posting group and VAT product posting group. | enum Enum 254 “Tax Calculation Type”; not editable |
| 10 | Tax Group Code | Code[20] | — | TableRelation Table 321 “Tax Group” (Tax Group); not editable |
| 11 | Quantity Δ BC28 | Decimal | — | not editable |
| 12 | Modified | Boolean | — | |
| 13 | Use Tax | Boolean | — | |
| 14 | Calculated VAT Amount Δ BC28 Δ BC29 | Decimal | Specifies the calculated VAT amount and is only used for reference when the user changes the VAT Amount manually. | not editable |
| 15 | VAT Difference Δ BC28 Δ BC29 | Decimal | Specifies the difference between the calculated VAT amount and a VAT amount that you have entered manually. | not editable |
| 16 | Positive | Boolean | — | |
| 17 | Includes Prepayment | Boolean | — | |
| 18 | VAT Clause Code | Code[20] | — | TableRelation Table 560 “VAT Clause” (VAT Clause) |
| 19 | Tax Category | Code[10] | — | |
| 20 | Pmt. Discount Amount Δ BC28 | Decimal | — | not editable |
| 6200 | Non-Deductible VAT % Δ BC28 | Decimal | — | not editable |
| 6201 | Non-Deductible VAT Base Δ BC28 Δ BC29 | Decimal | Specifies the amount of the transaction for which VAT is not applied due to the type of goods or services purchased. | not editable |
| 6202 | Non-Deductible VAT Amount Δ BC28 Δ BC29 | Decimal | Specifies the amount of VAT that is not deducted due to the type of goods or services purchased. | |
| 6203 | Calc. Non-Ded. VAT Amount Δ BC28 Δ BC29 | Decimal | Specifies the calculated Non-Deductible VAT amount and is only used for reference when the user changes the Non-Deductible VAT Amount manually. | not editable |
| 6204 | Deductible VAT Base Δ BC28 Δ BC29 | Decimal | Specifies the amount of the transaction for which VAT is applied due to the type of goods or services purchased. | not editable |
| 6205 | Deductible VAT Amount Δ BC28 Δ BC29 | Decimal | Specifies the amount of VAT that is deducted due to the type of goods or services purchased. | not editable |
| 6206 | Non-Deductible VAT Diff. Δ BC28 | Decimal | Non-Deductible VAT Difference caption | not editable |
Keys
- Key1: VAT Identifier, VAT Calculation Type, Tax Group Code, Use Tax, Positive (clustered)
Events published
OnAfterCalcLineAmount(var VATAmountLine: Record "VAT Amount Line"; var LineAmount: Decimal)(integration)OnAfterCheckVATDifference(VATAmountLine: Record "VAT Amount Line"; NewCurrencyCode: Code[10]; NewAllowVATDifference: Boolean)(integration)OnAfterCopyFromPurchInvLine(var VATAmountLine: Record "VAT Amount Line"; PurchInvLine: Record "Purch. Inv. Line")(integration)OnAfterCopyFromPurchCrMemoLine(var VATAmountLine: Record "VAT Amount Line"; PurchCrMemoLine: Record "Purch. Cr. Memo Line")(integration)OnAfterCopyFromSalesInvLine(var VATAmountLine: Record "VAT Amount Line"; SalesInvoiceLine: Record "Sales Invoice Line")(integration)OnAfterCopyFromSalesCrMemoLine(var VATAmountLine: Record "VAT Amount Line"; SalesCrMemoLine: Record "Sales Cr.Memo Line")(integration)OnAfterSalesTaxCalculateCalculateTax(var VATAmountLine: Record "VAT Amount Line"; Currency: Record Currency; TaxAreaCode: Code[20]; TaxLiable: Boolean; PostingDate: Date; CurrencyFactor: Decimal)(integration)OnAfterSalesTaxCalculateReverseCalculateTax(var VATAmountLine: Record "VAT Amount Line"; Currency: Record Currency; TaxAreaCode: Code[20]; TaxLiable: Boolean; PostingDate: Date; CurrencyFactor: Decimal)(integration)OnAfterVATAmountText(VATPercentage: Decimal; FullCount: Integer; var Result: Text[30])(integration)OnBeforeGetTotalVATAmount(var VATAmountLine: Record "VAT Amount Line"; var VATAmount: Decimal; var IsHandled: Boolean)(integration)OnInsertLineOnAfterValidatePositive(var VATAmountLine: Record "VAT Amount Line")(integration)OnInsertLineOnBeforeInsert(var VATAmountLine: Record "VAT Amount Line"; var FromVATAmountLine: Record "VAT Amount Line")(integration)OnInsertLineOnBeforeModify(var VATAmountLine: Record "VAT Amount Line"; FromVATAmountLine: Record "VAT Amount Line")(integration)OnInsertLine(var VATAmountLine: Record "VAT Amount Line"; var IsHandled: Boolean; var Result: Boolean; var SkipZeroVatAmounts: Boolean)+ BC27 − BC27 (integration)OnUpdateLinesOnAfterCalcVATAmount(var VATAmountLine: Record "VAT Amount Line"; PrevVATAmountLine: Record "VAT Amount Line"; var Currency: Record Currency; VATBaseDiscountPerc: Decimal; PricesIncludingVAT: Boolean)(integration)OnUpdateLinesOnAfterCalcAmountIncludingVATNormalVAT(var VATAmountLine: Record "VAT Amount Line"; PrevVATAmountLine: Record "VAT Amount Line"; var Currency: Record Currency; VATBaseDiscountPerc: Decimal; PricesIncludingVAT: Boolean)(integration)OnUpdateLinesOnBeforeCalcSalesTaxVatBase(var VATAmountLine: Record "VAT Amount Line")(integration)OnUpdateLinesOnAfterCalcVATBase(var VATAmountLine: Record "VAT Amount Line"; Currency: Record Currency; PricesIncludingVAT: Boolean)(integration)OnUpdateLinesOnAfterCalcVATBaseSalesTax(var VATAmountLine: Record "VAT Amount Line"; Currency: Record Currency; PricesIncludingVAT: Boolean)(integration)OnAfterCalcVATFields(var VATAmountLine: Record "VAT Amount Line"; NewPricesIncludingVAT: Boolean; NewVATBaseDiscPct: Decimal; Currency: Record Currency)(integration)OnBeforeCalcVATFields(var VATAmountLine: Record "VAT Amount Line"; var NewVATBaseDiscPct: Decimal)(integration)OnDeductVATAmountLineOnBeforeModify(var VATAmountLine: Record "VAT Amount Line"; VATAmountLineDeduct: Record "VAT Amount Line")(integration)OnBeforeGetVATBaseDiscountPerc(var VATAmountLine: Record "VAT Amount Line"; VATBaseDiscountPerc: Decimal; var NewVATBaseDiscountPerc: decimal; var IsHandled: Boolean)(integration)OnUpdateLinesOnAfterInitPrevVATAmountLine(var PrevVATAmountLine: Record "VAT Amount Line"; Currency: Record Currency; PricesIncludingVAT: Boolean; var VATBaseDiscountPerc: Decimal; var VATAmountLine: Record "VAT Amount Line")+ BC25 − BC25 (integration)OnApplyNonDeductibleVATOnBeforeModify(var VATAmountLine: Record "VAT Amount Line"; NonDeductibleVAT: Decimal)+ BC26 (integration)OnCopyFromPurchInvLineOnAfterSetLineAmount(var VATAmountLine: Record "VAT Amount Line"; var PurchInvLine: Record "Purch. Inv. Line")+ BC26 (integration)OnCopyFromPurchCrMemoLineOnAfterSetLineAmount(var VATAmountLine: Record "VAT Amount Line"; var PurchCrMemoLine: Record "Purch. Cr. Memo Line")+ BC26 (integration)OnBeforeUpdateLines(var VATAmountLine: Record "VAT Amount Line"; var TotalVATAmount: Decimal; Currency: Record Currency; CurrencyFactor: Decimal; PricesIncludingVAT: Boolean; VATBaseDiscountPercHeader: Decimal; TaxAreaCode: Code[20]; TaxLiable: Boolean; PostingDate: Date; var IsHandled: Boolean)+ BC25 (integration)OnUpdateLinesOnAfterCalcPreVATAmountline(var VATAmountLine: Record "VAT Amount Line"; var PreVATAmountLine: Record "VAT Amount Line"; var Currency: Record Currency; VATBaseDiscountPerc: Decimal)+ BC27 (integration)
Procedures
CheckVATDifference(NewCurrencyCode: Code[10]; NewAllowVATDifference: Boolean): Validates VAT difference against maximum allowed VAT difference limits.InsertLine(): Boolean: Inserts or updates VAT amount line with calculated amounts, combining with existing line if found.GetLine(Number: Integer): Retrieves VAT amount line by sequential number from the recordset.VATAmountText(): Text[30]: Generates descriptive text for VAT amount display based on VAT percentage.GetTotalLineAmount(SubtractVAT: Boolean; CurrencyCode: Code[10]): Decimal: Calculates total line amount across all VAT amount lines with optional VAT subtraction.GetTotalVATAmount(): Decimal: Calculates total VAT amount across all VAT amount lines in the recordset.GetTotalInvDiscAmount(): Decimal: Calculates total invoice discount amount across all VAT amount lines.GetTotalInvDiscBaseAmount(SubtractVAT: Boolean; CurrencyCode: Code[10]): Decimal: Calculates total invoice discount base amount with optional VAT subtraction.GetTotalVATBase(): Decimal: Calculates total VAT base amount across all VAT amount lines.GetTotalAmountInclVAT(): Decimal: Calculates total amount including VAT across all VAT amount lines.GetTotalVATDiscount(CurrencyCode: Code[10]; NewPricesIncludingVAT: Boolean): Decimal: Calculates total VAT discount amount based on rounding differences.GetAnyLineModified(): Boolean: Checks whether any VAT amount line has been manually modified.SetInvoiceDiscountAmount(NewInvoiceDiscount: Decimal; NewCurrencyCode: Code[10]; NewPricesIncludingVAT: Boolean; NewVATBaseDiscPct: Decimal): Distributes invoice discount amount proportionally across VAT amount lines.SetInvoiceDiscountPercent(NewInvoiceDiscountPct: Decimal; NewCurrencyCode: Code[10]; NewPricesIncludingVAT: Boolean; CalcInvDiscPerVATID: Boolean; NewVATBaseDiscPct: Decimal): Applies invoice discount percentage to VAT amount lines with proportional distribution.CalcLineAmount(): Decimal: Calculates line amount after subtracting invoice discount from original line amount.CalcVATFields(NewCurrencyCode: Code[10]; NewPricesIncludingVAT: Boolean; NewVATBaseDiscPct: Decimal): Recalculates VAT amounts and VAT base based on current line amount and VAT parameters.GetBaseLCY(PostingDate: Date; CurrencyCode: Code[10]; CurrencyFactor: Decimal): Decimal: Converts VAT base amount from foreign currency to local currency using exchange rate.GetAmountLCY(PostingDate: Date; CurrencyCode: Code[10]; CurrencyFactor: Decimal): Decimal: Calculates VAT amount in local currency by converting from foreign currency.DeductVATAmountLine(var VATAmountLineDeduct: Record "VAT Amount Line"): Deducts amounts from current VAT amount lines using corresponding lines from another recordset.ApplyNonDeductibleVAT(NonDeductibleVAT: Decimal)+ BC26 (internal)UpdateLines(var TotalVATAmount: Decimal; Currency: Record Currency; CurrencyFactor: Decimal; PricesIncludingVAT: Boolean; VATBaseDiscountPercHeader: Decimal; TaxAreaCode: Code[20]; TaxLiable: Boolean; PostingDate: Date): Updates VAT amount lines with calculated VAT amounts and totals based on currency, pricing settings, and tax configuration. Performs comprehensive VAT calculations including sales tax processing and currency conversions.CopyFromPurchInvLine(PurchInvLine: Record "Purch. Inv. Line"): Copies VAT-related fields from posted purchase invoice line to create VAT amount line for analysis or reporting.CopyFromPurchCrMemoLine(PurchCrMemoLine: Record "Purch. Cr. Memo Line"): Copies VAT-related fields from posted purchase credit memo line to create VAT amount line for analysis or reporting.CopyFromSalesInvLine(SalesInvoiceLine: Record "Sales Invoice Line"): Copies VAT-related fields from posted sales invoice line to create VAT amount line for analysis or reporting.CopyFromSalesCrMemoLine(SalesCrMemoLine: Record "Sales Cr.Memo Line"): Copies VAT-related fields from posted sales credit memo line to create VAT amount line for analysis or reporting.
Plus 5 local procedures.
Relations
- Tax Group Code: TableRelation Table 321 “Tax Group”
- VAT Clause Code: TableRelation Table 560 “VAT Clause”
Pages and codeunits on this table
- Page 576 “VAT Specification Subform” (source table)
- Page 9401 “VAT Amount Lines” (source table)
Extended by
Calls
From the extracted call graph of BC29 (graphify-al on the snapshot checkout): calls whose target is known from a declared type or an Object::"Name" argument. Interface dispatch and calls through events are not counted, so the list is not complete.
- Codeunit 6200 “Non-Deductible VAT” (6 calls:
CalcVATFields → Update,CopyFromPurchCrMemoLine → CopyNonDedVATFromPurchCrMemoLineToVATAmountLine,CopyFromPurchInvLine → CopyNonDedVATFromPurchInvLineToVATAmountLine, …) - Codeunit 398 “Sales Tax Calculate” (2 calls:
UpdateLines → CalculateTax,UpdateLines → ReverseCalculateTax)
Recent changes
- 2026-09-03 #10381 [Main] Inconsistent Non-Deductible VAT calculations on Purchase & Sales Invoices containing lines with Full VAT calculation type (main, BC30, fix)
Countries that replace it
AU, BE, CA, ES, GB, IT, MX, NZ, RU, US
Source: AL metadata extracted from the code (names, ids, signatures, properties); no code bodies (D10).
Ask your agent
Procedure bodies are not stored here (D10). The call sections above are our own, per object, from the BC29 call graph. For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: bcatlas_resolve_node(object_type: "table", object_name: "VAT Amount Line"), then bcatlas_get_procedure_body or bcatlas_get_neighbors on the returned id.