---
id: object/codeunit/18433-in
type: object
title: Codeunit 18433 "GST Application Library" (IN)
summary: Codeunit 18433 "GST Application Library" (IN) in the IN country layer (Microsoft.Finance.GST.Application). 33 public procedures, 1 events. 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: 76d68284a0afb85004e3bfe3a90479455a13f74c31b6b3112313db6363459315
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/IN/INGST/app/GSTApplication/src/Codeunit/GSTApplicationLibrary.Codeunit.al
    title: src/Apps/IN/INGST/app/GSTApplication/src/Codeunit/GSTApplicationLibrary.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: 18433
name: GST Application Library
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: 55
  events: 1
  subscribers: 0
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
---

# Codeunit 18433 "GST Application Library" (IN)

> Codeunit 18433 "GST Application Library" (IN) in the IN country layer (Microsoft.Finance.GST.Application). 33 public procedures, 1 events. 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/GSTApplicationLibrary.Codeunit.al) · facts from BC29

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

## Events published

- `OnBeforeCalculateAppliedAmounts(TotalInvoiceAmount: Decimal; AmountToApply: Decimal; TDSTCS: Decimal; var GSTApplicationBuffer: Record "GST Application Buffer"; var IsHandled: Boolean)` (integration)

## Procedures

- `FillAppBufferInvoiceOffline(GenJournalLine: Record "Gen. Journal Line"; TransactionType: Enum "Detail Ledger Transaction Type"; InvoiceDocNo: Code[20]; AccountNo: Code[20]; PaymentDocNo: Code[20]; TDSTCSAmount: Decimal; PaymentCurrFactor: Decimal)`
- `FillGSTAppBufferHSNComponentPayment(var DetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry"; AppliedDocType: Enum "Current Doc. Type"; AppliedDocNo: Code[20]; AccountNo: Code[20]; AppliedDocTypePosted: Enum "Current Doc. Type"; AppliedDocNoPosted: Code[20]; AmountToApply: Decimal)`
- `FillAppBufferInvoice(TransactionType: Enum "Detail Ledger Transaction Type"; InvoiceDocNo: Code[20]; AccountNo: Code[20]; PaymentDocNo: Code[20]; TDSTCSAmount: Decimal; AmountToApply: Decimal; PaymentCurrFactor: Decimal): Boolean`
- `AllocateGSTWithNormalPayment(AccountNo: Code[20]; DocumentNo: Code[20]; AmountToApply: Decimal)`
- `DeleteInvoiceApplicationBufferOffline(TransactionType: Enum "Detail Ledger Transaction Type"; AccountNo: Code[20]; DocumentType: Enum "Original Doc Type"; DocumentNo: Code[20])`
- `DeletePaymentAplicationBuffer(TransactionType: Enum "Detail Ledger Transaction Type"; EntryNo: Integer)`
- `GetApplicationRemainingAmountLCYForSales(CustLedgEntry: Record "Cust. Ledger Entry"; ApplyingCustLedgEntry: Record "Cust. Ledger Entry"; AmountToApply: Decimal; RemainingAmount: Decimal; var InvoiceGSTAmount: Decimal; var AppliedGSTAmount: Decimal; var InvoiceBaseAmount: Decimal): Decimal`
- `GetApplicationRemainingAmountLCYForPurchase(VendLedgerEntry: Record "Vendor Ledger Entry"; ApplyingVendLedgerEntry: Record "Vendor Ledger Entry"; AmountToApply: Decimal; RemainingAmount: Decimal; var InvoiceGSTAmount: Decimal; var InvoiceBaseAmount: Decimal): Decimal`
- `CheckEarlierPostingDate(PostingDate: Date; ApplyingEntryPostingDate: Date; DocumentType: Enum "Gen. Journal Document Type"; DocumentNo: Code[20]; ApplyingEntryDocumentType: Enum "Gen. Journal Document Type"; CVNo: Code[20])`
- `GetApplicationRemainingAmountForSales(CustLedgEntry: Record "Cust. Ledger Entry"; ApplyingCustLedgerEntry: Record "Cust. Ledger Entry"; AmountToApply: Decimal; RemainingAmount: Decimal; var InvoiceGSTAmount: Decimal; var AppliedGSTAmount: Decimal; var InvoiceBaseAmount: Decimal): Decimal`
- `GetApplicationRemainingAmountForPurchase(VendLedgerEntry: Record "Vendor Ledger Entry"; ApplyingVendLedgEntry: Record "Vendor Ledger Entry"; AmountToApply: Decimal; RemainingAmount: Decimal; var InvoiceBaseAmount: Decimal): Decimal`
- `CheckGroupAmount(DocumentType: Enum "Gen. Journal Document Type"; DocumentNo: Code[20]; AmountToApply: Decimal; GSTGroupAmount: Decimal; GSTGroupCode: Code[20])`
- `CheckGroupAmountJnl(DocumentType: Enum "Gen. Journal Document Type"; DocumentNo: Code[20]; AmountToApply: Decimal; GSTGroupAmount: Decimal; GSTGroupCode: Code[20])`
- `GetAppliedAmount(RemainingBase: Decimal; RemainingAmount: Decimal; GSTBase: Decimal; GSTAmount: Decimal; var AppliedBase: Decimal; var AppliedAmount: Decimal)`
- `ApplyCurrencyFactorInvoice(ApplyCurrencyFac: Boolean)`
- `GetGSTLedgerTransactionTypeFromDetailLedgerTransactioType(var GSTLedgerTransactionType: Enum "GST Ledger Transaction Type"; DetailLedgerTransactionType: Enum "Detail Ledger Transaction Type")`
- `GetPurchGroupTypeFromGSTGroupType(var PurchGroupType: Enum "Purchase Group Type"; GSTGroupType: Enum "GST Group Type")`
- `GetDetailedGSTDocumentTypeFromGSTDocumentType(var DetailedGSTDocumentType: Enum "Detail GST Document Type"; GSTDocumentType: Enum "GST Document Type")`
- `GetApplicationDocTypeFromGSTDocumentType(var ApplicationDocType: Enum "Application Doc Type"; GSTDocumentType: Enum "GST Document Type")`
- `GetApplicationDocTypeFromGenJournalDocumentType(var ApplicationDocType: Enum "Application Doc Type"; GenJournalDocumentType: Enum "Gen. Journal Document Type")`
- `GetGSTDocumentTypeFromGenJournalDocumentType(var GSTDocumentType: Enum "GST Document Type"; GenJournalDocumentType: Enum "Gen. Journal Document Type")`
- `GetOriginalDocTypeFromGenJournalDocumentType(var OriginalDocType: Enum "Original Doc Type"; GenJournalDocumentType: Enum "Gen. Journal Document Type")`
- `GetPartialRoundingAmt(AmountToApply: Decimal; GSTCalculatedAmountToApply: Decimal): Decimal`
- `CheckGSTAccountingPeriod(PostingDate: Date; UsedForSettlement: Boolean)`
- `GetGSTGLAccountNo(GSTGLAccountType: Enum "GST GL Account Type"; GSTStateCode: Code[10]; GSTComponentCode: Code[30]): Code[20]`
- `DoesGSTExist(TransactionType: Enum "Detail Ledger Transaction Type"; CVNo: Code[20]; DocumentNo: Code[20]): Boolean`
- `GetTotalTCSInclSHECessAmount(TransactionNo: Integer): Decimal`
- `GetNextGSTLedgerEntryNo(): Integer`
- `GenJnlDocumentType2OriginalDocumentTypeEnum(GenJournalDocumentType: Enum "Gen. Journal Document Type"): Enum "Original Doc Type"`
- `GenJnlDocumentType2CurrentDocumentTypeEnum(GenJournalDocumentType: Enum "Gen. Journal Document Type"): Enum "Current Doc. Type"`
- `OriginalDocumentType2CurrentDocumentTypeEnum(OriginalDocType: Enum "Original Doc Type"): Enum "Current Doc. Type"`
- `CurrentDocumentType2OriginalDocumentTypeEnum(CurrentDocType: Enum "Current Doc. Type"): Enum "Original Doc Type"`
- `GetDetailedGSTLedgerEntryInfo(DetailedGSTLedgerEntry: Record "Detailed GST Ledger Entry"; var DetailedGSTLedgerEntryInfo: Record "Detailed GST Ledger Entry Info")`

Plus 21 local procedures.

## 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 Library")`, 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.
