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:
- Crear el producto padre con
POST /V1/productsytype_idigual aconfigurable. - Indicar qué atributo es el configurable, por ejemplo la talla, con
POST /V1/configurable-products/{sku}/options. - Enlazar cada producto simple con
POST /V1/configurable-products/{sku}/child. La llamada acepta un solochildSku, 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_typepuede serfixed(un precio) odiscount(un porcentaje). Usanwebsite_id, nostore_id. PUTen tier prices reemplaza todos los precios por grupo de los productos enviados.POSTagrega 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,fromyto. 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 conpageSizeycurrentPage. - El parámetro
fieldslimita 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}/invoicecrea 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}/refundregistra un reembolso fuera de línea, yPOST /V1/invoice/{id}/refunduno 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:
:skupasa a escribirsebySku. - La respuesta trae un
bulk_uuidy el estadoacceptedpor 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.
PUTen 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.
- Authentication, Adobe Developer
- Token-Based Authentication, Adobe Developer
- Create a configurable product tutorial, Adobe Developer
- Step 4. Define configurable product options, Adobe Developer
- Inventory Management, Adobe Developer
- Manage source items, Adobe Developer
- Manage prices for multiple products, Adobe Developer
- Search using REST endpoints, Adobe Developer
- Order processing tutorial, Adobe Developer
- Step 8. Create an invoice, Adobe Developer
- Step 10. Issue a partial refund, Adobe Developer
- Bulk endpoints, Adobe Developer
Escrito por el equipo de ERPSync, especialistas en integraciones con Softland. Quiénes somos