Iniciar sesiónObtener credencialesRun in Postman

DocumentaciónCarrito

Carrito

Bearer · scope 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).

POST/api/v1/carrito/generar

Cotizar / generar orden

Bearerscope: carrito

Cotiza 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. Si un producto no se puede surtir completo desde un solo almacén, se reparte entre varios siguiendo el orden de cercanía a tu dirección, y su campo almacenes muestra cada almacén con sus piezas (p.ej. {"Guadalajara": 1, "Villahermosa": 2}). Si el producto es un kit, la respuesta incluye sus componentes con el almacén que surte cada uno. Cuando un kit no se puede armar completo desde un solo almacén y sus componentes salen de varios, en su campo almacenes se reporta como "multiples_almacenes" (y cada componente indica su almacén real). Los kits y productos que sí se completan de un almacén muestran el nombre real del almacén.

tipo_entregastringrequerido

sucursal (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|string

Objeto (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.

fleterastring

Có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.').

monedastring

usd (def.) o mxn.

uso_cfdistringrequerido

Código de uso de CFDI (catálogo de usos de CFDI).

metodo_pagostringrequerido

Clave del método de pago (catálogo de métodos de pago): transferencia, sucursal-*, credito-* (7/15/30/30+).

tipo_pagostring

PUE (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_comprastring

Referencia de orden de compra del cliente (opcional).

ordenarflag

true → convierte la cotización en pedido real (genera folio_pedido y aparta existencias); requiere stock suficiente. Default: false (solo cotización). Si un kit no tiene existencia suficiente, el mensaje de error puede terminar en "(limita: <código>)", indicando qué componente es el que falta.

testmodeflag

true → solo cotiza, no genera el pedido (recomendado para pruebas).

forzar_sucursalflag

true → 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_guiafile

Solo 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

200

Cotización calculada (o error de validación de negocio en { error }).

400

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): en ese caso values trae la lista de ids que no existen o no están a la venta.

422

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.)

401

Token ausente, inválido o revocado.

403

Cuenta sin acceso o sin scope carrito.

405

Método no permitido (usar POST).

429

Límite de peticiones excedido.

501

Pedido real (sin testmode) deshabilitado en el servidor.

500

Error interno.

POST/api/v1/carrito/guia

Subir guía

Bearerscope: carrito

Sube 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

foliostringrequerido

Folio de tu pedido o cotización. También funciona el folio de un pedido que ya se procesó.

pdf_guiafilerequerido

Archivo de la guía (jpg/png/jpeg/doc/docx/pdf, máx. 6 MB).

Códigos de estado

200

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).

400

folio vacío o ausente, o pdf_guia ausente.

401

Token ausente, inválido o revocado.

403

Cuenta sin acceso o sin scope carrito.

429

Límite de peticiones excedido.

500

Error interno.

GET/api/v1/carrito/direcciones

Direcciones de envío

Bearerscope: carrito

Lista 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

200

Direcciones del cliente (arreglo).

401

Token ausente, inválido o revocado.

403

Cuenta sin acceso o sin scope carrito.

429

Límite de peticiones excedido.

500

Error interno.

POST/api/v1/carrito/direcciones

Crear dirección

Bearerscope: carrito

Guarda 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_astringrequerido

Persona/atención. Max length 120.

callestringrequerido

Calle. Max length 100.

num_extstringrequerido

Número exterior. Max length 20.

num_intstring

Número interior (opcional). Max length 20.

coloniastringrequerido

Colonia. Max length 100.

ciudadstringrequerido

Ciudad. Max length 100.

estadostringrequerido

Có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.

paisstringrequerido

Código de país, max length 3 (ver /carrito/paises, p.ej. MEX).

codigo_postalstringrequerido

Código postal. Max length 5 en México y 10 para otros países.

telefonostringrequerido

Teléfono. Max length 20.

Códigos de estado

200

Dirección creada.

400

Faltan parámetros obligatorios de la dirección.

422

País inexistente, o el código postal no corresponde al estado indicado.

401

Token ausente, inválido o revocado.

403

Cuenta sin acceso o sin scope carrito.

429

Límite de peticiones excedido.

500

Error interno.

PUT/api/v1/carrito/direcciones/{id}

Actualizar dirección

Bearerscope: carrito

Actualiza 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

idnumberrequerido

ID de la dirección.

Cuerpo de la petición

atencion_astringrequerido

Persona/atención. Max length 120.

callestringrequerido

Calle. Max length 100.

num_extstringrequerido

Número exterior. Max length 20.

num_intstring

Número interior (opcional). Max length 20.

coloniastringrequerido

Colonia. Max length 100.

ciudadstringrequerido

Ciudad. Max length 100.

estadostringrequerido

Có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.

paisstringrequerido

Código de país, max length 3 (ver /carrito/paises).

codigo_postalstringrequerido

Código postal. Max length 5 en México y 10 para otros países.

telefonostringrequerido

Teléfono. Max length 20.

Códigos de estado

200

Dirección actualizada.

400

id inválido o faltan parámetros obligatorios.

422

País inexistente, o el código postal no corresponde al estado indicado.

401

Token ausente, inválido o revocado.

403

Cuenta sin acceso o sin scope carrito.

429

Límite de peticiones excedido.

500

Error interno.

DELETE/api/v1/carrito/direcciones/{id}

Eliminar dirección

Bearerscope: carrito

Elimina 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

idnumberrequerido

ID de la dirección.

Códigos de estado

200

Dirección eliminada.

400

id inválido.

401

Token ausente, inválido o revocado.

403

Cuenta sin acceso o sin scope carrito.

429

Límite de peticiones excedido.

500

Error interno.

GET/api/v1/carrito/pago

Métodos de pago

Bearerscope: carrito

Formas 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

200

Catálogo de métodos de pago.

401

Token ausente, inválido, expirado o revocado.

403

Cuenta sin acceso o scope `carrito` insuficiente.

429

Límite de peticiones excedido.

500

Error interno.

GET/api/v1/carrito/cfdi

Usos de CFDI

Bearerscope: carrito

Usos 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

200

Catálogo de usos de CFDI.

401

Token ausente, inválido, expirado o revocado.

403

Cuenta sin acceso o scope `carrito` insuficiente.

429

Límite de peticiones excedido.

500

Error interno.

GET/api/v1/carrito/fleteras

Fleteras

Bearerscope: carrito

Paqueterí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_postalstring

Opcional. 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

200

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.

400

codigo_postal con formato inválido (debe ser de 4-5 dígitos).

401

Token ausente, inválido, expirado o revocado.

403

Cuenta sin acceso o scope `carrito` insuficiente.

429

Límite de peticiones excedido.

500

Error interno.

GET/api/v1/sucursales

Sucursales

Bearer

Lista 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

200

Lista de sucursales.

401

Token ausente, inválido, expirado o revocado.

403

Cuenta sin acceso (gate de distribuidor).

429

Límite de peticiones excedido.

500

Error interno.

GET/api/v1/carrito/paises

Países

Bearerscope: carrito

Paí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

200

Catálogo de países.

401

Token ausente, inválido, expirado o revocado.

403

Cuenta sin acceso o scope `carrito` insuficiente.

429

Límite de peticiones excedido.

500

Error interno.

GET/api/v1/carrito/estados/{cp}

Estado por código postal

Bearerscope: carrito

Devuelve 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

cpstringrequerido

Código postal (4-5 dígitos).

Códigos de estado

200

Estado/municipio del código postal.

400

Código postal inválido (no 4-5 dígitos).

401

Token ausente, inválido, expirado o revocado.

403

Cuenta sin acceso o scope `carrito` insuficiente.

429

Límite de peticiones excedido.

500

Error interno.

GET/api/v1/carrito/colonias/{cp}

Colonias por código postal

Bearerscope: carrito

Lista las colonias de un código postal.

curl 'https://developers.syscom.mx/api/v1/carrito/colonias/31000' \
  -H 'Authorization: Bearer TU_TOKEN'

Parámetros

cpstringrequerido

Código postal (4-5 dígitos).

Códigos de estado

200

Colonias del código postal.

400

Código postal inválido (no 4-5 dígitos).

401

Token ausente, inválido, expirado o revocado.

403

Cuenta sin acceso o scope `carrito` insuficiente.

429

Límite de peticiones excedido.

500

Error interno.