# API de Pagos para Rentals

Documentación de integración de pagos para plataformas de alquiler vacacional que operan con **EPN (Ecopaynet)** como pasarela de cobro y **Payphone** para dispersión de fondos a propietarios.

#### Arquitectura

```
Cliente (PMS) → PayHub API → EPN (cobro) → Payphone (dispersión a propietarios)
```

#### Flujo de pago completo

1. **Programar pagos** (`POST /reservations`) — asocia N cobros futuros a una reserva.
2. **Ejecución automática** — AWS EventBridge ejecuta cada cobro en la fecha programada.
3. **Cobro vía EPN** — se ejecuta la operación Sale con token de tarjeta.
4. **Dispersión Payphone** — si el cobro es exitoso, PayHub encola las dispersiones:
   * **Pagos Masivos**: transferencias entre cuentas Payphone (Business/Personal).
   * **Payouts**: transferencias a cuentas bancarias Ecuador.
5. **Batch diario** — las dispersiones se ejecutan en lote cada día.

#### Autenticación

Todos los endpoints (excepto webhooks) requieren un token JWT Bearer:

```
Authorization: Bearer <access_token>
```

Los tokens se obtienen en `/auth/token` y **no expiran**.

#### Códigos de error

| Código | Significado                             |
| ------ | --------------------------------------- |
| `400`  | Datos inválidos o faltantes             |
| `401`  | Token JWT ausente o inválido            |
| `402`  | Pago rechazado por la pasarela          |
| `404`  | Recurso no encontrado                   |
| `409`  | Conflicto (schedule ya ejecutado, etc.) |
| `502`  | Error en pasarela externa (EPN)         |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://payphone-api-rentals.gitbook.io/lifestylerapi/api-de-pagos-para-rentals.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
