Actualizar un cliente
Actualiza un cliente. Solo se modifican los campos incluidos en el payload; los campos omitidos conservan sus valores previos.
En: header
Parámetros de ruta
Parámetros de cabecera
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.
1 <= length <= 64Cuerpo 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
{
"data": {
"id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a01",
"object": "client",
"name": "Acme Corporation",
"commercial_name": "Acme SL",
"tax_id": "B12345678",
"vat_id": "ESB12345678",
"email": "billing@acme.com",
"phone": "+34 600 123 456",
"fax": "+34 91 123 45 68",
"mobile": "+34 600 000 000",
"website": "https://acme.com",
"contact_person": "Juan García",
"billing_emails": [
"facturacion@acme.com",
"contabilidad@acme.com"
],
"address": {
"line1": "Calle Mayor 1",
"line2": "Edificio Central",
"number": "42",
"floor": "3",
"door": "B",
"staircase": "A",
"postal_code": "28001",
"city": "Madrid",
"province": "Madrid",
"country": "ES"
},
"coordinates": {
"latitude": 39.4699,
"longitude": -0.3763
},
"default_discount": 5,
"default_vat_rate": 21,
"default_retention_rate": 15,
"is_surcharge_subject": false,
"preferred_operation_regime": "general",
"accumulate_347": true,
"dir3_accounting_office": "L01280796",
"dir3_managing_body": "L01280796",
"dir3_processing_unit": "L01280796",
"external_id": "CRM-99",
"notes": "Pago al contado.",
"metadata": {
"erp_code": "IVA-GEN",
"ledger_account": "477000"
},
"is_active": true,
"created_at": "2026-01-15T10:30:00Z",
"updated_at": "2026-01-15T10:30: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": "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"
}
}Obtener estadísticas del cliente
KPIs agregados de la empresa autenticada: número total de clientes, número de activos, número con facturas de venta, número con presupuestos y totales por tipo de documento. Devuelto como `{ "data": ClientStats }`.
Verificar un cliente contra el censo de la AEAT
Comprueba el par nombre + NIF de un tercero (el destinatario de una factura) contra el censo de la AEAT (VNifV2) para anticipar rechazos VeriFactu 1239 antes de facturar. Sin estado e informativo: no se persiste nada en el cliente. Fail-open — si la AEAT no está disponible, la llamada devuelve 200 con `status: unavailable`. Las claves de prueba (`fact_test_`) devuelven estados deterministas según el NIF mágico sin contactar con la AEAT.