createCustomer()
Guarda un receptor que puedes reutilizar al crear borradores.
Permiso: customer:write
createCustomer( input: CustomerCreateInput, options?: RequestOptions): Promise<CustomerRecord>Referencia HTTP: POST /customers
- Incluye sendInvoices, invoiceLanguage y currency: el tipo TypeScript del SDK los requiere aunque el validador HTTP tenga valores predeterminados.
- Crear el registro no valida sus datos ante el SAT. Sustituye los datos ficticios del ejemplo por los del receptor que corresponda.
Parámetros
Sección titulada «Parámetros»| Argumento | Tipo | Obligatorio | Uso |
|---|---|---|---|
input | CustomerCreateInput | Sí | Objeto con los campos indicados abajo. |
options | RequestOptions | No | signal e idempotencyKey; consulta las opciones por solicitud. |
Opciones por solicitud: signal e idempotencyKey.
Los campos siguientes corresponden a input en TypeScript. Un campo opcional se puede omitir; null solo se admite cuando aparece en su tipo. Las validaciones de negocio se ejecutan en el servidor.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
legalName | string | Sí | Nombre o razón social del receptor.Mínimo 2 caracteres. Máximo 200 caracteres |
rfc | string | Sí | RFC del receptor.Mínimo 12 caracteres. Máximo 13 caracteres |
postalCode | string | Sí | Código postal fiscal, como cadena de cinco dígitos.Patrón: ^\d{5}$ |
taxRegime | string | Sí | Clave del régimen fiscal del receptor.Mínimo 1 carácter. Máximo 10 caracteres |
preferredCfdiUse | string | null | No | Uso de CFDI preferido del cliente (clave SAT, por ejemplo G03). Opcional.Mínimo 3 caracteres. Máximo 4 caracteres |
fiscalResidence | string | No | Clave del país de residencia fiscal, cuando aplica.Mínimo 3 caracteres. Máximo 3 caracteres |
taxId | string | No | Identificación tributaria extranjera, cuando aplica.Máximo 80 caracteres |
email | string | No | Correo del cliente.Formato: email |
whatsappPhone | string | No | Teléfono de WhatsApp del cliente.Mínimo 6 caracteres. Máximo 30 caracteres |
sendInvoices | boolean | Sí | Preferencia de entrega de comprobantes al cliente; las opciones del timbrado también controlan los envíos.Valor del validador: true |
invoiceLanguage | "es" | "en" | Sí | Idioma preferido del cliente para la factura.Valor del validador: "es" |
currency | "MXN" | "USD" | "EUR" | Sí | Moneda del cliente o del comprobante.Valor del validador: "MXN" |
Ejemplo
Sección titulada «Ejemplo»Usa el cliente factucat de Instala y conecta. Los IDs y datos fiscales de este ejemplo son ilustrativos: reemplázalos por los registros de tu cuenta y ambiente.
const resultado = await factucat.createCustomer( { "legalName": "EMPRESA DE EJEMPLO", "rfc": "AAA010101AAA", "postalCode": "06000", "taxRegime": "601", "sendInvoices": false, "invoiceLanguage": "es", "currency": "MXN" }, { "idempotencyKey": "cliente-1001-crear" },)console.log(resultado)Respuesta
Sección titulada «Respuesta»Resuelve una Promise<CustomerRecord>. El valor recibido es directamente data, sin el envoltorio HTTP ni sus metadatos.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
id | string | Sí | ID de FactuCat del recurso. No es el UUID fiscal.Formato: uuid |
userId | string | Sí | ID de la cuenta propietaria del recurso.Mínimo 1 carácter |
legalName | string | Sí | Nombre o razón social del receptor. |
rfc | string | Sí | RFC del receptor. |
postalCode | string | Sí | Código postal fiscal, como cadena de cinco dígitos. |
taxRegime | string | Sí | Clave del régimen fiscal del receptor. |
preferredCfdiUse | string | null | No | Uso de CFDI preferido del cliente (clave SAT, por ejemplo G03). Opcional. |
fiscalResidence | string | No | Clave del país de residencia fiscal, cuando aplica. |
taxId | string | No | Identificación tributaria extranjera, cuando aplica. |
email | string | No | Correo del cliente.Formato: email |
whatsappPhone | string | No | Teléfono de WhatsApp del cliente. |
sendInvoices | boolean | Sí | Preferencia de entrega de comprobantes al cliente; las opciones del timbrado también controlan los envíos. |
invoiceLanguage | "es" | "en" | Sí | Idioma preferido del cliente para la factura. |
currency | "MXN" | "USD" | "EUR" | Sí | Moneda del cliente o del comprobante. |
createdAt | string | Sí | Fecha y hora de creación en formato ISO 8601; se devuelve como string.Formato: date-time |
updatedAt | string | Sí | Fecha y hora de última actualización en formato ISO 8601.Formato: date-time |
Ejemplo de respuesta
{ "id": "10112233-4455-4677-8899-aabbccddeeff", "userId": "usuario_ejemplo", "legalName": "EMPRESA DE EJEMPLO", "rfc": "AAA010101AAA", "postalCode": "06000", "taxRegime": "601", "sendInvoices": false, "invoiceLanguage": "es", "currency": "MXN", "createdAt": "2026-09-08T12:00:00Z", "updatedAt": "2026-09-08T12:00:00Z"}Las fechas se entregan como cadenas ISO 8601. Un campo opcional puede estar ausente. Tipos, paginación y archivos.
La promesa se rechaza si la API devuelve un error, falla la conexión o los datos no cumplen el contrato. Cómo manejar los errores.