Blog

Magento y ERP: cómo integrar Adobe Commerce por API REST

Cómo conectar Magento 2 o Adobe Commerce con tu ERP por API REST: SKU y configurables, stock por fuente (MSI), precios por grupo, pedidos y documento.

Magento 2 se conecta con un ERP por su API REST, que es la misma en Magento Open Source y en Adobe Commerce. El ERP envía productos, stock y precios. La tienda entrega los pedidos y recibe de vuelta la factura. Esta guía explica cómo se modela cada dato, qué ofrece la API y qué errores se repiten.

Qué datos van en cada sentido

Dato Sentido Recurso de la API REST
Productos simples y configurables ERP a Magento /V1/products y /V1/configurable-products
Stock por fuente ERP a Magento /V1/inventory/source-items
Precios base y por grupo ERP a Magento /V1/products/base-prices y /V1/products/tier-prices
Pedidos y clientes Magento a ERP /V1/orders
Factura y nota de crédito ERP a Magento /V1/order/{id}/invoice y /V1/order/{id}/refund

Fuente: Adobe Commerce Web API, Adobe Developer.

Cómo se autentica una integración

Para conectar un sistema externo, Magento usa una integración. Se crea en el panel de administración, en System > Extensions > Integrations, y ahí se marcan los recursos a los que tendrá acceso. Al activarla, la tienda genera cuatro credenciales: consumer key, consumer secret, access token y access token secret.

Hay un detalle que rompe muchas integraciones al actualizar la tienda. En versiones anteriores, el access token de una integración servía por sí solo como token Bearer. Hoy ese comportamiento viene desactivado, porque es un token que no expira. Quedan dos caminos:

  • Firmar cada llamada con OAuth 1.0a, usando las cuatro credenciales.
  • Activar la opción “Allow OAuth Access Tokens to be used as standalone Bearer tokens”, en Stores > Configuration > Services > OAuth > Consumer Settings. Adobe no lo recomienda.

La duración de cada tipo de token, según la documentación:

Token Duración por defecto
Integración Indefinida, hasta que se revoca
Administrador 4 horas
Cliente 1 hora

Fuente: Token-Based Authentication, Adobe Developer.

Un token de administrador sirve para pruebas. Para una integración que corre sola todo el día, lo correcto es una integración con los permisos justos.

Todo lo anterior aplica a Magento Open Source y a Adobe Commerce instalado o en la nube de Adobe (PaaS). Adobe Commerce as a Cloud Service, la versión SaaS, usa otro esquema de autenticación entre servidores y otras URL.

Producto simple, configurable y el SKU

En Magento el identificador de un producto es el SKU. El cruce con el ERP es el más directo de todas las plataformas: el código de producto del ERP es el SKU de Magento.

Las tallas y colores se modelan con dos tipos de producto:

  • Producto simple. Es lo que se vende y se guarda en stock. Cada talla o color es un producto simple con su propio SKU. El precio se define aquí.
  • Producto configurable. Es el padre que agrupa varios productos simples. El comprador elige talla o color y con eso selecciona uno de los simples.

Crear un configurable por API toma tres pasos:

  1. Crear el producto padre con POST /V1/products y type_id igual a configurable.
  2. Indicar qué atributo es el configurable, por ejemplo la talla, con POST /V1/configurable-products/{sku}/options.
  3. Enlazar cada producto simple con POST /V1/configurable-products/{sku}/child. La llamada acepta un solo childSku, así que se repite por cada hijo.

Como el ERP rara vez sabe qué códigos forman un mismo modelo, lo habitual es que el ERP mantenga los productos simples (código, nombre, precio, stock) y que la agrupación en configurables se arme en Magento. Si tu ERP tiene un campo de familia o modelo, se puede usar para agrupar.

Un punto de visibilidad: en el ejemplo de Adobe, el configurable se crea con visibilidad 4 (catálogo y búsqueda) y los simples con otro valor. Si los simples quedan visibles por separado, cada talla aparece como un producto distinto en la tienda.

Stock por fuente con Inventory Management

Magento 2 incluye Inventory Management, conocido como MSI. Sus conceptos:

Concepto Qué es
Fuente (source) Un lugar físico que guarda y despacha productos: bodega, tienda, centro de distribución
Stock Relaciona un canal de venta, hoy un sitio web, con las fuentes que lo abastecen
Source item La cantidad de un SKU en una fuente
Cantidad vendible La suma del inventario de las fuentes asignadas a un stock
Reserva Descuenta de la cantidad vendible cuando el cliente compra. Se limpia cuando el pedido se despacha

Fuente: Inventory Management, Adobe Developer.

El stock se actualiza con POST /V1/inventory/source-items. Cada elemento lleva sku, source_code, quantity y status (1 con stock, 0 sin stock).

El cruce con el ERP: cada bodega corresponde a una fuente, o varias bodegas se suman en una. Las bodegas internas quedan fuera. Si tienes una sola fuente, Adobe indica que no necesitas administrar source items: los productos quedan en la fuente por defecto.

Dos advertencias de la documentación:

  • Desasignar un producto de una fuente borra toda su información de cantidad en esa fuente.
  • La cantidad vendible no es la cantidad que envió el ERP. Magento le resta las reservas de los pedidos que aún no se despachan.

Lo segundo causa una confusión típica: el ERP dice 10, la tienda muestra 8. Si el ERP ya descontó esos pedidos y además Magento mantiene la reserva, el descuento se aplica dos veces. La reserva se limpia cuando el pedido se despacha en Magento, así que la integración tiene que cerrar el ciclo del pedido y no solo leerlo. Más sobre el tema en sobreventa de stock multicanal.

Precios: base, por grupo y especiales

La API tiene llamadas para cargar precios de muchos productos a la vez:

Tipo de precio Llamada Campos principales
Precio base POST /V1/products/base-prices sku, price, store_id
Precio por grupo y cantidad (tier price) POST o PUT /V1/products/tier-prices sku, price, price_type, website_id, customer_group, quantity
Precio especial POST /V1/products/special-price sku, price, store_id, price_from, price_to
Costo POST /V1/products/cost sku, cost, store_id

Fuente: Manage prices for multiple products, Adobe Developer.

Lo que hay que saber de cada uno:

  • El precio base no se puede borrar. Solo se cambia por otro valor igual o mayor que cero.
  • En los tier prices, price_type puede ser fixed (un precio) o discount (un porcentaje). Usan website_id, no store_id.
  • PUT en tier prices reemplaza todos los precios por grupo de los productos enviados. POST agrega o actualiza.
  • El precio especial solo funciona con el alcance de precio global. En Adobe Commerce la fecha de inicio es obligatoria; en Magento Open Source es opcional.

El cruce con el ERP: la lista de precios principal va como precio base. Una lista mayorista o de convenio va como tier price del grupo de clientes que corresponda, con cantidad 1 si no hay escalas. Así cada cliente ve su precio al iniciar sesión y la lista se sigue manteniendo en el ERP. El modelo completo está en precios por cliente en un ecommerce B2B.

Antes de cargar, confirma si el catálogo de la tienda guarda precios con IVA incluido o sin IVA, y qué lista del ERP corresponde.

Pedidos: lectura, factura y nota de crédito

Los pedidos se leen con GET /V1/orders y un filtro searchCriteria. Este es el ejemplo de la documentación, que trae los pedidos en estado pendiente:

GET /rest/V1/orders?
searchCriteria[filter_groups][0][filters][0][field]=status&
searchCriteria[filter_groups][0][filters][0][value]=pending

Reglas del filtro que conviene tener claras:

  • Los filtros dentro de un mismo grupo se combinan con O. Los grupos entre sí se combinan con Y.
  • Hay operadores para rangos y comparaciones, como gt, gteq, from y to. Sirven para pedir solo lo que cambió desde la última lectura.
  • Si no envías pageSize, la API devuelve todos los resultados. En una tienda con años de pedidos, eso es una llamada muy pesada. Siempre hay que paginar con pageSize y currentPage.
  • El parámetro fields limita los campos de la respuesta.

Lo habitual es leer los pedidos cuando llegan al estado que defines, por ejemplo pagado, y crear en el ERP la nota de venta, la boleta o la factura.

Para cerrar el ciclo:

  • Factura. POST /V1/order/{id}/invoice crea la factura en Magento. En el tutorial de Adobe, después de facturar el pedido queda en estado Processing.
  • Devolución. POST /V1/order/{id}/refund registra un reembolso fuera de línea, y POST /V1/invoice/{id}/refund uno a través del medio de pago en línea. Los dos generan una nota de crédito (credit memo) en Magento.

Ojo con los nombres: la factura y la nota de crédito de Magento son registros internos de la tienda. No son documentos tributarios.

Boleta, factura y RUT

La API de Magento que revisamos no incluye la emisión de documentos tributarios electrónicos ante el SII. El DTE lo emite tu ERP o tu proveedor de facturación.

Para decidir el documento, la regla habitual en Chile es boleta para personas y factura para empresas. Eso exige que el checkout pida el RUT, y la razón social y el giro cuando el comprador quiere factura. El RUT queda en el campo que tu tienda use para eso, por ejemplo el número de identificación fiscal. La integración tiene que saber dónde quedó, validarlo y buscar al cliente en el ERP antes de crearlo.

Las reglas de boleta y factura son las mismas que describimos en facturación electrónica para tiendas online en Chile.

Cargas masivas y asíncronas

Para catálogos grandes existen las rutas bulk. Juntan muchas llamadas del mismo tipo en un arreglo y las procesan por una cola de mensajes. En Magento instalado o en la nube de Adobe, la ruta lleva /async/bulk antes de /V1, por ejemplo POST /rest/<vista>/async/bulk/V1/products.

Requisitos y límites que publica Adobe:

  • Hay que instalar y configurar RabbitMQ, que es el broker por defecto.
  • Los mensajes los procesa el consumidor async.operations.all, que debe estar corriendo.
  • No admiten GET.
  • Las rutas no llevan parámetros: :sku pasa a escribirse bySku.
  • La respuesta trae un bulk_uuid y el estado accepted por cada elemento. Aceptado significa que entró a la cola, no que ya se aplicó.

Errores típicos

  • Token de integración rechazado después de actualizar. El access token ya no funciona solo como Bearer por defecto.
  • SKU distinto al código del ERP. Un espacio, un guion o un cero de más y el producto no cruza.
  • Simples visibles por separado. Cada talla aparece como producto propio en el catálogo.
  • Doble descuento de stock. El ERP ya rebajó el pedido y Magento mantiene la reserva.
  • Desasignar una fuente por error. Se borran las cantidades del producto en esa fuente.
  • PUT en tier prices. Borra los precios por grupo que no venían en la llamada.
  • Leer pedidos sin paginar. La API devuelve todo el historial.
  • Cargas bulk “perdidas”. La cola no tiene consumidor corriendo y los cambios nunca se aplican.

Qué definir antes de partir

  • Qué edición y versión de Magento tienes, y si es instalada, en la nube de Adobe o SaaS.
  • Que el SKU de cada producto simple sea el código del ERP.
  • Qué bodegas alimentan cada fuente, y si usas una o varias.
  • Qué lista es el precio base y qué listas van por grupo de clientes.
  • En qué estado se lee el pedido y qué documento crea en el ERP.
  • Dónde guarda el checkout el RUT, la razón social y el giro.
  • Cómo se cierra el pedido en Magento (factura, despacho) para que se liberen las reservas.

ERPSync con Magento

ERPSync conecta el ERP con Magento Open Source y Adobe Commerce por la API REST. Nuestra especialidad es Softland: en la ficha de Softland con Magento está el detalle de qué se sincroniza, el cruce de campos y los requisitos. El stock y los precios se actualizan cada 5 minutos desde las bodegas y listas que elijas, y cada pedido entra a Softland como nota de venta o factura, con el cliente identificado por RUT.

También trabajamos con otros ERP, previa revisión técnica de tu caso. La lista completa está en integraciones.

Cuesta 0,80 UF al mes por integración, sin límite de pedidos ni de productos. Puede haber un costo inicial, que cotizamos después de revisar tu caso. Hay prueba de 14 días. El detalle está en precios.

Preguntas frecuentes

¿Magento tiene API para conectar un ERP?

Sí. Magento 2 tiene una API REST que cubre productos, inventario, precios, clientes y pedidos. Está en Magento Open Source y en Adobe Commerce.

¿Magento y Adobe Commerce son lo mismo para una integración?

Usan la misma API REST. Hay diferencias puntuales, como la fecha de inicio del precio especial, que es obligatoria en Adobe Commerce. La versión SaaS de Adobe Commerce cambia la autenticación y las URL.

¿Cómo se manejan las tallas y colores?

Cada talla o color es un producto simple con su SKU, igual al código del ERP. Un producto configurable los agrupa para que el comprador elija.

¿Puedo manejar varias bodegas?

Sí, con Inventory Management. Cada bodega del ERP alimenta una fuente de Magento, o varias se suman en una.

¿Por qué la tienda muestra menos stock que el ERP?

Porque Magento resta de la cantidad vendible las reservas de los pedidos que aún no se despachan. La reserva se limpia cuando el pedido se despacha.

¿Magento emite boleta o factura electrónica en Chile?

En la documentación de su API no aparece la emisión de DTE ante el SII. La factura de Magento es un registro interno de la tienda. El documento tributario lo emite tu ERP o tu proveedor de facturación.

Fuentes

Consultadas el 10 de noviembre de 2026.

Escrito por el equipo de ERPSync, especialistas en integraciones con Softland. Quiénes somos

Conecta tu ERP y deja de digitar pedidos

Revisamos tu instalación gratis y te respondemos en menos de un día hábil.