Cerrar (finalizar) una reserva de caja
PATCH
/teams/{teamId}/box-reservations/{reservationId}/close
const url = 'https://api.dev.lade.com.mx/teams/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/box-reservations/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/close';const options = { method: 'PATCH', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"actualEndAt":"2026-07-30T18:00:00Z"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url https://api.dev.lade.com.mx/teams/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/box-reservations/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/close \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "actualEndAt": "2026-07-30T18:00:00Z" }'Finaliza una reserva ACTIVA: calcula los días facturables (mínimo 1 día aunque dure horas, redondeado hacia arriba) y el monto total, libera la caja a DISPONIBLE, y — si la renta es facturable y el monto es mayor a 0 — genera un borrador de factura automáticamente (best-effort: si Facturapi falla, la reserva igual queda cerrada y se crea una alerta BOX_RENTAL_INVOICE_DRAFT_FAILED para generar la factura a mano). Falla con 409 si la reserva no está ACTIVA.
Authorizations
Sección titulada «Authorizations»Parameters
Sección titulada «Parameters»Path Parameters
Sección titulada «Path Parameters»teamId
required
string format: uuid
ID del equipo (UUID)
reservationId
required
string format: uuid
ID de la reserva/renta de caja (UUID)
Request Body
Sección titulada «Request Body»Media typeapplication/json
object
actualEndAt
Default: ahora
string format: date-time
Example
{ "actualEndAt": "2026-07-30T18:00:00Z"}Responses
Sección titulada «Responses»Reserva cerrada
Media typeapplication/json
object
message
string
reservationId
string format: uuid
billedDays
integer
totalAmount
number
invoiceId
string
Example
{ "message": "Box reservation closed successfully", "reservationId": "dd0e8400-e29b-41d4-a716-446655440008", "billedDays": 4, "totalAmount": 1000, "invoiceId": "990e8400-e29b-41d4-a716-446655440004"}Solicitud inválida
Media typeapplication/json
object
error
required
string
message
string
field
string
Example
{ "error": "Validation failed", "field": "email", "message": "Invalid email format"}Sin permisos
Media typeapplication/json
object
error
required
string
message
string
field
string
Example
{ "error": "Forbidden", "message": "You don't have permission to access this resource"}Recurso no encontrado
Media typeapplication/json
object
error
required
string
message
string
field
string
Example
{ "error": "Not found", "message": "Resource not found"}Conflicto con recurso existente
Media typeapplication/json
object
error
required
string
message
string
field
string
Example
{ "error": "Conflict", "message": "Resource already exists"}