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