Saltar al contenido
oden.tax docs

Productos

No hay /v1/products: los productos se guardan en el panel, en Productos y servicios. Lo que sí hace la API es usarlos, y una factura puede llevar partidas guardadas y partidas escritas a mano en la misma llamada.

Para qué sirve guardar uno: las dos claves del SAT son la parte que nadie quiere volver a teclear, y equivocarse en una es un rechazo. Con product_id la partida hereda lo que no diga.

Los campos de una partida

description
requerido*
Lo que se vendió, en palabras. Es lo que lee tu cliente.
quantity
opcional
Cuántas unidades, hasta seis decimales. 1 si no la dices.
unit_price
requerido*
Como texto con dos decimales. Un float perdería centavos.
product_service_key
requerido*
La clave del catálogo c_ClaveProdServ.
unit_key
requerido*
La clave del catálogo c_ClaveUnidad.
discount
opcional
El descuento de esa partida. No puede ser mayor que su importe.
tax_object
opcional
Del catálogo c_ObjetoImp: 01, 02, 03 o 04. 02 si no lo dices, que es la partida ordinaria.
vat_rate
opcional
La tasa de IVA de esa partida: 0.16, 0.08 o 0. Una factura puede mezclarlas.
withholding_rate
opcional
ISR retenido en esa partida: 0.0125, 0.10 o 0.
vat_withholding_rate
opcional
IVA retenido en esa partida: una tasa de ley (0.106667, 0.04, 0.06) o una a menos de 0.0001 de ella, o 0.
tax_factor
opcional
Tasa o Exento. Exento no es lo mismo que vat_rate 0: la partida se desglosa sin trasladar importe.
ieps_rate / ieps_quota
opcional
El IEPS, a tasa o a cuota, nunca los dos. ieps_in_vat_base: false lo saca de la base del IVA.
identification_number
opcional
El NoIdentificacion: tu clave del producto o su número de serie. Hasta 100 caracteres y sin |.
product_id
opcional
Un producto guardado del emisor que timbra, que rellena lo que la partida no diga. De otro emisor contesta not_found.

Los marcados con asterisco son obligatorios sólo si la partida no nombra un producto que ya los tenga. Sin ellos, contestamos validation_failed.

La tasa es de la partida

Una misma factura puede llevar honorarios al 16% y medicinas al 0%, y el comprobante agrupa los traslados por tasa. La vat_rate del comprobante, si la mandas, es sólo el default de las partidas que no digan la suya.

tax_object es otra pregunta, no la misma: una partida al 0% sí es objeto de impuesto y se desglosa, mientras que una 01 no lleva nodo de impuestos en absoluto. No son intercambiables, porque cambian lo que tu cliente puede acreditar.