API de Wizerp › Crear una venta (cotización o pedido)
Crear una venta (cotización o pedido)
# Crear una venta (cotización o pedido)
POST https://api.wizerp.com/api/v1/ventas
Da de alta una COTIZACIÓN o un PEDIDO. La empresa sale de tu llave. En esta versión no se crean remisiones ni facturas y no se timbra: eso llegará después.
El pedido APARTA inventario (reserva existencias); la cotización no mueve nada. Ninguno de los dos descuenta existencias reales, ni genera cuentas por cobrar, ni pólizas, ni CFDI.
Cada renglón es un PRODUCTO del catálogo ("producto") o un CONCEPTO DE TEXTO LIBRE ("concepto"), nunca los dos, y un documento es todo de catálogo o todo de texto libre. Los IMPUESTOS y TOTALES los calcula siempre el servidor: si mandas un importe o un total, se rechaza. El cliente, el almacén y cada producto deben ser de tu empresa.
PRODUCTO DEL CATÁLOGO: mandas producto, cantidad y precio_unitario (y almacen en el documento). El IVA, el IEPS y las retenciones salen del producto.
TEXTO LIBRE (sólo en COTIZACIÓN, igual que en la pantalla de Ventas): mandas concepto (la descripción), clave_sat (clave de producto o servicio del SAT, p. ej. 84111506), unidad (la clave interna de tu catálogo de unidades o una clave SAT que tengas dada de alta, p. ej. H87), iva (IVA16, IVA08, IVA00 o EXEN), cantidad y precio_unitario; opcional retencion (1 Honorarios, 2 Arrendamiento de inmuebles, 3 Arrendamiento de bienes muebles, 4 Fletes, 5 Desperdicios, 6 Comisionistas, 7 Residentes en el extranjero, 9 Servicio prestado, 10 Retención IVA 100 %). El texto libre no lleva almacén, no admite descuento por renglón (pon el precio ya con descuento) ni IEPS, y no se puede usar en un pedido.
El servidor calcula también el IEPS (si el producto lo causa y el cliente está marcado para IEPS) y las retenciones de IVA e ISR del producto; todo se refleja en el total. No se admiten kits, variantes (longitud, espesor, color o peso) ni productos con número de serie (responden 422). La venta se registra en la matriz (sucursal 0).
condicion_pago es "contado" o "credito". forma_pago_sat y metodo_pago_sat usan las claves del SAT (03 = transferencia; PUE / PPD). uso_cfdi y regimen_receptor usan las claves del SAT y se validan contra el RFC del cliente, igual que en el alta de clientes.
Toda escritura necesita la cabecera Idempotency-Key: un valor único por operación (por ejemplo un UUID) que repites tal cual al reintentar. Con la misma clave y los mismos datos se devuelve la respuesta guardada, sin duplicar; con la misma clave y datos distintos responde 409.
Permiso: ventas:write
## Cuerpo JSON
- `tipo` (texto): Tipo de documento: "cotizacion" o "pedido". Obligatorio.
- `cliente` (entero): Clave del cliente de tu empresa (la de GET /clientes). Obligatorio.
- `almacen` (entero): Clave del almacén de tu empresa (la de GET /almacenes). Obligatorio con productos del catálogo; no aplica a texto libre.
- `moneda` (texto): Código ISO de la moneda (p. ej. MXN). Si lo omites, la moneda de tu empresa.
- `condicion_pago` (texto): "contado" o "credito". Obligatorio.
- `forma_pago_sat` (texto): Clave de forma de pago del SAT (p. ej. 01 efectivo, 03 transferencia).
- `metodo_pago_sat` (texto): Método de pago del SAT: "PUE" (una sola exhibición) o "PPD" (parcialidades).
- `uso_cfdi` (texto): Clave de uso de CFDI del SAT (p. ej. G03). Debe ser compatible con el régimen y el RFC del cliente.
- `regimen_receptor` (entero): Clave del régimen fiscal del SAT del receptor (p. ej. 601, 612).
- `pedido_cliente` (texto): Número de pedido/orden de compra del cliente (texto libre). Máximo 50.
- `renglones` (array): Lista de renglones (1 a 200). Catálogo: producto (clave), cantidad (> 0), precio_unitario, descuento_pct (0 a 100), lista (p. ej. L1), observaciones. Texto libre (sólo cotización): concepto, clave_sat, unidad, iva, cantidad (> 0), precio_unitario y, opcional, retencion.
https://api.wizerp.com/api/v1/ventas
https://api.wizerp.com/api/v1/ventas
Da de alta una COTIZACIÓN o un PEDIDO. La empresa sale de tu llave. En esta versión no se crean remisiones ni facturas y no se timbra: eso llegará después.
El pedido APARTA inventario (reserva existencias); la cotización no mueve nada. Ninguno de los dos descuenta existencias reales, ni genera cuentas por cobrar, ni pólizas, ni CFDI.
Cada renglón es un PRODUCTO del catálogo ("producto") o un CONCEPTO DE TEXTO LIBRE ("concepto"), nunca los dos, y un documento es todo de catálogo o todo de texto libre. Los IMPUESTOS y TOTALES los calcula siempre el servidor: si mandas un importe o un total, se rechaza. El cliente, el almacén y cada producto deben ser de tu empresa.
PRODUCTO DEL CATÁLOGO: mandas producto, cantidad y precio_unitario (y almacen en el documento). El IVA, el IEPS y las retenciones salen del producto.
TEXTO LIBRE (sólo en COTIZACIÓN, igual que en la pantalla de Ventas): mandas concepto (la descripción), clave_sat (clave de producto o servicio del SAT, p. ej. 84111506), unidad (la clave interna de tu catálogo de unidades o una clave SAT que tengas dada de alta, p. ej. H87), iva (IVA16, IVA08, IVA00 o EXEN), cantidad y precio_unitario; opcional retencion (1 Honorarios, 2 Arrendamiento de inmuebles, 3 Arrendamiento de bienes muebles, 4 Fletes, 5 Desperdicios, 6 Comisionistas, 7 Residentes en el extranjero, 9 Servicio prestado, 10 Retención IVA 100 %). El texto libre no lleva almacén, no admite descuento por renglón (pon el precio ya con descuento) ni IEPS, y no se puede usar en un pedido.
El servidor calcula también el IEPS (si el producto lo causa y el cliente está marcado para IEPS) y las retenciones de IVA e ISR del producto; todo se refleja en el total. No se admiten kits, variantes (longitud, espesor, color o peso) ni productos con número de serie (responden 422). La venta se registra en la matriz (sucursal 0).
condicion_pago es "contado" o "credito". forma_pago_sat y metodo_pago_sat usan las claves del SAT (03 = transferencia; PUE / PPD). uso_cfdi y regimen_receptor usan las claves del SAT y se validan contra el RFC del cliente, igual que en el alta de clientes.
Toda escritura necesita la cabecera Idempotency-Key: un valor único por operación (por ejemplo un UUID) que repites tal cual al reintentar. Con la misma clave y los mismos datos se devuelve la respuesta guardada, sin duplicar; con la misma clave y datos distintos responde 409.
Requiere el permiso ventas:write en la llave
Cuerpo JSON
Además, toda escritura necesita la cabecera Idempotency-Key: un valor único por operación (por ejemplo un UUID) que repites tal cual al reintentar.
tipo
texto
obligatorio Tipo de documento: "cotizacion" o "pedido". Obligatorio.
cliente
entero
obligatorio Clave del cliente de tu empresa (la de GET /clientes). Obligatorio.
almacen
entero
Clave del almacén de tu empresa (la de GET /almacenes). Obligatorio con productos del catálogo; no aplica a texto libre.
moneda
texto
Código ISO de la moneda (p. ej. MXN). Si lo omites, la moneda de tu empresa.
condicion_pago
texto
obligatorio "contado" o "credito". Obligatorio.
forma_pago_sat
texto
Clave de forma de pago del SAT (p. ej. 01 efectivo, 03 transferencia).
metodo_pago_sat
texto
Método de pago del SAT: "PUE" (una sola exhibición) o "PPD" (parcialidades).
uso_cfdi
texto
Clave de uso de CFDI del SAT (p. ej. G03). Debe ser compatible con el régimen y el RFC del cliente.
regimen_receptor
entero
Clave del régimen fiscal del SAT del receptor (p. ej. 601, 612).
pedido_cliente
texto
Número de pedido/orden de compra del cliente (texto libre). Máximo 50.
renglones
array
obligatorio Lista de renglones (1 a 200). Catálogo: producto (clave), cantidad (> 0), precio_unitario, descuento_pct (0 a 100), lista (p. ej. L1), observaciones. Texto libre (sólo cotización): concepto, clave_sat, unidad, iva, cantidad (> 0), precio_unitario y, opcional, retencion.