Factura.com API

La documentación de la API de Factura.com ofrece una descripción de los métodos y endpoints disponibles, ejemplos de las posibles respuestas obtenidas e información general para facilitar el uso de nuestra API.

Documentación

Complemento de pago

A continuación se explica como crear un complemento de pago, con un ejemplo y muestra de posibles respuestas obtenidas.

Podemos crear un CFDI con complemento de pago haciendo uso de los siguientes parámetros:

ParámetroTipoRequeridoDetalles
ReceptorarrayRequeridoIndica el UID del receptor/cliente previamente creado en factura.com.


Ver listado de atributos posibles para este nodo.

Ejemplo:
"Receptor": {
"ResidenciaFiscal": "",
"UID": "55c0fdc67593d"
}
TipoDocumentostringRequeridoEs necesario enviar la clave pago en este campo.

Ejemplo:
"TipoDocumento": "pago"
ConceptosarrayRequeridoEs un arreglo de objetos, en el que debe definirse un solo objeto con la siguiente información.

Ejemplo:
"Conceptos": [
{
"ClaveProdServ": "84111506",
"Cantidad": "1",
"ClaveUnidad": "ACT",
"Descripcion": "Pago",
"ValorUnitario": "0",
"Importe": "0"
}
]
UsoCFDIstringRequeridoIndica siempre la clave P01 correspondiente a Por definir.

Ejemplo:
"UsoCFDI": "P01"
SerienumberRequeridoIndica id de la serie con la que deseas timbrar el documento.

Ésta debe estar dada de alta en tu panel de Factura.com y coincidir con el tipo de CFDI que deseas timbrar.

Para obtenerlo Inicia sesión y dirígete al Menú lateral - Configuraciones - Series y folios​


Ejemplo:
"Serie": 1247
CfdiRelacionadosarrayOpcionalEn caso que tu complemento sustituya a otro envía un arreglo con el/los UUID's con los que está relacionado.

Ver listado de atributos posibles para este nodo.

Ejemplo: "CfdiRelacionados": {
"TipoRelacion": "04",
"UUID": [
"29c98cb2-f72a-4cbe-a297-606da335e187",
"a96f6b9a-70aa-4f2d-bc5e-d54fb7371236"
]
}
MonedastringRequeridoSe debe registrar siempre el valor "XXX".

Ejemplo:
"Moneda": "XXX"
NumOrdernumberOpcionalIndica el número de orden o pedido.

Este dato es solo para control interno.

Ejemplo:
"NumOrder": "85abf36"
FechastringOpcionalIndica una fecha con formato (Y-m-d\TH: m :s).

Es posible enviar hasta 72 horas de atraso a la fecha actual, sin embargo no están permitidas las fechas futuras.

Ejemplo:
"Fecha": "2018/12/04"
EnviarCorreoboleanOpcionalIndica si deseas que el CFDI se envíe a tu cliente por correo electrónico. Por default esta opción es true.

Ejemplo:
"EnviarCorreo": "true"
PagosArrayRequeridoIndica los datos del complemento de pago.

Ver lista de atributos requeridos para este nodo.

🚧

Importante

Es necesario que envíes los valores (precios, cálculo de impuestos, subtotales, etc) de acuerdo a tus necesidades. Esto incluye número de decimales y redondeos.

Nodo: Pagos

Es el nodo en el que se ingresa la información correspondiente complemento de pagos.

A continuación se presentan los atibutos que debe incluir el nodo Pagos:

ParámetroTipoRequeridoDetalles
typeComplementstringRequeridoIndica el tipo de complemento, en este caso es pagos.

Ejemplo:
"typeComplement": "pagos"
FechaPagostringRequeridoIndica la fecha y hora en la que el beneficiario recibe el pago, debe estar expresada en el siguiente formato: aaaa-mm-ddThh:mm:ss.

Ejemplo:
"FechaPago": "2018-12-01T12:00:00"
FormaDePagoPstringRequeridoIndica la clave de la forma de pago.

Ésta puedes consultarla en el Catálogo de formas de pago.

Nota: debe ser distinta a la clave 99 - Por definir.

Ejemplo:
"FormaPago": "01"
MonedaPstringRequeridoIndica la clave de la moneda del pago.

Ésta puedes consultarla en el Catálogo de monedas

Ejemplo:
"Moneda": "MXN"
TipoCambioPstringOpcionalIndica el tipo de cambio vigente al momento de recibir el pago.

Ejemplo:
"TipoCambio": "19.85"
MontoNumberRequeridoIndica el importe del pago, éste debe ser mayor a 0.

Ejemplo:
"Monto": "1000.00"
NumOperacionstringOpcionalIndica el número de orden o pedido.

Este dato es solo para control interno.

Ejemplo:
"NumOrder": "85abf36"
RfcEmisorCtaOrdstringOpcionalSi lo deseas, indica el RFC del banco de la cuenta de origen de la transferencia.


Ejemplo:
"RfcEmisorCtaOrd": "BSM970519DU8"
NomBancoOrdExtstringOpcionalSi lo deseas, indica el nombre del banco de la cuenta ordenante.

Ejemplo:
"NomBancoOrdExt": "BANCO SANTANDER (MEXICO) S.A."
CtaOrdenantestringOpcionalSi lo deseas, indica el número de la cuenta con la que se realizó el pago, o la CLABE interbancaria de la cuenta desde donde se hizo la transferencia.

Ejemplo:
"CtaOrdenante": "15478952364"
RfcEmisorCtaBenstringOpcionalSi lo deseas, indica el RFC del banco de la cuenta de destino de la transferencia.


Ejemplo:
"RfcEmisorCtaOrd": "BNM840515VB1"
CtaBeneficiariostringOpcionalSi lo deseas, indica el número de la cuenta o la CLABE interbancaria de la cuenta desde donde se recibió el pago.

Ejemplo:
"CtaOrdenante": "15478952364"
TipoCadPagostringOpcionalIndica la clave del tipo de cadena de pago.

Consulta las claves correspondientes a Forma de pago válidas.
relacionadosarrayRequeridoIndica al menos un documento relacionado para tu complemento de pago.

Revisa los atributos que debe llevar este nodo.

Construcción de la URL

Host: https://factura.com (producción) / http://devfactura.in (sandbox)
Endpoint: api/v3/cfdi33/complemento/pagos/create

Ejemplo: https://factura.com/api/v3/cfdi33/complemento/pagos/create

Ejemplo:

<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://factura.com/api/v3/cfdi33/complemento/pagos/create");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_POST, TRUE);

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
        "Receptor" => [
            "UID" => "55c0fdc675XXX"
        ],
        "TipoDocumento" => "pago",
        "UsoCFDI" => "P01",
        "Redondeo" => "2",
        "FormaPago" => "03",
        "MetodoPago" => "PUE",
        "Moneda" => "XXX",
        "Serie" => 1,
        "EnviarCorreo" => "true",
        "Conceptos" => [[
            "ClaveProdServ" => "84111506",
            "Cantidad" => "1",
            "ClaveUnidad" => "ACT",
            "Descripcion" => "Pago",
            "ValorUnitario" => "0",
            "Complemento" => [[
                "typeComplement" => "pagos",
                "FechaPago" => "2020-03-04T12:00:00",
                "FormaDePagoP" => "03",
                "MonedaP" => "MXN",
                "Monto" => "30000.00",
                "relacionados" => [
                    [
                        "IdDocumento" => "202d87c1-1b31-40ff-96fe-b8b05a1c1xxx",
                        "ImpSaldoAnt" => "30000.00",
                        "ImpPagado" => "30000.00",
                        "ImpSaldoInsoluto" => "0",
                        "MetodoDePagoDR" => "PUE",
                        "MonedaDR" => "MXN",
                        "TipoCambioDR": 0,
                        "NumParcialidad" => "1",
                        "Folio" => 1001,
                        "Serie" => "ABR",
                    ]
                ],
            ]]
        ]],
    ]));

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
   "Content-Type: application/json",
    "F-PLUGIN: " . '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',
    "F-Api-Key: ". 'Ingresa API KEY',
    "F-Secret-Key: " . 'Ingresa SECRET KEY'
));

$response = curl_exec($ch);
curl_close($ch);

var_dump($response);
{
   "Receptor":{
      "UID":"55c0fdc675XXX"
   },
   "TipoDocumento":"pago",
   "UsoCFDI":"P01",
   "Redondeo":"2",
   "FormaPago":"03",
   "MetodoPago":"PUE",
   "Moneda":"XXX",
   "Serie":1,
   "EnviarCorreo":"true",
   "Conceptos":[
      {
         "ClaveProdServ":"84111506",
         "Cantidad":"1",
         "ClaveUnidad":"ACT",
         "Descripcion":"Pago",
         "ValorUnitario":"0",
         "Complemento":[
            {
               "typeComplement":"pagos",
               "FechaPago":"2020-03-04T12:00:00",
               "FormaDePagoP":"03",
               "MonedaP":"MXN",
               "Monto":"30000.00",
               "relacionados":[
                  {
                     "IdDocumento":"202d87c1-1b31-40ff-96fe-b8b05a1c1xxx",
                     "ImpSaldoAnt":"30000.00",
                     "ImpPagado":"30000.00",
                     "ImpSaldoInsoluto":"0",
                     "MetodoDePagoDR":"PUE",
                     "MonedaDR":"MXN",
                     "NumParcialidad":"1",
                     "Folio": 1001,
                     "Serie":"ABR"
                  }
               ]
            }
         ]
      }
   ]
}

📘

Recuerda que

Para probar el código de ejemplo es necesario que reemplaces el texto Ingresa API KEY por el API KEY de tu cuenta, e Ingresa SECRET KEY por el SECRET KEY correspondiente.
Así como cambiar los UID de los CFDIs relacionados y de receptor.

Respuesta:

{
  "response": "success",
  "message": "Facturacreadayenviadasatisfactoriamente",
  "UUID": "11299a64-db3f-4dfd-8ccb-5013ba034fXX",
  "uid": "5c11578d2f71d",
  "SAT": {
    "UUID": "11299a64-db3f-4dfd-8ccb-5013ba034fXXX",
    "FechaTimbrado": "2018-12-12T12: 46: 40",
    "NoCertificadoSAT": "20001000000300022323",
    "Version": "1.1",
    "SelloSAT": "On\/VuLDaF13cXUnMV79lKkvaKMW4IGkTd7QvBK+G9c4hmsYGWRfAGfYfUoh2Ab2IhRhw6VSP2IJAij8Ad0oSThW5+FOWRVax6jX0SHXFUWC8IXN5xuK2t6qVqQ5iRZt8ZVjTovz6Q8nP09cGBB46ikwWb9W9LTALl+ZtF2K6fQ0NnNXJy8a+GeMTKe\/UpVnoPoLC179gkHTJZCJzYGUCcOlccSCE5Bxz6MzJQxGTGqmJi9vNuEpcH2tYwO9VzSOXL4foPt+oa5Jqc5r4c++gah97+1+NGuMUvaQX6kMq8PFUq5YXKo83sO2Flj54Ux68XsCLDv3Twc1h1FI4yCVXXXX==",
    "SelloCFD": "X5rm9\/shEu3u6oNT0TOdjOMfKD3kob9RBoB+FdHcD3wQhCp4ksA\/YtgwW+dTF10ezyxsEQnc6V9XteNRe4sHyzUcedERUh1XWp+JTM247Rg2NHrGBecAYHPOFgB218ERSrCavaD949uPBR1GamXnNAdkL5YLxgbfjPLfMzE6sli0NdgsBuCES2hrvsU9FA0wLTenTP6c6B7kZd7kGVbKBRFixkB+MYvWtML1D2WK+XXXXX+IviFoJtSTd3OAFEBspy90t779l8Tgk4J+zs2Ug=="
  },
  "INV": {
    "Serie": "PA",
    "Folio": 71
  },
  "invoice_uid": "5c11578d2f7XX"
}
{
  "response": "error",
  "message": {
    "message": "401 - El rango de la fecha de generaci\u00f3n no debe de ser mayor a 72 horas para la emisi\u00f3n del timbre.",
    "messageDetail": "Comprobante.Fecha: Fecha de emisi\u00f3n: 2018-05-16T13:04:20 Fecha del Servidor: 2018-12-12T13:02:24 La fecha de emision no se encuentra en el rango permitido: 2018-12-09T13:02:24 - 2018-12-12T14:07:24",
    "data": null,
    "status": "error"
  },
  "xmlerror": "\n<\/cfdi:Conceptos><\/pago10:Pago><\/pago10:Pagos><\/cfdi:Complemento><\/cfdi:Comprobante>\n"
}

❗️

Sobre errores

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.

Updated 4 days ago

Complemento de pago


A continuación se explica como crear un complemento de pago, con un ejemplo y muestra de posibles respuestas obtenidas.

Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.