international-shipping
Handle cross-border orders with customs form generation, duties and taxes estimation, HS code assignment, and restricted items blocking
What this skill does
# International Shipping ## Overview International shipping requires more than just choosing a carrier — you need to handle customs declarations, duties and taxes (showing customers the landed cost at checkout prevents nasty surprises), HS code classification for each product, and screening for items that are prohibited in certain countries. Getting this wrong leads to packages stuck in customs, unexpected bills delivered to customers, and damaged brand reputation. This skill walks through setting up international shipping on each major platform, including the right apps for duties/taxes and customs form generation. ## When to Use This Skill - When expanding from domestic to international shipping and need to handle customs declarations - When offering Delivered Duty Paid (DDP) so customers see the full landed cost at checkout - When building a product catalog that needs HS codes for accurate tariff classification - When screening orders for restricted items before processing international shipments - When integrating with a customs broker or carrier (EasyPost, Shippo, Easyship, Flexport) ## Core Instructions ### Step 1: Determine your platform and choose the right international shipping tools | Platform | Recommended Tool | Why | |----------|-----------------|-----| | **Shopify** | Shopify Markets + Zonos Duty & Tax or Global-e | Shopify Markets handles multi-currency and localized checkout; Zonos/Global-e add accurate DDP landed cost | | **WooCommerce** | WooCommerce Shipping + Easyship plugin or Zonos for WooCommerce | Easyship provides multi-carrier rates including international; Zonos handles duties/taxes | | **BigCommerce** | BigCommerce Multi-Currency + Easyship or Avalara AvaTax Cross-Border | Built-in multi-currency handles pricing; Easyship/Avalara add duties estimation | | **Custom / Headless** | EasyPost or Shippo for labels + Zonos or Avalara for duties estimation | Use carrier aggregators for labels; use a landed-cost API for duties/taxes | ### Step 2: Assign HS codes to all products HS (Harmonized System) codes are required on customs declarations for every international shipment. Missing codes cause customs delays. #### Shopify 1. Go to **Products → [Product] → Shipping** 2. Under "Customs information", enter the **HS tariff code** (6–10 digits) and **Country/Region of origin** 3. For large catalogs: export your product CSV (**Products → Export**), fill in the `Variant HS Code` and `Variant Origin Country` columns in bulk, then re-import Common HS codes for e-commerce: - `6109.10` — Cotton T-shirts - `6109.90` — Synthetic T-shirts - `6404.11` — Athletic footwear - `8471.30` — Laptops - `9503.00` — Toys - `3304.99` — Cosmetics For HS code classification help, use: - **Zonos Hello** (free tool at zonos.com/hs-code) — paste a product description and get a suggested HS code - **Avalara TariffFinder** — free online tool for HS code lookup - **Schedule B Search Engine** (US Census Bureau) — authoritative for US exports #### WooCommerce 1. Go to **Products → [Product] → Shipping tab** 2. Most shipping plugins (ShipStation, Easyship) add custom HS code and country of origin fields here 3. If your plugin doesn't add these fields, install **WooCommerce Extra Product Options** or use the **Custom Fields** metabox to store `_hs_code` and `_country_of_origin` per product #### BigCommerce 1. Go to **Products → [Product] → Shipping** 2. Enter the HS code in the "Harmonized System Code" field (visible on all plans) 3. Enter Country of Origin in the "Country of Manufacture" field ### Step 3: Configure duties and taxes (DDP vs. DDU) **DDP (Delivered Duty Paid):** Customer pays duties at checkout — best for conversion, no surprises. **DDU (Delivered Duty Unpaid):** Customer pays duties on delivery — creates friction and returns. Always aim for DDP on key international markets. #### Shopify **Using Shopify Markets (DDP):** 1. Go to **Settings → Markets → International markets** 2. Enable each country you ship to and set the currency 3. For duties: install **Zonos Duty & Tax** or **Global-e** from the App Store 4. Zonos integrates with Shopify Markets checkout and shows the exact duty amount as a line item 5. In Zonos settings, configure which markets to show DDP (collect duties at checkout) vs. DDU **Note:** Shopify's built-in international shipping does NOT automatically calculate duties — you need Zonos or Global-e for that. #### WooCommerce 1. Install the **Easyship plugin** from WordPress.org or easyship.com 2. In Easyship settings, enable "Show duties and taxes at checkout" 3. Easyship calculates duties based on destination country and your HS codes 4. Customers see the duties estimate during checkout as a separate line item **Alternative for larger operations:** Use the **Zonos Checkout for WooCommerce** plugin which guarantees the landed cost accuracy. #### BigCommerce 1. Install **Avalara AvaTax Cross-Border** from the BigCommerce App Marketplace 2. Configure Avalara with your shipping origin address and enable cross-border tax calculation 3. Avalara displays duties estimates on checkout; upgrade to their DDP product for guaranteed landed costs ### Step 4: Set up international label creation with customs forms Carriers require customs declarations (CN22 for items under $400; CN23/commercial invoice for higher values) on every international package. #### Shopify - Shopify Shipping generates customs forms automatically when you buy labels for international orders - Go to **Orders → [Order] → Fulfill items** and Shopify shows the customs information form pre-filled from your product HS codes - Review and adjust the declared value if needed (use sale price, not a lowered value — declaring a lower value to avoid duties is illegal) - For high-volume operations: **ShipStation** (Shopify App Store) or **Easyship** generate customs forms in bulk and integrate with all major carriers (DHL, FedEx, UPS, USPS) #### WooCommerce - **WooCommerce Shipping** (powered by WooCommerce Shipping & Tax plugin) generates customs forms for USPS and DHL Express labels - Go to **WooCommerce → Shipments → Create Label** for an order — customs fields are auto-populated from product data - For full carrier coverage: use **ShipStation** or **Easyship** plugins which handle customs forms for all carriers #### BigCommerce - **ShipStation** (BigCommerce App Marketplace) handles customs forms for all carriers and has BigCommerce order sync built in - **Easyship** (BigCommerce App Marketplace) also supports multi-carrier international labels with auto-generated customs forms ### Step 5: Block restricted and prohibited items Some products cannot ship to certain countries (firearms parts, alcohol, certain electronics). #### Shopify 1. Use **Shopify Markets** to set country availability per product: - Go to **Products → [Product] → Sales channels** - Disable specific markets for restricted products 2. For a comprehensive restriction list: Install **Fraud Filter** or use **Shopify Flow** (Plus) to flag orders where a restricted product is shipping to a restricted country 3. Apps like **Geoipfy** can redirect or block checkout for restricted country/product combinations #### WooCommerce 1. Use the **WooCommerce Shipping Restrictions** plugin to block specific products from shipping to specific countries 2. Go to **Products → [Product] → Shipping tab** and set "Shipping restrictions" by country 3. For order-level blocking: use WooCommerce's built-in "Restrict to countries" in **WooCommerce → Settings → General → Selling location(s)** #### BigCommerce 1. Go to **Products → [Product] → Shipping** 2. Set "Free Shipping" to disabled and use custom shipping rules to block certain destinations 3. For comprehensive blocking: Use the **ShipperHQ** app which supports zone-based shipping restrictions #### Custom / Headless ```typescript // Screen cart for restricted items before allowing checkout to proceed async function screenForRestrictions
Related in fulfillment-shipping
order-fulfillment-workflow
IncludedStreamline your warehouse with digital pick-pack-ship workflows, barcode scanning for accuracy, and automatic packing slip generation
dropshipping-integration
IncludedConnect to supplier APIs for automatic order routing to dropship vendors, real-time inventory sync, and margin calculation per order
same-day-delivery
IncludedOffer same-day local delivery with geographic zone management, customer-facing time-slot booking, and driver dispatch coordination
free-shipping-thresholds
IncludedMotivate larger orders by showing a progress bar toward free shipping and nudging customers to add more items to qualify
returns-management
IncludedProcess returns end to end — generate prepaid labels, apply refund or exchange logic, update inventory, and notify customers automatically
shipment-tracking
IncludedGive customers live package tracking by aggregating carrier status updates via webhooks and sending proactive delivery notifications