Registrar y validar clientes
Registrar a tu clientes en Facturapi te permite validar sus datos fiscales y almacenarlos para futuras facturas.
Este paso es opcional, ya que para crear comprobantes no es necesario haber registrado previamente a tu cliente, sin embargo, es algo que te recomendamos hacer siempre que te sea posible.
Una vez registrado tu cliente, podrás guardar el id
del objeto creado y usarlo para
facturar al mismo receptor sin volver a enviar todos sus datos fiscales.
Al crear una factura, puedes incluir la información del receptor de 2 maneras distintas:
- En el campo
customer
, enviando un objeto con los datos fiscales del cliente. - En el campo
customer
, enviando elid
de un cliente previamente registrado.
Ambas opciones son válidas y te recomendamos usar la que mejor se adapte a tu caso de uso.
Cómo registrar un cliente
En Facturapi, la forma de registrar los datos fiscales de clientes nacionales y extranjeros no es muy diferente entre sí, pero vale la pena analizarlos por separado, ya que sí es diferente de como lo indica el SAT en su estándar técnico.
Clientes nacionales
El siguiente ejemplo muestra cómo registrar a un cliente nacional.
Para conocer qué otros datos puedes incluir, consulta la referencia del método Crear Cliente.
- Node.js
- C#
- PHP
- cURL
const Facturapi = require('facturapi');
const facturapi = new Facturapi('sk_test_API_KEY');
const customer = await facturapi.customers.create({
legal_name: 'Dunder Mifflin', // Nombre o razón social
tax_id: 'ABC101010111', // RFC
tax_system: '601', // Regimen fiscal
email: 'email@example.com', // Correo para envío (opcional).
address: {
zip: '85900', // Código postal
}
});
var facturapi = new FacturapiClient("sk_test_API_KEY");
var customer = await facturapi.Customer.CreateAsync(new Dictionary<string, object>
{
["legal_name"] = "Dunder Mifflin", // Nombre o razón social
["tax_id"] = "ABC101010111", // RFC
["tax_system"] = "601", // Regimen fiscal
["email"] = "email@example.com", // Correo para envío (opcional).
["address"] = new Dictionary<string, object>
{
["zip"] = "85900", // Código postal
}
});
$facturapi = new FacturapiClient("sk_test_API_KEY");
$customer = $facturapi->Customers->create([
"legal_name" => "Dunder Mifflin", // Nombre o razón social
"tax_id" => "ABC101010111", // RFC
"tax_system" => "601", // Regimen fiscal
"email" => "walterwhite@gmail.com", // Correo para envío (opcional).
"address" => [
"zip" => "85900", // Código postal
]
]);
curl https://www.facturapi.io/v2/customers \
-H "Authorization: Bearer sk_test_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"legal_name": "Dunder Mifflin", // Nombre o razón social
"email": "email@example.com", // Correo para envío (opcional).
"tax_id": "ABC101010111", // RFC
"tax_system": "601", // Régimen fiscal
"address": {
"zip": "85900" // Código postal
}
}'
Respuesta: Objeto Customer
{
"id": "590ce6c56d04f840aa8438af",
"created_at": "2017-05-05T20:55:33.468Z",
"organization": "622a33e6f0175a00e01a8e80",
"livemode": false,
"legal_name": "Dunder Mifflin",
"tax_id": "ABC101010111",
"tax_system": "601",
"email": "email@example.com",
"phone": 6474010101,
"address": {
"street": null,
"exterior": null,
"interior": null,
"neighborhood": null,
"city": "Huatabampo",
"municipality": "Huatabampo",
"zip": 86500,
"state": "Sonora",
"country": "MEX"
}
}
Clientes extranjeros
Para registrar un cliente extranjero es necesario especificar el país de
origen, enviando el código ISO del país
de origen por medio del campo country
.
No necesitas usar el RFC genérico para extranjeros del SAT. Nosotros lo
pondremos por ti donde haga falta, siempre y cuando envíes un valor distinto
de "MEX"
para el campo country
.
Para conocer qué otros datos puedes incluir, consulta la referencia completa del método Crear Cliente.
- Node.js
- C#
- PHP
- cURL
const Facturapi = require('facturapi');
const facturapi = new Facturapi('sk_test_API_KEY');
const customer = await facturapi.customers.create({
legal_name: 'Vättenfall, A.B.', // Nombre o razón social
tax_id: '198912171234', // Núm. de reg. id. trib. (opcional)
email: 'email@example.com', // Correo para envío (opcional).
address: {
country: "SWE", // Código ISO del país.
zip: "17123", // Código postal
city: "Stockholm" // Ciudad (opcional).
}
});
var facturapi = new FacturapiClient("sk_test_API_KEY");
var customer = await facturapi.Customer.CreateAsync(new Dictionary<string, object>
{
["legal_name"] = "Vättenfall, A.B.", // Nombre o razón social
["tax_id"] = "198912171234", // // Núm. de reg. id. trib. (opcional)
["email"] = "email@example.com", // Correo para envío (opcional).
["address"] = new Dictionary<string, object>
{
["country"] = "SWE", // Código ISO del país.
["zip"] = "17123", // Código postal
["city"] = "Stockholm" // Ciudad (opcional).
}
});
$facturapi = new FacturapiClient("sk_test_API_KEY");
$customer = $facturapi->Customers->create([
"legal_name" => "Vättenfall, A.B.", // Nombre o razón social
"tax_id" => "198912171234", // Núm. de reg. id. trib. (opcional)
"email" => "email@example.com", // Correo para envío (opcional).
"address" => [
"country" => "SWE", // Código ISO del país.
"zip" => "17123", // Código postal
"city" => "Stockholm" // Ciudad (opcional).
]
]);
curl https://www.facturapi.io/v1/customers \
-H "Authorization: Bearer sk_test_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"legal_name": "Vättenfall, A.B.", // Nombre o razón social
"tax_id": "198912171234", // Núm. de reg. id. trib. (opcional)
"email": "email@example.com", // Correo para envío (opcional).
"address": {
"country": "SWE", // Código ISO del país.
"zip": "17123", // Código postal
"city": "Stockholm" // Ciudad (opcional).
}
}'
Respuesta: Objeto Customer
{
"id": "62714bc2d1bfa410df1d98eb",
"created_at": "2022-05-03T15:35:30.034Z",
"organization": "622a33e6f0175a00e01a8e80",
"livemode": false,
"legal_name": "Vättenfall, A.B.",
"tax_id": "198912171234",
"email": "email@example.com",
"address": {
"country": "SWE",
"zip": "17123",
"city": "Stockholm"
},
}