---
id: object/codeunit/18430-in
type: object
title: Codeunit 18430 "GST Application Handler" (IN)
summary: Codeunit 18430 "GST Application Handler" (IN) in the IN country layer (Microsoft.Finance.GST.Application). 46 events, 36 event subscribers. Introduced in BC29, still in BC30.
tier: official
language: en
tags:
  - codeunit
  - in layer
versions:
  introduced: "29"
  last_changed: null
  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: daf3c5404eb2a04d367fd51ab5fba7b70690a309654184bceb8666331d11d7c4
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/IN/INGST/app/GSTApplication/src/Codeunit/GSTApplicationHandler.Codeunit.al
    title: src/Apps/IN/INGST/app/GSTApplication/src/Codeunit/GSTApplicationHandler.Codeunit.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations:
    - localization/in
  videos: []
  posts: []
  guidelines: []
object_type: codeunit
object_id: 18430
name: GST Application Handler
namespace: Microsoft.Finance.GST.Application
app: INGST
extends: null
first_version: "29"
last_version: "30"
present_in:
  - "29"
  - "30"
changed_in: []
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
country: IN
counts:
  fields: 0
  procedures: 144
  events: 46
  subscribers: 36
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
---

# Codeunit 18430 "GST Application Handler" (IN)

> Codeunit 18430 "GST Application Handler" (IN) in the IN country layer (Microsoft.Finance.GST.Application). 46 events, 36 event subscribers. Introduced in BC29, still in BC30.

IN country layer · Microsoft.Finance.GST.Application · BC29-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/IN/INGST/app/GSTApplication/src/Codeunit/GSTApplicationHandler.Codeunit.al) · facts from BC29

An object of the [IN localization](../../localizations/in.md), not part of W1.

## Events published

- `OnBeforeApplyGSTApplicationCreditMemo(CVLedgerEntryBuffer: Record "CV Ledger Entry Buffer"; OldCVLedgerEntryBuffer: Record "CV Ledger Entry Buffer"; TransactionType: Enum "Detail Ledger Transaction Type"; var IsHandled: Boolean)` (integration)
- `OnBeforeSetPostApplication(Vendor: Record Vendor; GenJnlLine: Record "Gen. Journal Line"; var IsHandled: Boolean)` (integration)
- `OnAfterCalculateGSTApplicationAmount(DetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry"; DetailedGSTLedgerEntryInfo: Record "Detailed GST Ledger Entry Info"; var ApplicationRatio: Decimal; var RemainingBase: Decimal; var RemainingAmount: Decimal)` (integration)
- `OnAfterGetHigherExcRateGSTGLAccounts(GSTPostingBuffer: Record "GST Posting Buffer"; var AccountNo: Code[20]; var BalanceAccountNo: Code[20])` (integration)
- `OnAfterGetLessExcRateGSTGLAccounts(GSTPostingBuffer: Record "GST Posting Buffer"; var AccountNo: Code[20]; var BalanceAccountNo: Code[20])` (integration)
- `OnAfterGetGLGSTPostingAccountNo(DetailedGSTLedgerEntryInfo: Record "Detailed GST Ledger Entry Info"; GSTPostingBuffer: Record "GST Posting Buffer"; var AccountNo: Code[20])` (integration)
- `OnAfterGetGSTGLAccountNoForLowerExchRate(DetailedGSTLedgerEntryInfo: Record "Detailed GST Ledger Entry Info"; GSTPostingBuffer: Record "GST Posting Buffer"; var AccountNo: Code[20])` (integration)
- `OnAfterGetGSTGLBalAccountNoForLowerExchRate(DetailedGSTLedgerEntryInfo: Record "Detailed GST Ledger Entry Info"; GSTPostingBuffer: Record "GST Posting Buffer"; var BalanceAccountNo: Code[20])` (integration)
- `OnBeforeCalculateGSTAppliedAmount(PaymentCurrencyFactor: Decimal; DetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry"; DetailedGSTLedgerEntryInfo: Record "Detailed GST Ledger Entry Info"; var ApplicationRatio: Decimal; var RemainingBase: Decimal; var RemainingAmount: Decimal; var AppliedBase: Decimal; var AppliedAmount: Decimal)` (integration)
- `OnBeforePostGSTWithNormalPaymentOnline(var GenJournalLine: Record "Gen. Journal Line"; var AmountToApply: Decimal; var IsHandled: Boolean)` (integration)
- `OnBeforePostGSTWithNormalPaymentOffline(var GenJournalLine: Record "Gen. Journal Line"; var AmountToApply: Decimal; var IsHandled: Boolean)` (integration)
- `OnBeforeUnApplyGSTApplication(GenJournalLine: Record "Gen. Journal Line"; TransactionType: Enum "Detail Ledger Transaction Type"; TransactionNo: Integer; var IsHandled: Boolean)` (integration)
- `OnAfterUnApplyGSTApplication(GenJournalLine: Record "Gen. Journal Line"; TransactionType: Enum "Detail Ledger Transaction Type"; TransactionNo: Integer)` (integration)
- `OnBeforePostGSTPurchaseApplication(var GenJournalLine: Record "Gen. Journal Line"; var CVLedgerEntryBuffer: Record "CV Ledger Entry Buffer"; var OldCVLedgerEntryBuffer: Record "CV Ledger Entry Buffer"; AmountToApply: Decimal; var IsHandled: Boolean)` (integration)
- `OnBeforeCreateDetailedGSTApplicationEntry(var ApplyDetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry"; DetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry"; GenJournalLine: Record "Gen. Journal Line"; InvoiceNo: Code[20]; AppliedBase: Decimal; AppliedAmount: Decimal; var IsHandled: Boolean)` (integration)
- `OnAfterCreateDetailedGSTApplicationEntry(var ApplyDetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry"; DetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry"; GenJournalLine: Record "Gen. Journal Line")` (integration)
- `OnBeforeUpdateApplyDetailedGSTLedgerEntryTables(var GenJournalLine: Record "Gen. Journal Line"; InvoiceNo: Code[20]; EntryNo: Integer; GSTApplicationBuffer: Record "GST Application Buffer"; var IsHandled: Boolean)` (integration)
- `OnFindDetailedGSTLedgerEntryInSalesGSTApplicationLoop(var DetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry"; GenJournalLine: Record "Gen. Journal Line"; GSTApplicationBuffer: Record "GST Application Buffer")` (integration)
- `OnBeforeCreateApplyDetailedGSTLedgerEntryInfo(DetailedGSTLedgerEntryInfo: Record "Detailed GST Ledger Entry Info"; ApplyDetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry"; EntryNo: Integer; var ApplyDetailedGSTLedgerEntryInfo: Record "Detailed GST Ledger Entry Info"; IsHandled: Boolean)` (integration)
- `OnAfterCreateApplyDetailedGSTLedgerEntryInfo(var ApplyDetailedGSTLedgerEntryInfo: Record "Detailed GST Ledger Entry Info"; DetailedGSTLedgerEntryInfo: Record "Detailed GST Ledger Entry Info"; ApplyDetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry")` (integration)
- `OnBeforeModifyDetailedGSTLedgerEntryInSalesGSTApplication(var DetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry"; ApplyDetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry"; ApplyDetailedGSTLedgerEntryInfo: Record "Detailed GST Ledger Entry Info"; GenJournalLine: Record "Gen. Journal Line"; GSTApplicationBuffer: Record "GST Application Buffer")` (integration)
- `OnAfterGetGSTPayableGLAccounts(ApplyDetailedGSTLedgerEntryInfo: Record "Detailed GST Ledger Entry Info"; ApplyDetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry"; var AccountNo: Code[20]; var BalanceAccountNo: Code[20])` (integration)
- `OnBeforeCreateApplicationGSTLedger(GSTPostingBuffer: Record "GST Posting Buffer"; DetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry"; PostingDate: Date; SourceCode: Code[10]; PaymentType: Enum "Payment Type"; AccountNo: Code[20]; BalanceAccountNo: Code[20]; BalanceAccountNo2: Code[20]; AccountNo2: Code[20]; var IsHandled: Boolean)` (integration)
- `OnAfterCreateApplicationGSTLedger(var GSTLedgerEntry: Record "GST Ledger Entry"; GSTPostingBuffer: Record "GST Posting Buffer"; DetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry")` (integration)
- `OnBeforeUpdateApplyDetailedGSTLedgerEntryPurchTables(var GenJournalLine: Record "Gen. Journal Line"; InvoiceNo: Code[20]; PaymentEntryNo: Integer; GSTApplicationBuffer: Record "GST Application Buffer"; var IsHandled: Boolean)` (integration)
- `OnFindDetailedGSTLedgerEntryInPurchGSTApplicationLoop(var DetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry"; GenJournalLine: Record "Gen. Journal Line"; GSTApplicationBuffer: Record "GST Application Buffer")` (integration)
- `OnFindGSTApplicationBufferToCheck(GSTApplicationBufferToCheck: Record "GST Application Buffer"; GSTApplicationBuffer: Record "GST Application Buffer"; DetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry")` (integration)
- `OnBeforeCalculateGSTPurchApplicationAmount(GSTApplicationBuffer: Record "GST Application Buffer"; DetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry"; var ApplicableRemainingGSTAmount: Decimal; var ApplicationRatio: Decimal; var RemainingBase: Decimal; var RemainingAmount: Decimal)` (integration)
- `OnBeforeUpdateDetailedGSTApplicationEntry(var ApplyDetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry"; PaymentEntryNo: Integer; RCMExempt: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeModifyApplyDetailedGSTLedgerEntry(var ApplyDetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry")` (integration)
- `OnBeforeModifyApplyDetailedGSTLedgerEntryInfo(var ApplyDetailedGSTLedgerEntryInfo: Record "Detailed GST Ledger Entry Info")` (integration)
- `OnBeforeCalculateAndFillGSTPostingBufferForexFluctuation(GSTApplicationBuffer: Record "GST Application Buffer"; PaymentCurrencyFactor: Decimal; var HigherInvoiceExchangeRate: Boolean; var AppliedBaseAmountInvoiceLCY: Decimal; var IsHandled: Boolean)` (integration)
- `OnFindGSTApplicationBufferToCheckForForexCalcualtion(var GSTApplicationBufferToCheck: Record "GST Application Buffer"; GSTApplicationBuffer: Record "GST Application Buffer")` (integration)
- `OnAfterCalculateGSTPurchApplicationAmount(DetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry"; DetailedGSTLedgerEntryInfo: Record "Detailed GST Ledger Entry Info"; var ApplicationRatio: Decimal; var RemainingBase: Decimal; var RemainingAmount: Decimal)` (integration)
- `OnAfterCalculatePurchaseAppliedAmountInvoice(GSTApplicationBuffer: Record "GST Application Buffer"; var AppliedBaseAmountInvoiceLCY: Decimal; var AppliedAmountInvoiceLCY: Decimal)` (integration)
- `OnBeforeUpdateDetailedGSTApplicationEntryForex(var ApplyDetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry"; PaymentCurrencyFactor: Decimal; DtldGSTLedgerEntCurrencyFactor: Decimal; var IsHandled: Boolean)` (integration)
- `OnAfterGetCreditAccountAdvancePaymentGoods(DetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry"; DetailedGSTLedgerEntryInfo: Record "Detailed GST Ledger Entry Info"; GSTPostingBuffer: Record "GST Posting Buffer"; var AccountNo: Code[20]; var BalanceAccountNo: Code[20])` (integration)
- `OnBeforeGetCreditAccountAdvancePaymentService(DetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry"; DetailedGSTLedgerEntryInfo: Record "Detailed GST Ledger Entry Info"; GSTPostingBuffer: Record "GST Posting Buffer"; var AccountNo: Code[20]; var BalanceAccountNo: Code[20]; var BalanceAccountNo2: Code[20]; var IsHandled: Boolean)` (integration)
- `OnBeforePostPurchaseGSTApplicationGL(var GenJournalLine: Record "Gen. Journal Line"; PaymentDocNo: Code[20]; InvoiceNo: Code[20]; PaymentEntryNo: Integer; GSTGroupCode: Code[20]; var IsHandled: Boolean)` (integration)
- `OnFindGSTApplicationBufferInPostPurchGSTApplicationGL(var GSTApplicationBuffer: Record "GST Application Buffer"; GenJournalLine: Record "Gen. Journal Line")` (integration)
- `OnBeforeFillGSTPostingBufferWithApplication(DetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry"; ForexFluctuation: Boolean; HigherInvoiceExchangeRate: Boolean; var GSTPostingBuffer: Record "GST Posting Buffer"; var IsHandled: Boolean)` (integration)
- `OnAfterFillGSTPostingBufferWithApplication(var GSTPostingBuffer: Record "GST Posting Buffer"; DetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry")` (integration)
- `OnBeforeGetCreditAccountNormalPayment(DetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry"; GSTPostingBuffer: Record "GST Posting Buffer"; var AccountNo: Code[20]; var AccountNo2: Code[20]; var BalanceAccountNo: Code[20]; var BalanceAccountNo2: Code[20]; RCMExempt: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforePostPurchGSTApplicationNormalPaymentGL(var GenJournalLine: Record "Gen. Journal Line"; PaymentDocNo: Code[20]; InvoiceNo: Code[20]; RCMExempt: Boolean; PaymentCurrencyFactor: Decimal; PentOriginalAmountLCY: Decimal; var IsHandled: Boolean)` (integration)
- `OnFindGSTApplBufferLoopForPurchGSTApplNormalPaymentsGL(var GSTApplicationBuffer: Record "GST Application Buffer"; GenJournalLine: Record "Gen. Journal Line")` (integration)
- `OnFindDetGSTLedgEntryLoopForPurchGSTApplNormalPaymentsGL(var DetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry"; GSTApplicationBuffer: Record "GST Application Buffer"; GenJournalLine: Record "Gen. Journal Line")` (integration)

## Event subscriptions

- OnBeforeApplyVendLedgEntry subscribes to Codeunit "Gen. Jnl.-Post Line" OnBeforeApplyVendLedgEntry
- OnBeforeApplyCustLedgEntry subscribes to Codeunit "Gen. Jnl.-Post Line" OnBeforeApplyCustLedgEntry
- OnAfterFindAmtForAppln subscribes to Codeunit "Gen. Jnl.-Post Line" OnAfterFindAmtForAppln
- OnAfterCopyCVLedgEntryBufFromCustLedgerEntry subscribes to Table "CV Ledger Entry Buffer" OnAfterCopyFromCustLedgerEntry
- OnAfterCopyCVLedgEntryBufFFromVendLedgerEntry subscribes to Table "CV Ledger Entry Buffer" OnAfterCopyFromVendLedgerEntry
- OnBeforePostApplyVendLedgEntry subscribes to Codeunit "VendEntry-Apply Posted Entries" OnBeforePostApplyVendLedgEntry
- OnBeforePostApplyCustLedgEntry subscribes to Codeunit "CustEntry-Apply Posted Entries" OnBeforePostApplyCustLedgEntry
- GenJnlLineOnValidateAmountOnAfterAssignAmountLCY subscribes to Table "Gen. Journal Line" OnValidateAmountOnAfterAssignAmountLCY
- OnAfterPostApply subscribes to Codeunit "Gen. Jnl.-Post Line" OnAfterPostApply
- OnGenJnlPostLineOnAfterRunWithCheck subscribes to Codeunit "Gen. Jnl.-Post Line" OnAfterRunWithCheck
- OnGenJnlPostLineOnAfterRunWithOutCheck subscribes to Codeunit "Gen. Jnl.-Post Line" OnAfterRunWithoutCheck
- OnBeforePostUnapplyVendLedgEntry subscribes to Codeunit "VendEntry-Apply Posted Entries" OnBeforePostUnapplyVendLedgEntry
- OnBeforeInsertDtldVendLedgEntryUnapply subscribes to Codeunit "Gen. Jnl.-Post Line" OnBeforeInsertDtldVendLedgEntryUnapply
- OnBeforeCreateGLEntriesForTotalAmountsUnapplyVendor subscribes to Codeunit "Gen. Jnl.-Post Line" OnAfterUnapplyVendLedgEntry
- OnBeforeInsertDtldCustLedgEntryUnapply subscribes to Codeunit "Gen. Jnl.-Post Line" OnBeforeInsertDtldCustLedgEntryUnapply
- OnBeforeCreateGLEntriesForTotalAmountsUnapply subscribes to Codeunit "Gen. Jnl.-Post Line" OnBeforeCreateGLEntriesForTotalAmountsUnapplyV19
- UpdateDetLedgerEntInfoFields subscribes to Table "Detailed GST Ledger Entry" OnAfterModifyEvent
- OnAfterInitGLEntry subscribes to Codeunit "Gen. Jnl.-Post Line" OnAfterInitGLEntry
- OnAfterPostApplyVendLedgEntry subscribes to Codeunit "VendEntry-Apply Posted Entries" OnAfterPostApplyVendLedgEntry
- OnAfterInitGLRegister subscribes to Codeunit "Gen. Jnl.-Post Line" OnAfterInitGLRegister
- OnRunPreview subscribes to Codeunit "Gen. Jnl.-Post Preview" OnRunPreview
- OnBeforeUpdateGLReg subscribes to Codeunit "Gen. Jnl.-Post Line" OnBeforeUpdateGLReg
- PurchPostOnBeforePostPurchaseDoc subscribes to Codeunit "Purch.-Post" OnBeforePostPurchaseDoc
- PurchPostOnAfterPostPurchaseDoc subscribes to Codeunit "Purch.-Post" OnAfterPostPurchaseDoc
- OnAfterPostItemJnlLine subscribes to Codeunit "Item Jnl.-Post Line" OnAfterPostItemJnlLine
- OnBeforePostItemJnlLine subscribes to Codeunit "Item Jnl.-Post Line" OnBeforePostItemJnlLine
- OnBeforeActionEvent subscribes to Page "Order Subcon Details Receipt" OnBeforeActionEvent (&Receive)
- OnAfterActionEvent subscribes to Page "Order Subcon Details Receipt" OnAfterActionEvent (&Receive)
- OnBeforeActionEventMultipleSubCon subscribes to Page "Multiple Order Subcon Receipt" OnBeforeActionEvent (&Receive)
- OnAfterActionEventMultipleSubCon subscribes to Page "Multiple Order Subcon Receipt" OnAfterActionEvent (&Receive)
- OnCopyToTempLinesOnAfterSetFilters subscribes to Codeunit "Purch.-Post" OnCopyToTempLinesOnAfterSetFilters
- OnBeforePostPurchLine subscribes to Codeunit "Purch.-Post" OnBeforePostPurchLine
- SubcontractingOnAfterInitGLEntry subscribes to Codeunit "Gen. Jnl.-Post Line" OnAfterInitGLEntry
- OnBeforeConfirmPost subscribes to Codeunit "Purch.-Post (Yes/No)" OnBeforeConfirmPost
- OnBeforeCopyFromProdOrderComp subscribes to Table "Item Journal Line" OnBeforeCopyFromProdOrderComp
- OnAfterValidateUnitofMeasureCodeSubcontract subscribes to Codeunit "Subcontracting Post" OnAfterValidateUnitofMeasureCodeSubcontract

## Procedures

62 local procedures, no public ones.

## Across versions

- Present in: BC29-30
- Changed (declaration) in: none

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). 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: "codeunit", object_name: "GST Application Handler")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.

A IN country object, not part of W1: the default corpus does not have it; `bcatlas_list_countries` shows which countries the atlas has.
