Global Logistics

Learn how Global Logistics works and how to use the solution
Global Logistics (GL) is an end-to-end cross-border delivery management solution that can provide a guaranteed landed cost to both you and your customers.
In the pre-launch phase, you work closely with Digital River and one of our global logistics providers (GLPs) to build an integration that can accept and process international orders.
During checkouts, GL allows you to present customers with a menu of shipping quotes. Once the customer places an order and the goods are picked and packed at the warehouse, your third-party logistics provider can use GL to print shipping labels.
When an order's products ship, you can also use GL to track their progress.
On this page, you'll find information on how GL works as well as Digital River's guaranteed landed cost feature and our GLPs. You can also learn how to:

How Global Logistics works

During checkouts, Global Logistics (GL) gives you the capability to request international shipping quotes. Digital River routes your request to the appropriate global logistics provider (GLP) and then uses their response to provide you with a menu of shipping quotes that you can display to customers.
Once customers select a shipping quote, you'll need to apply their choice to the checkout, and then, assuming they selected a quote with delivered duty paid (DDP) terms, use the duty, fee, and import tax amounts returned by Digital River to present customers with a transaction's full landed cost.
For details, refer to the Guaranteed landed cost section.
After submitting the order, you must send a ship request to your third-party logistics (3PL) provider so that they can pick and pack the goods at the warehouse. When your 3PL is ready to print a shipping label, they send a request to Digital River, which we route to the appropriate GLP.
Upon receipt of this request, the GLP generates one or more shipping labels, sends those labels back to Digital River and we relay them to your 3PL.
The shipping label request also prompts the GLP to prepare the order's international shipping documentation. The GLP bundles this documentation in a pre-clearance request that gets sent to the destination country's customs agency.
Once the shipping labels are generated, a carrier retrieves the goods from the warehouse. In the hub and spoke logistics model, the carrier delivers the products to a distribution hub before they are moved to an export gateway and then shipped to the end customer's address. In the hubless model, the carrier delivers the goods directly to an export gateway, where they are shipped to the final destination.
After the goods arrive in the destination country, the GLP ensures that they clear customs, moves them to a distribution site and coordinates with local carriers to deliver them the "final mile" to the end customer.
Once the shipping labels are generated, you can also use GL to track an order's shipments. For each shipment, we provide you information on its products and status, as well as events that occur at specific locations along a delivery's route.

Guaranteed landed cost

In the Global Logistics solution, both you and your customers can receive a guaranteed landed cost.
With this feature, Digital River guarantees that you won't be charged any additional duties, fees, or import taxes beyond those contained in the order. This is true even when the actual importation costs assessed by a country's customs agency are higher than those returned by our landed cost calculator.
We also guarantee that customers who select a shipping quote with delivered duty paid terms won't be required to pay any additional costs at the time of delivery. In other words, customers will have no surprise fees. Whatever they pay at the time of order placement is the final amount.
Shipping is not part of a guaranteed landed cost. During checkouts, if customers select a shipping quote whose totalAmount is less than the actual, carrier assessed shipping costs, then Digital River is not responsible for the difference.
For details, refer to:

Global logistics providers

In the Global Logistics solution, you partner with one or more of Digital River's global logistics providers (GLPs).
Digital River's GLPs specialize in shipping physical goods across national borders and are considered international logistics experts. They are well-versed in country-specific regulatory requirements, understand how to prepare the commercial invoices which act as the basis for all other international shipping documents, and have the capability to electronically submit pre-clearance requests to most countries' customs agencies.
Digital River's GLPs also have proprietary international shipping lanes, various export gateways, numerous final mile delivery options, and multiple logistics model offerings.


In the pre-deployment phase, you collaborate with Digital River and one of our global logistics providers (GLPs) to define your international trading patterns, configure product data, and set up your logistics.
The following sections describe the major areas of work that need to occur prior to deployment:

Defining trading patterns

In the pre-deployment phase, you must define your trading patterns. In other words, where your products ship from and where customers can have them shipped to. These patterns are then saved to your account.

Defining basic product data

Prior to launch, you must assign basic data to each cross-border eligible product in your catalog. This mainly consists of defining a product's name, weight, URL, image, and country of origin.


Before deploying, make sure all of your products are assigned a name. This is true regardless of how you send product data in checkouts.


For each of your cross-border eligible products, you should determine its weight in grams, kilograms, ounces, or pounds and then store this value. A product's weight:
  • Helps ensure that the shipping quotes returned in the checkout process are as accurate as possible. If you fail to send weight in a shipping quotes request or pass a value that's less than its true weight, the shipping costs paid by the customer will likely be lower than the actual, carrier assessed costs. After an order is submitted, carriers compare a package's gross weight to its dimensions and then use dimensional weight pricing to calculate shipping costs. These carrier computed costs are what you ultimately pay.
  • Must be listed in the customs documentation for certain countries. This means that when customers want to ship a product to one of these countries, Digital River needs its weight to return a landed cost in checkouts. Additionally, customs officials need weight to calculate duties and import taxes.
A product's weight should be exclusive of its packaging but inclusive of its dunnage. In other words, don't include the weight of the product's box but do include the weight of the protective and supporting materials that go inside the box.

Image and URL

A product's image and URL typically get added to the customs documentation, which officials use to make a pre-clearance determination. While performing this process, these officials can use the URL to access a description of the product and the image to see what the product looks like.

Country of origin

A product's country of origin represents where a product was manufactured. The country value you pass to Digital River must be the same as what is listed on the product's certificate of origin.

Defining compliance product data

Each cross-border eligible product in your catalog must be associated with compliance data.
Prior to deployment, Digital River and your GLP work with you to define this data. Once defined, a product's compliance data is stored in an associated SKU group.
The following describes some of the compliance data that must be defined during the prelaunch process:

Tax code

Each product must be associated with a tax code. It determines whether the product is classified as physical or digital. To ensure that the correct product taxes are assessed, the code should be as accurate as possible.
You'll need to provide Digital River with sufficient details about your products so that we can determine their tax codes and then add this data to the relevant SKU group.

Export control classification number

A product must have a Digital River approved Export Control Classification Number (ECCN). This value determines whether the product:
  • Requires a U.S. export/re-export license
  • Contains any other license requirements/restrictions
  • Has an end use which is prohibited by applicable export control laws
Before launching, we work with you to identify your product's ECCNs and then store them in the relevant SKU groups.
For details, refer to the ECCN section on the Managing SKUs page.

Harmonized system codes

You need to provide Digital River with sufficient details about your products so that we can classify their harmonized system (HS) codes. This includes the six-digit universal HS code used to classify product groups at the international level as well as the country-specific code.
These country-specific codes almost always have more digits than the universal code. Customs officials around the world use them to identify the duty and import tax rates that should be applied to different product groups. They are also needed by Digital River to generate a landed cost calculation.

Dangerous goods classifications

Certain products are classified as dangerous goods. They're considered to be any substance or material that poses unreasonable health, safety, or property risk when transported.
For example, some products, such as lithium batteries and (in)flammable perfumes, are susceptible to static electricity as well as temperature and pressure variations. These forces can cause them to leak, emit toxic fumes, ignite, or even explode. This is especially true when they are transported by air. As a result, these categories of products require special packaging, handling, and modes of transportation.
In the pre-launch phase, the GLP might review your product labels to determine what products in your catalog may contain ingredients that necessitate a dangerous goods classification.
Once the GLP completes their review, they provide us a list of these products, along with their classification values. We then store this compliance data.
When you send a shipping quotes request, Digital River determines whether any products in that request are flagged as dangerous goods. If this is the case, we pass this information to the GLP and they add the appropriate surcharges, which Digital River then adds to the shipping quotes response.
After an order is submitted, and its products have been picked and packed at the warehouse, the 3PL sends a shipping label request that gets transformed by Digital River and routed to the appropriate GLP. The GLP uses the data in this transformed request to determine whether the shipment contains any dangerous goods. If it does, they flag the entire shipment for special packaging and/or handling and encode that information in the shipping labels data that gets returned to the 3PL.

Signature requirements

In the pre-deployment process, you should also determine what signature requirements your products may have. In other words, which products require customers to sign for them at the time of delivery.
These are often high-value items that you don't want to be left on the customer's "doorstep" by the delivery person. Putting a signature requirement in place helps prevent their theft.

Configuring packaging

You can optionally define and save a default box. Also, depending on the sophistication of the warehouse management software (WMS) you access, you may also decide to employ packing algorithms.

Default box

Our GL solution allows you to define a default box. In other words, a box configured with a default weight, height, width, and length. Digital River then saves these values to your account.
If you configure a default box, and don't send packaging data in your shipping quotes request or shipping labels request, then we send these saved measurements to the GLP.
We recommend that you set a default box when you know that the vast majority of your products are going to be shipped in packages with uniform dimensions and a standardized weight. You can work with your WMS provider to identify your most frequently used box size.

Packing algorithms

Inefficient packing can result in higher shipping costs. This is because carriers often use dimensional weight pricing, which is meant to incentivize efficient packing methods.
If your WMS uses bin packing algorithms, you can use them to potentially lower your shipping costs. These algorithms attempt to solve the problem of how to most efficiently pack multiple items of various sizes into a finite number of boxes. Based on the dimensions of a shipment's products, they return the recommended number of boxes and the optimal dimensions of each.
If you have access to such algorithms, work with your WMS provider to build an integration that allows you to request suggested box counts and dimensions during checkout. You can then pass the returned data in your shipping quotes request.

Configuring shipping methods

Pre-launch, the GLP reviews your warehouse locations, anticipated shipping volumes, and trading patterns. The GLP then identifies potential carriers and gets their applicable shipping methods and rates.
Once compiled, the GLP stores this data in their system. During the checkout process, when you make a shipping quotes request, the GLP accesses this saved data and uses it to construct a list of order-specific shipping quotes. You receive a simplified version of this list in the shipping quotes response.

Logistics model designation

Prior to deployment, the GLP analyzes your warehouse locations, trading patterns, applicable carriers and expected ship volumes. Based on the results of this analysis, the GLP makes a logistics model determination.
More specifically, the GLP informs you whether (1) a hub and spoke logistics model or (2) a hubless logistics model best suits your needs. In both models, the GLP acts as the cross-border shipment manager.

Hub and spoke logistics model

In the hub and spoke model, the products are picked and packed at your 3PL's warehouse.
The 3PL then requests and prints a shipping label whose designated ship to address is one of the GLP's domestic, in-country hubs.
The products are then moved from your 3PL's warehouse to the specified hub.
Once the products arrive there, the GLP prints another shipping label whose designated ship to address is the final destination of the goods, moves the goods to an export gateway, and then ships them to the destination country.

Hubless logistics model

In the hubless model, the products are picked and packed at your 3PL's warehouse.
The 3PL then requests and prints a shipping label whose designated ship to address is the final destination of the goods.
The GLP then dispatches a carrier to retrieve the products from your 3PL's warehouse, moves the goods to an export gateway, and ships them to the destination country.

GLP's responsibilities

Whichever logistics model is employed, in addition to the duties described above, the GLP also:
  • Prepares the import-export documentation
  • Submits pre-clearance requests to the importation country's custom agency
  • Ensures that the goods clear customs
  • Resolves any issues should the goods get "stuck in customs"
  • Coordinates with local carriers to ensure that the products are transported the "final mile" to the customer's designated ship to address

Preparing for returns

In the pre-deployment phase, you work with Digital River and a GLP to design a reverse logistics flow that aligns with your business objectives and return policies. Since international returns are complex, there are a wide variety of ways to process reversals.
At a minimum, however, you should:

Communicate return information

Throughout the order flow, make sure you provide customers with consistent and detailed return instructions.
For each of your approved ship to countries, the GLP supplies you with an address where customers must send returned products. The GLP can give you these return addresses prior to deployment and/or at runtime.
At run-time, the GLP sends Digital River an order-specific return address during shipping label generation. We then transmit this return to address to you in both the shipping label response and the logistics return response.
We recommend you carefully consider how you want to provide this address (along with other return instructions) to customers. For example, you could provide this information in shipment notification emails, order invoices, and/or on a customer's order management page.

Determine re-importation restrictions

Prior to accepting international orders, you'll work with the GLP to review your catalog and identify goods that may be subject to strict re-importation restrictions. With such product types, returns are often not feasible.
Health and beauty products frequently fall into this category. For example, due to tampering concerns, some exported cosmetics and supplements are either not allowed back into the United States or, if they are, require Food and Drug Administration approval.

Compare product value and return costs

International shipping is expensive. In some cases, the expense of returning a product to its origin warehouse is greater than its manufacturing cost or purchase value. As a result, you may decide to destroy or liquidate such goods rather than facilitate their return. We recommend you work with the GLP to identify these product types, and, once identified, develop an appropriate disposition plan for them.
You should also keep in mind that a product may be subject to import duties on its return journey. For example, if a product with a declared value of $1500 is exported out of the United States and then later returned to its origin warehouse, that same product, because it exceeds the US De Minimis value, could be assessed re-importation duties.

Set up a product disposition agreement

For each of your product types, you'll need to work with the GLP to establish a disposition agreement. The terms of this agreement stipulate under what conditions the GLP should either:
  • Destroy the product, assess you a fee for doing so, and then generate a certificate of physical destruction.
  • Liquidate the product by selling it at a predetermined price and then shipping it to an agreed-upon location.
  • Return the product to one of your 3PL's warehouses so that it can be put back into inventory.
You can also establish price thresholds with GLPs which they then use to determine what type of disposition to perform. For example, a disposition agreement may specify that the GLP should destroy any products worth less than $100, liquidate products that have a value between $100 and $200, and return any higher valued items.

Determine refund policies

Before permitting a shipment to clear customs, importation countries collect duties and taxes. Once collected, most countries don't refund these costs simply because customers experienced a 'change-of-heart' or decided the merchandise is 'not as described'.
So, prior to checking out customers, you should identify the conditions that prompt you to issue refunds on duties and import taxes.
The Refunds API provides you the ability to customize refunds that you issue customers. For example, at the order level, we support full and partial refunds on duties and import taxes. And at the item-level, you can configure duty refunds in the same way.
For details, refer to the Issuing refunds page.
If you do refund duties and import taxes, then keep in mind that you're responsible for seeking reimbursement from the applicable agency in the importation country.
One option might be to devise your returns policy so duty paid is refunded on defective and damaged products but not for 'change-of-heart' returns. You could also adopt a similar policy for refunding shipping costs. Alternatively, you might decide to refund only product costs in all scenarios.

Building a cart

During the early stages of an ecommerce transaction, customers land on your storefront, review products, build a cart, confirm the cart's details, and initiate checkout. This cart-building process is roughly the same for both domestic and international transactions.
Digital River is usually not involved during these early pre-checkout interactions.
Some of your products however might have country restrictions applied to them. In other words, products prohibited from being exported to one or more specific countries.
To handle these prohibitions, you might want to block customers from adding restricted products to their carts. This helps avoid issues at customs as well as unanticipated return costs.
Plug-ins and extensions exist that geo-locate a customer's country. These add-ons then hide products from customers who are located in restricted countries. Some of these extensions also allow you to disable the add-to-cart button for prohibited product-country combinations.

Checking out customers

Once you initiate the checkout process, you should obtain the customer's name, email, shipping address, and billing address.
For details, refer to sequencing the checkout process on the Building checkouts page.

Handling country and product restrictions

In your shipping address form, we suggest mounting a drop-down list (or some similar graphical control element) that restricts available ship to countries to those defined by your trading patterns.
Once the customer selects a country from this list, determine whether any products in their cart can't be exported to the selected country. If this is the case, inform customers of the prohibition and ask them whether they want to continue checking out.
If they respond in the affirmative, remove restricted products from the customer's cart before proceeding.

Creating the checkout

At this point, you can use the customer's shipping and billing information, along with product data retrieved from the customer's cart, to submit a create checkout request.
For details, refer to sending the create checkout request on the Building checkouts page.

Managing shipping quotes

After you create a checkout, you need to send a shipping quotes request to Digital River. We transform your request and route it to the appropriate global logistics provider (GLP). The quality of the data you provide in this request determines the accuracy of the returned shipping quotes.
Upon receiving the shipping quote response, you may decide you want to handle the response by applying a filter before displaying the quotes to customers. Once the customer makes a selection, handle that event by retrieving data from the selected quote and sending it in an update checkout request.

Defining and sending the shipping quote request

A POST /shipping-quotes request must pass the checkout's currency, ship to address, and physical product data. You can optionally send a ship from country. In addition, unless you want to use a stored default box, we recommend that you send package weight and dimensions.
curl --location --request POST 'https: //' \
--data-raw '{
"currency": "CAD",
"shipFrom": {
"address": {
"country": "US"
"shipTo": {
"address": {
"line1": "10-123 1/2 MAIN STREET NW",
"city": "MONTREAL",
"postalCode": "H3Z 2Y7",
"state": "QC",
"country": "CA"
"name": "JOHN JONES",
"phone": "367-222-4321",
"email": "[email protected]",
"organization": "Digital River"
"items": [
"productDetails": {
"skuGroupId": "group_1639749011",
"name": "PhysicalSku_1639749025",
"countryOfOrigin": "US"
"amount": 850,
"quantity": 1
"productDetails": {
"skuGroupId": "group_1639749016",
"name": "PhysicalSku_1639749033",
"countryOfOrigin": "US"
"amount": 1000,
"quantity": 1
"packages": [
"weight": 1.3,
"weightUnit": "kg",
"height": 8,
"width": 15,
"length": 20


The currency in your shipping quote request should be the same as the checkout's currency.

Ship to

Earlier in the checkout process, you required customers to select a ship to country from a list of approved values. You also obtained the customer's ship to street address, city, state/region, and postal code and then used this data to set the checkout's shipTo.
When configuring the shipping quotes request, we recommend you retrieve these same values and use them to set shipTo. This helps make the returned shipping quotes as accurate as possible.
However, you're only technically required to send
If you pass a in a shipping quotes request that is not supported by your defined trading patterns, then the following error is thrown:
400 Bad Request
"type": "bad_request",
"errors": [
"code": "invalid_parameter",
"parameter": "shipTo.address",
"message": "The shipTo.address is invalid with the shipFrom.address"

Physical product data

Each physical product in the customer's cart should be passed in the shipping quote request's items[].
The following describes the key data you should send in each element's productDetails:
  • The id references the product in your upstream order management system.
  • The skuGroupId references the SKU group associated with the product. From this resource, we retrieve the product's compliance data.
  • A product's weight is technically not required, but it's extremely important data. Without it, the GLP won't be able to precisely determine shipping rates, which means totalAmount in the returned shipping quotes will likely be inaccurate. Product weight should be as precise as possible. Make sure the value you pass is exclusive of packaging but inclusive of dunnage. For details, refer to defining basic product data in the Pre-deployment section. If you don't send weight or the value is inaccurate, then the shipping costs paid by the customer at checkout might be lower than the actual shipping costs assessed by the carrier. In this scenario, you're responsible for paying the difference. Therefore, we highly recommend that you send weight in the request.
  • A product's url , image , countryOfOrigin, and partNumber are generally not used by your GLP when generating shipping quotes. These attributes are however part of productDetails. So, if you send productDetails in checkouts, then, for simplicity's sake, you can reuse the same object in the shipping quotes request.
The product quantity is required because it's a key input for accurately calculating shipping rates.

Ship from

In the request, shipFrom represents the address of the product's warehouse.


In a shipping quotes request, you can also send packages[]. The values in this array are used to calculate dimensional weight, which helps determine each shipping quote's totalAmount.
If the products are typically shipped in large or irregularly shaped parcels, we recommend that you send packages[].
For each element in the array, you can specify a package's weight and weightUnit. The enumerated values of weightUnit are oz, lb, g, and kg. The default value is lb.
You can also send a package's height, width, and length. These values should be defined in inches.
In the request, there doesn't need to be any correlation between packages[] and items[].
If packages[] is empty when you submit the request, we determine whether you have a default box associated with your site, and if you do, we send that box's weight and dimensions to the GLP.
If your warehouse management software uses packing algorithms, you might request it to provide recommended box counts and dimensions at checkout time and then pass the returned values in packages[].
For details, refer to configuring packaging in the Pre-deployment section.

How Digital River handles your request

From your shipping quotes request, Digital River retrieves product and packaging data, and uses it to define another request that gets routed to a GLP.
To determine the appropriate GLP, we use the and contained in your request, along with unique rules stored in your account.
If we determine that the ship to country is not supported by your trading patterns, we return a 409 Conflict with a code of InvalidShipToCountryCode.
When configuring the request, we also determine whether any unique product requirements exist. For details, refer to dangerous goods classifications and signature requirements.

How Digital River handles the response

When the GLP responds to our request with a list of shipping quotes, we convert the cost of each back into the same currency you specified in your POST /shipping-quotes request.
For each quote returned by the GLP, we also aggregate any carrier assessed fees or surcharges into a single total amount.

The shipping quotes response

Your POST /shipping-quotes request returns a currency and an array of shipping quotes[].
Shipping quotes
"currency": "CAD",
"quotes": [
"id": "58SLC-DHL",
"description": "Express",
"estimatedDelivery": "3 - 5 Business Days",
"shippingTerms": "DDP",
"totalAmount": 28.19,
"shipFrom": {
"address": {
"city": "Salt Lake City",
"postalCode": "84604",
"state": "Utah",
"country": "US"
"fees": {
"details": [
"name": "Fuel Surcharge",
"amount": 1.72
"name": "Temporary Surcharge",
"amount": 0.45
"name": "Dangerous Goods Fee",
"amount": 1.56
"amount": 3.72
"id": "58SLC-DHL",
"description": "Express",
"shippingTerms": "DAP",
"totalAmount": 28.19,
"shipFrom": {
"address": {
"city": "Salt Lake City",
"postalCode": "84604",
"state": "Utah",
"country": "US"
"fees": {
"details": [
"name": "Fuel Surcharge",
"amount": 1.72
"name": "Temporary Surcharge",
"amount": 0.45
"name": "Dangerous Goods Fee",
"amount": 1.56
"amount": 3.72
"liveMode": false
Each element in quotes[] represents a shipping quote and contains the following attributes:

Unique identifier

Each shipping quote has a unique id. This identifier is generated by the GLP.
The elements in the array are not a resource. As a result, you can't use id to make an API call to retrieve a unique shipping quote.
However, when handling a customer's shipping quote selection, you do need to pass id to the checkout.


The description indicates the duration of transportation. In other words, how quickly the goods are transported to the customer and what priority level they are assigned. Some common values are Economy, Express, and Priority. This is a pass-thru value from the GLP.

Estimated delivery range

A shipping quote's estimatedDelivery defines a minimum and maximum delivery period in days. For example, estimatedDelivery might be 3 - 5 Business Days.

Shipping terms

A shipping quote's shippingTerms are designated as either DDP or DAP. These values indicate when customers must pay duties, fees, and import taxes.
In delivered-duty-paid (DDP) shipments, the customer pays all duties, fees, and import taxes upfront during the checkout process. Upon product delivery, there are no additional charges they must pay.
To activate the guaranteed landed cost feature, customers must select a shipping quote with DDP terms.
In delivered-at-place (DAP) shipments, customers do not pay the full landed cost at checkout-time. Instead, they pay product and shipping costs, and then, upon delivery, they're responsible for paying duties, fees, and import taxes.
For details, refer to:

Shipping costs and fees

A shipping quote's totalAmount represents how much customers must pay to ship an order's products to the final destination address. It includes the estimated cost of handling, transportation, and postage as well as carrier assessed surcharges and fees.
In fees, we itemize these estimated fees and surcharges. A carrier might collect them to, for example, offset the cost of higher fuel prices, package signature options, or dangerous goods handling requirements.
Each quote's totalAmount, fees.amount, and fees.details[].amount is denominated in the response's single currency.

Ship from

Each shipping quote's shipFrom represents the address where that product is warehoused.
In the shipping quotes request, you specified a But if you have multiple warehouses in that country, then the response may contain one or more quotes[] with the same description and serviceLevel but different shipFrom values.
This allows you to filter the shipping quotes you display to the customer based on warehouse location.

Handling the shipping quotes response

Depending on your business objectives, you may decide you want to filter the returned shipping quotes before displaying them to customers.

Filtering shipping quotes

If you want to activate the guaranteed landed cost feature, then you should only display shipping quotes whose shippingTerms are DDP to customers. To trigger this feature, setting a checkout's shippingTerms to DDP is one of the necessary preconditions.
For details, refer to:
In an effort to minimize rejections, returns, and chargebacks, you may decide you only want to present shipping quotes with DDP terms.
Orders with DAP terms generally have higher return rates. At the time of delivery, some customers may be unaware of the outstanding balance and, in response, either refuse the delivery altogether or accept the delivery and then return the products.
You should be aware however that some carrier and ship to country combinations don't support the prepay DDP option. In these cases, the only quotes[] in the shipping quotes response, and therefore the only quotes[] you'll be able to display to the customer, are those with DAP terms.
So, if one of your approved ship to countries doesn't support DDP, make sure you have logic in place that displays DAP quotes in the event DDP quotes are not returned.
If you want customers to select a shipping quote associated with a specific warehouse, then you can filter by shipFrom. This is useful when you have multiple warehouses but you'd like the products to ship from a facility that's in close proximity to a GLP distribution hub.

Displaying shipping quotes

Radio button controls are commonly used to display shipping quotes. This control requires customers to select a single quote from the mutually exclusive and (potentially) filtered options you present.
For each shipping quote that you display, reveal its serviceLevel, estimatedDelivery, and totalAmount.
If you'd like to provide customers with more shipping cost granularity, you can also display fees.details[] and/or fees.amount.
In addition, you should indicate whether the quote's shippingTerms are DAP or DDP. We recommend however that you don't display these acronyms in your graphical user interface (GUI). Few, if any, customers will understand their meaning. Instead, display a more user-friendly description. For example:
Shipping terms
Customer-facing text
Import charges collected upon delivery
No additional import charges at delivery
Here's an example of what this might look like in your GUI:

Handling the shipping quote selection

When customers select a shipping quote, handle that event by retrieving data from the selection and using it to define the checkout's shippingChoice and shipFrom:
Shipping quote
POST /checkouts/{id}
You can then submit an update checkout request. If all the necessary preconditions are met, this request prompts Digital River to call its landed cost service.
If the checkout's shippingTerms are DDP, then the response to your request provides recalculated duty, fee, and import tax amounts at both the checkout-level and items[] level.
For details, refer to how landed cost is represented in checkouts on the Landed cost page.
In the Global Logistics solution, the customer is the designated importer of record. As a result, the customer pays the checkout's totalImporterTax.
If the checkout's shippingTerms are DAP, then checkout-level and items[] level duty, fee, and import tax amounts are all zero.
DDP Checkout
DAP Checkout
"id": "206bfba3-7bda-4d0b-b6e3-657875b5cc6c",
"createdTime": "2021-11-11T22:25:24Z",
"currency": "EUR",
"email": "[email protected]",
"shipTo": {
"address": {
"line1": "Neuer Wall 10",
"city": "Hamburg",
"postalCode": "20354",
"country": "DE"
"name": "John",
"phone": "9526123456",
"email": "[email protected]"
"shipFrom": {
"address": {
"line1": "Landed Cost Cross Order",
"line2": "80 Sunraysia Road",
"city": "INVERMAY",
"postalCode": "3352",
"state": "Victoria",
"country": "AU"
"totalAmount": 1809.99,
"subtotal": 1809.99,
"totalFees": 0.0,
"totalTax": 0.0,
"totalImporterTax": 288.99,
"importerOfRecordTax": true,
"totalDuty": 221.0,
"totalDiscount": 0.0,
"totalShipping": 100.0,
"items": [
"id": "434e3932-a20d-49d3-ad82-0abb25eaa9be",
"skuId": "3c99757b-a543-455f-bbd3-57dc1bb21579",
"amount": 1200.0,
"quantity": 3,
"tax": {
"rate": 0.36,
"amount": 0.0
"importerTax": {
"amount": 288.99
"duties": {
"amount": 221.0
"fees": {
"amount": 0.0,
"taxAmount": 0.0
"tariffCode": "6404201000"
"shippingChoice": {
"id": "testDDP",
"amount": 100.0,
"description": "FedEx Next Day",
"serviceLevel": "Test",
"taxAmount": 0.0,
"shippingTerms": "DDP"
"updatedTime": "2021-11-11T22:25:24Z",
"locale": "en_US",
"customerType": "individual",
"sellingEntity": {
"name": "Digital River Ireland Ltd."
"liveMode": false,
"payment": {
"session": {
"id": "1822d8bd-1531-40da-aedc-10ac9b0eda4c",
"amountContributed": 0.0,
"amountRemainingToBeContributed": 1809.99,
"state": "requires_source",
"clientSecret": "1822d8bd-1531-40da-aedc-10ac9b0eda4c_4b58e8ed-505c-4334-b349-bc65be9029e5"