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

Productos

Listar productos

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

Podemos consultar los productos que tenemos dados de alta, o filtrar por algunos parámetros

ParámetroTipoRequeridoDetalles
pageintOpcionalIndica número de página a consultar, por default posiciona en la página 1.
per_pageintOpcionalIndica el limite de resultados para mostrar, por default retorna 100 registros.

Construcción de la URL

Importante

Este método de tipo GET

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

Endpoint: /v3/products/list

Ejemplo: https://facturaonline.com.mx/api/v3/products/list

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 listado de productos

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => '{ HOST }/api/v3/products/list',
  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_POSTFIELDS =>'{
    "page": 2,
    "per_page": 4
}',
  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 }/api/v3/products/list',
  'headers': {
    'Content-Type': 'application/json',
    'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
    'F-Api-Key': 'Tu API key',
    'F-Secret-Key': 'Tu Secret key'
  },
  body: JSON.stringify({
    "page": 2,
    "per_page": 4
  })

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

import requests
import json

url = "{ HOST }/api/v3/products/list"

payload = json.dumps({
  "page": 2,
  "per_page": 4
})
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 }/api/v3/products/list")

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"
request.body = JSON.dump({
  "page": 2,
  "per_page": 4
})

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",
    "total": 100,
    "per_page": 4,
    "current_page": 2,
    "last_page": 25,
    "from": 5,
    "to": 8,
    "data": [
      {
        "code": "59fa4f114751d",
        "name": "Servicio técnico de orientación",
        "price": 1048.95,
        "sku": "sku-003",
        "unidad": "Unidad de servicio",
        "claveprodserv": "43232107",
        "claveunidad": "E48"
      },
      {
        "code": "59ea2a6886b4e",
        "name": "SERVICIO DE HOSPEDAJE PARA ELEMENTOS DEL SERVICIO DE PROTECCION FEDERAL DEL 01 AL 09 DE OCTUBRE",
        "price": 100,
        "sku": "HOSP2",
        "unidad": "Segundo [unidad de ángulo]",
        "claveprodserv": "22101708",
        "claveunidad": "D62"
      },
      {
        "code": "59ee370e03253",
        "name": "Muestra de material de medida para instalación",
        "price": 123,
        "sku": "12212121",
        "unidad": "Radián",
        "claveprodserv": "0",
        "claveunidad": "C81"
      },
      {
        "code": "59ee7312578f1",
        "name": "Producto de servicio de divisas",
        "price": 8888,
        "sku": "4533",
        "unidad": "Valor monetario",
        "claveprodserv": "84121603",
        "claveunidad": "M4"
      }
    ]
  }
]

Buscar un producto por UID

A continuación se explica como buscar un producto de nuestro catalogo por medio de su UID, con un ejemplo y la muestra de posibles respuestas obtenidas.

Podemos buscar un CFDI utilizando el UID como parámetro y obtener la información relacionada con este, a continuación se muestran las características de este valor.

ParámetroTipoRequeridoDetalles
UIDStringRequerido Es el identificador interno para la plataforma de Factura Online asignado al producto cuando lo creamos.

Construcción de la URL

Importante

Este método de tipo GET

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

Endpoint: /v3/products/show/{ UID de tu producto }

Ejemplo: https://facturaonline.com.mx/api/v3/products/show/6543f3bf0016d

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 listado de productos

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => '{ HOST }/api/v3/products/show/6543f3bf0016d',
  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 }/api/v3/products/show/6543f3bf0016d',
  '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 }/api/v3/products/show/6543f3bf0016d"

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 }/api/v3/products/show/6543f3bf0016d")

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

Ejemplo de respuesta exitosa

{
    "response": "success",
    "data": {
        "uid": "6543f3bf0016d",
        "name": "Gafas de sol",
        "price": "2000.523100",
        "sku": "142",
        "unidad": "Pieza",
        "claveprodserv": "78102203",
        "claveunidad": "H87"
    }
}

Ejemplo de respuesta erronea

{
  "response": "error",
  "data": "No se encontraron datos correspondientes a tu producto (6543f3f0016d)"
}

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.

Crear producto

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

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

ParámetroTipoRequeridoDetalles
codestringOpcionalIndica el código o SKU de tu producto.
namestringRequeridoIndica el nombre de tu producto.

Éste nombre se mostrará en el apartado de Conceptos de tu CFDI.
pricenumericRequeridoIndica el precio sin IVA de tu producto o servicio.
clavePSstringRequeridoIndica la clave del producto o servicio correspondiente a tu concepto.

Consulta el catálogo de Clave Producto/Servicio .
unitystringRequeridoIndica la unidad de medida, ésta debe corresponder a la clave indicada en el atributo claveUnity .

Consulta el catálogo de Clave Unidad .
claveUnitystringRequeridoIndica la clave de la unidad de medida, ésta debe corresponder a la unidad indicada en el atributo unity .

Consulta el catálogo de Clave Unidad .

Construcción de la URL

Importante

Este método es de es de tipo POST

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

Endpoint: /v3/products/create

Ejemplo: https://facturaonline.com.mx/api/v3/products/create

Tip

Para probar el código de ejemplo es necesario que reemplaces el texto Tu API key por el API KEY de tu cuenta, e Tu Secret key por el SECRET KEY correspondiente

Ejemplo para crear productos

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => '{ HOST }/v3/products/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 =>'{
      "code":"K001",
      "name": "Desarrollo de banner para publicidad",
      "price": "35.9",
      "clavePS":1154544511,
      "unity":"Unidad de servicio",
      "claveUnity": "E48"
}',
  CURLOPT_HTTPHEADER => array(
    'Content-Type: application/json',
    'F-PLUGIN: 9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
    'F-Api-Key: API.Key',
    'F-Secret-Key: Secret.Key'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

var request = require('request');
var options = {
  'method': 'POST',
  'url': '{ HOST }/v3/products/create',
  'headers': {
    'Content-Type': 'application/json',
    'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
    'F-Api-Key': 'API.Key',
    'F-Secret-Key': 'Secret.Key'
  },
  body: JSON.stringify({
    "code": "K001",
    "name": "Desarrollo de banner para publicidad",
    "price": "35.9",
    "clavePS": 1154544511,
    "unity": "Unidad de servicio",
    "claveUnity": "E48"
  })

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

import requests
import json

url = "{ HOST }/v3/products/create"

payload = json.dumps({
  "code": "K001",
  "name": "Desarrollo de banner para publicidad",
  "price": "35.9",
  "clavePS": 1154544511,
  "unity": "Unidad de servicio",
  "claveUnity": "E48"
})
headers = {
  'Content-Type': 'application/json',
  'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
  'F-Api-Key': 'API.Key',
  'F-Secret-Key': 'Secret.Key'
}

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

print(response.text)

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

url = URI("{ HOST }/v3/products/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"] = "API.Key"
request["F-Secret-Key"] = "Secret.Key"
request.body = JSON.dump({
  "code": "K001",
  "name": "Desarrollo de banner para publicidad",
  "price": "35.9",
  "clavePS": 1154544511,
  "unity": "Unidad de servicio",
  "claveUnity": "E48"
})

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

Respuesta

Importante

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

{
    "response": "success",
    "data": {
        "uid": "616de203d2ff7",
        "name": "Desarrollo de banner para publicidad",
        "sku": "K001",
        "price": "35.9",
        "clavePS": "1154544511",
        "unity": "Unidad de servicio",
        "claveUnity": "E48"
    }
}

Actualizar un producto

A continuación se explica el metódo con el cual podremos actualizar la información de un producto que existe dentro de nuestro catalogo junto algunos ejemplos de como realizarlo.

Para actualizar un producto son necesarios los siguientes parametros.

ParámetroTipoRequeridoDetalles
UIDstringRequeridoEs el identificador unico correspondiente a el producto que deseamos actualizar.
codestringOpcionalIndica el código o SKU de tu producto.
namestringRequeridoIndica el nombre de tu producto.

Éste nombre se mostrará en el apartado de Conceptos de tu CFDI.
pricenumericRequeridoIndica el precio sin IVA de tu producto o servicio.
clavePSstringRequeridoIndica la clave del producto o servicio correspondiente a tu concepto.

Consulta el catálogo de Clave Producto/Servicio .
unitystringRequeridoIndica la unidad de medida, ésta debe corresponder a la clave indicada en el atributo claveUnity .

Consulta el catálogo de Clave Unidad .
claveUnitystringRequeridoIndica la clave de la unidad de medida, ésta debe corresponder a la unidad indicada en el atributo unity .

Consulta el catálogo de Clave Unidad .

Construcción de la URL

Importante

Este método es de es de tipo POST

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

Endpoint: /v3/products/update/{ UID de tu producto }

Ejemplo: https://facturaonline.com.mx/api/v3/products/66830797f2254/

Tip

Para probar el código de ejemplo es necesario que reemplaces el texto Tu API key por el API KEY de tu cuenta, e Tu Secret key por el SECRET KEY correspondiente

Ejemplo para crear productos

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => '{ HOST }/api/v3/products/update/66830797f2254',
  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 =>'{
      
      "code":"K002",
      "name": "Desarrollo a la medida",
      "price": "35.9",
      "clavePS": 81111500,
      "unity":"Unidad de servicio",
      "claveUnity": "E48"
}',
  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 }/api/v3/products/update/66830797f2254',
  'headers': {
    'Content-Type': 'application/json',
    'F-PLUGIN': '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
    'F-Api-Key': 'Tu API key',
    'F-Secret-Key': 'Tu Secret key'
  },
  body: JSON.stringify({
    "code":"K002",
    "name": "Desarrollo a la medida",
    "price": "35.9",
    "clavePS": 81111500,
    "unity": "Unidad de servicio",
    "claveUnity": "E48"
  })

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

import requests
import json

url = "{ HOST }/api/v3/products/update/66830797f2254"

payload = json.dumps({
  "code": "K002",
  "name": "Desarrollo a la medida",
  "price": "35.9",
  "clavePS": 81111500,
  "unity": "Unidad de servicio",
  "claveUnity": "E48"
})
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 }/api/v3/products/update/66830797f2254")

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({
  "code": "K002",
  "name": "Desarrollo a la medida",
  "price": "35.9",
  "clavePS": 81111500,
  "unity": "Unidad de servicio",
  "claveUnity": "E48"
})

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

Respuesta

Ejemplo de respuesta exitosa

{
    "response": "success",
    "data": {
        "uid": "668331248fcf5",
        "name": "Desarrollo de software de productividad",
        "sku": "SOFT001",
        "price": "36000.99",
        "clavePS": "81111500",
        "unity": "Unidad de servicio",
        "claveUnity": "E48"
    }
}

Ejemplo de respuesta erronea

{
    "response": "error",
    "message": "El producto que intentas actualizar ya no existe"
}

Aviso

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

Eliminar un producto

A continuación se explica el metódo con el cual podremos elminar un producto y toda su información de nuestro catalogo junto algunos ejemplos de como realizarlo.

Podemos eliminar un CFDI utilizando el UID como parámetro para realizar esta acción , a continuación se muestran las características de este valor.

ParámetroTipoRequeridoDetalles
UIDStringRequerido Es el identificador interno para la plataforma de Factura Online asignado al producto cuando lo creamos.

Construcción de la URL

Importante

Este método es de es de tipo GET

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

Endpoint: /v3/products/delete/{ UID de tu producto }

Ejemplo: https://facturaonline.com.mx/api/v3/delete/66830797f2254/

Tip

Para probar el código de ejemplo es necesario que reemplaces el texto Tu API key por el API KEY de tu cuenta, e Tu Secret key por el SECRET KEY correspondiente

Ejemplo para crear productos

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => '{ HOST }/api/v3/products/delete/66830797f2254',
  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 }/api/v3/products/delete/66830797f2254',
  '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 }/api/v3/products/delete/66830797f2254"

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 }/api/v3/products/delete/66830797f2254")

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

Ejemplo de respuesta exitosa

{
    "response": "success",
    "message": "Producto eliminado exitosamente"
}

Ejemplo de respuesta erronea

{
    "response": "error",
    "message": "Producto no eliminado intenta más tarde"
}

Aviso

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

Last Updated:
Prev
Series
Next
Addendas