Ir al contenido

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.
ArgumentoTipoObligatorioUso
inputCustomerCreateInputSíObjeto con los campos indicados abajo.
optionsRequestOptionsNosignal 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.

CampoTipoObligatorioDescripción
legalNamestringSíNombre o razón social del receptor.Mínimo 2 caracteres. Máximo 200 caracteres
rfcstringSíRFC del receptor.Mínimo 12 caracteres. Máximo 13 caracteres
postalCodestringSíCódigo postal fiscal, como cadena de cinco dígitos.Patrón: ^\d{5}$
taxRegimestringSíClave del régimen fiscal del receptor.Mínimo 1 carácter. Máximo 10 caracteres
preferredCfdiUsestring | nullNoUso de CFDI preferido del cliente (clave SAT, por ejemplo G03). Opcional.Mínimo 3 caracteres. Máximo 4 caracteres
fiscalResidencestringNoClave del país de residencia fiscal, cuando aplica.Mínimo 3 caracteres. Máximo 3 caracteres
taxIdstringNoIdentificación tributaria extranjera, cuando aplica.Máximo 80 caracteres
emailstringNoCorreo del cliente.Formato: email
whatsappPhonestringNoTeléfono de WhatsApp del cliente.Mínimo 6 caracteres. Máximo 30 caracteres
sendInvoicesbooleanSí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"

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)

Resuelve una Promise<CustomerRecord>. El valor recibido es directamente data, sin el envoltorio HTTP ni sus metadatos.

CampoTipoObligatorioDescripción
idstringSíID de FactuCat del recurso. No es el UUID fiscal.Formato: uuid
userIdstringSíID de la cuenta propietaria del recurso.Mínimo 1 carácter
legalNamestringSíNombre o razón social del receptor.
rfcstringSíRFC del receptor.
postalCodestringSíCódigo postal fiscal, como cadena de cinco dígitos.
taxRegimestringSíClave del régimen fiscal del receptor.
preferredCfdiUsestring | nullNoUso de CFDI preferido del cliente (clave SAT, por ejemplo G03). Opcional.
fiscalResidencestringNoClave del país de residencia fiscal, cuando aplica.
taxIdstringNoIdentificación tributaria extranjera, cuando aplica.
emailstringNoCorreo del cliente.Formato: email
whatsappPhonestringNoTeléfono de WhatsApp del cliente.
sendInvoicesbooleanSí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.
createdAtstringSíFecha y hora de creación en formato ISO 8601; se devuelve como string.Formato: date-time
updatedAtstringSí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.