Factuarea API
Facturas proforma

Listar todas las proformas

Lista tus facturas proforma con paginación por cursor.

GET
/proformas
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 de la proforma. Coincidencia exacta en status.

status[in]?string

Estado de la proforma. 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.

series_id?string

Series ID (UUID v7). Coincidencia exacta con series_id.

Formatouuid
series_id[in]?string

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

created[gte]?string

Fecha de creación (ISO 8601). Mayor o igual que el valor dado.

Formatodate-time
created[lte]?string

Fecha de creación (ISO 8601). Menor o igual que el valor dado.

Formatodate-time
created[gt]?string

Fecha de creación (ISO 8601). Estrictamente mayor que el valor dado.

Formatodate-time
created[lt]?string

Fecha de creación (ISO 8601). Estrictamente menor que el valor dado.

Formatodate-time
total[gte]?number

Importe total. Mayor o igual que el valor dado.

total[lte]?number

Importe total. Menor o igual que el valor dado.

total[gt]?number

Importe total. Estrictamente mayor que el valor dado.

total[lt]?number

Importe total. Estrictamente menor que el valor dado.

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 proformas 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 proformas 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, total, number, valid_until. 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" | "total" | "-total" | "number" | "-number" | "valid_until" | "-valid_until"

Cuerpo de la respuesta

application/json

application/json

application/json

application/json

application/json

application/json

{
  "data": [
    {
      "id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a05",
      "object": "proforma",
      "number": "PRO-2026-00007",
      "series": {
        "id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a0e",
        "code": "F-2026"
      },
      "client": {
        "id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a01",
        "name": "Acme Corporation"
      },
      "status": "draft",
      "issued_on": "2026-01-22",
      "valid_until": "2026-02-21",
      "validity_days": 30,
      "reference": "REF-API-2026-001",
      "converted_to_id": null,
      "converted_invoice_number": "F-2025-003",
      "subtotal": 1500,
      "taxes_total": 315,
      "total_vat": 315,
      "total_retention": 0,
      "total_surcharge": 0,
      "total": 1815,
      "shipping_cost": 15.5,
      "total_with_shipping": 1830.5,
      "currency": "EUR",
      "payment_method": "bank_transfer",
      "payment_terms_days": 30,
      "delivery_terms": "Entrega en 5 dias habiles, portes incluidos",
      "estimated_delivery_date": "2026-06-10",
      "notes": "Proforma pendiente de validación.",
      "terms_and_conditions": "Validez 30 dias. Proforma sin valor fiscal hasta su conversion en factura.",
      "external_id": "ERP-PRO-2026-0007",
      "lines": [
        {
          "object": "proforma_line",
          "description": "Setup inicial",
          "product": {
            "id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a09",
            "name": "Consultoría hora estándar"
          },
          "quantity": 1,
          "unit_price": 1500,
          "tax_rate": 21,
          "retention_rate": 0,
          "surcharge_rate": 0,
          "discount_percent": 0,
          "subtotal": 1500,
          "taxes": 315,
          "total": 1815
        }
      ],
      "metadata": {
        "erp_code": "IVA-GEN",
        "ledger_account": "477000"
      },
      "tags": [
        "exportacion",
        "pendiente-validar"
      ],
      "custom_fields": [
        {
          "field": "incoterm",
          "value": "EXW"
        }
      ],
      "link_expires_at": "2026-07-01T09:53:23+02:00",
      "link_is_active": true,
      "created_at": "2026-01-22T09:10:00Z",
      "updated_at": "2026-01-22T09:10: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"
  }
}