Factuarea API
Facturas recurrentes

Listar todas las facturas recurrentes

Lista tus plantillas de facturas recurrentes con paginación por cursor.

GET
/recurring_invoices
AuthorizationBearer <token>

En: header

Parámetros de consulta

limit?integer

Número de objetos a devolver. Entero entre 1 y 100. Por defecto 25.

Predeterminado25
Rango1 <= value <= 100
starting_after?string

Cursor para paginación hacia delante. Usa el uuid del último objeto de la página anterior.

Formatouuid
ending_before?string

Cursor para paginación hacia atrás. Usa el uuid del primer objeto de la página actual.

Formatouuid
status?string

Estado del plan recurrente. Coincidencia exacta en status.

status[in]?string

Estado del plan recurrente. Lista separada por comas. Coincide cualquiera de los valores.

client_id?string

Client ID (UUID v7). Coincidencia exacta con client_id.

Formatouuid
client_id[in]?string

Client ID (UUID v7). Lista separada por comas. Coincide cualquiera de los valores.

frequency?string

Frecuencia de emisión (p. ej. mensual, anual). Coincidencia exacta con frequency.

frequency[in]?string

Frecuencia de emisión (p. ej. mensual, anual). Lista separada por comas. Coincide cualquiera de los valores.

next_run_at[gte]?string

Fecha de próxima ejecución. Mayor o igual que el valor indicado.

Formatodate-time
next_run_at[lte]?string

Fecha de próxima ejecución. Menor o igual que el valor indicado.

Formatodate-time
next_run_at[gt]?string

Fecha de próxima ejecución. Estrictamente mayor que el valor indicado.

Formatodate-time
next_run_at[lt]?string

Fecha de próxima ejecución. Estrictamente menor que el valor indicado.

Formatodate-time
tags?string

Filtrar por tag de clasificación (slug en minúscula). Admite múltiples valores con tags[in]=a,b (JSON_CONTAINS, semántica OR — coincide con las facturas recurrentes que llevan CUALQUIERA de los tags). Coincidencia exacta sobre tags.

tags[in]?string

Filtrar por tag de clasificación (slug en minúscula). Admite múltiples valores con tags[in]=a,b (JSON_CONTAINS, semántica OR — coincide con las facturas recurrentes que llevan CUALQUIERA de los tags). Lista separada por comas. Coincide cualquiera de los valores.

sort?string

Orden de los resultados. Usa un campo para ascendente o un prefijo - para descendente (p. ej. -created). Campos permitidos: created, next_run_at. Combinado con el cursor, el orden se mantiene determinista (un orden secundario estable por el id del cursor, al estilo Stripe). Si se omite, los resultados siguen el orden de cursor por defecto (created descendente).

Valor en"created" | "-created" | "next_run_at" | "-next_run_at"

Cuerpo de la respuesta

application/json

application/json

application/json

application/json

application/json

application/json

{
  "data": [
    {
      "id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a08",
      "object": "recurring_invoice",
      "client": {
        "id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a01",
        "name": "Acme Corporation"
      },
      "series": {
        "id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a0e",
        "code": "F-2026"
      },
      "status": "active",
      "frequency": "monthly",
      "name": "Cuota mantenimiento mensual Acme",
      "description": "Contrato de soporte y mantenimiento Plan Pro",
      "notes": "Renovación automática. Facturar el día 1 de cada mes.",
      "email_to": "facturacion@acme.example",
      "send_automatically": true,
      "days_before_due": 30,
      "max_occurrences": 12,
      "occurrences_count": 3,
      "remaining_occurrences": 9,
      "holiday_handling": "next_business_day",
      "start_on": "2026-01-01",
      "end_on": "2026-12-31",
      "next_run_at": "2026-02-01T09:00:00Z",
      "last_run_at": "2026-01-01T09:00:00Z",
      "cancelled_at": null,
      "subtotal": 200,
      "taxes_total": 42,
      "total": 242,
      "currency": "EUR",
      "lines": [
        {
          "object": "recurring_invoice_line",
          "description": "Cuota soporte mensual",
          "quantity": 1,
          "unit_price": 200,
          "tax_rate": 21,
          "retention": 0,
          "surcharge": 0,
          "subtotal": 200,
          "taxes": 42,
          "total": 242
        }
      ],
      "metadata": {
        "erp_code": "IVA-GEN",
        "ledger_account": "477000"
      },
      "external_id": "ERP-REC-2026-0008",
      "tags": [
        "suscripcion",
        "mantenimiento"
      ],
      "custom_fields": [
        {
          "field": "contrato",
          "value": "CTR-2026-0007"
        }
      ],
      "created_at": "2025-12-20T15:00:00Z",
      "updated_at": "2026-01-01T09:05:00Z"
    }
  ],
  "has_more": true,
  "next_cursor": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a0c"
}

{
  "error": {
    "type": "authentication_error",
    "code": "missing_api_key",
    "message": "No se ha proporcionado una API key válida en el header Authorization.",
    "param": null,
    "doc_url": "https://docs.factuarea.com/guides/errors#missing_api_key",
    "request_id": "req_01HKQS5N8VR7QXJ9K3T6BWPMZA"
  }
}

{
  "error": {
    "type": "authorization_error",
    "code": "insufficient_scope",
    "message": "Esta API key no tiene el scope requerido para esta operación.",
    "param": null,
    "doc_url": "https://docs.factuarea.com/guides/errors#insufficient_scope",
    "request_id": "req_01HKQS5NBC3P8M1KX4V7SLNHQD"
  }
}

{
  "error": {
    "type": "invalid_request_error",
    "code": "parameter_invalid",
    "message": "El campo `name` es obligatorio y no puede estar vacío.",
    "param": "name",
    "doc_url": "https://docs.factuarea.com/guides/errors#parameter_invalid",
    "request_id": "req_01HKQS5NGS8Z3T6Q1D2E7FYVSI"
  }
}

{
  "error": {
    "type": "rate_limit_error",
    "code": "rate_limit_exceeded",
    "message": "Has excedido el rate limit de 60 peticiones por minuto. Reintenta tras 30 segundos.",
    "param": null,
    "doc_url": "https://docs.factuarea.com/guides/errors#rate_limit_exceeded",
    "request_id": "req_01HKQS5NKW1C6W9T4G5H0JBZVL"
  }
}

{
  "error": {
    "type": "api_error",
    "code": "internal_error",
    "message": "Ha ocurrido un error inesperado. Si persiste, contacta con soporte adjuntando el request_id.",
    "param": null,
    "doc_url": "https://docs.factuarea.com/guides/errors#internal_error",
    "request_id": "req_01HKQS5NLX2D7X0U5H6J1KCAWM"
  }
}