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

# Facturación

> Crea facturas con líneas de detalle e impuesto, pagadas a través de un enlace de pago

## Resumen

Una factura es una cuenta con líneas de detalle, una tasa de impuesto opcional y un cliente. Al crearla se crea automáticamente un pago para liquidarla — comparte el enlace de ese pago con tu cliente y la factura se marca como pagada en el momento en que el pago se completa.

```bash theme={null}
POST /invoices
{
  "currency": "USD",
  "line_items": [
    { "description": "Consultoría — junio", "quantity": 2, "unit_price": 10000 }
  ],
  "tax_percentage": 21,
  "customer": {
    "customer_type": "business",
    "company_name": "Example Co B.V.",
    "email": "billing@example.com"
  },
  "notes": "Gracias por su confianza."
}
```

```json theme={null}
{
  "id": "c9310d0f-6338-4780-b8d2-6a125e258a4a",
  "invoice_number": "INV-2026-4",
  "status": "sent",
  "subtotal": 20000,
  "tax_percentage": 21,
  "tax_total": 4200,
  "total": 24200,
  "payment_id": "pt_EL1yKOzKdv"
}
```

Consulta el pago vinculado (`GET /payments/{id}`, usando el `payment_id` de la respuesta de la factura) para obtener el `shortUrl` compartible para el cliente. Ver [Enlaces de Pago](/es/concepts/payment-links).

## Montos e impuesto

* Todos los campos de dinero son enteros en la **unidad más pequeña de la moneda** (centavos): `unit_price`, `subtotal`, `tax_total`, `total`.
* `subtotal` = Σ `quantity × unit_price`.
* Una única **`tax_percentage`** (0–100) se aplica a todo el subtotal: `tax_total = subtotal × tax_percentage / 100`, y `total = subtotal + tax_total`. No se admiten tasas de impuesto por línea.
* `currency` es la moneda de precios; la liquidación se realiza en USDC como en todo pago de Ebioro.

## Estados de la factura

| Estado    | Significado                                                                           |
| --------- | ------------------------------------------------------------------------------------- |
| `draft`   | Creada pero su enlace de pago no pudo generarse — reintenta creando una nueva factura |
| `sent`    | Creada, enlace de pago activo, a la espera del pago                                   |
| `paid`    | El pago vinculado se completó                                                         |
| `overdue` | `due_at` pasó sin que se recibiera el pago                                            |
| `voided`  | Cancelada vía `POST /invoices/{id}/cancel`                                            |

Cancelar anula la factura y expira su enlace de pago. Una factura pagada no puede cancelarse — reembolsa el pago vinculado en su lugar.

## Clientes

Adjunta un cliente por referencia o de forma directa:

* `customer_id` — vuelve a facturar a un cliente existente.
* `customer` — créalo en la misma llamada: `customer_type` (`individual` | `business`), `name`, `company_name`, `email`, `vat_number`, `address`.

El cliente aparece en la respuesta de la factura y puede reutilizarse mediante su `id` en facturas posteriores.

## Numeración de facturas

Los números se emiten **sin huecos** por comercio: `prefijo + secuencia`. Configura el prefijo mediante los [ajustes de numeración](/api-reference/invoices/update-invoice-settings):

```bash theme={null}
POST /invoices/settings
{ "invoice_prefix": "INV-{year}-", "next_number": 100 }
```

* El token `{year}` se resuelve al año en curso en el momento de la creación (`INV-2026-100`). La secuencia es continua — `{year}` estampa el año pero **no** reinicia el contador cada enero.
* `next_number` solo puede avanzar, de modo que un número ya emitido nunca se vuelve a emitir.
* También puedes pasar un `invoice_number` explícito al crear una factura; el contador sin huecos se omite para esa factura.

`GET /invoices/settings` devuelve el prefijo actual, el número siguiente y una vista previa resuelta (`"INV-2026-5"`).
