Postman
Postman
  • Documentación

    • Información general
    • Entornos
    • Primeros pasos
    • Listar CFDI's
    • Buscar CFDI
    • Crear CFDI 4.0
    • Crear CFDI Global 4.0
    • Borradores CFDI 4.0
    • Descargar CFDI
    • Cancelar CFDI 4.0
    • Descargar acuse CFDI 4.0
    • Enviar CFDI
    • Consultar estatus de cancelación de un CFDI
    • Grupos de empleados
    • Empleados
    • Nóminas
    • Complementos
    • Retenciones
    • Complementos de retenciones
    • Carta porte v3.1
    • Catálogos
    • Clientes
    • Empresas
    • Migraciones
    • Series
    • Productos
    • Addendas
    • Fundamentos legales del SAT

Clientes

Listar clientes

A continuación se explica como listar los clientes , con un ejemplo y muestra de posibles respuestas obtenidas.

Podemos listar todos los clientes que tenemos registrados en el sistema.

Construcción de la URL

Host: https://facturaonline.com.mx/api (producción) / https://sandbox.facturaonline.com.mx/api (sandbox)

Endpoint: /v1/clients

Ejemplo: https://facturaonline.com.mx/api/v1/clients

Tip

Para probar el ejemplo de código, necesitas cambiar "Tu API key" por la clave de API de tu cuenta, y "Tu Secret key" por la clave secreta correspondiente.

Ejemplo para listar cliente
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => '{ HOST }/v1/clients',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Content-Type: application/json',
    'F-PLUGIN: 9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
    'F-Api-Key: Tu API key',
    'F-Secret-Key: Tu Secret key'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

var request = require('request');
var options = {
  'method': 'GET',
  'url': '{ HOST }/v1/clients',
  'headers': {
    'Content-Type': 'application/json',
    'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
    'F-Api-Key': 'Tu API key',
    'F-Secret-Key': 'Tu Secret key'
  }
};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

import requests
import json

url = "{ HOST }/v1/clients"

payload = ""
headers = {
  'Content-Type': 'application/json',
  'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
  'F-Api-Key': 'Tu API key',
  'F-Secret-Key': 'Tu Secret key'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)

require "uri"
require "json"
require "net/http"

url = URI("{ HOST }/v1/clients")

http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Content-Type"] = "application/json"
request["F-PLUGIN"] = "9d4095c8f7ed5785cb14c0e3b033eeb8252416ed"
request["F-Api-Key"] = "Tu API key"
request["F-Secret-Key"] = "Tu Secret key"

response = http.request(request)
puts response.read_body

Respuesta

Aviso

El mensaje de error puede variar dependiendo el nodo en el que haya información incorrecta. Te sugerimos leer cuidadosamente el mensaje del error ya que en el mismo se indica donde es necesario corregir la información.

Respuesta exitosa

{
    "status": "success",
    "response": "success",
    "data": [
        {
            "UID": "63ebd090d6015",
            "RazonSocial": "XAIME WEIR ROJO",
            "RFC": "WERX631016S30",
            "Regimen": "Personas Físicas con Actividades Empresariales y Profesionales",
            "RegimenId": "612",
            "Calle": "COPERNICO",
            "Numero": "18374",
            "Interior": "INT 02",
            "Colonia": "PERLA",
            "CodigoPostal": "01279",
            "Ciudad": "CIUDAD DE MEXICO",
            "Delegacion": "ALVARO OBREGON",
            "Estado": "CIUDAD DE MEXICO",
            "Localidad": "LOMAS DE BECERRA",
            "Pais": "MEX",
            "NumRegIdTrib": "",
            "UsoCFDI": "G01",
            "Contacto": {
                "Nombre": "XAIME",
                "Apellidos": "WEIR ROJO",
                "Email": "[email protected]",
                "Email2": "",
                "Email3": "",
                "Telefono": "3344556677"
            },
            "cfdis": 123,
            "cuentas_banco": []
        },
        {
            "UID": "645404557e9c2",
            "RazonSocial": "XENON INDUSTRIAL ARTICLES",
            "RFC": "XIA190128J61",
            "Regimen": "General de Ley Personas Morales",
            "RegimenId": "601",
            "Calle": "AV. CIRCUNVALACION",
            "Numero": "7947",
            "Interior": "B-1",
            "Colonia": "Militar",
            "CodigoPostal": "76343",
            "Ciudad": "SANTIAGO DE QUERETARO",
            "Delegacion": "SANTIAGO DE QUERETARO",
            "Estado": "QUERETARO",
            "Localidad": "JALPAN DE SERRA",
            "Pais": "MEX",
            "NumRegIdTrib": "",
            "UsoCFDI": "G01",
            "Contacto": {
                "Nombre": "SAUL",
                "Apellidos": "ESTRADA",
                "Email": "[email protected]",
                "Email2": "[email protected]",
                "Email3": "[email protected]",
                "Telefono": "3344556677"
            },
            "cfdis": 49,
            "cuentas_banco": [
                {
                    "banco": "BANAMEX",
                    "cuenta": "0987"
                }
            ]
        }
    ]
}

Consultar cliente

A continuación se explica el método con el cual podremos consultar un cliente en específico de nuestro catalogo.

Para consultar un cliente en específico podemos realizarlo con alguno de los siguientes parametros:

ParámetroTipoRequeridoDetalles
RFCStringOpcional

*Requerido en el caso de querer consultar solo a un cliente.
Indica el RFC del cliente a buscar
ejemplo: WERX631016S30
UIDStringOpcional

*Requerido en el caso de querer consultar solo a un cliente.
Es el identificador unico dentro de el sistema que pertenece a el cliente a buscar
ejemplo: 63ebd090d6015

Construcción de la URL

Host: https://facturaonline.com.mx/api (producción) / https://sandbox.facturaonline.com.mx/api (sandbox)

Ejemplo para consultar un cliente en especifico por RFC

Endpoint: /v1/clients/{RFC}

Ejemplo: https://facturaonline.com.mx/api/v1/clients/WERX631016S30

Tip

Para probar el ejemplo de código, necesitas cambiar "Tu API key" por la clave de API de tu cuenta, y "Tu Secret key" por la clave secreta correspondiente.

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => '{ HOST }/v1/clients/WERX631016S30',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Content-Type: application/json',
    'F-PLUGIN: 9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
    'F-Api-Key: Tu API key',
    'F-Secret-Key: Tu Secret key'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

var request = require('request');
var options = {
  'method': 'GET',
  'url': '{ HOST }/v1/clients/WERX631016S30',
  'headers': {
    'Content-Type': 'application/json',
    'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
    'F-Api-Key': 'Tu API key',
    'F-Secret-Key': 'Tu Secret key'
  }
};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

import requests
import json

url = "{ HOST }/v1/clients/WERX631016S30"

payload = ""
headers = {
  'Content-Type': 'application/json',
  'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
  'F-Api-Key': 'Tu API key',
  'F-Secret-Key': 'Tu Secret key'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)

require "uri"
require "json"
require "net/http"

url = URI("{ HOST }/v1/clients/WERX631016S30")

http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Content-Type"] = "application/json"
request["F-PLUGIN"] = "9d4095c8f7ed5785cb14c0e3b033eeb8252416ed"
request["F-Api-Key"] = "Tu API key"
request["F-Secret-Key"] = "Tu Secret key"

response = http.request(request)
puts response.read_body

Ejemplo para consultar un cliente en especifico por UID

Endpoint: /v1/clients/{UID}

Ejemplo: https://facturaonline.com.mx/api/v1/clients/61f1a6157e8d8

Tip

Para probar el ejemplo de código, necesitas cambiar "Tu API key" por la clave de API de tu cuenta, y "Tu Secret key" por la clave secreta correspondiente.

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => '{ HOST }/v1/clients/61f1a6157e8d8',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Content-Type: application/json',
    'F-PLUGIN: 9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
    'F-Api-Key: Tu API key',
    'F-Secret-Key: Tu Secret key'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

var request = require('request');
var options = {
  'method': 'GET',
  'url': '{ HOST }/v1/clients/61f1a6157e8d8',
  'headers': {
    'Content-Type': 'application/json',
    'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
    'F-Api-Key': 'Tu API key',
    'F-Secret-Key': 'Tu Secret key'
  }
};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

import requests
import json

url = "{ HOST }/v1/clients/61f1a6157e8d8"

payload = ""
headers = {
  'Content-Type': 'application/json',
  'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
  'F-Api-Key': 'Tu API key',
  'F-Secret-Key': 'Tu Secret key'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)

require "uri"
require "json"
require "net/http"

url = URI("{ HOST }/v1/clients/61f1a6157e8d8")

http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Content-Type"] = "application/json"
request["F-PLUGIN"] = "9d4095c8f7ed5785cb14c0e3b033eeb8252416ed"
request["F-Api-Key"] = "Tu API key"
request["F-Secret-Key"] = "Tu Secret key"

response = http.request(request)
puts response.read_body

Respuesta

Aviso

El mensaje de error puede variar dependiendo el nodo en el que haya información incorrecta. Te sugerimos leer cuidadosamente el mensaje del error ya que en el mismo se indica donde es necesario corregir la información.

Respuesta exitosa

{
    "status": "success",
    "Data": {
        "RazonSocial": "XAIME WEIR ROJO",
        "RFC": "WERX631016S30",
        "Regimen": "Personas Físicas con Actividades Empresariales y Profesionales",
        "RegimenId": "612",
        "Calle": "COPERNICO",
        "Numero": "18374",
        "Interior": "INT 02",
        "Colonia": "PERLA",
        "CodigoPostal": "01279",
        "Ciudad": "CIUDAD DE MEXICO",
        "Delegacion": "ALVARO OBREGON",
        "Estado": "CIUDAD DE MEXICO",
        "Pais": "MEX",
        "NumRegIdTrib": "",
        "UsoCFDI": "G01",
        "Contacto": {
            "Nombre": "XAIME",
            "Apellidos": "WEIR ROJO",
            "Email": "[email protected]",
            "Email2": "",
            "Email3": "",
            "Telefono": "3344556677"
        },
        "UID": "63ebd090d6015",
        "cfdis": 123,
        "cuentas_banco": []
    }
}

Consultar RFC repetido con diferente información

A continuación se explica como consultar un RFC dado de alta más de una vez pero con distintas razones sociales o distintos datos.

Para consultar un RFC en específico es necesario enviarlo en la petición.

ParámetroTipoRequeridoDetalles
RFCString Opcional

*Requerido en el caso de querer consultar solo a un cliente.
Indica el RFC a buscar, para traer toda la información de los clientes registrados que tengan este dato repetido dentro de nuestro catalogo.

Atención

La URL que se utiliza para consultar un RFC repetido tiene similitudes con el metodo para buscar un cliente en especifico, es importante tener cuidado al utilizar la URL ya que contiene "/rfc" en ella para poder realizar esta petición.

Construcción de la URL

Host: https://facturaonline.com.mx/api (producción) / https://sandbox.facturaonline.com.mx/api (sandbox)

Endpoint: /v1/clients/rfc/{RFC}

Ejemplo: https://facturaonline.com.mx/api/v1/clients/rfc/WERX631016S30

Tip

Para probar el ejemplo de código, necesitas cambiar "Tu API key" por la clave de API de tu cuenta, y "Tu Secret key" por la clave secreta correspondiente.

Importante

En caso de tener más de un cliente registrado con el mismo RFC, la respuesta a esta petición incluirá a todos los clientes dados de alta cuyo RFC coincida con el solicitado, de este modo podrás elegir de entre los resultados el cliente que requieres.

Ejemplo para consultar un RFC repetido

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => '{ HOST }/v1/clients/rfc/WERX631016S30',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Content-Type: application/json',
    'F-PLUGIN: 9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
    'F-Api-Key: Tu API key',
    'F-Secret-Key: Tu Secret key'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

var request = require('request');
var options = {
  'method': 'GET',
  'url': '{ HOST }/v1/clients/rfc/WERX631016S30',
  'headers': {
    'Content-Type': 'application/json',
    'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
    'F-Api-Key': 'Tu API key',
    'F-Secret-Key': 'Tu Secret key'
  }
};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

import requests
import json

url = "{ HOST }/v1/clients/rfc/WERX631016S30"

payload = ""
headers = {
  'Content-Type': 'application/json',
  'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
  'F-Api-Key': 'Tu API key',
  'F-Secret-Key': 'Tu Secret key'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)

require "uri"
require "json"
require "net/http"

url = URI("{ HOST }/v1/clients/rfc/WERX631016S30")

http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Content-Type"] = "application/json"
request["F-PLUGIN"] = "9d4095c8f7ed5785cb14c0e3b033eeb8252416ed"
request["F-Api-Key"] = "Tu API key"
request["F-Secret-Key"] = "Tu Secret key"

response = http.request(request)
puts response.read_body

Respuesta

Aviso

El mensaje de error puede variar dependiendo el nodo en el que haya información incorrecta. Te sugerimos leer cuidadosamente el mensaje del error ya que en el mismo se indica donde es necesario corregir la información.

Respuesta exitosa

{
    "status": "success",
    "Data": [
        {
            "UID": "645404557e9c2",
            "RazonSocial": "XENON INDUSTRIAL ARTICLES",
            "RFC": "XIA190128J61",
            "Regimen": "General de Ley Personas Morales",
            "RegimenId": "601",
            "Calle": "AV. CIRCUNVALACION",
            "Numero": "7947",
            "Interior": "B-1",
            "Colonia": "Militar",
            "CodigoPostal": "76343",
            "Ciudad": "SANTIAGO DE QUERETARO",
            "Delegacion": "SANTIAGO DE QUERETARO",
            "Estado": "QUERETARO",
            "Localidad": "JALPAN DE SERRA",
            "Pais": "MEX",
            "NumRegIdTrib": "",
            "UsoCFDI": "G01",
            "Contacto": {
                "Nombre": "SAUL",
                "Apellidos": "ESTRADA",
                "Email": "[email protected]",
                "Email2": "[email protected]",
                "Email3": "[email protected]",
                "Telefono": "3344556677"
            },
            "cfdis": 49,
            "cuentas_banco": [
                {
                    "banco": "BANAMEX",
                    "cuenta": "0987"
                }
            ]
        },
        {
            "UID": "649485557a8b1",
            "RazonSocial": "XENON ARTICLES",
            "RFC": "XIA190128J61",
            "Regimen": "General de Ley Personas Morales",
            "RegimenId": "601",
            "Calle": "AV. NORTE",
            "Numero": "1200",
            "Interior": "",
            "Colonia": "Militar",
            "CodigoPostal": "76343",
            "Ciudad": "SANTIAGO DE QUERETARO",
            "Delegacion": "SANTIAGO DE QUERETARO",
            "Estado": "QUERETARO",
            "Localidad": "ESTACION UNIVERSIDAD",
            "Pais": "MEX",
            "NumRegIdTrib": "",
            "UsoCFDI": "G01",
            "Contacto": {
                "Nombre": "PALOMA",
                "Apellidos": "JUAREZ",
                "Email": "[email protected]",
                "Email2": "[email protected]",
                "Email3": "[email protected]",
                "Telefono": "3344556677"
            },
            "cfdis": 0,
            "cuentas_banco": []
        }
    ]
}

Crear cliente

A continuación se explica como dar de alta un nuevo cliente.

Podemos crear un nuevo cliente haciendo uso de los siguientes parámetros:

ParámetroTipoRequeridoDetalles
rfcStringRequeridoSe utiliza para indicar el RFC del cliente que vamos a registrar en nuestro catalogo
razonsStringRequerido

Indica la razón social de nuestro clienete, recuerda que la razon social debe escribirse como aparece en la constancia de situacion fiscal ademas, debes ingresar la razón socal sin el régimen capital.

Ejemplo:

Razón social:   RAZON SOCIAL DE PRUEBA S.A. DE C.V.

Parametro que enviaremos:   "rfc": "RAZON SOCIAL DE PRUEBA"

codposNumericoRequerido Se utiliza para indicar el codigo postal que pertenece a el domicilio fiscal de nuestro cliente.
emailStringRequerido Contiene la direccion de correo electronico de nuestro cliente y tambien a este correo es a el que se enviaran los comprobantes en caso de asi configurarlo en el timbrado.
usocfdiStringOpcional Se utiliza para definir el tipo de uso de CFDI que utilizara el cliente, este valor se almacena de forma provisional para recuperarlo pero por cada CFDI genereado a el cliente este uso de CFDI puede ser configurado
regimenStringRequerido

 Indica el regimen fiscal a el cual pertenece nuestro cliente, este valor debe ser expresado con la clave correspondiente a el regimen:

Ejemplo: Para General de Ley Personas Morales se envia el parametro

"regimen": "601"

Consulta el catálogo de claves de Uso de CFDI aqui.
calleStringOpcional Se utiliza para indicar la calle de el domicilio fiscal de nuestro cliente.
numero_exteriorStringOpcional Se utiliza para indicar el numero exterior de el domicilio fiscal de nuestro cliente.
numero_interiorStringOpcional  Se utiliza para indicar el numero interior de el domicilio fiscal de nuestro cliente.
coloniaStringOpcional  Se utiliza para indicar la colonia de el domicilio fiscal de nuestro cliente.
ciudadStringOpcional  Se utiliza para indicar la ciudad de el domicilio fiscal de nuestro cliente.
delegacionStringOpcional  Se utiliza para indicar la delegacion de el domicilio fiscal de nuestro cliente.
localidadStringOpcional   Se utiliza para indicar la localidad de el domicilio fiscal de nuestro cliente.
estadoStringOpcional   Se utiliza para indicar el estado de el domicilio fiscal de nuestro cliente.
paisStringRequerido

   Se utiliza para indicar el pais de el domicilio fiscal de nuestro cliente, este debe ingresarse con la abreviatura correspondiente

Ejemplo: "pais": "MEX"

Consulta el catálogo de paises aqui.
numregidtribStringOpcionalCampo condicional para registrar el número de identificación o registro fiscal del país de residencia para los efectos fiscales del remitente de los bienes o mercancías que se trasladan, cuando sea residente en el extranjero.
nombreStringOpcional Indica el nombre de nuestro cliente.
apellidosStringOpcional Se utiliza para ingresar los apellidos de nuestro cliente.
telefonoStringOpcional Campo para almacenar el numero telefonico para contactar a nuestro cliente.
email2StringOpcional Podemos almacenar una direccion de correo electronico alternativa para nuestro cliente.
email3StringOpcional Podemos almacenar una segunda direccion de correo electronico alternativa para nuestro cliente.

Construcción de la URL

Host: https://facturaonline.com.mx/api (producción) / https://sandbox.facturaonline.com.mx/api (sandbox)

Endpoint: /v1/clients/create

Ejemplo: https://facturaonline.com.mx/api/v1/clients/create

Tip

Para probar el ejemplo de código, necesitas cambiar "Tu API key" por la clave de API de tu cuenta, y "Tu Secret key" por la clave secreta correspondiente.

Ejemplo para dar de alta un nuevo cliente

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => '{ HOST }/v1/clients/create',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{
    "rfc": "XIA190128J61",
    "razons": "XENON INDUSTRIAL ARTICLES",
    "codpos": 76343,
    "email": "[email protected]",
    "usocfdi": "G01",
    "regimen": "601",
    "calle": "AV. CIRCUNVALACION",
    "numero_exterior": "7947",
    "numero_interior": "B-1",
    "colonia": "Militar",
    "ciudad": "SANTIAGO DE QUERETARO",
    "delegacion": "NAVARRO",
    "localidad": "JALPAN DE SERRA",
    "estado": "QUERETARO",
    "pais": "MEX",
    "numregidtrib": "",
    "nombre": "SAUL",
    "apellidos": "ESTRADA",
    "telefono": "3344556677",
    "email2": "[email protected]",
    "email3": "[email protected]"
}',
  CURLOPT_HTTPHEADER => array(
    'Content-Type: application/json',
    'F-PLUGIN: 9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
    'F-Api-Key: Tu API key',
    'F-Secret-Key: Tu Secret key'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

var request = require('request');
var options = {
  'method': 'POST',
  'url': '{ HOST }/v1/clients/create',
  'headers': {
    'Content-Type': 'application/json',
    'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
    'F-Api-Key': 'Tu API key',
    'F-Secret-Key': 'Tu Secret key'
  },
  body: JSON.stringify({
    "rfc": "XIA190128J61",
    "razons": "XENON INDUSTRIAL ARTICLES",
    "codpos": 76343,
    "email": "[email protected]",
    "usocfdi": "G01",
    "regimen": "601",
    "calle": "AV. CIRCUNVALACION",
    "numero_exterior": "7947",
    "numero_interior": "B-1",
    "colonia": "Militar",
    "ciudad": "SANTIAGO DE QUERETARO",
    "delegacion": "NAVARRO",
    "localidad": "JALPAN DE SERRA",
    "estado": "QUERETARO",
    "pais": "MEX",
    "numregidtrib": "",
    "nombre": "SAUL",
    "apellidos": "ESTRADA",
    "telefono": "3344556677",
    "email2": "[email protected]",
    "email3": "[email protected]"
  })

};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

import requests
import json

url = "{ HOST }/v1/clients/create"

payload = json.dumps({
  "rfc": "XIA190128J61",
  "razons": "XENON INDUSTRIAL ARTICLES",
  "codpos": 76343,
  "email": "[email protected]",
  "usocfdi": "G01",
  "regimen": "601",
  "calle": "AV. CIRCUNVALACION",
  "numero_exterior": "7947",
  "numero_interior": "B-1",
  "colonia": "Militar",
  "ciudad": "SANTIAGO DE QUERETARO",
  "delegacion": "NAVARRO",
  "localidad": "JALPAN DE SERRA",
  "estado": "QUERETARO",
  "pais": "MEX",
  "numregidtrib": "",
  "nombre": "SAUL",
  "apellidos": "ESTRADA",
  "telefono": "3344556677",
  "email2": "[email protected]",
  "email3": "[email protected]"
})
headers = {
  'Content-Type': 'application/json',
  'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
  'F-Api-Key': 'Tu API key',
  'F-Secret-Key': 'Tu Secret key'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

require "uri"
require "json"
require "net/http"

url = URI("{ HOST }/v1/clients/create")

http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request["F-PLUGIN"] = "9d4095c8f7ed5785cb14c0e3b033eeb8252416ed"
request["F-Api-Key"] = "Tu API key"
request["F-Secret-Key"] = "Tu Secret key"
request.body = JSON.dump({
  "rfc": "XIA190128J61",
  "razons": "XENON INDUSTRIAL ARTICLES",
  "codpos": 76343,
  "email": "[email protected]",
  "usocfdi": "G01",
  "regimen": "601",
  "calle": "AV. CIRCUNVALACION",
  "numero_exterior": "7947",
  "numero_interior": "B-1",
  "colonia": "Militar",
  "ciudad": "SANTIAGO DE QUERETARO",
  "delegacion": "NAVARRO",
  "localidad": "JALPAN DE SERRA",
  "estado": "QUERETARO",
  "pais": "MEX",
  "numregidtrib": "",
  "nombre": "SAUL",
  "apellidos": "ESTRADA",
  "telefono": "3344556677",
  "email2": "[email protected]",
  "email3": "[email protected]"
})

response = http.request(request)
puts response.read_body

Respuesta

Respuesta exitosa

{
    "status": "success",
    "Data": {
        "RazonSocial": "XENON INDUSTRIAL ARTICLES",
        "RFC": "XIA190128J61",
        "Regimen": "General de Ley Personas Morales",
        "RegimenId": "601",
        "Calle": "AV. CIRCUNVALACION",
        "Numero": "7947",
        "Interior": "B-1",
        "Colonia": "Militar",
        "CodigoPostal": "76343",
        "Ciudad": "SANTIAGO DE QUERETARO",
        "Delegacion": "SANTIAGO DE QUERETARO",
        "Estado": "QUERETARO",
        "Pais": "MEX",
        "NumRegIdTrib": "",
        "UsoCFDI": "G01",
        "Contacto": {
            "Nombre": "SAUL",
            "Apellidos": "ESTRADA",
            "Email": "[email protected]",
            "Email2": "[email protected]",
            "Email3": "[email protected]",
            "Telefono": "3344556677"
        },
        "UID": "6531ab68f20c6",
        "cfdis": 0,
        "cuentas_banco": []
    }
}

Respuesta erronea

Aviso

El mensaje de error puede variar dependiendo el nodo en el que haya información incorrecta. Te sugerimos leer cuidadosamente el mensaje del error ya que en el mismo se indica donde es necesario corregir la información.

{
  "status": "error",
  "message": {
    "rfc": [
      "El campo rfc es requerido"
    ]
  }
}

Actualizar cliente

A continuación se explica el método con el cual podremos actualizar un cliente de nuestra cuenta.

Podemos actualizar un cliente haciendo uso de los siguientes parámetros:

ParámetroTipoRequeridoDetalles
UIDStringRequeridoEs el identificador unico con el cual haremos referencia a el cliente que deseamos editar.
rfcStringRequeridoSe utiliza para indicar el RFC del cliente que vamos a registrar en nuestro catalogo
razonsStringRequerido

Indica la razón social de nuestro clienete, recuerda que la razon social debe escribirse como aparece en la constancia de situacion fiscal ademas, debes ingresar la razón socal sin el régimen capital.

Ejemplo:

Razón social:   RAZON SOCIAL DE PRUEBA S.A. DE C.V.

Parametro que enviaremos:   "rfc": "RAZON SOCIAL DE PRUEBA"

codposNumericoRequerido Se utiliza para indicar el codigo postal que pertenece a el domicilio fiscal de nuestro cliente.
emailStringRequerido Contiene la direccion de correo electronico de nuestro cliente y tambien a este correo es a el que se enviaran los comprobantes en caso de asi configurarlo en el timbrado.
usocfdiStringOpcional Se utiliza para definir el tipo de uso de CFDI que utilizara el cliente, este valor se almacena de forma provisional para recuperarlo pero por cada CFDI genereado a el cliente este uso de CFDI puede ser configurado
regimenStringRequerido

 Indica el regimen fiscal a el cual pertenece nuestro cliente, este valor debe ser expresado con la clave correspondiente a el regimen:

Ejemplo: Para General de Ley Personas Morales se envia el parametro

"regimen": "601"

Consulta el catálogo de claves de Uso de CFDI aqui.
calleStringOpcional Se utiliza para indicar la calle de el domicilio fiscal de nuestro cliente.
numero_exteriorStringOpcional Se utiliza para indicar el numero exterior de el domicilio fiscal de nuestro cliente.
numero_interiorStringOpcional  Se utiliza para indicar el numero interior de el domicilio fiscal de nuestro cliente.
coloniaStringOpcional  Se utiliza para indicar la colonia de el domicilio fiscal de nuestro cliente.
ciudadStringOpcional  Se utiliza para indicar la ciudad de el domicilio fiscal de nuestro cliente.
delegacionStringOpcional  Se utiliza para indicar la delegacion de el domicilio fiscal de nuestro cliente.
localidadStringOpcional   Se utiliza para indicar la localidad de el domicilio fiscal de nuestro cliente.
estadoStringOpcional   Se utiliza para indicar el estado de el domicilio fiscal de nuestro cliente.
paisStringRequerido

   Se utiliza para indicar el pais de el domicilio fiscal de nuestro cliente, este debe ingresarse con la abreviatura correspondiente

Ejemplo: "pais": "MEX"

Consulta el catálogo de paises aqui.
numregidtribStringOpcionalCampo condicional para registrar el número de identificación o registro fiscal del país de residencia para los efectos fiscales del remitente de los bienes o mercancías que se trasladan, cuando sea residente en el extranjero.
nombreStringOpcional Indica el nombre de nuestro cliente.
apellidosStringOpcional Se utiliza para ingresar los apellidos de nuestro cliente.
telefonoStringOpcional Campo para almacenar el numero telefonico para contactar a nuestro cliente.
email2StringOpcional Podemos almacenar una direccion de correo electronico alternativa para nuestro cliente.
email3StringOpcional Podemos almacenar una segunda direccion de correo electronico alternativa para nuestro cliente.

Importante

El método que se utiliza para actualizar un cliente es de tipo POST

Construcción de la URL

Host: https://facturaonline.com.mx/api (producción) / https://sandbox.facturaonline.com.mx/api (sandbox)

Endpoint: /v1/clients/{UID}/update

Ejemplo: https://facturaonline.com.mx/api/v1/clients/647143505f3f2/update

Tip

Para probar el ejemplo de código, necesitas cambiar "Tu API key" por la clave de API de tu cuenta, y "Tu Secret key" por la clave secreta correspondiente.

Ejemplo para actualizar un cliente

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => '{ HOST }/v1/clients/647143505f3f2/update',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{
    "rfc": "XIA190128J61",
    "razons": "XENON INDUSTRIAL ARTICLES",
    "codpos": 76343,
    "email": "[email protected]",
    "usocfdi": "G01",
    "regimen": "601",
    "calle": "AV. CIRCUNVALACION",
    "numero_exterior": "7947",
    "numero_interior": "B-1",
    "colonia": "Militar",
    "ciudad": "SANTIAGO DE QUERETARO",
    "delegacion": "NAVARRO",
    "localidad": "JALPAN DE SERRA",
    "estado": "QUERETARO",
    "pais": "MEX",
    "numregidtrib": "",
    "nombre": "SAUL",
    "apellidos": "ESTRADA",
    "telefono": "3344556677",
    "email2": "[email protected]",
    "email3": "[email protected]"
}',
  CURLOPT_HTTPHEADER => array(
    'Content-Type: application/json',
    'F-PLUGIN: 9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
    'F-Api-Key: Tu API key',
    'F-Secret-Key: Tu Secret key'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

var request = require('request');
var options = {
  'method': 'POST',
  'url': '{ HOST }/v1/clients/647143505f3f2/update',
  'headers': {
    'Content-Type': 'application/json',
    'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
    'F-Api-Key': 'Tu API key',
    'F-Secret-Key': 'Tu Secret key'
  },
  body: JSON.stringify({
    "rfc": "XIA190128J61",
    "razons": "XENON INDUSTRIAL ARTICLES",
    "codpos": 76343,
    "email": "[email protected]",
    "usocfdi": "G01",
    "regimen": "601",
    "calle": "AV. CIRCUNVALACION",
    "numero_exterior": "7947",
    "numero_interior": "B-1",
    "colonia": "Militar",
    "ciudad": "SANTIAGO DE QUERETARO",
    "delegacion": "NAVARRO",
    "localidad": "JALPAN DE SERRA",
    "estado": "QUERETARO",
    "pais": "MEX",
    "numregidtrib": "",
    "nombre": "SAUL",
    "apellidos": "ESTRADA",
    "telefono": "3344556677",
    "email2": "[email protected]",
    "email3": "[email protected]"
  })

};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

import requests
import json

url = "{ HOST }/v1/clients/647143505f3f2/update"

payload = json.dumps({
  "rfc": "XIA190128J61",
    "razons": "XENON INDUSTRIAL ARTICLES",
    "codpos": 76343,
    "email": "[email protected]",
    "usocfdi": "G01",
    "regimen": "601",
    "calle": "AV. CIRCUNVALACION",
    "numero_exterior": "7947",
    "numero_interior": "B-1",
    "colonia": "Militar",
    "ciudad": "SANTIAGO DE QUERETARO",
    "delegacion": "NAVARRO",
    "localidad": "JALPAN DE SERRA",
    "estado": "QUERETARO",
    "pais": "MEX",
    "numregidtrib": "",
    "nombre": "SAUL",
    "apellidos": "ESTRADA",
    "telefono": "3344556677",
    "email2": "[email protected]",
    "email3": "[email protected]"
})
headers = {
  'Content-Type': 'application/json',
  'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
  'F-Api-Key': 'Tu API key',
  'F-Secret-Key': 'Tu Secret key'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

require "uri"
require "json"
require "net/http"

url = URI("{ HOST }/v1/clients/647143505f3f2/update")

http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request["F-PLUGIN"] = "9d4095c8f7ed5785cb14c0e3b033eeb8252416ed"
request["F-Api-Key"] = "Tu API key"
request["F-Secret-Key"] = "Tu Secret key"
request.body = JSON.dump({
  "rfc": "XIA190128J61",
    "razons": "XENON INDUSTRIAL ARTICLES",
    "codpos": 76343,
    "email": "[email protected]",
    "usocfdi": "G01",
    "regimen": "601",
    "calle": "AV. CIRCUNVALACION",
    "numero_exterior": "7947",
    "numero_interior": "B-1",
    "colonia": "Militar",
    "ciudad": "SANTIAGO DE QUERETARO",
    "delegacion": "NAVARRO",
    "localidad": "JALPAN DE SERRA",
    "estado": "QUERETARO",
    "pais": "MEX",
    "numregidtrib": "",
    "nombre": "SAUL",
    "apellidos": "ESTRADA",
    "telefono": "3344556677",
    "email2": "[email protected]",
    "email3": "[email protected]"
})

response = http.request(request)
puts response.read_body

Respuesta

Respuesta exitosa

{
    "status": "success",
    "Data": {
        "RazonSocial": "XENON INDUSTRIAL ARTICLES",
        "RFC": "XIA190128J61",
        "Regimen": "General de Ley Personas Morales",
        "RegimenId": "601",
        "Calle": "AV. CIRCUNVALACION",
        "Numero": "7947",
        "Interior": "B-1",
        "Colonia": "Militar",
        "CodigoPostal": "76343",
        "Ciudad": "SANTIAGO DE QUERETARO",
        "Delegacion": "SANTIAGO DE QUERETARO",
        "Estado": "QUERETARO",
        "Pais": "MEX",
        "NumRegIdTrib": "",
        "UsoCFDI": "G01",
        "Contacto": {
            "Nombre": "SAUL",
            "Apellidos": "ESTRADA",
            "Email": "[email protected]",
            "Email2": "[email protected]",
            "Email3": "[email protected]",
            "Telefono": "3344556677"
        },
        "UID": "6531ab68f20c6",
        "cfdis": 0,
        "cuentas_banco": []
    }
}

Respuesta erronea

Aviso

El mensaje de error puede variar dependiendo el nodo en el que haya información incorrecta. Te sugerimos leer cuidadosamente el mensaje del error ya que en el mismo se indica donde es necesario corregir la información.

{
  "status": "error",
  "message": {
    "rfc": [
      "El campo rfc debe ser menor que 13 caracteres."
    ]
  }
}

Eliminar cliente

A continuación se explica el método con el cual podremos eliminar un cliente de nuestra cuenta.

Importante

Es importante tomar en cuenta que un cliente solo podra ser eliminado de nuestro catalogo de clientes cuando este no contiene CFDIs creados de otra forma aparecera un mensaje explicando el motivo como se muestra mas delante

Podemos eliminar un cliente de nuestra cuenta haciendo uso de los siguientes parámetros:

ParámetroTipoRequeridoDetalles
UIDStringRequerido Es el identificador aisgnado a nuestro cliente en la plataforma

Ejemplo:

"UID": "62b1dcf75a60f"

Construcción de la URL

Host: https://facturaonline.com.mx/api (producción) / https://sandbox.facturaonline.com.mx/api (sandbox)

Endpoint: /v1/clients/destroy/{UID}

Ejemplo: https://facturaonline.com.mx/api/v1/clients/destroy/62b1dcf75a60f

Tip

Para probar el ejemplo de código, necesitas cambiar "Tu API key" por la clave de API de tu cuenta, y "Tu Secret key" por la clave secreta correspondiente.

Ejemplo para eliminar un cliente de nuestra cuenta

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => '{ HOST }/v1/clients/destroy/62b1dcf75a60f',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_HTTPHEADER => array(
    'Content-Type: application/json',
    'F-PLUGIN: 9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
    'F-Api-Key: Tu API key',
    'F-Secret-Key: Tu Secret key'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

var request = require('request');
var options = {
  'method': 'POST',
  'url': '{ HOST }/v1/clients/destroy/62b1dcf75a60f',
  'headers': {
    'Content-Type': 'application/json',
    'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
    'F-Api-Key': 'Tu API key',
    'F-Secret-Key': 'Tu Secret key'
  }
};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

import requests
import json

url = "{ HOST }/v1/clients/destroy/62b1dcf75a60f"

payload = ""
headers = {
  'Content-Type': 'application/json',
  'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
  'F-Api-Key': 'Tu API key',
  'F-Secret-Key': 'Tu Secret key'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

require "uri"
require "json"
require "net/http"

url = URI("{ HOST }/v1/clients/destroy/62b1dcf75a60f")

http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request["F-PLUGIN"] = "9d4095c8f7ed5785cb14c0e3b033eeb8252416ed"
request["F-Api-Key"] = "Tu API key"
request["F-Secret-Key"] = "Tu Secret key"

response = http.request(request)
puts response.read_body

Respuesta

Respuesta exitosa

{
    "response": "success",
    "message": "Cliente eliminado exitosamente."
}

Ejemplo de respuesta de error

Aviso

El mensaje de error puede variar dependiendo el nodo en el que haya información incorrecta. Te sugerimos leer cuidadosamente el mensaje del error ya que en el mismo se indica donde es necesario corregir la información.

{
    "response": "error",
    "message": "El cliente ya cuenta con CFDI's por lo que no puede ser eliminado"
}

Last Updated:
Prev
Catálogos
Next
Empresas