Skip to content

Configuration

1. Environment Variables

Source: packages/core/src/common/environments.ts + packages/taxation/.env.development.

Core / Server

NameTypeDefaultRequiredDescription
RUN_MODEstartup|migratestartupstartup boots app + CDC consumer; migrate runs seeds
NODE_ENVstringdevelopmentRuntime env
TZstringAsia/Ho_Chi_MinhTimezone
APP_ENV_APPLICATION_NAMEstringtaxationApp name
APP_ENV_APPLICATION_CODEstringSVC-00130-TAXATIONService code
APP_ENV_SERVER_HOSTstringlocalhostBind host
APP_ENV_SERVER_PORTnumber31130HTTP port (container 3000)
APP_ENV_SERVER_BASE_PATHstring/v1/api/taxationRoute prefix
APP_ENV_SNOWFLAKE_WORKER_IDnumber13Snowflake worker id (hardcoded — collision risk if scaled)
APP_ENV_SNOWFLAKE_EPOCH_CHECKPOINTnumber1735689600000Snowflake epoch base

Database

NameTypeDefaultRequiredDescription
APP_ENV_POSTGRES_HOSTstringPostgreSQL host
APP_ENV_POSTGRES_PORTnumber35432Port
APP_ENV_POSTGRES_USERNAMEstringUser
APP_ENV_POSTGRES_PASSWORDstringPassword
APP_ENV_POSTGRES_DATABASEstringnx_sellerDatabase (schemas tax, pricing)

Identity / Auth

NameTypeDefaultRequiredDescription
APP_ENV_IDENTITY_SERVICE_BASE_URLstringIdentity base URL for JWKS
APP_ENV_JWKS_REST_PATHstring/jw-certsJWKS endpoint path
APP_ENV_APPLICATION_SECRETstringApp secret

Kafka (CDC consumer)

NameTypeDefaultRequiredDescription
APP_ENV_KAFKA_BROKERSstringComma-separated brokers
APP_ENV_KAFKA_CLIENT_IDstringSVC-00130-TAXATIONConsumer client id
APP_ENV_KAFKA_GROUP_IDstringSVC-00130-TAXATION_CONSUMER_GROUPConsumer group
APP_ENV_KAFKA_SASL_ENABLEbooleantrueEnable SASL
APP_ENV_KAFKA_SASL_MECHANISMstringSCRAM-SHA-512SASL mechanism
APP_ENV_KAFKA_SASL_USERNAME / _PASSWORDstringSASL credentials

2. Feature Flags

None. Behavior is driven by env vars and CDC payloads.

3. Seeded Data

Migration processes in src/migrations/processes/. Run in RUN_MODE=migrate via bun run migrate:dev. All four are alwaysRun: true (idempotent upsert). VN reference data is NOT seeded here.

FileSeedsIdempotentNotes
taxation-0001-seed-discrimination-types.tsTax classifications (scope tax_classification): VAT, Excise, Environmental, Luxury, PIT, CustomBacks TaxGroupItem.discriminationTypeId
taxation-0002-seed-tax-groups.ts13 system tax groups + their TaxGroupItems (9 DIRECT + 4 DEDUCTION)Resolves items by DiscriminationType
taxation-0003-seed-permissions.tsTaxationPermissions (TaxGroup, TaxGroupItem, Vn* read perms)Upsert by code
taxation-0004-seed-role-permissions.tsGrants all taxation perms to OWNER, EMPLOYEE, CASHIERLenient baseline; tightened later via policy-definition API

System tax groups (13)

DIRECT method (9 — VAT + PIT by industry):

IdentifierVATPITIndustry
VN_DIRECT_VAT0_PIT05_DISTRIBUTION0%0.5%Distribution
VN_DIRECT_VAT1_PIT05_DISTRIBUTION1%0.5%Distribution
VN_DIRECT_VAT0_PIT2_SERVICES0%2%Services
VN_DIRECT_VAT0_PIT5_SERVICES0%5%Services
VN_DIRECT_VAT5_PIT2_SERVICES5%2%Services
VN_DIRECT_VAT5_PIT5_SERVICES5%5%Services
VN_DIRECT_VAT0_PIT15_MANUFACTURING0%1.5%Manufacturing
VN_DIRECT_VAT3_PIT15_MANUFACTURING3%1.5%Manufacturing
VN_DIRECT_VAT2_PIT1_OTHER2%1%Other

DEDUCTION method (4 — VAT brackets):

IdentifierVAT
VN_DEDUCTION_VAT00%
VN_DEDUCTION_VAT55%
VN_DEDUCTION_VAT88%
VN_DEDUCTION_VAT1010%

Reference enums

EnumSourceValues
TaxMethodstax/tax-group/constants.ts000_DIRECT, 100_DEDUCTION
FixedTaxTypespricing/tax-type/constants.ts000_VAT, 100_EXCISE, 200_ENVIRONMENTAL, 300_LUXURY, 400_PIT, 999_CUSTOM
TaxModespricing/tax/constants.ts000_AMOUNT, 100_PERCENTAGE, 200_PER_UNIT_AMOUNT
TaxUsagespricing/tax/constants.ts000_SALE, 100_PURCHASE
TaxChargeTargetspricing/tax-type/constants.ts000_CUSTOMER, 100_MERCHANT

4. Configuration Storage (Configuration table)

Not used. Taxation holds no per-merchant runtime config or encrypted credentials.

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.