Editar una factura en borrador
const url = 'https://api.dev.lade.com.mx/invoices/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = { method: 'PUT', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"teamId":"550e8400-e29b-41d4-a716-446655440000","items":[{"description":"Servicio de transporte de carga","quantity":1,"price":10000,"productKey":"78101500","unitKey":"E48","taxRate":0.16}],"paymentForm":"03","paymentMethod":"PUE","cfdiUse":"G03"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PUT \ --url https://api.dev.lade.com.mx/invoices/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "teamId": "550e8400-e29b-41d4-a716-446655440000", "items": [ { "description": "Servicio de transporte de carga", "quantity": 1, "price": 10000, "productKey": "78101500", "unitKey": "E48", "taxRate": 0.16 } ], "paymentForm": "03", "paymentMethod": "PUE", "cfdiUse": "G03" }'Edita una factura en estado DRAFT o ERROR antes de timbrarla: conceptos reales, precios y datos de Carta Porte. El borrador automático creado al registrar el viaje trae valores placeholder (precio 0, concepto genérico); así es como el equipo lo convierte en un CFDI real. Reemplazo completo de items/cartaPorte — el frontend envía el borrador completo editado. Si la factura estaba en ERROR, editarla la regresa a DRAFT.
Authorizations
Sección titulada «Authorizations»Parameters
Sección titulada «Parameters»Path Parameters
Sección titulada «Path Parameters»ID de la factura (UUID)
Request Bodyrequired
Sección titulada «Request Bodyrequired»object
object
Clave de producto/servicio SAT (catálogo c_ClaveProdServ)
Clave de unidad SAT (catálogo c_ClaveUnidad)
Datos del complemento Carta Porte 3.1 que el frontend arma para PUT /invoices/{id}. El backend los combina con los datos del vehículo/conductor del viaje para construir el complemento completo que se envía a Facturapi.
object
Distancia total recorrida en km
object
ISO datetime, ej. 2025-12-18T05:00:00
Km, solo aplica en Destino
object
Código de 4 dígitos, catálogo SAT
Código de 3 letras SAT, ej. NLE, JAL, MEX
object
ISO datetime, ej. 2025-12-18T05:00:00
Km, solo aplica en Destino
object
Código de 4 dígitos, catálogo SAT
Código de 3 letras SAT, ej. NLE, JAL, MEX
object
Clave SAT de bienes transportados
Example
{ "teamId": "550e8400-e29b-41d4-a716-446655440000", "items": [ { "description": "Servicio de transporte de carga", "quantity": 1, "price": 10000, "productKey": "78101500", "unitKey": "E48", "taxRate": 0.16 } ], "paymentForm": "03", "paymentMethod": "PUE", "cfdiUse": "G03"}Responses
Sección titulada «Responses»Factura actualizada
object
object
DRAFT: borrador editable (creado automáticamente al crear un viaje). PENDING: timbrado en curso (lock atómico). VALID: timbrada. CANCELLED/CANCELLED_PENDING: cancelada (inmediata o en proceso ante el SAT). ERROR: falló el último intento de timbrado, editable de nuevo.
Clave SAT c_FormaPago, ej. 03=Transferencia
Clave SAT c_UsoCFDI, ej. G03=Gastos en general
object
Clave de producto/servicio SAT (catálogo c_ClaveProdServ)
Clave de unidad SAT (catálogo c_ClaveUnidad)
Datos del complemento Carta Porte 3.1 que el frontend arma para PUT /invoices/{id}. El backend los combina con los datos del vehículo/conductor del viaje para construir el complemento completo que se envía a Facturapi.
object
Distancia total recorrida en km
object
ISO datetime, ej. 2025-12-18T05:00:00
Km, solo aplica en Destino
object
Código de 4 dígitos, catálogo SAT
Código de 3 letras SAT, ej. NLE, JAL, MEX
object
ISO datetime, ej. 2025-12-18T05:00:00
Km, solo aplica en Destino
object
Código de 4 dígitos, catálogo SAT
Código de 3 letras SAT, ej. NLE, JAL, MEX
object
Clave SAT de bienes transportados
Example
{ "message": "Invoice updated successfully", "invoice": { "id": "990e8400-e29b-41d4-a716-446655440004", "status": "DRAFT", "subtotal": 10000, "taxAmount": 1600, "total": 11600 }}Solicitud inválida
object
Example
{ "error": "Validation failed", "field": "email", "message": "Invalid email format"}Sin permisos
object
Example
{ "error": "Forbidden", "message": "You don't have permission to access this resource"}Recurso no encontrado
object
Example
{ "error": "Not found", "message": "Resource not found"}Error al comunicarse con el proveedor externo (Facturapi/Stripe)
object
Example
{ "error": "Facturapi error: the CSD certificate is invalid"}