Our Customer Service team will be processing orders on behalf of our B2B trade customers, using the draft orders. From what we understand, draft orders do not have the ability to calculate the appropriate duties and taxes (via Shopify Markets), which means that any pro-forma invoices will not have the final DDP price.
Please can anyone advise on the optimal solution to this?
Hi @Jonathan_Davies
If you need the pro-forma invoice to show the final DDP price before the customer hits checkout, there’s no built-in way to do that through draft orders today.
A couple of options to consider:
- Use the checkout link flow — Send the draft order invoice to the B2B customer using the
invoiceUrl. Duties and taxes will be calculated at checkout, so the customer sees the full DDP price before paying. This doesn’t solve the pro-forma invoice problem, but it does ensure the customer sees accurate totals before committing.
- Use
draftOrderCalculate for taxes + estimate duties separately — You can use the draftOrderCalculate mutation to preview taxes, then calculate estimated duties outside of Shopify (using HS codes and the destination country’s duty rates) to build your own pro-forma invoice.
- Create the order through checkout instead — If DDP accuracy is critical, consider having your CS team create orders through the storefront checkout flow (even if on behalf of the customer), where Markets will calculate duties automatically.
Hope this helps!
Thank you Liam
We have since discovered that if we assign a shipping rate to the draft order, it does indeed show the duties and taxes. Does that sound like a viable solution?
Hey Jonathan that makes sense- Markets needs the shipping context (destination country + shipping method) to calculate duties. Without a shipping line on the draft order, it doesn’t have enough information to run that calculation.
So as long as your CS team assigns a shipping rate when creating the draft order, the pro-forma invoice should reflect the full DDP price including duties and taxes. That’s a much simpler workflow than the workarounds I suggested 
Thanks Liam for your help as always. I hope you are doing well.