> ## Documentation Index
> Fetch the complete documentation index at: https://docs.finzaria.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Transacciones

> El corazón de Finzaria: tipos de transacción, campos, categoría y papelera.

Una **transacción** es cualquier movimiento de dinero. Crear una ajusta el **saldo** de la(s)
cuenta(s) involucrada(s) de forma atómica.

## Campos

| Campo         | Requerido | Descripción                                                                                                           |
| ------------- | :-------: | --------------------------------------------------------------------------------------------------------------------- |
| `description` |     ✅     | Texto libre ("Café", "Nómina").                                                                                       |
| `amount`      |     ✅     | String decimal positivo (`"150.50"`).                                                                                 |
| `date`        |     ✅     | `YYYY-MM-DD`.                                                                                                         |
| `type`        |           | Tipo (default `expense`) — ver abajo.                                                                                 |
| `accountId`   |           | Cuenta afectada (o `fromAccountId`/`toAccountId` en traspasos).                                                       |
| `category`    |           | [Categoría](/guias/conceptos/categorias) como ruta `"Gastos / Comida / Súper"` (0..1; se crea al vuelo si no existe). |
| `memo`        |           | Nota opcional.                                                                                                        |
| `iou`         |           | Bloque de deuda (solo tipos IOU, ver abajo).                                                                          |

## Tipos

| Tipo                                                                                       | Qué es                                                       | Signo del monto |
| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------ | --------------- |
| `expense`                                                                                  | Gasto                                                        | −               |
| `income`                                                                                   | Ingreso                                                      | +               |
| `transfer`                                                                                 | Traspaso entre tus cuentas (`fromAccountId` → `toAccountId`) | neutro          |
| `refund`                                                                                   | Reembolso                                                    | +               |
| `shared_bill`, `paid_for_friend`, `loan`, `settlement`                                     | Deudas ([IOU](#deudas-iou))                                  | según el caso   |
| `investment_buy`, `investment_sell`, `investment_dividend`, `capital_gain`, `capital_loss` | Inversiones                                                  | según el caso   |

## Traspasos

Un `transfer` mueve dinero entre **tus** cuentas: manda `fromAccountId` y `toAccountId`. Si son de
distinta moneda, incluye `exchangeRate` (o `toAmount`) — ver
[multi-divisa](/guias/conceptos/multi-divisa). Los traspasos **no** cuentan como gasto ni ingreso en
los reportes.

## Deudas (IOU)

Los tipos IOU llevan un bloque `iou` que describe quién pagó y quién debe (una sola clave según el
tipo: `sharedBill`, `paidForFriend`, `loan` o `settlement`). Los contactos inexistentes se crean al
vuelo. Consulta la posición neta con `GET /v1/iou/balances`.

## Estado y papelera

* `status`: `completed` (default), `pending`, `rejected`.
* Borrar (`DELETE`) manda a la **papelera 30 días** revirtiendo el saldo; `POST …/{id}/restore` la
  regresa y re-aplica el saldo. La papelera se lista en `GET /v1/transactions/trash`.

<Tip>
  Para no duplicar al reintentar la creación, usa
  [`Idempotency-Key`](/guias/referencia-transversal/idempotencia).
</Tip>
