---
id: object/report/20
type: object
title: Report 20 "Calc. and Post VAT Settlement"
summary: Report 20 "Calc. and Post VAT Settlement" in Base Application (Microsoft.Finance.VAT.Reporting). 4 public procedures, 15 events. Present since at least BC23, still in BC30, changed in BC25, BC27, BC29.
tier: official
language: en
tags:
  - report
  - base application
versions:
  introduced: null
  last_changed: "29"
  deprecated: null
review:
  state: derived
  by: null
  at: null
  flags: []
generated:
  at: "2026-10-11T00:31:51.816Z"
  pipeline: 0.2.0
  prompts: {}
  input_hash: ff126231e54b5c896c323a20a4b998adc7b5956bf5de241900b9a9b0d58ac98c
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Finance/VAT/Reporting/CalcandPostVATSettlement.Report.al
    title: src/Layers/W1/BaseApp/Finance/VAT/Reporting/CalcandPostVATSettlement.Report.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
  - kind: learn
    url: https://learn.microsoft.com/dynamics365/business-central/finance-manage-vat
    title: Value Added Tax management overview
    date: null
    commit: null
    t: null
    quote: null
  - kind: learn
    url: https://learn.microsoft.com/dynamics365/business-central/finance-reports
    title: Built-in finance reports in Business Central
    date: null
    commit: null
    t: null
    quote: null
  - kind: learn
    url: https://learn.microsoft.com/dynamics365/business-central/finance-vat-reports
    title: Built-in VAT reports in Business Central
    date: null
    commit: null
    t: null
    quote: null
  - kind: learn
    url: https://learn.microsoft.com/dynamics365/business-central/reports/report-20
    title: Calculate and Post Tax Settlement (report)
    date: null
    commit: null
    t: null
    quote: null
links:
  learn:
    - https://learn.microsoft.com/dynamics365/business-central/finance-manage-vat
    - https://learn.microsoft.com/dynamics365/business-central/finance-reports
    - https://learn.microsoft.com/dynamics365/business-central/finance-vat-reports
    - https://learn.microsoft.com/dynamics365/business-central/reports/report-20
  objects: []
  features: []
  topics:
    - topic/business-central/analytics-business-intelligence-and-repo/built-in-reports/finance
    - topic/business-central/business-functionality/finance/financial-analytics/built-in-finance-reports
    - topic/business-central/business-functionality/finance/working-with-value-added-tax-vat
  localizations:
    - localization/au
    - localization/be
    - localization/es
    - localization/it
    - localization/no
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/11493
    - change/bcapps/11186
object_type: report
object_id: 20
name: Calc. and Post VAT Settlement
caption: Calculate and Post VAT Settlement
namespace: Microsoft.Finance.VAT.Reporting
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "25"
  - "27"
  - "29"
source_major: "29"
obsolete: null
countries:
  - au
  - be
  - es
  - it
  - "no"
ms_search_form_ids:
  - docs/learn-smb-docs/business-central/finance-manage-vat.md
  - docs/learn-smb-docs/business-central/finance-reports.md
  - docs/learn-smb-docs/business-central/finance-vat-reports.md
  - docs/learn-smb-docs/business-central/reports/report-20.md
counts:
  fields: 0
  procedures: 30
  events: 15
  subscribers: 0
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
  calls: 4
  called_by: 0
  implements: 0
---

# Report 20 "Calc. and Post VAT Settlement"

> Report 20 "Calc. and Post VAT Settlement" in Base Application (Microsoft.Finance.VAT.Reporting). 4 public procedures, 15 events. Present since at least BC23, still in BC30, changed in BC25, BC27, BC29.

Base Application · Microsoft.Finance.VAT.Reporting · captioned "Calculate and Post VAT Settlement" · BC23-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Finance/VAT/Reporting/CalcandPostVATSettlement.Report.al) · facts from BC29

## Properties

| Property | Value |
|---|---|
| Caption | Calculate and Post VAT Settlement |
| UsageCategory | ReportsAndAnalysis |
| ApplicationArea | Basic, Suite |
| Permissions | TableData "VAT Entry" = rimd |

## Events published

- `OnAfterPreReport(var VATEntry: Record "VAT Entry")` (integration): Integration event raised after VAT settlement report preparation is complete. Enables custom validation and data preparation before VAT settlement processing.
- `OnAfterPostReport()` (integration): Integration event raised after VAT settlement report processing is complete. Enables custom cleanup operations and finalization logic after settlement posting.
- `OnBeforeCheckPrintVATEntries(var VATEntry: Record "VAT Entry")` (integration): Integration event raised before checking VAT entries for print output. Enables custom filtering and validation of VAT entries included in settlement report.
- `OnBeforePostGenJnlLineReverseChargeVAT(var GenJnlLine: Record "Gen. Journal Line"; var VATEntry: Record "VAT Entry"; var VATAmount: Decimal; var VATAmountAddCurr: Decimal)` (integration): Integration event raised before posting general journal line for reverse charge VAT settlement. Enables custom amount calculations and journal line modifications for reverse charge scenarios.
- `OnBeforePreReport(var VATPostingSetup: Record "VAT Posting Setup"; PostSettlement: Boolean; GLAccountSettle: Record "G/L Account"; var DocNo: Code[20])` (integration): Integration event raised before VAT settlement report execution begins. Enables custom setup validation and parameter modification before settlement processing starts.
- `OnBeforeCloseVATEntriesOnPostSettlement(var VATEntry: Record "VAT Entry"; NextVATEntryNo: Integer; var IsHandled: Boolean)` (integration): Integration event raised before closing VAT entries during settlement posting. Enables custom validation and modification of VAT entries before they are marked as closed.
- `OnAfterIncrementGenPostingType(OldGenPostingType: Enum "General Posting Type"; var NewGenPostingType: Enum "General Posting Type")` (integration): Integration event raised after incrementing general posting type during VAT settlement processing. Enables custom logic for posting type progression and settlement sequence control.
- `OnClosingGLAndVATEntryOnAfterGetRecordOnAfterSetVATEntryFilters(VATPostingSetup: Record "VAT Posting Setup"; var VATEntry: Record "VAT Entry"; var VATEntry2: Record "VAT Entry")` (integration): Integration event raised after setting VAT entry filters during settlement processing. Enables custom filter modifications and VAT entry selection logic for closing operations.
- `OnCloseVATEntriesOnAfterPostGenJnlLineReverseChargeVATSales(var VATEntry: Record "VAT Entry"; GenJnlLine: Record "Gen. Journal Line"; var GenJnlPostLine: Codeunit "Gen. Jnl.-Post Line"; VATPostingSetup: Record "VAT Posting Setup"; PostSettlement: Boolean; var ReversingEntry: Boolean; DocNo: Code[20]; PostingDate: Date; var GenJnlLine2: Record "Gen. Journal Line")` (integration): Integration event raised after posting general journal line for reverse charge VAT sales during settlement. Enables custom processing and validation after reverse charge VAT entries are posted.
- `OnClosingGLAndVATEntryOnAfterGetRecordOnNormalVATOnAfterVATEntrySetFilter(VATPostingSetup: Record "VAT Posting Setup"; VATType: enum "General Posting Type"; var VATEntry: Record "VAT Entry"; FindFirstEntry: Boolean)` (integration): Integration event raised after setting VAT entry filters for normal VAT processing during settlement. Enables custom filter adjustments and VAT entry selection logic for normal VAT scenarios.
- `OnClosingGLAndVATEntryOnAfterGetRecordOnSalesTaxOnAfterVATEntrySetFilter(VATPostingSetup: Record "VAT Posting Setup"; VATType: enum "General Posting Type"; var VATEntry: Record "VAT Entry"; FindFirstEntry: Boolean)` (integration): Integration event raised after setting VAT entry filters for sales tax processing during settlement. Enables custom filter adjustments and VAT entry selection logic for sales tax scenarios.
- `OnPostGenJnlLineOnBeforeGenJnlPostLineRun(var GenJnlLine: Record "Gen. Journal Line")` (integration): Integration event raised before running general journal posting line during VAT settlement. Enables custom validation and modification of journal lines before posting to General Ledger.
- `OnAfterCopyAmounts(var GenJournalLine: Record "Gen. Journal Line"; var VATEntry: Record "VAT Entry")` (integration): Integration event raised after copying amounts from VAT entry to general journal line. Enables custom amount calculations and journal line adjustments during settlement processing.
- `OnVATPostingSetupOnAfterOnPostDataItem(GenJnlLine: Record "Gen. Journal Line"; PostSettlement: Boolean)` (integration): Integration event raised after processing VAT posting setup data item during settlement. Enables custom finalization logic and data validation after VAT posting setup processing.
- `OnVATPostingSetupOnPostDataItemOnBeforePostSettlement(var GenJnlLine: Record "Gen. Journal Line")` (integration): Integration event raised before posting settlement entry during VAT posting setup processing. Enables custom validation and modification of journal lines before settlement posting.

## Procedures

- `InitializeRequest(NewStartDate: Date; NewEndDate: Date; NewPostingDate: Date; NewDocNo: Code[20]; NewSettlementAcc: Code[20]; ShowVATEntries: Boolean; Post: Boolean)`: InitializeRequest with "VAT Date" default to "Posting Date"
- `InitializeRequest(NewStartDate: Date; NewEndDate: Date; NewPostingDate: Date; NewVATDate: Date; NewDocNo: Code[20]; NewSettlementAcc: Code[20]; ShowVATEntries: Boolean; Post: Boolean)`: InitializeRequest with specified "VAT Date"
- `InitializeRequest2(NewUseAmtsInAddCurr: Boolean)`: Initializes the report to use amounts in additional reporting currency. Sets flag for currency conversion in VAT settlement calculations.
- `SetInitialized(NewInitialized: Boolean)`: Sets the initialization status for the VAT settlement report. Controls whether the report parameters have been properly configured.

Plus 11 local procedures.

## Triggers

OnPostReport, OnPreReport, OnInitReport

## 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 12 "Gen. Jnl.-Post Line"](../codeunit/12.md) (5 calls: `GetSettlementVATEntryNo → GetNextVATEntryNo`, `OnPostReport → IsGLEntryInconsistent`, `OnPostReport → ShowInconsistentEntries`, …)
- [Codeunit 408 "DimensionManagement"](../codeunit/408.md) (2 calls: `PostGenJnlLine → AddDimSource`, `PostGenJnlLine → GetRecDefaultDimID`)
- [Codeunit 27 "Confirm Management"](../codeunit/27.md) (1 call: `OnPreReport → GetResponseOrDefault`)
- [Codeunit 799 "VAT Reporting Date Mgt"](../codeunit/799.md) (1 call: `OnInitReport → IsVATDateEnabled`)

## Recent changes

- 2026-09-21 [#11493 [29.X]-VAT Settlement G/L Entries Do Not Populate Source Currency Amount and Source VAT Currency Amount After Running Calculate and Post VAT Settlement](../../changes/bcapps/11493.md) (releases/29.x, BC29, fix)
- 2026-09-15 [#11186 [Master]-]VAT Settlement G/L Entries Do Not Populate Source Currency Amount and Source VAT Currency Amount After Running Calculate and Post VAT Settlement](../../changes/bcapps/11186.md) (main, BC30, fix)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC25, BC27, BC29

## Countries that replace it

[AU](../../localizations/au.md), [BE](../../localizations/be.md), [ES](../../localizations/es.md), [IT](../../localizations/it.md), [NO](../../localizations/no.md)

## Documented on Microsoft Learn

- [Value Added Tax management overview](https://learn.microsoft.com/dynamics365/business-central/finance-manage-vat)
- [Built-in finance reports in Business Central](https://learn.microsoft.com/dynamics365/business-central/finance-reports)
- [Built-in VAT reports in Business Central](https://learn.microsoft.com/dynamics365/business-central/finance-vat-reports)
- [Calculate and Post Tax Settlement (report)](https://learn.microsoft.com/dynamics365/business-central/reports/report-20)

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: "report", object_name: "Calc. and Post VAT Settlement")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
