DocumentaciónCarrito
Carrito
Cotiza y genera órdenes, sube guías de envío, administra las direcciones de tus clientes y consulta los catálogos de apoyo (métodos de pago, usos de CFDI, fleteras, sucursales, países, estados y colonias).
Cotizar / generar orden
Bearerscope: carritoCotiza un carrito con precios, descuentos y costo de envío ya calculados. En modo de prueba obtienes la cotización completa sin generar el pedido.
curl -X POST https://developers.syscom.mx/api/v1/carrito/generar \
-H 'Authorization: Bearer TU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"testmode": true,
"tipo_entrega": "sucursal",
"direccion": { "sucursal": "chihuahua", "atencion_a": "PRUEBA API" },
"metodo_pago": "transferencia",
"tipo_pago": "PUE",
"moneda": "usd",
"uso_cfdi": "G01",
"productos": [{ "id": 210627, "cantidad": 1, "tipo": "nuevo" }]
}'Cuerpo de la petición
productosarrayrequerido[{ "id": 223114, "cantidad": 2, "tipo": "nuevo" }, ...]Lista de objetos JSON, máximo 50 productos por orden: • id — ID del producto en SYSCOM, el mismo que devuelve /productos; número o texto numérico ("223114"). • cantidad — piezas de ese producto; entero desde 1, número o texto numérico. • tipo — condición de la pieza: nuevo o caja abierta (a, b, c); ver más en la Política Caja Abierta. Si algún producto no existe o no está a la venta, el pedido no se crea: responde 400 (productos_no_encontrados) indicando cuáles. Si algún producto no tiene existencia suficiente, el pedido no se crea.
tipo_entregastringrequeridosucursal (recolección en sucursal SYSCOM), domicilio (envío a domicilio con fletera) u ocurre (envío para recoger en la paquetería), guia_cliente (adjunta tus propias guías).
direccionobject|stringObjeto (o string JSON) con la dirección. Los campos exigidos dependen de tipo_entrega. Todos aceptan texto o número (se convierten a texto). Con tipo_entrega = sucursal: • sucursal — texto, REQUERIDO. Sucursal de recolección; consulta las disponibles en GET /api/v1/carrito/sucursales y usa el valor de "codigo" de su respuesta (p.ej. "chihuahua"). • atencion_a — texto, opcional, max length 120. Quién recoge. Con tipo_entrega = domicilio u ocurre: • atencion_a — texto, requerido, max length 120. Quién recibe. • calle — texto, requerido, max length 100. • num_ext — texto, requerido, max length 20. • num_int — texto, opcional, max length 20. • colonia — texto, requerido, max length 100. • ciudad — texto, requerido, max length 100. • estado — texto, requerido, max length 4 (catálogo de estados). • pais — texto, requerido, max length 3 (catálogo de países). • codigo_postal — texto, requerido, max length 5 en México y 10 para otros países. • telefono — texto, requerido, max length 20.
fleterastringCódigo de fletera (catálogo de fleteras). Obligatoria en entregas a domicilio y por ocurre (en ocurre debe ser terrestre: no se admiten las de día siguiente — estafeta_siguiente, dhl_siguiente — porque el paquete se recoge en la paquetería); en sucursal no se usa. dypaq solo aplica cuando la dirección de entrega tiene cobertura DYPAQ — puedes prevalidarlo con GET /api/v1/carrito/fleteras?codigo_postal=; sin cobertura responde 422 con error_code 9015 ('La fletera no tiene cobertura en la direccion ingresada.').
monedastringusd (def.) o mxn.
uso_cfdistringrequeridoCódigo de uso de CFDI (catálogo de usos de CFDI).
metodo_pagostringrequeridoClave del método de pago (catálogo de métodos de pago): transferencia, sucursal-*, credito-* (7/15/30/30+).
tipo_pagostringPUE (def.) o PPD; afecta forma_pago. En crédito siempre sale PPD (el catálogo solo anuncia PPD en credito-*); en los demás métodos solo PUE (un PPD recibido cae a PUE en silencio).
orden_comprastringReferencia de orden de compra del cliente (opcional).
ordenarflagtrue → convierte la cotización en pedido real (genera folio_pedido y aparta existencias); requiere stock suficiente. Default: false (solo cotización).
testmodeflagtrue → solo cotiza, no genera el pedido (recomendado para pruebas).
forzar_sucursalflagtrue → fuerza a surtir todo desde una sola sucursal, IMPORTANTE: si la sucursal no cuenta con el stock necesario aparecerá error de stock insuficiente. Default: false (se consideran todos los almacenes).
pdf_guiafileSolo en entregas a domicilio y enviando el body como multipart/form-data: adjunta tu guía prepagada, el pedido se envía con tu paquetería y no se cobra flete. jpg/png/jpeg/doc/docx/pdf, máx. 6 MB.
Códigos de estado
Cotización calculada (o error de validación de negocio en { error }).
Algún dato del pedido es inválido o falta: la respuesta incluye detalles[] con el campo, el problema y un ejemplo. También cuando un producto no existe o no está a la venta (code: productos_no_encontrados).
La dirección está bien formada pero no es válida contra el catálogo (país inexistente, código postal que no corresponde al estado, colonia fuera del CP), o la fletera no tiene cobertura en la dirección (error_code 9015). (Con fletera=guia_cliente la dirección no se valida.)
Token ausente, inválido o revocado.
Cuenta sin acceso o sin scope carrito.
Método no permitido (usar POST).
Límite de peticiones excedido.
Pedido real (sin testmode) deshabilitado en el servidor.
Error interno.
Subir guía
Bearerscope: carritoSube tu guía de envío prepagada a tus pedidos: el pedido queda marcado para enviarse con tu paquetería (sin mensajería de SYSCOM). Acepta imágenes y PDF de hasta 6 MB.
curl -X POST https://developers.syscom.mx/api/v1/carrito/guia \
-H 'Authorization: Bearer TU_TOKEN' \
-F 'folio=000000' \
-F '[email protected]'Cuerpo de la petición
foliostringrequeridoFolio de tu pedido o cotización. También funciona el folio de un pedido que ya se procesó.
pdf_guiafilerequeridoArchivo de la guía (jpg/png/jpeg/doc/docx/pdf, máx. 6 MB).
Códigos de estado
Guía registrada (o { error } si: no encontramos ese folio en tu cuenta, el pedido tiene entrega en sucursal, o el formato del archivo es inválido).
folio vacío o ausente, o pdf_guia ausente.
Token ausente, inválido o revocado.
Cuenta sin acceso o sin scope carrito.
Límite de peticiones excedido.
Error interno.
Direcciones de envío
Bearerscope: carritoLista las direcciones de envío guardadas del cliente.
curl 'https://developers.syscom.mx/api/v1/carrito/direcciones' \
-H 'Authorization: Bearer TU_TOKEN'Códigos de estado
Direcciones del cliente (arreglo).
Token ausente, inválido o revocado.
Cuenta sin acceso o sin scope carrito.
Límite de peticiones excedido.
Error interno.
Crear dirección
Bearerscope: carritoGuarda una nueva dirección de envío. Valida el país y, para México, el estado según el código postal.
curl -X POST https://developers.syscom.mx/api/v1/carrito/direcciones \
-H 'Authorization: Bearer TU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"atencion_a": "Juan Perez",
"calle": "Av. Tecnologico",
"num_ext": "1234",
"colonia": "Centro",
"ciudad": "Chihuahua",
"estado": "CHIH",
"pais": "MEX",
"codigo_postal": "31000",
"telefono": "6141234567"
}'Cuerpo de la petición
atencion_astringrequeridoPersona/atención. Max length 120.
callestringrequeridoCalle. Max length 100.
num_extstringrequeridoNúmero exterior. Max length 20.
num_intstringNúmero interior (opcional). Max length 20.
coloniastringrequeridoColonia. Max length 100.
ciudadstringrequeridoCiudad. Max length 100.
estadostringrequeridoCódigo del estado: usa el valor de estado_sat que devuelve /carrito/estados para tu código postal (p.ej. CHIH para Chihuahua; NO es el código numérico SAT). Max length 4 en México y 60 en otros países; en México se valida contra el CP.
paisstringrequeridoCódigo de país, max length 3 (ver /carrito/paises, p.ej. MEX).
codigo_postalstringrequeridoCódigo postal. Max length 5 en México y 10 para otros países.
telefonostringrequeridoTeléfono. Max length 20.
Códigos de estado
Dirección creada.
Faltan parámetros obligatorios de la dirección.
País inexistente, o el código postal no corresponde al estado indicado.
Token ausente, inválido o revocado.
Cuenta sin acceso o sin scope carrito.
Límite de peticiones excedido.
Error interno.
Actualizar dirección
Bearerscope: carritoActualiza una dirección de envío. Debes enviar todos los datos, porque reemplaza la dirección completa.
curl -X PUT https://developers.syscom.mx/api/v1/carrito/direcciones/901 \
-H 'Authorization: Bearer TU_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"atencion_a": "Juan Perez",
"calle": "Av. Tecnologico",
"num_ext": "1234",
"colonia": "Centro",
"ciudad": "Chihuahua",
"estado": "CHIH",
"pais": "MEX",
"codigo_postal": "31000",
"telefono": "6149876543"
}'Parámetros
idnumberrequeridoID de la dirección.
Cuerpo de la petición
atencion_astringrequeridoPersona/atención. Max length 120.
callestringrequeridoCalle. Max length 100.
num_extstringrequeridoNúmero exterior. Max length 20.
num_intstringNúmero interior (opcional). Max length 20.
coloniastringrequeridoColonia. Max length 100.
ciudadstringrequeridoCiudad. Max length 100.
estadostringrequeridoCódigo del estado: usa el valor de estado_sat que devuelve /carrito/estados para tu código postal (p.ej. CHIH para Chihuahua; NO es el código numérico SAT). Max length 4 en México y 60 en otros países; en México se valida contra el CP.
paisstringrequeridoCódigo de país, max length 3 (ver /carrito/paises).
codigo_postalstringrequeridoCódigo postal. Max length 5 en México y 10 para otros países.
telefonostringrequeridoTeléfono. Max length 20.
Códigos de estado
Dirección actualizada.
id inválido o faltan parámetros obligatorios.
País inexistente, o el código postal no corresponde al estado indicado.
Token ausente, inválido o revocado.
Cuenta sin acceso o sin scope carrito.
Límite de peticiones excedido.
Error interno.
Eliminar dirección
Bearerscope: carritoElimina una dirección de envío del cliente.
curl -X DELETE https://developers.syscom.mx/api/v1/carrito/direcciones/901 \
-H 'Authorization: Bearer TU_TOKEN'Parámetros
idnumberrequeridoID de la dirección.
Códigos de estado
Dirección eliminada.
id inválido.
Token ausente, inválido o revocado.
Cuenta sin acceso o sin scope carrito.
Límite de peticiones excedido.
Error interno.
Métodos de pago
Bearerscope: carritoFormas de pago disponibles para el pedido (transferencia, pago en sucursal, crédito, etc.), con su descuento y plazo.
curl 'https://developers.syscom.mx/api/v1/carrito/pago' \
-H 'Authorization: Bearer TU_TOKEN'Códigos de estado
Catálogo de métodos de pago.
Token ausente, inválido, expirado o revocado.
Cuenta sin acceso o scope `carrito` insuficiente.
Límite de peticiones excedido.
Error interno.
Usos de CFDI
Bearerscope: carritoUsos de CFDI disponibles para la facturación del pedido.
curl 'https://developers.syscom.mx/api/v1/carrito/cfdi' \
-H 'Authorization: Bearer TU_TOKEN'Códigos de estado
Catálogo de usos de CFDI.
Token ausente, inválido, expirado o revocado.
Cuenta sin acceso o scope `carrito` insuficiente.
Límite de peticiones excedido.
Error interno.
Fleteras
Bearerscope: carritoPaqueterías disponibles para el envío, indicando cuáles ofrecen entrega al día siguiente. Cada fletera incluye el campo `cobertura`: las nacionales cubren casi todo el país (`estandar`); DYPAQ depende del código postal — sin CP sale como `valide_codigo_postal` (aún no se sabe), y con un CP válido te confirma si tiene cobertura en esa zona (`si`/`no`). Así sabes antes de cotizar si DYPAQ aplica.
curl 'https://developers.syscom.mx/api/v1/carrito/fleteras' \
-H 'Authorization: Bearer TU_TOKEN'Parámetros de consulta
codigo_postalstringOpcional. Código postal de la dirección de entrega (4-5 dígitos). Actualiza el cobertura de DYPAQ: si si cubre esa zona, no si no. Sin este param DYPAQ sale como valide_codigo_postal.
Códigos de estado
Catálogo de fleteras. DYPAQ siempre aparece al final: su `cobertura` es `valide_codigo_postal` sin CP, y `si`/`no` con un ?codigo_postal válido.
codigo_postal con formato inválido (debe ser de 4-5 dígitos).
Token ausente, inválido, expirado o revocado.
Cuenta sin acceso o scope `carrito` insuficiente.
Límite de peticiones excedido.
Error interno.
Sucursales
BearerLista las sucursales de Syscom en México, con su nombre e identificador.
curl 'https://developers.syscom.mx/api/v1/sucursales' \
-H 'Authorization: Bearer TU_TOKEN'Códigos de estado
Lista de sucursales.
Token ausente, inválido, expirado o revocado.
Cuenta sin acceso (gate de distribuidor).
Límite de peticiones excedido.
Error interno.
Países
Bearerscope: carritoPaíses disponibles para las direcciones de envío.
curl 'https://developers.syscom.mx/api/v1/carrito/paises' \
-H 'Authorization: Bearer TU_TOKEN'Códigos de estado
Catálogo de países.
Token ausente, inválido, expirado o revocado.
Cuenta sin acceso o scope `carrito` insuficiente.
Límite de peticiones excedido.
Error interno.
Estado por código postal
Bearerscope: carritoDevuelve el estado y el municipio que corresponden a un código postal.
curl 'https://developers.syscom.mx/api/v1/carrito/estados/31000' \
-H 'Authorization: Bearer TU_TOKEN'Parámetros
cpstringrequeridoCódigo postal (4-5 dígitos).
Códigos de estado
Estado/municipio del código postal.
Código postal inválido (no 4-5 dígitos).
Token ausente, inválido, expirado o revocado.
Cuenta sin acceso o scope `carrito` insuficiente.
Límite de peticiones excedido.
Error interno.
Colonias por código postal
Bearerscope: carritoLista las colonias de un código postal.
curl 'https://developers.syscom.mx/api/v1/carrito/colonias/31000' \
-H 'Authorization: Bearer TU_TOKEN'Parámetros
cpstringrequeridoCódigo postal (4-5 dígitos).
Códigos de estado
Colonias del código postal.
Código postal inválido (no 4-5 dígitos).
Token ausente, inválido, expirado o revocado.
Cuenta sin acceso o scope `carrito` insuficiente.
Límite de peticiones excedido.
Error interno.