Cómo hacer una factura rectificativa por API
Desde la versión 2024.94 de FacturaScripts es posible crear facturas rectificativas con una sola petición POST a la API, utilizando el endpoint crearFacturaRectificativaCliente.
POST /api/3/crearFacturaRectificativaCliente
Antes de crear una factura rectificativa
Recuerda que una factura rectificativa siempre parte de una factura normal. Por tanto, primero necesitas tener una factura de cliente ya creada.
📷 Ejemplo de factura original:

Crear factura rectificativa
Haremos una petición POST al endpoint crearFacturaRectificativaCliente y le pasaremos los siguientes campos:
idfactura: el ID de la factura original (obligatorio).fecha: fecha en la que se hace la rectificación (obligatorio).hora: hora exacta.refund_1: cantidad a devolverrefund_2: cantidad a devolverrefund_3: cantidad a devolver
Opcionalmente también se pueden enviar codserie, nick, observaciones e idestado para la nueva factura rectificativa.
Se debe enviar tantas variables refund como líneas necesitemos devolver, donde el número debe ser el id de la línea original. Si queremos devolver 2 unidades de la línea 4 el ejemplo sería: refund_4: 2
📷 Resultado de la rectificación:

Esta operación crea automáticamente una nueva factura rectificativa, que referencia a la original. Puedes ver cuál ha sido la factura original a través del campo idfacturarect.
Si todo va bien, la API responde con código HTTP 200 y un objeto JSON con la nueva factura rectificativa y sus líneas (doc y lines). Si algo falla, devuelve un objeto con status a error y un message con el detalle (por ejemplo, 400 si falta idfactura o fecha, o 404 si la factura original no existe).
📷 Relación entre factura original y rectificativa:

Ver si una factura ha sido rectificada
Si quieres comprobar si una factura ha sido rectificada, simplemente haz una búsqueda de facturas donde idfacturarect sea igual al idfactura que quieres comprobar. Si la lista está vacía, es que aún no ha sido rectificada.
📷 Ejemplo de listado de facturas rectificadas:

Si necesitas más detalles sobre cómo funciona internamente este proceso, puedes revisar el fichero del endpoint en GitHub: