Factuarea API
Factures

Llistar totes les factures

Llista les teves factures de venda amb paginació per cursor. Admet filtratge per `status[in]`, `client_id`, `series_id`, `issued_on[gte|lte]` i `total[gte|lte]`.

GET
/invoices
AuthorizationBearer <token>

A: header

Paràmetres de consulta

original_invoice_id?|
Formatuuid
limit?integer

Nombre d'objectes a retornar. Enter entre 1 i 100. Per defecte 25.

Predeterminat25
Rang1 <= value <= 100
starting_after?string

Cursor per a paginació cap endavant. Fes servir l'uuid de l'últim objecte de la pàgina anterior.

Formatuuid
ending_before?string

Cursor per a paginació cap enrere. Fes servir l'uuid del primer objecte de la pàgina actual.

Formatuuid
status?string

Estat de la factura. Coincidència exacta amb status.

status[in]?string

Estat de la factura. Llista separada per comes. Coincideix qualsevol dels valors.

client_id?string

Client ID (UUID v7). Coincidència exacta amb client_id.

Formatuuid
client_id[in]?string

Client ID (UUID v7). Llista separada per comes. Coincideix qualsevol dels valors.

series_id?string

Series ID (UUID v7). Coincidència exacta amb series_id.

Formatuuid
series_id[in]?string

Series ID (UUID v7). Llista separada per comes. Coincideix qualsevol dels valors.

created[gte]?string

Data de creació (ISO 8601). Major o igual que el valor donat.

Formatdate-time
created[lte]?string

Data de creació (ISO 8601). Menor o igual que el valor donat.

Formatdate-time
created[gt]?string

Data de creació (ISO 8601). Estrictament major que el valor donat.

Formatdate-time
created[lt]?string

Data de creació (ISO 8601). Estrictament menor que el valor donat.

Formatdate-time
due_on[gte]?string

Data de venciment. Més gran o igual que el valor indicat.

Formatdate
due_on[lte]?string

Data de venciment. Més petita o igual que el valor indicat.

Formatdate
due_on[gt]?string

Data de venciment. Estrictament més gran que el valor indicat.

Formatdate
due_on[lt]?string

Data de venciment. Estrictament més petita que el valor indicat.

Formatdate
total[gte]?number

Import total. Major o igual que el valor donat.

total[lte]?number

Import total. Menor o igual que el valor donat.

total[gt]?number

Import total. Estrictament major que el valor donat.

total[lt]?number

Import total. Estrictament menor que el valor donat.

currency?string

Codi de moneda ISO 4217 (p. ex. EUR). Coincidència exacta amb currency.

currency[in]?string

Codi de moneda ISO 4217 (p. ex. EUR). Llista separada per comes. Coincideix qualsevol dels valors.

number?string

Número de factura. Coincidència exacta amb number.

tags?string

Filtrar per tag de classificació (slug en minúscula). Admet múltiples valors amb tags[in]=a,b (JSON_CONTAINS, semàntica OR — coincideix amb les factures que porten QUALSEVOL dels tags). Coincidència exacta sobre tags.

tags[in]?string

Filtrar per tag de classificació (slug en minúscula). Admet múltiples valors amb tags[in]=a,b (JSON_CONTAINS, semàntica OR — coincideix amb les factures que porten QUALSEVOL dels tags). Llista separada per comes. Coincideix qualsevol dels valors.

sort?string

Ordre dels resultats. Fes servir un camp per a ascendent o un prefix - per a descendent (p. ex. -created). Camps permesos: created, total, number. Combinat amb el cursor, l'ordre es manté determinista (un ordre secundari estable per l'id del cursor, a l'estil Stripe). Si s'omet, els resultats segueixen l'ordre de cursor per defecte (created descendent).

Valor a"created" | "-created" | "total" | "-total" | "number" | "-number"

Cos de la resposta

application/json

application/json

application/json

application/json

application/json

application/json

{
  "data": [
    {
      "id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a42",
      "object": "invoice",
      "number": "FAC-2026-00042",
      "is_number_assigned": true,
      "type": "F1",
      "series": {
        "id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8b02",
        "code": "FAC-2026"
      },
      "client": {
        "id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a01",
        "name": "Acme Soluciones SL"
      },
      "status": "paid",
      "issued_on": "2026-03-15",
      "due_on": "2026-04-14",
      "subtotal": 1000,
      "taxes_total": 210,
      "total": 1210,
      "currency": "EUR",
      "notes": "Servicios profesionales marzo 2026.",
      "external_id": "ERP-2026-0042",
      "lines": [
        {
          "object": "invoice_line",
          "description": "Consultoria tècnica (10 h)",
          "product": {
            "id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8b03",
            "name": "Consultoría técnica (hora)"
          },
          "quantity": 10,
          "unit_price": 100,
          "tax_rate": 21,
          "discount_percent": 0,
          "subtotal": 1000,
          "taxes": 210,
          "total": 1210
        }
      ],
      "metadata": {
        "order_id": "PO-2026-0042"
      },
      "tags": [
        "consultoria",
        "cliente-vip"
      ],
      "custom_fields": [
        {
          "field": "centro_coste",
          "value": "CC-2026-001"
        },
        {
          "field": "numero_pedido",
          "value": "PO-2026-0042"
        }
      ],
      "operation_regime": "general",
      "exclude_347": false,
      "verifactu_status": "accepted",
      "paid_amount": 1210,
      "pending_amount": 0,
      "payments": {
        "detail": [
          {
            "id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a90",
            "object": "payment",
            "invoice_id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a42",
            "amount": 1210,
            "payment_date": "2026-03-20",
            "payment_method": "bank_transfer",
            "payment_method_text": "Transferencia bancaria",
            "reference": "TRF-2026-0042",
            "notes": null,
            "created_at": "2026-03-20T10:30:00Z",
            "updated_at": "2026-03-20T10:30:00Z"
          }
        ],
        "total": 1210,
        "pending": 0
      },
      "is_corrective": false,
      "corrective": null,
      "payment": {
        "method": "bank_transfer",
        "reference": "TRF-2026-0042",
        "date": "2026-03-20"
      },
      "public_link": {
        "object": "public_link",
        "url": "https://app.factuarea.com/d/01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a42",
        "id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a42",
        "enabled": true,
        "expires_at": "2026-09-15T23:59:59Z",
        "max_days": 120
      },
      "substituted_by": null,
      "recurring": null,
      "paid_at": "2026-03-20T10:30:00Z",
      "paid_on": "2026-03-20",
      "sent_at": "2026-03-15T11:45:00Z",
      "voided_at": null,
      "void_reason": null,
      "created_at": "2026-03-15T11:30:00Z",
      "updated_at": "2026-03-20T10:30: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"
  }
}