Create a client
Create a new client (customer) for your company. The returned object includes the generated `uuid` you should store for subsequent operations.
In: header
Header Parameters
Unique key generated by the client to ensure idempotency on retries. It lets you safely resend the same request: the first response is cached and returned without re-executing the mutation. It is an opaque string to the server; any unique value of up to 64 characters is valid (UUID v7, UUID v4, ULID, nanoid, etc.). UUID v7 is recommended for consistency with the API identifiers. The same key reused with a different body returns 409 idempotency_key_reused.
1 <= length <= 64Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
import { Factuarea } from "@factuarea/sdk";const factuarea = new Factuarea({ apiKey: process.env.FACTUAREA_API_KEY! });const result = await factuarea.clients.create({ // request body — see the schema below });{
"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"
}
}{
"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"
}
}Delete multiple clients in bulk
Delete up to 200 clients in one request. Returns the deletion count and the list of UUIDs that could not be removed (clients with associated documents are reported in failed).
Delete a client
Delete a client. Returns 422 if the client is referenced by any document (invoice, quote, etc.).