Avalara > Blog > Developer > Who Pays for Landed Cost?

Who Pays for Landed Cost?

  • Dec 15, 2016 | Amy Morgan

Update March 22, 2018 - AvaTax REST has a new syntax for representing DDP. This post is retained for historical purposes and the information around DDP and DAP remains relevant. You may read about the new LandedCost integration at https://www.avalara.com/us/en/blog/2018/03/calculate-customs-duties-in-rest.html

With the release of the LandedCost calculator functionality, AvaTax now provides features to help you sell across country borders. LandedCost will calculate the customs duty for your cross-border shipments. However, using the calculator requires telling the API which party will be responsible for paying the customs duty & import taxes. Specific to B2C sales, calculating the landed cost depends on the seller’s business decision to support a DDP or DAP service to their customers.

Who pays the taxes when selling cross-border?

The LandedCost calculator currently supports two situations:

  • DAP - This acronym stands for "Delivered at Place" and indicates the Seller will be responsible for coordinating the shipping from their facility to the Buyer's door. However, the Buyer will be the "Importer of Record" responsible for paying/remitting the customs duty & import tax (including VAT) directly to the customs authorities when the shipment arrives in the destination country. Sellers may choose this situation if they are unable or don't want to pay the duties & taxes to the authorities themselves. In a DAP situation, the Seller will calculate and communicate the estimated duties & taxes at the point of sale as a courtesy, so there are no surprises when the shipment arrives. When the Buyer acts as the importer of record, the Seller has no requirements or liabilities for the importation process.
  • DDP - This acronym stands for "Delivered Duty Paid" and applies when the Seller (or their 3rd party) will be responsible for coordinating the shipping from their facility to the Buyer's door. However, the Seller will be the "Importer of Record" or their agent may be named as the "Merchant of Record" responsible for paying/remitting the customs duty & import tax (including VAT) directly to the customs authorities in the destination country. In a DDP situation, the Seller will calculate and incorporate the customs duties and taxes into the invoice at the point of sale and facilitate the import customs clearance so the end consumer doesn't have to do anything. Sellers may choose this situation to provide the best customer experience.

How do you submit DDP?

For this example, we’ll say that the Seller, is responsible. That means we’ll use the code “DDP”. Updated 2018-03-22. You may read about the new LandedCost integration here. 

POST /api/v2/transactions/create

    {
  "type": "SalesInvoice",
  "companyCode": "DEFAULT",
  "date": "2016-10-13T00:00:00-07:00",
  "customerCode": "ABC",
  "purchaseOrderNo": "2016-10-13-001",
  "addresses": {
    "ShipFrom": {
      "region": "PE",
      "country": "CA",
      "postalCode": "C1A 4P3"
    },
    "ShipTo": {
      "city": "Bainbridge Island",
      "region": "WA",
      "country": "US",
      "postalCode": "98110"
    }
  },
  "lines": [
    {
      "number": "1",
      "quantity": 1,
      "amount": 1000,
      "description": "Footwear",
      "taxCode": "P0000000",
      "parameters": {
        "AvaTax.LandedCost.HTSCode": "6403519030"
      }
    },
    {
      "number": "2",
      "quantity": 1,
      "amount": 50,
      "description": "Shipping",
      "taxCode": "FR010000"
    },
    {
      "number": "3",
      "quantity": 1,
      "amount": 50,
      "description": "Insurance",
      "taxCode": "FR070100"
    }
  ],
  "parameters": {
    "AvaTax.LandedCost.Incoterms": "DDP",
    "AvaTax.LandedCost.ShippingMode": "air"
  },
  "taxDate": "2016-10-13T00:00:00-07:00",
  "currencyCode": "USD"
}

Where do you get the results?

If the transaction was indicated as DDP, the calculator will return the customs duty and import tax amounts as line items in the invoice. To find it, search through your transaction result for a line item called ImportDuties and one called ImportFees. Here’s what ImportDuties will look like:

    {
      "id": 909768576,
      "transactionId": 260437157,
      "lineNumber": "ImportDuties",
      "boundaryOverrideId": 0,
      "destinationAddressId": 665059881,
      "originAddressId": 665059882,
      "discountAmount": 0,
      "exemptAmount": 0,
      "exemptCertId": 0,
      "isItemTaxable": true,
      "isSSTP": true,
      "lineAmount": 100,
      "quantity": 1,
      "reportingDate": "2016-10-13T00:00:00",
      "sourcing": "Destination",
      "tax": 8.7,
      "taxableAmount": 100,
      "taxCalculated": 8.7,
      "taxCode": "P0000000",
      "taxCodeId": 8087,
      "taxDate": "2016-10-13T00:00:00",
      "taxEngine": "",
      "taxOverrideType": "None",
      "taxOverrideAmount": 0,
      "taxIncluded": false
    }

This indicates that the customer is expected to spend $8.70 USD in import duties shipping this item from Canada to the United States. Next, let’s look at ImportFees:

    {
      "id": 909768577,
      "transactionId": 260437157,
      "lineNumber": "ImportFees",
      "boundaryOverrideId": 0,
      "destinationAddressId": 665059883,
      "originAddressId": 665059884,
      "discountAmount": 0,
      "exemptAmount": 0,
      "exemptCertId": 0,
      "isItemTaxable": true,
      "isSSTP": true,
      "lineAmount": 2,
      "quantity": 1,
      "reportingDate": "2016-10-13T00:00:00",
      "sourcing": "Destination",
      "tax": 0.17,
      "taxableAmount": 2,
      "taxCalculated": 0.17,
      "taxCode": "P0000000",
      "taxCodeId": 8087,
      "taxDate": "2016-10-13T00:00:00",
      "taxEngine": "",
      "taxOverrideType": "None",
      "taxOverrideAmount": 0,
      "taxIncluded": false
    }

So our overall charges for this transaction are $8.87 in duties and fees. This amount is added to the transaction as part of the total cost, and the customer pays these duties and fees. The seller now takes on the risk of shipping the product - which means, if there was an error or a dispute about shipment, the seller would be responsible for paying the difference.

Comparing to DAP

How is this different from DAP? If instead you had indicated DAP mode for this transaction, the calculator would have returned a message telling the user what the total estimated cost will be, so that you could communicate that estimate to the buyer. Here’s where this would have looked like:

    {
  "id": 74898652,
  "code": "c12fd57d-b01b-4785-b6ad-0f532f852e9d",
  "companyId": 6669648,
  "date": "2016-10-13T00:00:00",
  ...
  "description": "Buyer's estimated import obligation is: 102 USD",
  ...
}

In this case, the buyer is then responsible for the risk of shipment. You should tell the buyer what amounts of import duties or fees they should expect, but then any unexpected fees or mistakes in shipping would be the responsibility of the buyer.

In either situation, the calculator returns the taxes rolled up or broke out individually.

What happens if I can't find my DDP line item?

If you can’t find your DDP line item, there are a number of ways you can figure out what happened. The first place to look is in the messages value in the result. The messages structure contains information provided by the Landed Cost engine about your transaction calculation. In our case, we’ll see three messages, each of which tells us part of what happened:

    "messages": [
    {
      "summary": "LandedCost: US Merchandise Processing Fee",
      "details": "",
      "refersTo": "",
      "severity": "Success",
      "source": "Avalara.AvaTax.Services.Tax"
    },
    {
      "summary": "LandedCost: Shipment meets US import duty de minimis threshold. Therefore, import duty applies.",
      "details": "",
      "refersTo": "",
      "severity": "Success",
      "source": "Avalara.AvaTax.Services.Tax"
    },
    {
      "summary": "LandedCost: Estimated customs duty & tax calculated. Seller will coordinate import into destination country.",
      "details": "",
      "refersTo": "",
      "severity": "Success",
      "source": "Avalara.AvaTax.Services.Tax"
    }
  ]

What do these messages mean?

  • The US Merchandise Processing Fee tells us the name of the duty that is being charged in the United States for receiving this product. This isn't very interesting on its own, but you can see that the Landed Cost engine is in fact working and matching your transaction against U.S. customs laws.
  • The second message, about the de minimis threshold, is more interesting. Most countries allow, in their laws, that small shipments should be allowed to proceed without being taxed, because the hassle to individual citizens is too great. This concept is embodied in the legal term de minimis. If your transaction had a smaller dollar value, you might instead see a message that says LandedCost: Shipment does not meet US import duty de minimis threshold. Therefore, duty free. No declaration required.. If you see this message, you know your shipment is duty-free! Be careful, though: if you send lots of shipments regularly, some countries may have laws that require you to pay duties even if individual shipments are below this threshold.
  • The third message tells you that DDP mode was used. If instead you had used DAP, you would see a message explaining that the buyer will be declared the importer of record and that they will be responsible for duties and fees.

Here’s hoping all your holiday shipments arrive in time!


Sales tax rates, rules, and regulations change frequently. Although we hope you'll find this information helpful, this blog is for informational purposes only and does not provide legal or tax advice.
Avalara Author
Amy Morgan
Avalara Author Amy Morgan
Amy Morgan is VP Cross-border & Global Trade at Avalara, responsible for products and features related to automating global trade and cross-border tax compliance in retail environments. Amy is a Licensed U.S. Customs Broker and Certified Customs & Export Specialist who has managed global trade and customs compliance operations for Amazon, Costco Wholesale, Nordstrom, and Microsoft, and spent two years consulting exclusively with small and mid-size companies to understand their cross-border struggles. She is a global trade enthusiast on a mission to use her “big trade” background to eliminate cross-border bureaucracy for companies of all sizes.