A market-by-market recheck that protects your margin after Shopify's DDP default
Score each market's duty exposure, lost rates, locked orders, and refusal trend before you keep DDP, disable Managed Markets, or watch conversion.

The default changed, so the margin math changed
If you sell cross-border with Shopify Managed Markets, the margin decision is on your screen after August 24, 2026, the date Shopify scheduled for the end of DDU support in Shopify Managed Markets in every market where DDP is available. The stop happened on that date. If you wanted customers to keep paying duties at delivery, you had to disable Shopify Managed Markets before that date. For a solo seller with no ops team, the choice is local: keep DDP where it earns its keep, or turn it off where it eats margin.
DDP can be a good trade. For DDP orders under Shopify Managed Markets, the platform covers any customs charge that exceeds the duty amount the customer paid at checkout. That protects the buyer from a surprise at the door, and it can protect conversion.
It also puts the duty risk on fulfilled orders. Once an order is fulfilled, Shopify does not return duties, customs fees, or VAT to the merchant. The margin question is whether the avoided refusal is worth the duty exposure you now own.
The recheck is the only switch you need
A global off switch is easy, but it can throw away markets where DDP is doing real work. A market-by-market DDP margin recheck is the durable move. It asks the questions that matter: how much duty exposure is sitting on fulfilled orders, what you lose by giving up Managed Markets rates, how many open orders would lock, and whether conversion or refusal trends justify the duty-paid checkout.
Turning off Shopify Managed Markets for a market ends the product's merchant-of-record responsibility there, deletes the exclusive rates, halts duty and import-tax calculations, and makes existing orders in that market uneditable. Aim for the smaller job: stop duty risk in markets where the customer would have paid it anyway, or where checkout friction is already hurting you. Do it market by market, and it stays a low-hour job that keeps you from making a global change after one angry email or a bad week.
- Score duty exposure on fulfilled orders. Open the market's fulfilled orders and total the duties and customs already charged. If the total is large enough to change your price, mark the market red and look at pricing or disable.
- Check the lost rates. Compare the rates you would use after turning off the market with the rates you use while the market is on. If the gap is bigger than the duty savings, disable is worth considering. If the gap is small, the rate loss may not justify turning DDP off.
- Count locked-order risk. List the open orders in that market that still need edits, and decide whether to handle them before switching. If none need edits, the switch is less risky.
- Track conversion and refusal trend. Compare checkout conversion and delivery refusal or return signals before and after customers started paying duties at checkout. If refusals fall and conversion holds, DDP is doing work. If conversion drops, the duty-paid checkout may be costing orders.
If you cancel an entire order before it ships, the associated duties and customs come back on the following payout date. Check that path before you switch, because it changes how much open-order exposure you can safely leave in a market. It is the difference between exposure you can absorb and exposure that needs a price change.
The score decides keep, disable, or watch
High duty exposure, weak conversion, and open orders that need edits point to disabling. Low duty exposure, strong conversion, and few open orders point to keeping DDP. Mixed signals point to watching, then rechecking after the next batch of orders.
Watch is the state for a market where the duty exposure is small, the conversion signal is unclear, and the locked-order risk is low. You keep DDP for now, but you set a simple trigger: if the next batch of fulfilled orders shows a worse duty total or a rise in refusals, you run the recheck again. Do it before the next payout. The trigger should be simple enough to check in one sitting.