Skip to content
Global Trade

Navigating Tariff Volatility with D365 Landed Cost: A Practical Playbook

Caf2Code Thought Leadership March 28, 2026 5 min read

Tariff uncertainty has returned with force in 2026. Whether you're tracking ad valorem duties, specific rates, or quota-based charges, your landed unit cost calculations face new volatility every quarter. Dynamics 365 Supply Chain Management's Landed Cost module was designed for exactly this scenario—but only if you configure it right. This guide walks you through real-world setup patterns, from cost type templates to customs broker integration, so your landed costs reflect reality, not guesswork.

Understanding D365 Landed Cost: Beyond Freight

Most supply chain teams think of landed cost as "purchase price plus freight." In reality, D365 Landed Cost is a voyage-centric cost tracking and allocation engine that captures every charge incurred from port of origin to final receiving location—and it's flexible enough to handle tariff volatility that changes mid-voyage.

The module's core strength lies in three capabilities:

  • Voyage Management: Group multiple purchase orders into a single voyage, creating a boundary for cost allocation.
  • Goods-in-Transit Tracking: Maintain cost visibility for shipments between ports, allowing you to adjust tariff estimates before final costing.
  • Cost Spreading: Distribute landing charges (tariffs, duties, broker fees, insurance) across line items using multiple allocation methods.

When tariffs shift mid-voyage—say a 15% rate jumps to 25% because of a trade agreement change—Landed Cost lets you re-estimate without re-purchasing. That's the game-changer.

Step 1: Set Up Cost Type Categories and Templates

Before you can track tariffs, you need to define what types of costs your voyages will incur. In D365, navigate to:

Landed cost > Setup > Cost type categories

Here you'll create cost types for your tariff structure. Real example: a furniture importer working with SKUs from China might define:

  • Tariff_AdValorem_Furniture: For ad valorem duties on wooden frames (typically 15–25% of FOB value).
  • Tariff_Specific_Hardware: For specific duty rates on metal fixtures ($0.50–$1.25 per unit).
  • Import_Broker_Fee: Fixed brokerage charge ($150–$300 per shipment).
  • Harbor_Port_Charges: Per-container terminal handling.
  • Drawback_Estimate: Anticipated duty refunds if goods are re-exported (negative cost).

For each cost type, assign a Cost type category in the form. Choose between Indirect (spread across voyage) or Direct (assigned to specific line). For tariffs, use Indirect—this ensures duties are allocated proportionally to the goods on that voyage.

Volatility Trap: If you hard-code tariff rates into cost types, a rate change forces you to create new cost types and remap voyages. Instead, use variable cost estimates tied to voyage line items (explained next). This keeps your setup stable even as rates fluctuate.

Step 2: Configure Cost Type Templates with Estimate vs. Actual

The secret weapon for tariff volatility is D365's estimate vs. actual cost reconciliation. Here's how it works:

Navigate to Landed cost > Setup > Cost template and create a template (e.g., "China_Import_Template") that links purchase orders to cost types. On each voyage line, you'll see two key fields:

  • Estimated Cost: Your best guess at tariff rate when the PO is placed (e.g., 20% ad valorem).
  • Actual Cost: The confirmed tariff rate from Customs once goods arrive (e.g., 22%).

Real scenario: It's January 2026, and you're shipping 500 units of SKU FRAME-OAK-4X6 from Shenzhen. The tariff is currently 18%. You estimate:

  • FOB Value: $15,000
  • Estimated Tariff (18% ad valorem): $2,700
  • Estimated Landed Cost per Unit: $35.40

By the time goods land in Norfolk (60 days later), the rate has moved to 22%. You update the Actual Cost field to reflect the new 22% duty ($3,300). D365 automatically creates an adjustment journal entry for the $600 delta. Your landed unit cost recalculates to $36.60—you're protected from margin surprises.

To set this up in D365:

  1. Create a voyage: Landed cost > Common > Voyages. Enter voyage number, ship date, estimated arrival.
  2. Add purchase order lines to the voyage. D365 pulls the PO line amounts automatically.
  3. Create cost records: Voyage > Cost records. For each tariff cost type, enter the estimated percentage or amount.
  4. When goods arrive, update cost records with actual rates. D365 calculates the variance.

Step 3: Choose Your Cost Spreading Method

Once all costs are recorded against a voyage, D365 spreads them to the line items. Your choice of spreading method determines how tariffs allocate across different SKUs on the same shipment. This is critical when you have mixed-category goods.

In Landed cost > Setup > Spreading rule, configure the allocation methods:

  • Quantity: Spread tariffs equally by unit count. Good for homogeneous shipments (e.g., 1,000 units of the same SKU). Spreads $2,000 tariff = $2 per unit.
  • Volume (Cubic Meters): Spread by dimensional weight. Use for mixed shipments where cost per cubic meter is more equitable than unit count.
  • Measurement (Weight in kg): Spread by gross weight. Industry standard for bulk or heavy goods. A 1,000 kg shipment with $1,000 tariff = $1 per kg.
  • Purchase Value (Line Amount): Spread proportionally by FOB value. This is often the most accurate for tariffs, since ad valorem duties are percentage-based. A shipment with $10K and $20K in two lines gets tariff split 33%/67%.

Best Practice for Tariffs: If your tariffs are ad valorem, use Purchase Value. If your tariffs are specific duties (per-unit or per-kg), use Quantity or Measurement. Mixed? Set up two separate spreading rules and apply them to different cost types within the same voyage.

Example: Shipment from Vietnam includes electronic components (Tariff: 5% ad valorem) and cotton fabric (Tariff: 12% ad valorem, but also subject to a $0.50/kg specific duty on waste reduction charges). Create two cost records:

  • Cost Type = Tariff_AdValorem_Electronics, Spreading Rule = Purchase Value
  • Cost Type = Tariff_Specific_Fabric, Spreading Rule = Measurement

Each spreads independently, with the right allocation logic.

Step 4: Connect to Customs Brokers and Set Up Auto-Charges

In a highly volatile tariff environment, you may receive daily rate feeds from your customs broker or trade partner. D365 supports integration via auto-charges and can be extended to pull tariff rates from a broker's API or Excel file.

Basic setup: Accounts Payable > Setup > Auto-charges. Create an auto-charge rule:

  • Charge Code: "TARIFF_DUTIES"
  • Charges Type: "Percent"
  • Charge Value: Link to a lookup table or manually update per voyage
  • Applicable to: Landed cost voyages for China-sourced items

This auto-populates tariff charges on POs as they're added to a voyage. For real-time tariff feeds from your broker, you'll need a custom integration using Azure Logic Apps or Power Automate to read the broker's API and update cost records daily.

Regarding duty drawback: If you export goods abroad or use them in an export manufacturing process, you may recover tariffs paid. In D365, record drawback as a negative cost using the Drawback_Estimate cost type created earlier. When Customs approves the drawback claim (often 6–12 months later), update the "Actual Cost" field with the refunded amount.

Step 5: Handle Currency Volatility from Tariff-Induced Rate Changes

Tariff announcements often trigger currency swings (e.g., a 25% tariff threat causes the foreign currency to weaken 3–5%). D365 Landed Cost allows you to use Exchange Rate Types to manage this currency risk.

In General Ledger > Currency > Exchange rate types, create an exchange rate type specifically for landed cost calculations:

  • Name: "Landed_Cost_Effective_Rate"
  • Description: Rate used for tariff-inclusive costing, not transaction rate

When you set up a voyage, specify this exchange rate type. D365 will use a fixed "effective" rate (the rate at the time the tariff was estimated) for cost calculations, isolating you from currency fluctuations that occur between PO and receipt. This ensures your landed unit cost is stable and predictable, even if the spot rate moves 2–3% during the voyage.

Example: PO placed at CNY/USD = 7.0, and you estimate tariffs using that rate. By arrival, the rate is 7.2 due to tariff jitters. Your Landed_Cost_Effective_Rate locks the 7.0 rate, so your tariff calculation doesn't bounce around. The transaction FX variance is posted separately and handled by Treasury.

Step 6: Advanced: Real-Time Tariff Feeds with Azure Logic Apps

For enterprises with large import volumes and volatile tariff exposure, manual cost record updates are slow. D365 Landed Cost integrates with Azure Logic Apps to automate tariff rate pulls from external sources.

High-level workflow:

  1. Your customs broker publishes a daily tariff rate feed (JSON or CSV) to an SFTP server or Azure Blob Storage.
  2. A Logic App is triggered daily. It reads the broker's feed and parses rate changes by HS code or SKU family.
  3. Using D365's OData API, the Logic App queries open voyages and cost records for matching HS codes.
  4. For each cost record, the Logic App updates the estimated tariff percentage based on the broker's latest rates.
  5. D365 recalculates landed costs and alerts Procurement if landed unit cost exceeds a threshold (e.g., > 5% above expected).

This approach requires technical resources—you'll likely need a Dynamics partner or internal Power Platform team—but the payoff is elimination of stale tariff assumptions. Many Caf2Code clients have deployed this pattern for high-volatility items imported from tariff-sensitive regions.

Step 7: Practical Checklist Before Go-Live

Before you activate Landed Cost for production tariff tracking, validate:

  • All cost type categories are defined for your tariff structure (ad valorem, specific duties, broker fees, port charges).
  • Cost templates are linked to PO types and origin countries (China, Vietnam, Mexico, etc.).
  • Spreading rules are assigned to cost types, and you've tested spreading logic with a sample voyage.
  • Estimate vs. Actual workflows are documented. Train Procurement on how to update actual costs when Customs confirms rates.
  • Exchange rate type is created and assigned to voyage forms. Test FX locking with a real shipment.
  • Duties Drawback cost type is created and mapped to applicable SKUs or HS codes.
  • Integration between Landed Cost and Accounts Payable is tested. Verify that cost adjustments flow to landed cost invoices and don't orphan in subledgers.
  • Security roles are configured. Procurement should be able to view/update estimated costs; Finance should be able to post actual adjustments.
  • Reporting is validated. Run a test voyage-to-receipt cycle and verify that landed unit cost appears correctly in product costing forms.
  • If using Azure Logic Apps or Power Automate, test the broker feed integration in a non-production environment. Confirm tariff rates are read correctly and cost records update without errors.
  • Audit trail and change log are enabled. For regulatory compliance, ensure all cost record changes are logged with date, user, old/new value.
  • Cutover plan includes a parallel run: calculate landed costs using Landed Cost module alongside your legacy method for 1–2 cycles, compare results, and resolve variances before full cutover.
Why This Checklist Matters: We've seen implementations fail because Landed Cost was activated before cost templates were complete, or because Accounts Payable wasn't configured to accept landed cost adjustments. This checklist prevents those delays.

Real-World Example: A Metal Fastener Importer

Let's walk through a concrete scenario to tie this all together.

Business Context: MFG Inc. imports stainless steel fasteners from South Korea. Volume: 50,000 units/month. Tariff rate: 8% ad valorem (subject to annual adjustment), plus a $0.12/kg anti-dumping duty. In March 2026, the admin announced a review of the anti-dumping rate, creating 90 days of uncertainty.

Setup in D365:

  1. Cost Types: Create "Tariff_AdValorem_Steel" (8%, spreading = Purchase Value) and "Tariff_AntiDumping_Steel" ($0.12/kg, spreading = Measurement).
  2. Cost Template: "Korea_Steel_Import" linked to POs from supplier SKU-FA-16X50 through SKU-FA-24X100.
  3. Voyage: Incoming shipment departing Busan on March 10, expected arrival April 15. POs for 50,000 units totaling $125,000 FOB. Shipment weight: 2,400 kg.
  4. Estimated Costs:
    • Ad Valorem (8% of $125K): $10,000
    • Anti-Dumping ($0.12 × 2,400 kg): $288
    • Estimated Landed Cost: $135,288 / 50,000 units = $2.71 per unit
  5. Mid-Voyage Update (April 2): Commerce Department announces anti-dumping rate will be reviewed but remain in force. No rate change. Voyage proceeds.
  6. Actual Costs (April 15, goods in port): Customs inspector confirms 8% ad valorem ($10,000) and $0.12/kg anti-dumping ($288). No variance. Landed cost finalized at $2.71 per unit. All cost records marked "Actual Cost Confirmed."
  7. Alternative Scenario (April 10): If Commerce had announced a 15% interim rate, MFG would update the Tariff_AntiDumping_Steel actual cost to $0.18/kg ($432 total). D365 auto-calculates a $144 variance journal entry, and landed unit cost adjusts to $2.72. Finance reviews and posts the variance to landed cost variance account. Reporting reflects the updated estimate for future pricing decisions.

This workflow removes the surprise of a tariff jump post-receipt. By using estimate vs. actual, MFG's supply chain team and Finance stay synchronized on tariff assumptions.

Key Takeaways

Tariff volatility is the new normal. D365 Landed Cost can be your control mechanism, but only if you:

  • Define cost type templates upfront that separate ad valorem from specific duties, allowing flexibility when rates change.
  • Use estimate vs. actual cost reconciliation to capture tariff updates mid-voyage, before goods are received and inventory is valued.
  • Select spreading methods aligned to your tariff structure (Purchase Value for ad valorem, Measurement for specific duties).
  • Integrate with customs brokers and consider Azure Logic Apps for high-volume, high-volatility imports where daily rate feeds are essential.
  • Lock exchange rates using Exchange Rate Types to isolate tariff cost from FX volatility.
  • Run a comprehensive go-live checklist, including parallel runs, to ensure cost records flow cleanly to inventory valuation.

When configured correctly, Landed Cost transforms tariff uncertainty from a margin risk into a data management problem. Your procurement and finance teams will have visibility into landed costs in real time, enabling smarter sourcing decisions and protecting your P&L.

Next Steps: If you're planning a Landed Cost implementation or troubleshooting a current setup, start by mapping your tariff structure (ad valorem % by HS code, specific duties by unit/weight/volume) and identifying your top 10 import corridors. Share that map with your D365 partner—it'll accelerate the cost type design and ensure your template covers 80% of your import volume by week one.

Need help configuring Landed Cost for your supply chain?

Our team has deployed D365 Landed Cost across distribution and manufacturing environments of all sizes. Let's talk through your tariff exposure.