Documentation Index

Fetch the complete documentation index at: https://docs.abakion.com/llms.txt

Use this file to discover all available pages before exploring further.

Duty Reporting

Prev Next

App Overview

Duty Reporting is an excise duty tracking and compliance app for Microsoft Dynamics 365 Business Central. It automates the calculation, tracking, and periodic settlement of excise duties across the full supply chain — from the moment goods are received to the point where duty is paid to the authority or reclaimed on duty-free sales.

At the heart of the app is the Duty Entry ledger: every time a duty-subject item is involved in a posted transaction, the app automatically creates a duty entry reflecting the obligation arising from that movement. No manual intervention is needed — the app subscribes to item posting events and handles the entries as part of the normal posting process.

The app supports four distinct functional areas. Duty Setup defines the duty types, date-effective rates, item linkages, and exemption rules that drive all downstream behaviour. Customs Warehouse handles bonded warehouse scenarios where duty is suspended at receipt and only becomes payable when goods leave the bonded premises. Duty Entries and the Duty Lifecycle is the operational core — the ledger, the five entry types, and the logic that connects them across purchase, sale, transfer, and production transactions. Duty Settlement, Reimbursement, and Reporting closes the loop: periodic settlement runs, reimbursement credit memos for duty-free sales, the statutory Duty Reporting report, and the Rolled-up Duty batch for BOM-based finished goods.


Feature Map

Use this table to find the right article for your task.

Feature What it solves Who uses it
Duty Setup What duties does my company handle, at what rates, and for which items? Defines duty codes, date-effective rates, item duty linkages, posting group exemptions, and customer exemptions. Accountant, Business Manager, Purchasing Agent
Customs Warehouse Goods are stored in a bonded warehouse — duty must be suspended, not imposed, at receipt. Handles the full suspension lifecycle including transfers, production output, and duty-free consumption. Business Manager, Purchasing Agent, Production Planner
Duty Entries and the Duty Lifecycle How is duty tracked through the supply chain? The full duty entry ledger — all five entry types, how they are created, linked, and corrected across every transaction type. Accountant, Purchasing Agent, Production Planner
Duty Settlement, Reimbursement, and Reporting How do I pay the duty authority, reclaim duty on duty-free sales, and produce the statutory duty declaration? Covers the settlement batch, reimbursement batch, Duty Reporting report, and Rolled-up Duty. Accountant, Production Planner

Common Infrastructure

Several concepts are shared across all four feature areas. Understanding them once makes the feature articles easier to follow.

Duty Codes

A Duty Code is the master record for a type of excise duty. It carries the unit of measure used by the duty authority, the Item Charge No. used to post duty costs to the general ledger, and optionally the Warehousekeeper flag for bonded warehouse duties. All other setup and entries reference a Duty Code as their primary key.

Duty Rates

Duty rates are date-effective: each Duty Code has a table of rates with starting dates. The system always applies the rate valid on the posting date of the transaction. When the duty authority announces a rate change, you add a new rate line with the effective date — historical entries are never retroactively recalculated.

Item Duty Setup

The link between an item and a Duty Code is the Item Duty Setup record. It specifies the conversion factor — Qty. per Item Unit of Measure — that translates the item's stock quantity into the duty authority's unit (for example, 0.75 litres of alcohol per bottle). Without an Item Duty Setup line, no duty entries are created for that item.

Duty Entry Types

Every duty entry in the ledger carries one of five types:

  • Suspension — duty tracked but not yet payable (bonded warehouse receipt)
  • Imposition — duty is payable (goods in regular circulation)
  • Settlement — duty has been included in a settlement run
  • Reimbursement — duty reclaim on a duty-free sale
  • Carryforward — duty already included in the purchase price; no additional obligation

Duty Posting Setup and Exemptions

Duty Posting Setup controls which General Business Posting Groups are treated as duty-free for a given Duty Code. When a purchase or sale is posted for a party in an exempt posting group, the system creates a Carryforward or Reimbursement entry instead of an Imposition. Individual customer exemptions can be added directly on the Customer Card for finer-grained control.


Typical Workflows

Periodic duty settlement

  1. Post purchase receipts and sales shipments as normal — the app creates duty entries automatically in the background.
  2. At the end of the duty period, create an open Purchase Invoice for the duty authority vendor.
  3. Run Create Duty Settlement from the Duties page. Set filters for the Duty Code and date range, enter the invoice number, and confirm.
  4. Settlement entries are created and item charge lines are added to the invoice. Review the lines and post the invoice to record the duty payment in the general ledger.

Reclaiming duty on duty-free sales

  1. When a sales shipment is posted to a duty-free customer (customer exemption or duty-free posting group), a Reimbursement duty entry is created automatically.
  2. At the end of the period, create an open Purchase Credit Memo for the authority.
  3. Run Create Duty Reimbursement, enter the credit memo number, and confirm. Credit memo lines are generated for the reimbursable amounts.
  4. Post the credit memo to reduce the net duty liability.

Customs warehouse goods movement

  1. Post a purchase receipt to the customs warehouse location — a Suspension entry is created (no duty payable yet).
  2. When goods are shipped out to a regular customer, the system automatically converts the Suspension to an Imposition at the point of shipment.
  3. The Imposition entry flows into the next periodic settlement run as normal.

Updating duty content for BOM-based finished goods

  1. After a change to a production BOM, run Rolled-up Duty from the Duties page.
  2. The batch traverses the BOM recursively and updates the Qty. per Item Unit of Measure on each finished item to reflect the accumulated duty content of all components.
  3. Run the Duty Reporting report for the period. The report uses the updated rates and conversion factors.

Setup

The setup user stories below cover the complete initial configuration of Duty Reporting. Work through them in order the first time you set up the app. The first group — Core Setup — is required for all users. Customs Warehouse Setup is only needed if you operate a bonded warehouse. BOM Duty Setup is only needed if you produce finished goods from duty-bearing components.


Core Setup

SETUP-01: Create a duty code

As a Business Manager
I want to create a duty code for each type of excise duty my company handles
So that the system has a master record to drive all duty tracking, rate lookups, and settlement processes for that duty type

Setup:

  1. Open Duties from the search or the Duty Reporting menu.
  2. Select New and enter a short Code (up to 10 characters) and a Description.
  3. Set the Unit of Measure Code to the unit used by the duty authority (e.g. LTR, KG).
  4. Set Item Charge No. to the item charge that will be used to post duty costs to the general ledger during settlement and reimbursement.
  5. Leave Warehousekeeper off unless this duty is a bonded warehouse (suspension) duty — see SETUP-06.
  6. Save.

Note: The Item Charge No. is mandatory before the settlement and reimbursement processes can generate purchase invoice or credit memo lines for this duty code.

SETUP-02: Add a duty rate

As a Accountant
I want to add a date-effective duty rate to a duty code
So that the system applies the correct rate on every transaction based on the posting date

Setup:

  1. Open Duties and open the relevant duty code.
  2. From the duty card, open Duty Rates.
  3. Select New, enter the Starting Date from which this rate applies, and enter the Duty Rate (amount per duty unit of measure).
  4. Save.

Note: Add additional lines whenever rates change. The system always picks the most recent rate with a Starting Date on or before the posting date. Do not delete historical rate lines — they are needed for audit accuracy.

SETUP-03: Link an item to a duty code

As a Purchasing Agent
I want to assign a duty code to an item and set the conversion factor
So that the system automatically creates duty entries whenever this item is transacted

Setup:

  1. Open the Item Card for the item subject to duty.
  2. Navigate to Item Duty Setup (via the Duty Reporting action on the item, or open Item Duty Setup from the search and filter on the item).
  3. Select New and set the Duty Code.
  4. Enter Qty. per Item Unit of Measure — the number of duty units per item unit (e.g. 0.75 if each item is a 75cl bottle and the duty unit is litres).
  5. Save.

Note: If an item carries multiple duty obligations, add one line per duty code. The system handles each independently.

SETUP-04: Configure duty-free treatment for a posting group

As a Accountant
I want to mark a General Business Posting Group as duty-free for a specific duty code
So that purchases from — or sales to — parties in that group do not generate a payable duty obligation

Setup:

  1. Open Duty Posting Setup from the search or the Duty Reporting menu.
  2. Select New and set Gen. Bus. Posting Group to the posting group of the relevant vendors or customers.
  3. Set Duty Code to the relevant duty code.
  4. Enable the Duty-free toggle.
  5. Save.

Note: For vendors, a duty-free posting group causes Carryforward entries instead of Imposition entries on purchase receipts. For customers, it causes automatic Reimbursement entries on sales shipments.

SETUP-05: Grant an individual customer a duty exemption

As a Sales Order Processor
I want to add a duty exemption for a specific customer on a specific duty code
So that sales to this customer always generate a reimbursement, regardless of their posting group

Setup:

  1. Open the Customer Card for the customer.
  2. Open Customer Duty Exemptions (available as an action from the customer card).
  3. Select New and set Duty Code to the duty code for which this customer is exempt.
  4. Save.

Note: Customer-level exemptions take precedence over Duty Posting Setup. Useful for customers who hold an individual duty licence or exemption certificate.


Customs Warehouse Setup

Complete this section only if you operate a bonded warehouse where goods are stored under duty suspension. Skip it if all duty-subject goods are received directly into regular stock.

SETUP-06: Enable the Warehousekeeper flag on a duty code

As a Business Manager
I want to flag a duty code as a Warehousekeeper duty
So that items received into a customs warehouse location are suspended rather than imposed, and the bonded warehouse duty lifecycle is applied

Setup:

  1. Open Duties and open the relevant duty code.
  2. Enable the Warehousekeeper toggle.
  3. Ensure at least one location is registered in Customs Warehouse Setup (SETUP-07) before transacting items with this duty code.

Note: Once enabled, the system will error if a duty-subject item is received at a location not registered as a Customs Warehouse.

SETUP-07: Register a location as a customs warehouse

As a Business Manager
I want to configure a BC location as a bonded customs warehouse
So that goods received there are treated as duty-suspended

Setup:

  1. Open Customs Warehouse Setup from the search or the Duty Reporting menu.
  2. Select New and set Location Code to the bonded warehouse location.
  3. Enter a Name for identification.
  4. Enable Allow Output Posting if production output should be allowed to enter this location as a suspension.
  5. Enable Allow Duty-free Consumption if consumption in production at this location should be duty-free (no payable imposition).
  6. If physical inventory adjustments to this location should be treated as duty-free replenishments, set Phys. Invt. Journal Batch Name to a dedicated physical inventory journal batch.
  7. Save.

BOM Duty Setup

Complete this section only if you produce finished goods whose duty content should reflect the accumulated duty of their BOM components.

SETUP-08: Set the Roll-up Quantity Adjustment for a finished item

As a Production Planner
I want to add a manual quantity adjustment to the rolled-up duty value for a finished item
So that the calculated duty content accounts for factors not captured in the BOM, such as waste or packaging

Setup:

  1. Open Item Duty Setup and find the line for the finished item and the relevant duty code.
  2. Enter the adjustment in the Roll-up Quantity Adjustment field. Positive values add to the BOM-calculated quantity; negative values reduce it.
  3. Run the Rolled-up Duty batch (from the Duties page or Item Duty Setup) to apply the roll-up including the adjustment.
  4. Verify the resulting Qty. per Item Unit of Measure reflects the expected total.

Note: The Roll-up Quantity Adjustment is preserved across roll-up runs — it is always added on top of the BOM-calculated value and is never cleared by the batch.