Skip to content

Tax Configuration

The tenant’s one list of tax codes and rates, read by every sales, purchase and POS document when a line is taxed. It does not decide which account tax posts to — that comes from the company’s default GL codes for output and input tax, set in Chart of Account → Companies → the company → Default GL Codes.

Overview

Tax Configuration holds the tenant’s list of tax codes — one row per code, each carrying a code string, a description, a tax type, a rate and a country. It is master data only: it moves no stock, posts no journal and calculates nothing. Its output is the drop-down that appears on a document line whenever tax is charged, and the rate that the backend stamps onto that line when the document is saved.

A finance administrator normally sets the codes up once at implementation and then touches them only when a statutory rate changes. Every taxable transaction in the tenant — sales, purchasing, POS, e-commerce, self-billed e-Invoicing — reads from this one list.

This applet does not map tax codes to GL accounts. A tax code has no GL field. The account a tax amount posts to comes from the company’s default GL code links OUTPUT_TAX (sales-side documents) and INPUT_TAX (purchase-side documents), maintained in Chart of Account → Companies → the company → Default GL Codes (not in Organization, whose company screen has no such tab). See Lifecycle and effects.

Where it fits

DirectionWhatWhy
BeforeChart of AccountThe company default GL code links OUTPUT_TAX and INPUT_TAX, each with a subledger, must exist before the first taxed document; without them the tax line is dropped silently (see below).
BesideMY-SST AppletMaintains the same tax-code list through its own Tax Code screens, and consumes it for SST-02 filing.
AfterDocument Item Maintenance, Inventory Item MaintenanceItems can carry a default tax code that pre-fills the document line.
AfterSales Invoice (Internal), Purchase Invoice (Internal) and every other taxable documentRead the list into the line-level SST and WHT drop-downs.
AfterMyInvois AdminSends the line’s stamped tax rate and amount to LHDN (the e-Invoice tax type comes from a different field — see below).
AfterFinancial ReportReports on the resulting OUTPUT_TAX / INPUT_TAX ledger balances.

Screens and menus

The applet has a single menu item, Tax Configuration, which opens a two-column listing / create / edit workspace.

Tax Configuration listing
The Tax Configuration listing. Columns: Country, Tax Code, Tax Name, Tax Type, Tax Type Name, Rate (%), Major Industry Code/Tariff Code, Status, Modified Date.

Listing. An ag-Grid with floating filters, row grouping, a status bar (total / selected / aggregation) and CSV, Excel and print export. It loads 50 rows at a time, newest-modified first, and filters to ACTIVE rows by default — inactive codes are invisible until you set the Status filter in advanced search. The free-text search box covers country, tax code, tax name and tax type and rejects keywords shorter than three characters (“Search keyword must more than 2 characters.”). The Rate column is stored as a fraction and displayed multiplied by 100.

Advanced search panel
Advanced search: Country, Tax Type, an Updated Date range behind a checkbox, and Status. Country and Tax Type are multi-select.

Create. One tab, Details. The + button opens it in the second column.

Create Tax Configuration with the Tax Type drop-down open
Create Tax Configuration. The Tax Type list is filtered by the Country you chose. Note that the validation hint under the empty Tax Code field reads 'Please insert tax name' — a mislabelled hint, not a different field.

Edit. Clicking a listing row opens the same fields plus Status, the read-only audit block (Created By / Created Date / Modified By / Modified Date) and a Delete button. UPDATE stays disabled until the form is both valid and dirty.

Tax Configuration Edit
Tax Configuration Edit. Tax Type Name is derived from Tax Type and cannot be typed into; Delete acts immediately, with no confirmation dialog.

Settings and Personalization. Reached from the gear at the bottom of the sidebar. The applet contributes two entries under System Configuration — Field Settings and Default Selection — and the shared settings shell adds Server Side Permissions (Permission Wizard, Permission Set, User Permission, Role Permission) and Developer Tools (Release Notes). Personalization offers Field Settings and Default Selection.

Three settings screens exist with no menu entry — Webhook, Feature Visibility and a placeholder card headed “Audit Trail” with no content — and are reachable only by URL.

Configuration

Before you can use it

PrerequisiteWhereWhy
Company default GL code link OUTPUT_TAX with a subledgerChart of Account → Companies → the company → Default GL CodesWithout it the tax line of every sales-side journal is dropped silently. There is no error: the customer’s line is built from the lines that remain, so it absorbs the tax and the journal posts. Your SST payable account is short, and trade debtors no longer agrees with the customer ageing. Only a customer with no AR/AP type makes the journal fail its balance check instead.
Company default GL code link INPUT_TAX with a subledgerChart of Account → Companies → the company → Default GL CodesThe same on purchase-side documents: the supplier’s line absorbs the tax, and the input tax you can claim back sits in no GL account.
GL codes for the tax liability / recoverable accountsChart of AccountThe GL codes and subledgers the two links above point at.
Server permission TNT_API_TAX_CODE_CFG_*Settings → Server Side PermissionsEvery screen in this applet is gated on these.

Nothing else is required. The Country list is served from the platform’s country assets, and a tax code needs no company, branch, location or numbering configuration.

Applet settings

This applet embeds no inline settings gear on any screen.

No working applet setting exists. Both configuration screens are unfinished, and nothing in the applet reads a setting value:

ScreenWhat you seeWhat actually happens
Settings → Field SettingsTwo panels, Lines Settings (Unit Discount, SST/VAT/GST, WHT, Blanket Order) and Department Settings (Segment, G/L Dimension, Profit Center, Project), plus a SAVE buttonNone of the eight toggles is wired to anything and SAVE does nothing. Nothing is stored and nothing changes.
Settings → Default SelectionApplet Default Settings with Default Branch and Default LocationChoosing a branch or location raises an error, and SAVE saves nothing. Even if it saved, DEFAULT_BRANCH and DEFAULT_LOCATION are read by nothing in this applet — a tax code has no branch or location.
Personalization → Default SelectionUser Default Settings, “This will override Applet Default Settings”The same two unwired controls.
Personalization → Field Settings—The menu entry leads to the applet’s 404 page.

The behaviour that is configurable — which codes appear, at what rate, for which country — is the tax-code data itself, documented under Fields.

Settings in other applets that control this applet

SettingWhere it is setEffect here
Company default GL code links OUTPUT_TAX / INPUT_TAXChart of Account → Companies → the company → Default GL CodesDecides which account every tax amount lands in. Not visible or overridable per tax code.
Item Tax Applicable tickDocument Item Maintenance → item → Tax tabThe gate. With it off, none of the item’s tax fields is copied onto a document line, however they are filled in. Nothing on the document tells you the tick is off, so when a line comes out untaxed despite a tax code on the item, check this first.
Item default tax codeDocument Item Maintenance / Inventory Item MaintenancePre-selects one of these codes on a document line — the item’s output triple on a document whose type contains SALES, its input triple on one containing PURCHASE, and neither on any other type.
Customer or supplier Tax tabCustomer / Supplier → TaxOne of these codes per country, with its rate copied from the code and an include-or-exclude-tax choice. It is a fallback: the line editor’s price picker offers it only when the item has no pricing scheme to offer, so an item with a price always brings its own tax. It restricts nothing — any line can still be given another code. Registration numbers are on the record’s Main and E-Invoice tabs, not here.

Feature visibility / permissions

Access is server-side only — the owner/admin pair plus one action code per operation:

OperationPermission code
Open the listing / read a codeTNT_API_TAX_CODE_CFG_READ
CreateTNT_API_TAX_CODE_CFG_CREATE
UpdateTNT_API_TAX_CODE_CFG_UPDATE
DeleteTNT_API_TAX_CODE_CFG_DELETE
Any of the aboveTNT_API_TAX_CODE_CFG_OWNER, TNT_API_TAX_CODE_CFG_ADMIN

The same read codes gate the listing and the tax-code drop-down other applets use.

There are no client-side permissions for this applet — no HIDE_*/SHOW_* handling and no menu filtering. Everything a user can reach in the applet, they can reach in full — buttons are never hidden by role, only refused by the API.

Fields

One tab, Details. Create and Edit expose the same fields; Status and the audit block appear on Edit only.

FieldMeaningRequiredNotes / validation
CountryThe jurisdiction the code belongs toYesSearchable drop-down, but only four countries are offered: Malaysia, Singapore, Thailand, Indonesia. The list is intersected against the applet’s own tax-type map, so no other country can be selected. Stored as the country name (Malaysia), not a code. Changing it on Edit clears Tax Type.
Tax CodeThe short code shown on documentsYesMax 255 characters. Forced to upper case on save. Unique across the tenant — enforced by the database, not by the form. The validation hint under this field mistakenly reads “Please insert tax name”.
Tax NameHuman descriptionYesMax 255 characters. The validation hint under Tax Code refers to this field.
Tax TypeThe behaviour class of the codeYesDrop-down filtered by Country (see the table below).
Tax Type NameFriendly name of the selected typeDerivedRead-only; filled in from Tax Type.
Tax Rate (%)Percentage, entered as 6.00 for 6%No (defaults to 0.00)Only validator is maximum 100. Stored as a fraction (0.06) rounded to two decimal places — see Troubleshooting.
Major Industry Code / Tariff CodeFree-text classificationNoMax 255 characters. Read by nothing — the MY-SST applet keeps its own tariff codes.
StatusACTIVE or INACTIVEEdit onlyDefaults to ACTIVE on the server if not supplied. See the warning below about what INACTIVE does not do.
Created By / Created Date / Modified By / Modified DateAuditRead-onlyThe two “By” fields are resolved to the user’s e-mail-style login and stay blank when no such login principal exists for that subject.

Tax types offered, by country

CountryTax types
MalaysiaGST-INPUT, GST-OUTPUT, SST-SLS-INPUT, SST-SLS-OUTPUT, SST-SVC-INPUT, SST-SVC-OUTPUT, WITH-INPUT, WITH-OUTPUT
Singapore, Thailand, IndonesiaVAT-SALES, VAT-PURCHASE

A type whose code contains WITH is a withholding type; every other type is a sales / purchase tax type. That split is what separates the two document-side drop-downs — see Lifecycle and effects.

Setting a code to INACTIVE does not remove it from documents. The listing hides it, because the listing filters to ACTIVE. The document-side tax drop-downs load every code that is not DELETED, so an inactive code is still selectable on a new invoice. To take a code out of circulation you must Delete it — and Delete is permanent for that code string (see Troubleshooting).

Lifecycle and effects

What this applet writes. One tax-code record per code. No document, no journal, no stock movement, no queue entry.

ActionEffect
CREATEThe server defaults the status to ACTIVE and stamps the audit dates. The only validation is that the two rate values are present; a duplicate tax code is refused by the database, not by a validator. Toast on success: “The Tax Config has been created”.
UPDATEThe applet re-fetches the stored row, overlays the form and sends the whole record back, so it rewrites both rate values and both type values. The only update validation is that the record exists and the two rates are present.
DELETEA soft delete: the row’s status is set to DELETED and it stays in the table. There is no confirmation dialog — the button acts on the first click.

Two rates are stored together — a transaction rate and a filing rate — and they are read by different screens. This applet always sets both to the same value, and so does the MY-SST applet’s Tax Code screen; there is no screen for making them differ. They are not interchangeable, though, and knowing which is which is how you answer “where did that rate come from”:

RateWho reads it
Transaction rateThe document line. The line-level SST and WHT drop-downs stamp this onto the line, and the document save refreshes the line from it.
Filing rateEvery master-data screen that caches a rate — the item’s Tax tab, and the customer and supplier Tax tabs.

Both maintenance surfaces write both columns together, so in normal use the two hold the same value and the distinction costs you nothing. It is worth knowing because nothing reconciles them: a row changed outside those two screens can leave the document rate and the filing rate disagreeing, and no screen and no validator would tell you.

How a document picks the rate up. When a document is saved with a line that carries a tax code but no tax type, the save looks the code up (any code that is not DELETED), copies its tax type onto the line and overwrites the line’s rate with the tax code’s transaction rate. From then on the line holds its own snapshot: changing a rate here does not restate documents that were already saved.

That refresh only fires when the line has a code and no type — which is not the common case. A line assembled from the item already carries both, so the rate it was given stands. Four routes put a rate on a line, and they do not read the same copy. The first is the one you watch happen; the others arrive already filled in:

RouteWhere the line’s rate comes from
Someone picks a code in the line editor’s SST drop-downThe tax code’s current transaction rate, rounded to two decimal places by the line editor
The line is built from a pricing resolution in a document appletThe item’s pricing-scheme link, which took a copy of the item’s output/input tax code, type and rate when the pricing link was created and is not refreshed by a later item edit
The item has no pricing scheme, so the price picker falls back to the customer or supplierThe code and rate on that record’s Tax tab, which copied the filing rate when the row was saved
A document arrives through the document-import APIThe item’s stored output tax rate (a SALES type) or input tax rate (a PURCHASE type), and only if the item’s Tax Applicable tick is on

So one tax rate can exist in five places at once — the tax code, the item, the pricing-scheme link, the customer or supplier record and the document line — and changing it here changes the first only. When a line’s tax is not the one you expected, trace it back in this order: the line, then the pricing scheme it was priced from, then the customer’s or supplier’s Tax tab, and only then this listing. This is the honest answer to “I changed the rate and the invoice still charges the old one”.

How the tax amount posts. The tax journal line is built from the document line’s tax amount, and its GL code and subledger come from the company default GL code link for the document type — OUTPUT_TAX for sales-side types (Sales Invoice, Cash Bill, Receipt Voucher …) and INPUT_TAX for purchase-side types. Signs follow the line: an outbound (negative-signum) line debits tax, an inbound line credits it. The tax code itself contributes nothing to this decision.

A half-configured mapping fails silently. The tax journal line is only added to the journal if a subledger was resolved from that company GL code link. If the link is missing, or exists with an empty subledger, the tax line is dropped without an error — and the journal still posts, because the customer’s or supplier’s line is built from the lines that remain and absorbs the tax. A RM 106 sale (RM 100 + RM 6 SST) posts debit trade debtors RM 100, credit sales RM 100: SST payable is RM 6 short, and after the customer pays RM 106, trade debtors is RM 6 in credit. On a RM 1,060 purchase the RM 60 input tax is in no GL account and trade creditors is RM 60 short. How you would notice: the tax GL account falls short of the tax on your documents, and the receivable or payable GL account stops agreeing with the ageing; the statements and ageing are built from documents and look right. Only when the customer or supplier has no AR/AP type does the posting job fail instead, with TOTAL_DEBITS_AND_TOTAL_CREDITS_NOT_BALANCES. Before go-live, check both OUTPUT_TAX and INPUT_TAX have a company default with a subledger.

Where the codes are read.

  • Line-level SST/GST drop-down (shared by the document applets’ line editors). Loads every non-DELETED code, then filters on tax type: on a SALES document it keeps only types containing SST-SLS-OUTPUT, SST-SVC-OUTPUT or GST-OUTPUT; everywhere else it keeps types containing INPUT or PURCHASE. A blank entry is prepended so a line can be left untaxed.
  • Line-level WHT drop-down (shared the same way). Keeps every code with a withholding type, with no sales/purchase split. Nothing seeds a withholding code, so unless somebody here has created a tax code with a WITH-* type, this drop-down is empty and the line’s withholding fields cannot be filled at all. An empty picker is the expected state, not a fault — create the code first.
  • MY-SST filing — the SST-02 workings group transactions by tax code.
  • e-Invoice — the outbound MyInvois line takes its rate and its tax amount from the document line’s stamped values. The LHDN taxable type is a separate field with its own list, and it is not this applet’s tax type — but it is not independent of this applet either. See the callout below.

Six rows in this listing are not tax codes, and one of them is called 06 Not Applicable. The platform seeds six rows with tax type EINVOICE, country Malaysia, rate 0.00 and status ACTIVE — codes 01 Sales Tax, 02 Service Tax, 03 Tourism Tax, 04 High-Value Goods Tax, 05 Sales Tax on Low Value and 06 Not Applicable. They are the LHDN taxable-type names, parked in the tax-code table. No document path reads them. EINVOICE contains neither OUTPUT nor INPUT nor PURCHASE, so the line-level SST drop-down filters them out on both sides; they have no withholding type, so the WHT drop-down does too; and the item’s Tax tab offers only the eight Malaysian GST-*/SST-*/WITH-* types. They appear in this applet’s listing and nowhere else, and their Tax Type Name column is blank (see Troubleshooting).

They are not where the 06 on your e-invoices comes from. Editing or deleting them changes nothing about what LHDN receives. The taxable type on an e-invoice line is worked out from the line’s tax amount — see the next callout.

This applet decides the LHDN taxable type — through the amount, not through a tax-type field. When a finalised document is turned into the record that goes to LHDN, the line’s taxable type is set from its tax amount, in four branches:

The line’s tax amountThe taxable type the line hadWhat LHDN is told
nullanything06 Not Applicable (and the amount becomes zero)
zeroanything06 Not Applicable
non-zeroblank01 Sales Tax
non-zero0601 Sales Tax
non-zeroanything else (02…05)kept as it is — the only case a chosen value survives

Three of the four branches overrule a value somebody chose on the item; the fourth fills a blank. So a zero-rate tax code, an untaxed line or an item with Tax Applicable off all reach LHDN as 06 Not Applicable, whatever the item’s E-Invoice tab says — and a taxed line can never be reported as 06. This is not a tendency you could beat with better master data — the branch is taken on the tax amount alone, so 06 and a non-zero tax amount cannot occur together, and 01 cannot appear on a zero-tax line.

This does not make the line wrong — 06 is what a genuinely untaxed line should carry. It makes the E-Invoice tab’s taxable-type field mostly decorative, and it means a wrong 06 is fixed by the rate on the line, never by the item.

Verify the set-up with one test invoice

Run this once per company after the tax codes and the company’s default GL codes are in place, and again whenever either changes. It takes about ten minutes and uses the same invoice as the Chart of Account check, so one invoice answers both pages. Give it to the person who prepares the SST return: they are the one who pays for a wrong answer, and the person who changed a rate or a default should not be the one who signs it off.

1. Key it. In GadgetSphere Sdn Bhd, raise a sales invoice to a customer whose AR/AP type is trade: one laptop at RM 2,000, with your 6% output tax code on the line. Before you finalise, the line should show RM 120 tax and the invoice RM 2,120. A different rate did not come from this listing — trace it through the four routes above, and correct the line before you go on.

2. Finalise it, then wait. Saving posts nothing. Finalise queues a background job and the screen comes back before the journal exists, and that job reads the company’s default GL codes when it runs, not when you saved. Reopen the invoice after a short while and open its Journal Txn. Right is three lines:

AccountDebitCredit
Trade debtors, DEBTOR-TRADE-RETAILRM 2,120
Laptop sales, SALES-LAPTOPRM 2,000
SST payable, LIAB-SST-OUTPUTRM 120

What each wrong result means:

You seeWhat it meansWhat to do
Debtor RM 2,000, no tax line, and no message anywhereThe company’s output tax default OUTPUT_TAX is missing or has no subledger. The tax code is not the cause; the job dropped the tax line and the customer line absorbed itMap it under Chart of Account → Companies → Default GL Codes, then Repost the invoice on Trace Document and run this step again
Three lines, but the RM 120 credit sits on another accountThe output tax default points at the wrong GL code. Every taxed sale of this company lands there, whatever the tax codeCorrect the default, then repost what posted in the meantime
A Journal Txn that stays emptyThe job failed after the screen had already returned, so the invoice reads FINAL with no journal. A missing trade receivable default is the usual cause; Resolve on Trace Document’s Missing Journal shows the reason, for that one MISSING_DEFAULT_GL_CODE: DEBTORMap the default the reason names, then Resolve
Debtor RM 120 and no sales lineNeither the laptop nor the company has a sales code — a Chart of Account problem, not a tax oneThe Chart of Account check

So a missing tax mapping is never announced: you find it here, or when the SST payable balance falls short of the return. A cash bill from the till posts its tax through the same job and the same default, so this one test covers the counter too. For the input-tax side, run the mirror on a purchase invoice; the tax line is then a debit to the account behind the company’s input tax default. A USD purchase from GadgetSphere’s Singapore distributor finalised through the Data API gets no journal at all, tax included (why).

3. Read the e-invoice line. If the company is enabled for e-invoicing, a background run picks the invoice up after it is finalised, never on save, and builds its record in My E-Invoice Admin → To IRB E-Invoice. Open the record’s Lines tab. Right is Sub Total 2,000.00, Tax Amount 120.00, and in the E-invoice Tax Type column the type on the laptop’s E-Invoice tab — for a 6% service tax, the item should carry service tax there. That column is what LHDN is told.

You see in E-invoice Tax TypeWhat it means
06 - Not ApplicableThe line reached the record with a zero tax amount. The tax code or rate on the line is at fault, not the item — fix the line’s tax
01 - Sales Tax where you charge service taxThe laptop’s E-Invoice tab has no taxable type (or has 06), and a taxed line with none is reported as sales tax. Set 02 - Service Tax on the item. A finalised document keeps the type its lines were given
The type you expect, Tax Amount 120.00, but the journal in step 2 had no tax lineBoth are working as built: the e-invoice reads the document line, the journal reads the company default. LHDN has the right tax and your ledger is short — fix the default (step 2, first row)

Two things on that screen mislead. Clicking the line opens a form whose Tax Type box shows the type as the document carried it, before the defaults above were applied, so it can be blank while the column reads 01 - Sales Tax; trust the column. And its Tax Rate reads 0.06, because the rate is held as a fraction.

After the first return. At each SST period end, the credits to SST payable for the period should equal the output tax on the SST-02 working, which groups transactions by tax code. A gap the size of one document’s tax points back to step 2.

Related applets

Troubleshooting

SymptomCauseFix
No error, but the tax GL account is short of the tax on your documents, and trade debtors or trade creditors no longer agrees with the ageingThe company default GL code link for OUTPUT_TAX (sales) or INPUT_TAX (purchase) is missing, or exists with an empty subledger. The tax journal line is dropped with no error and the customer’s or supplier’s line absorbs it. (If that customer or supplier has no AR/AP type, the posting job fails with TOTAL_DEBITS_AND_TOTAL_CREDITS_NOT_BALANCES instead; the document stays FINAL.)Add or complete the link in Chart of Account → Companies → the company → Default GL Codes, including the subledger, then re-post.
A tax code you deactivated still appears on new invoicesThe document drop-downs load every code that is not DELETED; only this applet’s listing filters to ACTIVE.Delete the code rather than deactivating it — but read the next row first.
You cannot re-create a tax code you deleted: create fails on the codeDelete only marks the row deleted; it remains, and the uniqueness rule still covers it.Choose a different code string, or have the row cleaned up at database level.
A rate saved as 8.5% comes back as a whole percentBoth create and edit compute rate / 100 and then round to two decimal places, so any fractional percentage collapses to the nearest whole percent (8.5% → 0.09 or 0.08 depending on floating point).Use whole-percent rates. The MY-SST applet’s Tax Code screen writes both rate columns without rounding, so a fractional rate can reach the table from there — but the sales-invoice line editor rounds the rate to two decimal places again when it stamps the rate onto a line, so a fractional rate does not survive onto a document. Treat whole percents as the only rates this table can carry reliably.
Clicking a row opens a blank Edit column, or the applet errorsEdit resolves the stored country by matching it against the four supported country names. A row whose country is anything else — for example MYS, which the MY-SST applet writes — finds no match and the screen fails to render.Edit those rows from the MY-SST applet, or have the country normalised to the full name.
Tax Type Name is blank in the listing for some rowsThe listing translates the stored type through the applet’s fixed type map. Anything outside the ten known GST-*, SST-*, WITH-*, VAT-* values has no entry and shows empty. In practice these are the platform’s own six EINVOICE rows (see Lifecycle and effects), plus the two legacy SVC-MY INPUT / SVC-MY OUTPUT rows the platform seeds into every tenant.Cosmetic, and do not “fix” the EINVOICE rows by re-typing them — they are inert, and giving one a real type would put it into the document drop-downs.
Advanced search by Tax Type never finds withholding codesThe Tax Type filter offers all ten types but always filters the sales / purchase tax type, and withholding types are stored separately.Search withholding codes by keyword (the free-text box covers the code and description) instead.
Advanced search by Country returns nothing for some rowsThe Country filter matches full country names. Rows written with a three-letter code do not match.Same cause and fix as the blank-Edit row above.
A VAT sales code never appears on a Singapore, Thai or Indonesian sales invoiceThe shared sales-side drop-down keeps only SST-SLS-OUTPUT, SST-SVC-OUTPUT and GST-OUTPUT; VAT-SALES is not in that list. VAT-PURCHASE does appear on the purchase side because its name contains “PURCHASE”.Known gap in the shared line editor. Until it is fixed, use a Malaysian output type for the sales side or apply tax at header level.
An API integration that filters tax codes by their input / output flag stops seeing an input code after it was edited hereEditing an input code clears both flags. Nothing inside BigLedger reads them — posting and the document drop-downs go by tax type — but the API honours them as a filter.Filter on the tax type instead, or re-set the flag through the API, until the edit screen is fixed.
A user sees the applet but every action returns “not authorized”The applet has no client-side permission gating, so buttons stay visible even without TNT_API_TAX_CODE_CFG_*.Grant the correct server permission under Settings → Server Side Permissions.
The Permission Wizard link in Settings goes to a 404 pageThe shared settings shell renders the link for every applet, but this applet has no permission-wizard-listing route.Use Permission Set / User Permission / Role Permission instead.

Related documentation

Last updated on