Factuarea API
Albaranes

Marca el albarán como entregado

Transiciona un albarán al estado `delivered` (público `sent`). Reemplazo REST canónico del obsoleto `POST /change_status`. Devuelve 409 `invalid_status_transition` si el albarán no puede transicionar. Admite `Idempotency-Key` para reintentos seguros.

POST
/delivery_notes/{delivery_note}/mark-delivered
AuthorizationBearer <token>

En: header

Parámetros de ruta

delivery_note*string

Parámetros de cabecera

Idempotency-Key?string

Clave única generada por el cliente para garantizar la idempotencia en los reintentos. Te permite reenviar de forma segura la misma petición: la primera respuesta se cachea y se devuelve sin volver a ejecutar la mutación. Es una cadena opaca para el servidor; cualquier valor único de hasta 64 caracteres es válido (UUID v7, UUID v4, ULID, nanoid, etc.). Se recomienda UUID v7 por coherencia con los identificadores de la API. La misma clave reutilizada con un body distinto devuelve 409 idempotency_key_reused.

Longitud1 <= length <= 64

Cuerpo de la petición

application/json

Definiciones de TypeScript

Usa el tipo request body en TypeScript.

Cuerpo de la respuesta

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

{
  "data": {
    "id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a06",
    "object": "delivery_note",
    "number": "A-2026-00031",
    "series": {
      "id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a0e",
      "code": "F-2026"
    },
    "client": {
      "id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a01",
      "name": "Acme Corporation"
    },
    "status": "signed",
    "issued_on": "2026-01-19",
    "delivery_date": "2026-01-21",
    "signed_at": "2026-01-21T14:50:00Z",
    "signed_by": "María García López",
    "signature_image_url": "https://files.factuarea.com/signatures/01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a06.png",
    "vehicle_plate": "5678JKL",
    "driver": {
      "name": "Pedro Sánchez Ruiz",
      "tax_id": "12345678Z"
    },
    "tracking": {
      "number": "TRK-2026-0099",
      "carrier": "SEUR"
    },
    "received_by": {
      "name": "María García López",
      "tax_id": "87654321X"
    },
    "billing_emails": [
      "administracion@cliente.com"
    ],
    "subtotal": 800,
    "taxes_total": 168,
    "total": 968,
    "currency": "EUR",
    "notes": "Entregado en almacén central.",
    "external_id": "ERP-ALB-2026-0031",
    "lines": [
      {
        "object": "delivery_note_line",
        "description": "Cajas de material A4 (500u)",
        "product": {
          "id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a09",
          "name": "Consultoría hora estándar"
        },
        "quantity": 2,
        "unit_price": 400,
        "tax_rate": 21,
        "retention_rate": 0,
        "surcharge_rate": 0,
        "discount_percent": 0,
        "subtotal": 800,
        "taxes": 168,
        "total": 968
      }
    ],
    "metadata": {
      "erp_code": "IVA-GEN",
      "ledger_account": "477000"
    },
    "tags": [
      "logistica",
      "almacen-central"
    ],
    "custom_fields": [
      {
        "field": "muelle_carga",
        "value": "Muelle 3"
      }
    ],
    "converted_to_id": null,
    "created_at": "2026-01-19T08:00:00Z",
    "updated_at": "2026-01-21T14:50:00Z"
  }
}

{
  "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": "not_found_error",
    "code": "resource_not_found",
    "message": "El recurso solicitado no existe o pertenece a otra empresa.",
    "param": null,
    "doc_url": "https://docs.factuarea.com/guides/errors#resource_not_found",
    "request_id": "req_01HKQS5NEQ6X1R4N9B0C5DWTPG"
  }
}

{
  "error": {
    "type": "idempotency_error",
    "code": "idempotency_key_reused",
    "message": "La cabecera `Idempotency-Key` ya se usó con un body distinto. Usa una clave nueva o reenvía exactamente el mismo body.",
    "param": null,
    "doc_url": "https://docs.factuarea.com/guides/errors#idempotency_key_reused",
    "request_id": "req_01HKQS5NHT9A4U7R2E3F8GZWTJ"
  }
}

{
  "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"
  }
}