Cross-Border Shipping

Flash Americas provides comprehensive support for cross-border shipping between the United States and Mexico, including specialized handling for customs, documentation, and regulatory compliance.

Overview

Cross-border shipping involves additional complexity compared to domestic shipments:

  • Customs documentation and declarations
  • SAT codes for Mexican tax classification
  • Multi-leg routing through border crossing facilities
  • Currency conversion and international pricing
  • Regulatory compliance with both US and Mexican requirements

Getting Started

1. Obtain SAT Codes

For shipments to Mexico, you'll need appropriate SAT (Sistema de Administración Tributaria) codes:

Search for SAT codesjavascript
const satResponse = await fetch('https://ship.flashamericas.com/api/v1/sat-code/lookup/en/electronics', {
headers: {
  'Authorization': 'Bearer YOUR_API_KEY',
  'Accept': 'application/json'
}
});

const satCodes = await satResponse.json();
const selectedSatCode = satCodes.data[0].sat_code;

2. Create Cross-Border Quote

The V2 crossborder API uses a comprehensive structure with shipper/consignee locations, handling units, and customs information:

Cross-border quote request (V2 API)javascript
const crossBorderRequest = {
borderCrossingLocation: "LLB",  // Laredo/Nuevo Laredo (use "PDN" for El Paso/Ciudad Juarez)

// Shipper location (Mexico)
shipperLocation: {
  accessorials: [],
  address1: "Av. Javier Rojo Gómez No. 278",
  address4: "Guadalupe del Moral",
  city: "Iztapalapa",
  stateOrProvince: "CMX",
  zipCode: "09300",
  country: "MX",
  contactFirstName: "Marc",
  contactLastName: "Held",
  phone: "+52 55 1234 5678",
  email: "plasticos@moldplas.com.mx",
  name: "Moldeados Plásticos, S.A. de C.V.",
  type: "business",
  limitedAccess: false,
  scheduledDate: "2025-06-27T12:00",
  openTime: "06/27/2025 08:00:00 -5",
  closeTime: "06/27/2025 17:00:00 -5",
  readyTime: "06/27/2025 08:00:00 -5",
  references: []
},

// Consignee location (USA)
consigneeLocation: {
  accessorials: [],
  address1: "3300 NE 192nd St",
  city: "MIAMI",
  stateOrProvince: "FL",
  zipCode: "33180",
  country: "US",
  contactFirstName: "Marc",
  contactLastName: "Held",
  phone: "305-555-0100",
  email: "hq@flashamericas.com",
  name: "HQ",
  type: "business",
  limitedAccess: false,
  firstComeFirstServe: true,
  openTime: "06/27/2025 08:00 -5",
  closeTime: "06/27/2025 17:00 -5",
  references: []
},

// Handling units with products
handlingUnits: [{
  quantity: 1,
  uuid: "ea4xxicv9",
  transform: true,
  products: [{
    selectedPackage: {
      id: 22,
      key: "Pallets",
      name: "Pallets"
    },
    packageType: "Pallets",
    description: "Plastic",
    quantity: 1,
    weight: 501,
    length: 48,
    width: 40,
    height: 40,
    class: 92.5,
    condition: "used",
    isHazmat: false,
    stackable: false,
    additionalHandling: false,
    satCode: "24121807",
    density: 11.25,
    uid: "tfbejh1ii"
  }]
}],

// Insurance info
insuranceInfo: {
  insuredValue: 0
},

// Customs information for cross-border
customs: {
  borderCrossingLocation: "LLB",
  origin: {
    firstName: "Carlos",
    lastName: "Rodriguez",
    email: "customs.mx@flashamericas.com",
    phone: "5551234567"
  },
  destination: {
    firstName: "Sarah",
    lastName: "Johnson",
    email: "customs.us@flashamericas.com",
    phone: "5551234567"
  }
},

// Additional options
parcelOptions: {
  appointment: "no"
},

usePublicApi: true
};

// Submit the quote request
const response = await axios.post('https://ship.flashamericas.com/api/v1/quote-crossborder', 
crossBorderRequest, {
headers: {
  'Authorization': 'Bearer YOUR_API_KEY',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
},
timeout: 30000 // 30 second timeout for cross-border quotes
});

3. Handle Quote Response

Processing cross-border quotesjavascript
if (response.data.success) {
const quotes = response.data.quotes?.quotes || response.data.quotes || [];
const loadId = response.data.quotes?.loadId || response.data.loadId;
const bolNumber = response.data.quotes?.bolNumber || response.data.bolNumber;

if (quotes && quotes.length > 0) {
  console.log(`Found ${quotes.length} cross-border quotes:`);

  quotes.forEach((quote, index) => {
    // Extract carrier info from moves array
    const carrierInfo = quote.moves && quote.moves.length > 0 ? quote.moves[0] : {};
    const carrierName = carrierInfo.carrierName || 'Multi-Carrier';
    const scac = carrierInfo.scac || 'MULTI';

    console.log(`${index + 1}. ${carrierName} (${scac})`);
    console.log(`   Price: $${quote.total.toFixed(2)} ${quote.currency.toUpperCase()}`);
    console.log(`   Transit: ${quote.fromTransitTime}-${quote.toTransitTime} days`);
    console.log(`   Service: ${quote.serviceType}`);
    console.log(`   Quote ID: ${quote.quoteId}`);
  });

  // Find cheapest quote
  const cheapest = quotes.reduce((min, quote) =>
    quote.total < min.total ? quote : min
  );
  
  console.log(`Best quote: $${cheapest.total.toFixed(2)}`);
}
}

Special Considerations

Documentation Requirements

  • Commercial invoices with detailed descriptions
  • SAT codes for all products
  • Proper value declarations
  • Origin certificates when required

Border Crossing Facilities

Flash Americas coordinates with multiple border crossing points for optimal routing and timing:

  • LLB - Laredo/Nuevo Laredo crossing
  • PDN - El Paso/Ciudad Juarez crossing

Transit Times

Cross-border shipments typically require 2-5 additional business days compared to domestic shipping.

Next Steps