Skip to content
Help centre

Set up duties and landed costs

See duties and import VAT by market, upload a 3PL or carrier invoice as a CSV without counting a cost twice, and how VAT paid outside Shopify is set.

6 min readUpdated 14 October 2026

Duties and landed costs brings together what your orders pay at the border and on the way to the customer: duty and import VAT, a 3PL's fees and freight. It lives in the brand's Settings, beside Costs.

Before you start

  • Who: anyone who can open the brand's Settings sees the page. Uploading costs and adding VAT rules needs permission to edit the brand's costs.
  • Duty collected at checkout and duty billed by Shopify come from Shopify on their own. You upload only what you pay outside Shopify, from a 3PL's or a carrier's invoice export.
  • Amounts are shown in your shop's currency.

Step by step: open the page

  1. Open the brand and choose Settings.
  2. Choose Duties and landed costs.

The page has three parts: Duties by market, Upload landed costs and VAT paid outside Shopify (OSS and IOSS).

Duties by market

One row per destination country, for the last 30 days, 90 days or 12 months:

ColumnWhat it shows
OrdersOrders shipped there in the period
Collected at checkoutDuty shoppers paid at checkout
Billed by ShopifyDuty and import tax Shopify billed you
Paid outside ShopifyDuty and import VAT from your uploaded invoices
VAT estimateVAT owed outside Shopify, estimated by a rule that is switched on
3PL and freight3PL fees and freight from your uploaded invoices

All markets at the foot totals every country. The figures sit side by side; nothing is netted on this page.

Step by step: upload landed costs

  1. Under Upload landed costs, choose Choose a CSV file. The file must be under 2 MB.
  2. The file is read straight away as a preview. Nothing is saved yet.
  3. Check what was read:
    • each column and what it was read as, for example Duty as duty or Fulfilment fee as a 3PL fee, and any column Not read;
    • each line's order or tracking number and its status: Matched, Matches two orders, No order found or No currency;
    • the totals by kind of cost.
  4. If the file has no currency column, set Currency of the amounts. Check the Upload name (it defaults to the file name) and the Supplier, who billed the file, which keeps two suppliers' invoice numbers apart.
  5. Select Import with the number of lines. If the file replaces earlier lines, the button says how many, and a second select confirms it.

A message confirms how many cost lines were imported, and the table above updates.

What a file can hold

  • One row per order or shipment with a column per cost (Duty, Import VAT, Fulfilment fee, Freight), or one cost per row with a charge type and an amount.
  • Each row names its order by number or name (1042, #1042) or by a tracking or waybill (AWB) number.
  • A plain VAT or Tax column is not read, because on a 3PL's invoice it is usually the VAT on their own fees. Name the column Import VAT if it is VAT paid at the border.
  • Payment fees, Shopify Shipping labels and duty billed by Shopify are refused: they already come from Shopify.

Example

Fellwick's carrier sends a monthly export with an AWB number, Duty and Freight per shipment. Uploaded as carrier-october, 400 rows match their orders. A week later the carrier sends a corrected file for the same invoice: uploading it updates the changed lines and removes any line the new file no longer has, and nothing from September is touched.

What reaches profit

  • Duty shows as two lines on the P&L, Duty paid and Duty collected. Duty paid is what Shopify billed you, else what you uploaded, else the duty Shopify calculated on the order. Duty collected is only duty charged on top at checkout; duty inside a duty-inclusive price is part of sales. Duty refunded to a shopper stays a cost, because it was paid at import.
  • Freight from an upload replaces your shipping cost rule for that order. A Shopify Shipping label wins over uploaded freight.
  • An order matching more than one order number is not imported, so a cost never lands on the wrong order.

VAT paid outside Shopify (OSS and IOSS)

For countries where you owe VAT that Shopify does not collect, through the EU's OSS or IOSS return or to a carrier or tax office.

  1. Select Add country.
  2. Enter the Country code (for example DE) and the VAT rate (%).
  3. Choose Paid through: IOSS, OSS or Carrier or tax office.
  4. Answer Does the shopper's price already hold the VAT?
  5. Select Save. The rule is added switched off.

While a rule is on, each order to that country where Shopify collected no tax carries an estimated VAT figure in VAT estimate, until an uploaded VAT figure for that order replaces it. Changing a rule that is on switches it off until Fabrik confirms it again.

Troubleshooting

  • "Not available yet": the page is not ready for your brand yet. Try again later.
  • "Nothing can be imported from this file": no row carried a cost, or no column was recognised. Rename the columns, for example Order number, Duty, Freight.
  • "Matches two orders": use the order number rather than a reference shared by two orders.
  • "No order found": the order or tracking number is not in Shopify, or the order is more than about four months older than the file's earliest date.
  • "The file is over 2 MB": split the file into smaller files.

Frequently asked questions

Is duty collected from shoppers counted as revenue?

Duty a shopper pays on top at checkout passes through to the customs authority, like VAT, so it is in no sales figure; the P&L shows it as Duty collected beside Duty paid. Where your prices include duty, the shopper pays one price: the whole price is sales and the duty is a cost you pay, shown as Duty paid.

Can an uploaded cost be counted twice?

No. Costs Shopify already reports, such as Shopify Payments fees, Shopify Shipping labels and duty billed by Shopify, are refused from a file. Each line is saved under its own identity in the file, so uploading the same invoice again updates it rather than adding it a second time, and a carrier's combined duty and VAT figure covers that order's VAT.

I uploaded a corrected invoice. What happens to the old lines?

Rows with an invoice number replace the earlier lines of that same invoice. Rows without one replace the earlier lines of the same upload name within the new file's own dates. A file name reused for another month removes nothing.

Why is a VAT rule off?

Every rule starts switched off. Fabrik switches a country on once it has confirmed with you how your parcels to it ship (duties unpaid, IOSS, or duties paid). Until then no estimate counts.

What if a line is in a currency with no exchange rate?

The page says how many lines have no rate and for which markets. They are left out of every figure until the currency has a rate. Email support@fabrik.ae to add it.

Who can see and change this page?

Brand owners, and anyone else who can change the brand's costs, can upload costs and add VAT rules. Team members who can view costs see the page read only. Only Fabrik switches a VAT rule on.

Recent changes

Every change, in the changelog

Still need help?

Email us with a link to the page you were on and what you expected to see. A screenshot helps us answer first time.

support@fabrik.ae