API HS Code para Aduanas: Guía de Integración y Automatización
API HS Code para Aduanas: Guía de Integración y Automatización
La clasificación arancelaria es uno de los cuellos de botella más críticos en el comercio internacional. Esta guía te muestra cómo automatizar la clasificación HS Code mediante APIs, reduciendo errores y acelerando el despacho aduanero.
Impacto real: Empresas que automatizan la clasificación HS reducen los retrasos aduaneros un 40% y los errores de clasificación en un 65%.
¿Qué es el código HS?
Sistema Armonizado de Designación y Codificación de Mercancías
El código HS (Harmonized System) es el estándar internacional para clasificar productos en comercio internacional:
| Nivel | Dígitos | Descripción | Ejemplo | | -------------------- | ------- | ------------------- | -------------------------------------------- | | Capítulo | 2 | Área general | 84 (Reactores nucleares, calderas, máquinas) | | Partida | 4 | Categoría | 8421 (Máquinas y aparatos para centrifugar) | | Subpartida | 6 | Producto específico | 842121 (Máquinas para filtrar agua) | | UE (CN) | 8 | Código combinado UE | 84212100 (Misma subpartida) | | Completo (TARIC) | 10 | Arancel completo | 8421210000 (Con medidas comerciales) |
¿Por qué es crítico?
- Aranceles: Determina el % de derechos a pagar - Estadísticas: Base para comercio exterior - Regulaciones: Identifica restricciones (licencias, sanidad) - Origen: Fundamental para acuerdos comerciales
Error de clasificación:
- Retrasos en frontera - Multas (hasta 3x valor de mercancía) - Decomiso de productos - Sanciones administrativas
API de HS Code de TRANSCEND
Características principales
POST https://api.transcend.cargoffer.com/v1/hs-code/classify
Capacidades:
✅ Clasificación automática: ML + base de datos arancelaria ✅ Validación de códigos: Verifica existencia y validez ✅ Búsqueda inversa: Encuentra producto por código ✅ Batch processing: Clasifica múltiples productos ✅ Historial: Aprende de clasificaciones anteriores
Ejemplo de uso
const classification = await fetch(
"https://api.transcend.cargoffer.com/v1/hs-code/classify",
{
method: "POST",
headers: {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
description: "Máquina de café espresso automática para uso doméstico",
origin: "CN",
destination: "ES",
context: "import",
}),
},
);Respuesta:
{
"query": "Máquina de café espresso automática para uso doméstico",
"suggestions": [
{
"hsCode": "851671",
"description": "Aparatos electrotermicos para preparar café",
"confidence": 0.94,
"tariffRate": 2.7,
"category": "Electrodomésticos",
"regulations": ["CE marking required"],
"additionalCodes": {
"CN": "85167100",
"TARIC": "8516710000"
}
},
{
"hsCode": "851679",
"description": "Otros aparatos electrotermicos para preparar bebidas",
"confidence": 0.78,
"tariffRate": 2.7
}
],
"processingTime": "0.3s",
"validation": {
"valid": true,
"lastUpdated": "2026-02-12"
}
}
Integración paso a paso
Paso 1: Configurar autenticación
// Node.js
const axios = require("axios");const TRANSCEND_API_KEY = process.env.TRANSCEND_API_KEY;
const BASE_URL = "https://api.transcend.cargoffer.com/v1";Python
import requests
import osTRANSCEND_API_KEY = os.environ.get('TRANSCEND_API_KEY')
BASE_URL = 'https://api.transcend.cargoffer.com/v1'Paso 2: Clasificar un producto
async function classifyProduct(description, origin, destination) {
try {
const response = await api.post("/hs-code/classify", {
description: description,
origin: origin, // Código país ISO (ej: 'CN')
destination: destination, // Código país ISO (ej: 'ES')
context: "import", // 'import' o 'export'
}); return response.data;
} catch (error) {
console.error("Error de clasificación:", error.message);
throw error;
}
}// Ejemplo de uso
const result = await classifyProduct(
"Piezas de repuesto para máquinas industriales de corte láser",
"DE",
"ES",
);Paso 3: Procesamiento por lotes (Batch)
async function classifyBatch(products) {
const response = await api.post("/hs-code/classify-batch", {
products: products.map((p) => ({
id: p.id,
description: p.description,
origin: p.origin,
destination: p.destination,
})),
}); return response.data.results;
}// Ejemplo con catálogo de productos
const catalog = [
{
id: "SKU001",
description: "Tornillos de acero inoxidable M8",
origin: "CN",
destination: "ES",
},
{
id: "SKU002",
description: "Motor eléctrico trifásico 5HP",
origin: "IT",
destination: "PT",
},
{
id: "SKU003",
description: "Válvulas de bola de latón",
origin: "DE",
destination: "ES",
},
];const classifications = await classifyBatch(catalog);Paso 4: Validar código existente
async function validateHsCode(hsCode, origin, destination) {
const response = await api.get("/hs-code/validate", {
params: {
code: hsCode,
origin: origin,
destination: destination,
},
}); return response.data;
}// Ejemplo
const validation = await validateHsCode("851671", "CN", "ES");Flujo de trabajo completo
Escenario: Importación de electrónica desde China
┌─────────────────┐
│ 1. Producto en │
│ sistema ERP │
└────────┬────────┘
│
▼
┌─────────────────────────┐
│ 2. Enviar descripción │
│ a API TRANSCEND │
│ (automático) │
└────────┬────────────────┘
│
▼
┌─────────────────────────┐
│ 3. Recibir sugerencias │
│ HS + confianza │
└────────┬────────────────┘
│
▼
┌─────────────────────────┐ Sí ┌──────────────────┐
│ 4. ¿Confianza > 90%? │────────────▶│ 5. Aprobar │
└────────┬────────────────┘ │ automáticamente
│ No └────────┬─────────┘
▼ │
┌─────────────────────────┐ │
│ 6. Revisión experto │◄──────────────────────┘
│ aduanero │
└────────┬────────────────┘
│
▼
┌─────────────────────────┐
│ 7. Generar DUA con │
│ código validado │
└────────┬────────────────┘
│
▼
┌─────────────────────────┐
│ 8. Presentar en aduana │
│ (risk-based) │
└─────────────────────────┘
Implementación práctica
class CustomsAutomation {
constructor(apiKey) {
this.api = axios.create({
baseURL: "https://api.transcend.cargoffer.com/v1",
headers: {
Authorization: Bearer ${apiKey},
"Content-Type": "application/json",
},
});
} async processImport(product) {
// Paso 1: Clasificar producto
const classification = await this.classify(product); // Paso 2: Decidir flujo según confianza
if (classification.suggestions[0].confidence >= 0.9) {
// Auto-aprobación
return await this.autoApprove(product, classification);
} else {
// Revisión manual
return await this.queueForReview(product, classification);
}
} async classify(product) {
const response = await this.api.post("/hs-code/classify", {
description: product.description,
origin: product.originCountry,
destination: product.destinationCountry,
context: "import",
}); return response.data;
} async autoApprove(product, classification) {
const hsCode = classification.suggestions[0]; // Calcular costes aduaneros
const customsCost = {
cifValue: product.value,
tariff: hsCode.tariffRate,
duty: product.value * (hsCode.tariffRate / 100),
vat: product.value * 0.21, // IVA España
total: 0,
};
customsCost.total = customsCost.duty + customsCost.vat; return {
status: "approved",
hsCode: hsCode.hsCode,
confidence: hsCode.confidence,
customsCost: customsCost,
duas: await this.generateDUA(product, hsCode, customsCost),
};
} async queueForReview(product, classification) {
// Enviar a cola de revisión experto
return {
status: "pending_review",
product: product,
suggestions: classification.suggestions,
assignedTo: "customs_expert_queue",
};
}
}// Uso
const automation = new CustomsAutomation("YOUR_API_KEY");const importProcess = await automation.processImport({
sku: "ELEC-2847",
description: 'Smartphone 5G con pantalla OLED 6.7"',
value: 450.0,
originCountry: "CN",
destinationCountry: "ES",
quantity: 100,
});Casos de uso por industria
1. Textil y moda
Desafío: Productos con materiales mixtos, tejidos complejos
const textileProduct = {
description: "Vestido de mujer 60% algodón 40% poliéster",
origin: "BD", // Bangladesh
destination: "ES",
};2. Electrónica
Desafío: Componentes vs productos terminados
const electronicProduct = {
description: "Módulo de pantalla LCD TFT 7 pulgadas con controlador",
origin: "CN",
destination: "PT",
};3. Automoción
Desafío: Piezas de repuesto, accesorios
const autoPart = {
description: "Filtro de aceite para motor diésel de vehículo comercial",
origin: "DE",
destination: "ES",
};4. Alimentación
Desafío: Productos frescos, regulaciones sanitarias
const foodProduct = {
description: "Aceite de oliva virgen extra en envases de 5 litros",
origin: "IT",
destination: "ES",
};Mejores prácticas
1. Validación humana para confianza baja
const CONFIDENCE_THRESHOLD = 0.85;async function classifyWithValidation(description) {
const result = await api.post("/hs-code/classify", { description }); const topSuggestion = result.suggestions[0]; if (topSuggestion.confidence < CONFIDENCE_THRESHOLD) {
// Enviar a revisión experto
await notifyCustomsExpert(description, result.suggestions);
return { status: "manual_review_required" };
}2. Cachear resultados frecuentes
const classificationCache = new Map();
const CACHE_TTL = 30 24 60 60 1000; // 30 díasasync function getCachedClassification(description) {
const cacheKey = description.toLowerCase().trim();
const cached = classificationCache.get(cacheKey); if (cached && Date.now() - cached.timestamp < CACHE_TTL) {
return cached.data;
} const result = await api.post("/hs-code/classify", { description });
classificationCache.set(cacheKey, {
data: result,
timestamp: Date.now(),
});3. Mantener historial de decisiones
// Almacenar decisiones para ML
async function logClassificationDecision(product, suggestion, approved) {
await api.post("/hs-code/feedback", {
query: product.description,
suggestedCode: suggestion.hsCode,
approved: approved,
correctedCode: approved ? null : correctedCode,
context: {
origin: product.origin,
destination: product.destination,
industry: product.industry,
},
});
}
Integración con sistemas existentes
SAP
// RFC call desde SAP
const sapIntegration = {
rfcName: "Z_HSCODE_CLASSIFY",
parameters: {
IV_DESCRIPTION: product.description,
IV_ORIGIN: product.origin,
IV_DESTINATION: product.destination,
},
result: {
EV_HSCODE: classification.hsCode,
EV_CONFIDENCE: classification.confidence,
EV_TARIFF: classification.tariffRate,
},
};
Odoo
Módulo personalizado Odoo
from odoo import models, fields, apiclass ProductTemplate(models.Model):
_inherit = 'product.template' hs_code = fields.Char(string='HS Code')
hs_confidence = fields.Float(string='Classification Confidence') def auto_classify_hs(self):
for product in self:
result = self.env['transcend.api'].classify(
description=product.name,
origin=product.country_of_origin.code,
destination='ES'
)WooCommerce/Shopify
// Plugin WordPress
add_action('woocommerce_product_options_general_product_data', 'add_hs_code_field');function add_hs_code_field() {
woocommerce_wp_text_input([
'id' => '_hs_code',
'label' => 'HS Code',
'description' => 'Código arancelario para exportación'
]);
}add_action('woocommerce_process_product_meta', 'save_hs_code');function save_hs_code($post_id) {
$hs_code = $_POST['_hs_code']; // Si está vacío, autoclacificar
if (empty($hs_code)) {
$product = wc_get_product($post_id);
$classification = transcend_classify($product->get_name());
$hs_code = $classification['suggestions'][0]['hsCode'];
}Precios y límites
Tier gratuito
- 500 clasificaciones/mes - Confianza básica - Soporte comunitario
Growth
- 10,000 clasificaciones/mes - 99€/mes - Confianza avanzada (ML) - Email support
Enterprise
- Ilimitado - Precio personalizado - Modelos ML custom - API dedicada - Soporte 24/7
Recursos adicionales
- TARIC Consulta - Base de datos OMA HS - Aduanas España - Aduanas Portugal
Preguntas frecuentes
¿Qué es el código HS y por qué es importante?
El código HS (Harmonized System) es un sistema internacional estandarizado de nomenclatura y codificación de mercancías mantenido por la Organización Mundial de Aduanas (OMA). Consta de 6 dígitos y sirve para clasificar productos en aduanas, determinar aranceles, recopilar estadísticas comerciales y aplicar regulaciones. Un código incorrecto puede resultar en retrasos, multas o decomiso de mercancías.
¿Cómo automatizar la clasificación HS Code?
La automatización se logra mediante APIs que utilizan machine learning y bases de datos arancelarias para sugerir códigos HS basados en descripciones de productos. El proceso típico incluye: (1) Enviar descripción del producto a la API, (2) Recibir sugerencias de códigos con nivel de confianza, (3) Validar con experto aduanero, (4) Almacenar para uso futuro. Esto reduce el tiempo de clasificación de horas a segundos y minimiza errores humanos.
¿Qué pasa si el código sugerido es incorrecto?
La API proporciona un nivel de confianza con cada sugerencia. Para clasificaciones con confianza inferior al 85%, recomendamos revisión humana por un experto aduanero. Además, puede proporcionar retroalimentación a la API con el código correcto, mejorando el modelo para futuras clasificaciones similares.
¿La API cubre todos los países?
La API de TRANSCEND cubre toda la base de datos HS (más de 5,000 códigos de productos) que es universal. Para aranceles específicos y regulaciones, actualmente cubrimos la Unión Europea (España, Portugal, Francia, Alemania, Italia) con expansión planificada a otros mercados.
¿Puedo integrar esto con mi software de gestión aduanera?
Absolutamente. La API está diseñada para integración con software de gestión aduanera (SGA), ERPs, e-commerce platforms y TMS. Ofrecemos SDKs para JavaScript, Python, PHP y documentación completa REST API.
¿Listo para automatizar? Prueba la API gratuita con 500 clasificaciones/mes.
_Última actualización: Febrero 2026. Las tarifas arancelarias pueden cambiar; consulta siempre las fuentes oficiales para valores exactos._