---
title: "Registrar consumo del huésped"
method: POST
path: "/api/v1/external_consumptions"
tags: ["Consumos Externos"]
---

# Registrar consumo del huésped

`POST /api/v1/external_consumptions`

## Request

- Base URL: `https://aos.ayenda.co`
- URL: `https://aos.ayenda.co/api/v1/external_consumptions`
- Auth: none required

Registra un consumo externo (ej. restaurante o bar) sobre la reserva de un huésped
hospedado, cuando el huésped pide cargarlo a su habitación. El consumo queda como
cuenta por cobrar en estado `pending`, visible en la reserva para que recepción lo
cobre manualmente. Se autentica con el API Key de integración externa (header
`X-Api-Key`) y con el token del socio de consumo que registra el cargo (header
`X-Api-Token`).

Los reintentos son idempotentes: si se envía de nuevo un consumo con la misma
reserva, `partner` y `external_reference`, y los mismos `room_name`,
`identification_number`, `description`, `amount` e `invoice_pdf_url`, no se crea otro
y responde `200` con el `id` del existente. `consumed_at` no se compara.

## Headers

- `X-Api-Key` string, required
- `X-Api-Token` string, required

## Request body

- object
  - `external_consumption` object, required
    - `hotel_reservation_id` integer, required: ID de la reserva: el `reservation_id` que retorna `GET /api/v1/reservations/find_by`. La reserva debe estar en `checkin_registered`.
    - `external_reference` string, required: Identificador del consumo en el sistema que lo registra. Junto con la reserva y `partner` identifica el consumo en los reintentos.
    - `room_name` string, required: Habitación a la que se carga el consumo. Debe ser una de las `room_names` de la reserva.
    - `identification_number` string, required: Número de documento del huésped que pide el cargo. Debe ser uno de los huéspedes de la reserva.
    - `amount` number, required: Valor del consumo, mayor o igual a 0.
    - `invoice_pdf_url` string, required: URL del PDF de la factura del consumo. No se puede repetir entre consumos.
    - `description` string, nullable: Texto libre sobre el consumo. Opcional.
    - `partner` 'restobar', required: Sistema que registra el consumo.
    - `consumed_at` string, date-time, required: Fecha y hora del consumo. La fecha debe caer entre la llegada y la salida de la reserva.

## Response `200`

ok — retry idempotente: misma factura enviada dos veces con datos idénticos

- object
  - `data` object, required
    - `id` integer, required: ID del consumo registrado. En un reintento idempotente es el del consumo existente.

## Other responses

- `201`: created
- `400`: bad request
- `401`: unauthorized. Casos: - `X-Api-Key` inválido - falta el `X-Api-Token` - el `X-Api-Token` no corresponde a ningún socio de consumo - el socio de consumo está inactivo
- `422`: unprocessable entity. Casos: - `partner` no reconocido - la reserva no existe o pertenece a otro hotel - la reserva no está en checkin - `consumed_at` fuera del rango de la reserva - mismo `external_reference` con datos distintos - `invoice_pdf_url` ya usado en otro consumo - datos inválidos (p. ej. `amount` negativo)

---

[API](https://skmtc.dev/loggro/apis/pms-api-v1.md) - [All operations](https://skmtc.dev/loggro/apis/pms-api-v1/llms.txt) - [OpenAPI document](https://skmtc.dev/loggro/apis/pms-api-v1/revisions/42f79a85a9d1?raw)
