Logo blanco

Autenticación

La autenticación de la cuenta se hace mediante el uso de los headers (encabezados) de una petición. El API requerirá el uso de la credencial API KEY PRIVADA encontrada en la sección de configuración. Es importante lo siguiente:

  • Usar tu API KEY PRIVADA correcta para el ambiente en el que estás trabajando. Para modo de pruebas utilizar el API KEY PRIVADA de sandbox y para producción utilizar el API KEY PRIVADA de producción.
  • Nunca compartas tus API KEYS, ya que contienen información confidencial de tu cuenta y cualquier persona con ellas podrá realizar movimientos en ella.

  
    using System.Net.Http;
    using System.Web;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Linq;

    private string GetPostResponse(String uri, Dictionary data) {
      try {
          string jsonData = JsonConvert.SerializeObject(data);
          using (var client = new HttpClient()) {
              client.DefaultRequestHeaders.Add("Authorization", $"Token token=#{EMPRESA_API_KEY_PRIVADA}");
              client.DefaultRequestHeaders.Add("ACCEPT", "application/json");
              client.DefaultRequestHeaders.Add("CONTENT_TYPE", "application/json");
              client.DefaultRequestHeaders.Add("Access-Control-Allow-Origin", "*");
              client.DefaultRequestHeaders.Add("Method", "POST");
              var response = client.PostAsync(uri, new StringContent(jsonData, System.Text.Encoding.Default, "application/json"));
              var response_string = response.Result.Content.ReadAsStringAsync();
              Console.WriteLine(response_string.Result);
              return response_string.Result;
          }
      } catch(Exception e) {
          Console.WriteLine("{0} Excepcion.", e);
          return null;
      }
    }
  
  
    import okhttp3.OkHttpClient;
    import okhttp3.Request;
    import okhttp3.RequestBody;
    import okhttp3.Response;

    public  final static okhttp3.MediaType JSON = okhttp3.MediaType.parse("application/json; charset=utf-8");

    private String getPostResponse(String uri, String data) {
      try {
        OkHttpClient client = new OkHttpClient();
        RequestBody body = RequestBody.create(JSON, data);
        Request request = new Request.Builder().url(uri).post(body)
          .header("Authorization", "Token token=".concat('#{EMPRESA_API_KEY_PRIVADA}'))
          .addHeader("ACCEPT", "application/json")
          .addHeader("CONTENT_TYPE", "application/json")
          .addHeader("Access-Control-Allow-Origin", "*").build();
        Response response = client.newCall(request).execute();
        return response.body().string();
      } catch(Exception e) {
        System.out.println(e);
        return null;
      }
    }
  
  
    use GuzzleHttp\Client;
    use GuzzleHttp\Psr7\Request;
    use GuzzleHttp\Psr7;

    private function getPostResponse($uri, $data) {
      $client = new GuzzleHttp\Client(['base_uri' => $uri]);
      $options = ['headers' => [
        'Authorization' => "Token token=#{EMPRESA_API_KEY_PRIVADA}",
        'Accept'        => 'application/json',
        'Content-Type'  => 'application/json',
        'Access-Control-Allow-Origin' => '*'      
      ],'body' => json_encode($data)];
      
      $response = $client->request('POST', $uri, $options);
      $stream = Psr7\stream_for($response->getBody());
      return json_decode($stream, true);
    }
  
  
    require 'unirest'
    require 'json'

    def get_post_response(uri, data)
      headers = {"Authorization": "Token token=#{EMPRESA_API_KEY_PRIVADA}", "Accept": "application/json", "Content-Type": "application/json", "Access-Control-Allow-Origin" => "*"}
      response = Unirest.post uri, headers:headers, parameters:data.to_json
      return response.body
    end
  

Estructura

El objeto JSON se compone de dos estructuras principales. Los atributos y sub-estructuras, varían de acuerdo a la acción solicitada del API y las propiedades de los objetos de los cuales se desea ejecutar la acción específica.

La definición de la estructura data se define de diferente manera de acuerdo al objeto y acción.

Meta

Atributo Tipo de dato Descripción Requerido
empresa_uid string Identificador de la empresa Si
empresa_api_key string API KEY pública de la empresa Si
ambiente string Indica si es ambiente de sandbox o producción. Acepta valores "S" o "P" Si
objeto string Identificador del elemento. Acepta el valor "factura" Si
    
      {  
        "meta":{  
            "empresa_uid":"asd123asd",
            "empresa_api_key":"123123123",
            "ambiente":"S",
            "objeto":"factura"
        },
        "data":[  
            {
              # Comprobantes
            }
        ]
      }
    
  

Certificado de Sello Digital

Para hacer uso del API, es necesario que se tenga disponible el certificado de sellos digitales, la llave privada y su contraseña.

  
  using System;
  using System.Collections;
  using System.Collections.Generic;
  using System.Security.Cryptography.X509Certificates;
  using System.Security.Cryptography;
  using System.Text;
  using System.IO;
  using ApiFacturacionDocDigitales;
  using Org.BouncyCastle.Crypto;
  using Org.BouncyCastle.Security;
  using Org.BouncyCastle.OpenSsl;

  namespace ApiFacturacionDocDigitales
  {
      public class CertificadosDocDigitales {
          public string ExportarCertificadoPem(string pathCertificado) {
              X509Certificate cert = X509Certificate.CreateFromCertFile(pathCertificado);
              string contenido = Convert.ToBase64String(cert.Export(X509ContentType.Cert), Base64FormattingOptions.InsertLineBreaks);
              string pem = FormatoPEMCertificado(contenido, new StringBuilder());
              return pem;           
          }

          public string ExportarLlavePem(string pathLlave, string passwordLlave) {
              byte[] llaveBytes = File.ReadAllBytes(pathLlave);
              AsymmetricKeyParameter asp = PrivateKeyFactory.DecryptKey(passwordLlave.ToCharArray(), llaveBytes);
              StringWriter stWriter = new StringWriter();
              PemWriter pmw = new PemWriter(stWriter);
              pmw.WriteObject(asp);
              stWriter.Close();
              return stWriter.ToString();
          }

          private string FormatoPEMCertificado(string contenido, StringBuilder builder) {
              builder.AppendLine("-----BEGIN CERTIFICATE-----");
              builder.AppendLine(contenido);
              builder.AppendLine("-----END CERTIFICATE-----");
              return builder.ToString();
          }
      }
  }
  
  
    package docdigitales;
    import java.io.ByteArrayInputStream;
    import java.io.File;
    import java.io.StringWriter;
    import java.nio.file.Files;
    import java.security.cert.CertificateEncodingException;
    import java.security.cert.CertificateFactory;
    import java.security.cert.X509Certificate;
    import javax.xml.bind.DatatypeConverter;

    public class Certificados {

      public static String exportarCertificadoPem(String pathCertificado) {
        try {
          CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
          byte[] buffer = Files.readAllBytes(new File(pathCertificado).toPath());
          X509Certificate cert = (X509Certificate)certFactory.generateCertificate(new ByteArrayInputStream(buffer));
          return formatoPemCertificado(cert, new StringWriter());
        } catch (Exception ioe) {
          System.out.println(ioe.toString());
          return null;
        } 
      }

      private static String formatoPemCertificado(X509Certificate certificado, StringWriter writer) {
        try {
          writer.write("-----BEGIN CERTIFICATE-----\n");
          writer.write(DatatypeConverter.printBase64Binary(certificado.getEncoded()).replaceAll("(.{64})", "$1\n"));
          writer.write("\n-----END CERTIFICATE-----\n");
        } catch (CertificateEncodingException e) {
          return null;
        }
        return writer.toString();
      }
    }
  
  
    class Certificados {
      public function contenidoCertificado($pathCertificado) {
        $archivo = file_get_contents($pathCertificado);
        $cert = "-----BEGIN CERTIFICATE-----\n" . chunk_split(base64_encode($archivo), 64, "\n") . "-----END CERTIFICATE-----";
        return $cert;
      }
    }
  
  
    module Docdigitales
      class Certificado
        def contenido_certificado(path_certificado)
          OpenSSL::X509::Certificate.new File.read path_certificado
        end
      end
    end
  

Llave privada

Para hacer uso del API, es necesario contar con la Llave Privada (.key) en formato PEM.

Suponiendo que el password de la llave sea VEFLPV9W0S, el ejemplo convertiría a formato PEM la llave privada

  
    openssl pkcs8 -inform DER -in llave.key -passin pass:VEFLPV9W0S -out key.pem
  

Generación de una Factura

El objeto de facturación representa un objeto de un CFDI de tipo factura. Los detalles de cada campo y su estructura se basan en la definición establecida por el SAT en su versión CFDI 3.3. Específicamente para el timbrado de una factura, se definieron los elementos de la estructura JSON similar a la definida en el Anexo 20 de la RMF.

Las descripciones que se encuentran a continuación, fueron tomadas del documento Anexo 20, publicado por el SAT.

Ruta de Generación

          
          POST https://api.docdigitales.com/v1/facturas/generar
          
        

datos_fiscales

Atributos Tipo de dato Descripción Requerido
certificado_pem string Certificado de sellos en formato PEM Si
llave_pem string Llave codificada en formato PEM Si
llave_password string Password de la llave Si

cfdi

Atributos Tipo de dato Requerido
cfdi__comprobante Objeto Si info
Estándar de Comprobante Fiscal Digital por Internet.

cfdi__comprobante

Atributos Tipo de dato Requerido
serie string Opcional info
Atributo opcional para precisar la serie para control interno del contribuyente. Este atributo acepta una cadena de caracteres.
folio string Opcional info
Atributo opcional para control interno del contribuyente que expresa el folio del comprobante, acepta una cadena de caracteres.
fecha string Si info
Atributo requerido para la expresión de la fecha y hora de expedición del Comprobante Fiscal Digital por Internet. Se expresa en la forma AAAA-MM-DDThh:mm:ss y debe corresponder con la hora local donde se expide el comprobante.
tipo_comprobante string Si info
Atributo requerido para expresar la clave del efecto del comprobante fiscal para el contribuyente emisor.
lugar_expedicion string Si info
Atributo requerido para incorporar el código postal del lugar de expedición del comprobante (domicilio de la matriz o de la sucursal).
forma_pago string Opcional info
Atributo condicional para expresar la clave de la forma de pago de los bienes o servicios amparados por el comprobante. Si no se conoce la forma de pago este atributo se debe omitir.
metodo_pago string Opcional info
Atributo condicional para precisar la clave del método de pago que aplica para este comprobante fiscal digital por Internet, conforme al Artículo 29-A fracción VII incisos a y b del CFF.
moneda string Si info
Atributo requerido para identificar la clave de la moneda utilizada para expresar los montos, cuando se usa moneda nacional se registra MXN. Conforme con la especificación ISO 4217.
tipo_cambio string Si info
Atributo condicional para representar el tipo de cambio conforme con la moneda usada. Es requerido cuando la clave de moneda es distinta de MXN y de XXX. El valor debe refleja el número de pesos mexicanos que equivalen a una unidad de la divisa señalada en el atributo moneda. Si el valor está fuera del porcentaje aplicable a la moneda tomado del catálogo c_Moneda, el emisor debe obtener del PAC que vaya a timbrar el CFDI, de manera no automática, una clave de confirmación para ratificar que el valor es correcto e integrar dicha clave en el atributo Confirmacion.
condiciones_pago string Opcional info
Atributo condicional para expresar las condiciones comerciales aplicables para el pago del comprobante fiscal digital por Internet. Este atributo puede ser condicionado mediante atributos o complementos.
subtotal string Si info
Atributo requerido para representar la suma de los importes de los conceptos antes de descuentos e impuesto. No se permiten valores negativos.
total string Si info
Atributo requerido para representar la suma del subtotal, menos los descuentos aplicables, más las contribuciones recibidas (impuestos trasladados - federales o locales, derechos, productos, aprovechamientos, aportaciones de seguridad social, contribuciones de mejoras) menos los impuestos retenidos. Si el valor es superior al límite que establezca el SAT en la Resolución Miscelánea Fiscal vigente, el emisor debe obtener del PAC que vaya a timbrar el CFDI, de manera no automática, una clave de confirmación para ratificar que el valor es correcto e integrar dicha clave en el atributo Confirmacion. No se permiten valores negativos.
cfdi__emisor Objeto Si info
Expresa la información del contribuyente emisor del comprobante.
cfdi__receptor Objeto Si info
Expresa la información del contribuyente receptor del comprobante.
cfdi__cfdi_relacionados Objeto Opcional info
La información de los comprobantes relacionados.
cfdi__conceptos Objeto Si info
Información detallada de un bien o servicio amparado en el comprobante.
cfdi__impuestos Objeto Opcional info
Nodo condicional para expresar el resumen de los impuestos aplicables.

cfdi__emisor

Atributos Tipo de dato Requerido
rfc string Si info
Atributo requerido para registrar la Clave del Registro Federal de Contribuyentes correspondiente al contribuyente emisor del comprobante.
nombre string Opcional info
Atributo opcional para registrar el nombre, denominación o razón social del contribuyente emisor del comprobante.
regimen_fiscal string Si info
Atributo requerido para incorporar la clave del régimen del contribuyente emisor al que aplicará el efecto fiscal de este comprobante.

cfdi__receptor

Atributos Tipo de dato Requerido
rfc string Si info
Atributo requerido para precisar la Clave del Registro Federal de Contribuyentes correspondiente al contribuyente receptor del comprobante.
nombre string Opcional info
Atributo opcional para precisar el nombre, denominación o razón social del contribuyente receptor del comprobante.
uso_cfdi string Si info
Atributo requerido para expresar la clave del uso que dará a esta factura el receptor del CFDI.

cfdi__cfdi_relacionados

Atributos Tipo de dato Requerido
tipo_relacion string Si info
Atributo requerido para indicar la clave de la relación que existe entre éste que se esta generando y el o los CFDI previos.
cfdi__cfdi_relacionado Array [ ] Objeto Si info
Información de los comprobantes relacionados

cfdi__cfdi_relacionado

Atributos Tipo de dato Requerido
uuid string Si info
Atributo opcional para registrar el folio fiscal (UUID) de un CFDI relacionado con el presente comprobante, por ejemplo: Si el CFDI relacionado es un comprobante de traslado que sirve para registrar el movimiento de la mercancía. Si este comprobante se usa como nota de crédito o nota de débito del comprobante relacionado. Si este comprobante es una devolución sobre el comprobante relacionado. Si éste sustituye a una factura cancelada

cfdi__conceptos

Atributos Tipo de dato Requerido
clave_producto_servicio string Si info
Atributo requerido para expresar la clave del producto o del servicio amparado por el presente concepto. Es requerido y deben utilizar las claves del catálogo de productos y servicios, cuando los conceptos que registren por sus actividades correspondan con dichos conceptos.
clave_unidad string Si info
Atributo requerido para precisar la clave de unidad de medida estandarizada aplicable para la cantidad expresada en el concepto. La unidad debe corresponder con la descripción del concepto.
cantidad string Si info
Atributo requerido para precisar la cantidad de bienes o servicios del tipo particular definido por el presente concepto.
descripcion string Si info
Atributo requerido para precisar la descripción del bien o servicio cubierto por el presente concepto.
valor_unitario string Si info
Atributo requerido para precisar el valor o precio unitario del bien o servicio cubierto por el presente concepto.
importe string Si info
Atributo requerido para precisar el importe total de los bienes o servicios del presente concepto. Debe ser equivalente al resultado de multiplicar la cantidad por el valor unitario expresado en el concepto. No se permiten valores negativos.
unidad string Opcional info
Atributo opcional para precisar la unidad de medida propia de la operación del emisor, aplicable para la cantidad expresada en el concepto. La unidad debe corresponder con la descripción del concepto.
no_identificacion string Opcional info
Atributo opcional para expresar el número de parte, identificador del producto o del servicio, la clave de producto o servicio, SKU o equivalente, propia de la operación del emisor, amparado por el presente concepto. Opcionalmente se puede utilizar claves del estándar GTIN.
cfdi__impuestos Objeto Opcional info
Nodo opcional para capturar los impuestos aplicables al presente concepto. Cuando un concepto no registra un impuesto, implica que no es objeto del mismo.

cfdi__impuestos
cfdi:comprobante

Atributos Tipo de dato Requerido
total_impuestos_trasladados string Opcional info
Atributo condicional para expresar el total de los impuestos trasladados que se desprenden de los conceptos expresados en el comprobante fiscal digital por Internet. No se permiten valores negativos. Es requerido cuando en los conceptos se registren impuestos trasladados
total_impuestos_retenidos string Opcional info
Atributo condicional para expresar el total de los impuestos retenidos que se desprenden de los conceptos expresados en el comprobante fiscal digital por Internet. No se permiten valores negativos. Es requerido cuando en los conceptos se registren impuestos retenidos
cfdi__traslados Objeto Opcional info
Nodo opcional para asentar los impuestos trasladados aplicables al presente concepto.
cfdi__retenciones Objeto Opcional info
Nodo opcional para asentar los impuestos retenidos aplicables al presente concepto.

cfdi__traslado

Atributos Tipo de dato Requerido
base string Si info
Atributo requerido para señalar la base para el cálculo del impuesto, la determinación de la base se realiza de acuerdo con las disposiciones fiscales vigentes. No se permiten valores negativos.
impuesto string Si info
Atributo requerido para señalar la clave del tipo de impuesto trasladado aplicable al concepto.
tipo_factor string Si info
Atributo requerido para señalar la clave del tipo de factor que se aplica a la base del impuesto.
tasa_cuota string Opcional info
Atributo condicional para señalar el valor de la tasa o cuota del impuesto que se traslada para el presente concepto. Es requerido cuando el atributo TipoFactor tenga un valor que corresponda a Tasa o Cuota.
importe string Opcional info
Atributo condicional para señalar el importe del impuesto trasladado que aplica al concepto. No se permiten valores negativos. Es requerido cuando TipoFactor sea Tasa o Cuota

cfdi__retencion

Atributos Tipo de dato Requerido
base string Si info
Atributo requerido para señalar la base para el cálculo de la retención, la determinación de la base se realiza de acuerdo con las disposiciones fiscales vigentes. No se permiten valores negativos.
impuesto string Si info
Atributo requerido para señalar la clave del tipo de impuesto retenido aplicable al concepto.
tipo_factor string Si info
Atributo requerido para señalar la clave del tipo de factor que se aplica a la base del impuesto.
tasa_cuota string Si info
Atributo requerido para señalar la tasa o cuota del impuesto que se retiene para el presente concepto.
importe string Si info
Atributo requerido para señalar el importe del impuesto retenido que aplica al concepto. No se permiten valores negativos.

cfdi__impuestos
cfdi:conceptos

Atributos Tipo de dato Requerido
cfdi__traslados Objeto Opcional info
Nodo opcional para asentar los impuestos trasladados aplicables al presente concepto.
cfdi__retenciones Objeto Opcional info
Nodo opcional para asentar los impuestos retenidos aplicables al presente concepto.
        
            {  
                "meta":{  
                    "empresa_uid":"asd123asd",
                    "empresa_api_key":"123123123",
                    "ambiente":"S",
                    "objeto":"factura"
                },
                "data":
                [  
                    {  
                        "datos_fiscales":{  
                            "certificado_pem":"",
                            "llave_pem":"",
                            "llave_password":""
                        },
                        "cfdi":{  
                            "cfdi__comprobante":{  
                            "folio":"123",
                            "fecha":"2018-03-25T12:12:12",
                            "tipo_comprobante":"I",
                            "lugar_expedicion":"21100",
                            "forma_pago":"01",
                            "metodo_pago":"PUE",
                            "moneda":"MXN",
                            "tipo_cambio":"1",
                            "subtotal":"99.00",
                            "total":"99.00",
                            "cfdi__emisor":{  
                                "rfc":"DDM090629R13",
                                "nombre":"Emisor Test",
                                "regimen_fiscal":"601"
                            },
                            "cfdi__receptor":{  
                                "rfc":"XEXX010101000",
                                "nombre":"Receptor Test",
                                "uso_cfdi":"G01"
                            },
                            "cfdi__conceptos":{  
                                "cfdi__concepto":[  
                                            {  
                                                "clave_producto_servicio":"01010101",
                                                "clave_unidad":"KGM",
                                                "cantidad":"1",
                                                "descripcion":"descripcion test",
                                                "valor_unitario":"99.00",
                                                "importe":"99.00",
                                                "unidad":"unidad",
                                                "no_identificacion":"KGM123",
                                                "cfdi__impuestos":{  
                                                "cfdi__traslados":{  
                                                    "cfdi__traslado":[  
                                                        {  
                                                            "base":"99.00",
                                                            "impuesto":"002",
                                                            "tipo_factor":"Exento"
                                                        }
                                                    ]
                                                }
                                            }
                                        }
                                    ]
                                }
                            }
                        }
                    }
                ]
            }
        
    

Respuesta de una Generación

Meta

Atributos Tipo de dato Descripción
ambiente string Ambiente en el que fue procesada la cancelación
objeto string Tipo de CFDI procesado
respuesta_uid string Identificador de la respuesta registrada

Data

Atributos Tipo de dato Descripción
cfdi_respuesta Objeto Indica si la factura fue timbrada
cfdi_complemento Objeto Detalle de la factura

cfdi_respuesta

Atributos Tipo de dato Descripción
timbrada Boolean Indica si el cfdi fue timbrado

cfdi_complemento

Atributos Tipo de dato Descripción
uuid string Timbre de la factura
fecha_timbrado string Fecha de generación del timbre
sello_cfd string Sello
no_certificado_sat string Numero de certificado
sello_sat string Sello
rfc_prov_certif String RFC del proovedor de timbrado
  
  {  
   "meta":{  
      "ambiente":"S",
      "objeto":"factura",
      "respuesta_uid":"b975446acb"
   },
   "data":[  
      {  
         "cfdi":{  
            "cfdi__comprobante":{  
               "folio":"123",
               "fecha":"2018-06-27T13:02:23",
               "tipo_comprobante":"I",
               "lugar_expedicion":"21100",
               "forma_pago":"01",
               "metodo_pago":"PUE",
               "moneda":"MXN",
               "tipo_cambio":"1",
               "subtotal":"99.00",
               "total":"99.00",
               "cfdi__emisor":{  
                  "rfc":"DDM090629R13",
                  "nombre":"Emisor Test",
                  "regimen_fiscal":"601"
               },
               "cfdi__receptor":{  
                  "rfc":"XEXX010101000",
                  "nombre":"Receptor Test",
                  "uso_cfdi":"G01"
               },
               "cfdi__conceptos":{  
                  "cfdi__concepto":[  
                     {  
                        "clave_producto_servicio":"01010101",
                        "clave_unidad":"KGM",
                        "cantidad":"1",
                        "descripcion":"descripcion test",
                        "valor_unitario":"99.00",
                        "importe":"99.00",
                        "unidad":"unidad",
                        "no_identificacion":"KGM123",
                        "cfdi__impuestos":{  
                           "cfdi__traslados":{  
                              "cfdi__traslado":[  
                                 {  
                                    "base":"99.00",
                                    "impuesto":"002",
                                    "tipo_factor":"Exento"
                                 }
                              ]
                           }
                        }
                     }
                  ]
               }
            }
         },
         "cfdi_respuesta":{  
            "timbrada":"true"
         },
         "cfdi_complemento":{  
            "xsi:schema_location":"http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/sitio_internet/cfd/TimbreFiscalDigital/TimbreFiscalDigitalv11.xsd",
            "xmlns:tfd":"http://www.sat.gob.mx/TimbreFiscalDigital",
            "version":"1.1",
            "uuid":"7ECA8EF2-9AB1-42A4-ACEE-EE23145209FE",
            "fecha_timbrado":"2018-06-27T15:02:24",
            "sello_cfd":"UF0QiCmAJgdB67+bGSds4wodpEK/1naeWxaQTFhzG2cbm9v1aqkbj+K/QQEKmxVan8/LZFmKGvWIa1XyLEkYiY9hm+gUVIEUTRqhfpKpnSuGMV1u3CAlF1yuBu0xJQ324EtH0tWHI1TXBDkYNhgPNwBrQvmjwbGCPvketQYLOWKDzcQpmG4wohkW4NsoJCQw/5JlkmWUXuRWMotj/m96ajLFCdY3cbn9H58oNUI/dKhvE3J1gAnrnWNBLI3zCy3qaGDhrP0BnMwL13xrLhY1ULItI0IGpqWyHBYTSw5GPJ1NDtRjVYdjMc/W4Yc3R7ztYPAJvq2fWkBpgj5RGtYh/w==",
            "no_certificado_sat":"20001000000300022323",
            "sello_sat":"aHr151xvgkkhByEHtduG02LlElcHvH2Xikq95M55AwrW9SeccoiV0uE72PxI2e4s9qq+bgMco81mct6Q7X8etjLnlEBBvxB1Fus/mQu+liPoWQwGA5cpfkFyc/Ss+I1d7nj1PlKjYteXi3GC6WespQ0nmELqVjvTKXX+bTN9nEpKJ1qfISmTbkkNe/8EhbwK2GsdUeEMl2juq7XyWrWg37f4UV+efzdgyKOfLn0OoLkCM1Cshkhml3kOKC/0+8o+LgmEcIvijCeqkRltAzyObQrj7eN6Xa09JpLq4Wd6WJ3efOdVnSSB8r2wKG7Komo+VMU5iiGnZnXONXgQfQIuug==",
            "rfc_prov_certif":"IAD121214B34"
         }
      }
   ]
}
  

Generación de una Recepción de pago

El objeto de recepción representa un objeto de un CFDI de tipo Recepción de pago. Los detalles de cada campo y su estructura se basan en la definición establecida por el SAT en su versión CFDI 3.3. Específicamente para el timbrado de una recepción de pago, se definieron los elementos de la estructura JSON similar a la definida en el Anexo 20 de la RMF.

Las descripciones que se encuentran a continuación, fueron tomadas del documento Anexo 20, publicado por el SAT.

Ruta de Generación

          
          POST https://api.docdigitales.com/v1/recepciones_pago/generar
          
        

cfdi__comprobante

Atributos Tipo de dato Requerido
serie string Opcional info
Atributo opcional para precisar la serie para control interno del contribuyente. Este atributo acepta una cadena de caracteres.
folio string Opcional info
Atributo opcional para control interno del contribuyente que expresa el folio del comprobante, acepta una cadena de caracteres.
fecha string Si info
Atributo requerido para la expresión de la fecha y hora de expedición del Comprobante Fiscal Digital por Internet. Se expresa en la forma AAAA-MM-DDThh:mm:ss y debe corresponder con la hora local donde se expide el comprobante.
tipo_comprobante string Se debe registrar la clave "P"
lugar_expedicion string Si
confirmacion string No info
Se debe registrar la clave de confirmación única e irrepetible que entregue el Proveedor de Certificación de CFDI o el SAT a los emisores (usuarios) para expedir el comprobante con importes o tipo de cambio fuera del rango establecido o en ambos casos. Cuando el valor equivalente en MXN del campo Monto del complemento exceda el límite publicado por el SAT, el emisor debe obtener de manera no automática una clave de confirmación para ratificar que el importe es correcto e integrarla en este campo al CFDI.
forma_pago string Este campo no debe existir
metodo_pago string Este campo no debe existir
moneda string Se debe de registrar el valor "XXX"
tipo_cambio string Este campo no debe existir
condiciones_pago string Este campo no debe existir
subtotal string Se debe registrar el valor de cero "0"
total string Se debe registrar el valor de cero "0"
cfdi__emisor Objeto Si info
Expresa la información del contribuyente emisor del comprobante.
cfdi__receptor Objeto Si info
Expresa la información del contribuyente receptor del comprobante.
cfdi__cfdi_relacionados Objeto Opcional info
La información de los comprobantes relacionados.
cfdi__conceptos Objeto Si info
Información detallada de un bien o servicio amparado en el comprobante.
cfdi__impuestos Objeto Opcional info
Nodo condicional para expresar el resumen de los impuestos aplicables.

pago10__pago

Atributos Tipo de dato Requerido
fecha_pago string Si info
Atributo requerido para expresar la fecha y hora en la que el beneficiario recibe el pago. Se expresa en la forma aaaa-mm-ddThh:mm:ss, de acuerdo con la especificación ISO 8601.En caso de no contar con la hora se debe registrar 12:00:00.
forma_pago string Si info
Atributo requerido para expresar la clave de la forma en que se realiza el pago.
tipo_cambio string Opcional info
Atributo condicional para expresar el tipo de cambio de la moneda a la fecha en que se realizó el pago. El valor debe reflejar el número de pesos mexicanos que equivalen a una unidad de la divisa señalada en el atributo moneda. Es requerido cuando el atributo moneda es diferente a MXN.
moneda string Si info
Atributo requerido para identificar la clave de la moneda utilizada para realizar el pago, cuando se usa moneda nacional se registra MXN. El atributo Pagos:Pago:Monto y los atributos total_impuestos_retenidos, total_impuestos_trasladados, Traslados:Traslado:Importe y Retenciones:Retencion:Importe del nodo Pago:Impuestos deben ser expresados en esta moneda. Conforme con la especificación ISO 4217.
monto string Si info
Atributo requerido para expresar el importe del pago.
rfc_emisor_ordenante string Opcional info
Atributo condicional para expresar la clave RFC de la entidad emisora de la cuenta origen, es decir, la operadora, el banco, la institución financiera, emisor de monedero electrónico, etc., en caso de ser extranjero colocar XEXX010101000, considerar las reglas de obligatoriedad publicadas en la página del SAT para éste atributo de acuerdo con el catálogo catCFDI:c_FormaPago.
rfc_emisor_beneficiario string Opcional info
Atributo condicional para expresar la clave RFC de la entidad operadora de la cuenta destino, es decir, la operadora, el banco, la institución financiera, emisor de monedero electrónico, etc. Considerar las reglas de obligatoriedad publicadas en la página del SAT para éste atributo de acuerdo con el catálogo catCFDI:c_FormaPago.
nombre_banco_ordenante string Opcional info
Atributo condicional para expresar el nombre del banco ordenante, es requerido en caso de ser extranjero. Considerar las reglas de obligatoriedad publicadas en la página del SAT para éste atributo de acuerdo con el catálogo catCFDI:c_FormaPago.
cuenta_ordenante string Opcional info
Atributo condicional para incorporar el número de la cuenta con la que se realizó el pago. Considerar las reglas de obligatoriedad publicadas en la página del SAT para éste atributo de acuerdo con el catálogo catCFDI:c_FormaPago
cuenta_beneficiario string Opcional info
Atributo condicional para incorporar el número de cuenta en donde se recibió el pago. Considerar las reglas de obligatoriedad publicadas en la página del SAT para éste atributo de acuerdo con el catálogo catCFDI:c_FormaPago.
tipo_cadena_pago string Opcional info
Atributo condicional para identificar la clave del tipo de cadena de pago que genera la entidad receptora del pago. Considerar las reglas de obligatoriedad publicadas en la página del SAT para éste atributo de acuerdo con el catálogo catCFDI:c_FormaPago.
num_operacion string Opcional info
Atributo condicional para expresar el número de cheque, número de autorización, número de referencia, clave de rastreo en caso de ser SPEI, línea de captura o algún número de referencia análogo que identifique la operación que ampara el pago efectuado
certificado_pago string Opcional info
Atributo condicional que sirve para incorporar el certificado que ampara al pago, como una cadena de texto en formato base 64. Es requerido en caso de que el atributo tipo_cadena_pago contenga información
cadena_pago string Opcional info
Atributo condicional para expresar la cadena original del comprobante de pago generado por la entidad emisora de la cuenta beneficiaria. Es requerido en caso de que el atributo tipo_cadena_pago contenga información.
sello_pago string Opcional info
Atributo condicional para integrar el sello digital que se asocie al pago. La entidad que emite el comprobante de pago, ingresa una cadena original y el sello digital en una sección de dicho comprobante, este sello digital es el que se debe registrar en este campo. Debe ser expresado como una cadena de texto en formato base 64. Es requerido en caso de que el atributo tipo_cadena_pago contenga información.
pago10__docto_relacionado Objeto Si info
Nodo condicional para expresar la lista de documentos relacionados con los pagos diferentes de anticipos. Por cada documento que se relacione se debe generar un nodo pago10__docto_relacionado.

pago10__docto_relacionado

Atributos Tipo de dato Requerido
id_documento string Si info
Atributo requerido para expresar el identificador del documento relacionado con el pago. Este dato puede ser un Folio Fiscal de la Factura Electrónica o bien el número de operación de un documento digital.
serie string Opcional info
Atributo opcional para precisar la serie del comprobante para control interno del contribuyente, acepta una cadena de caracteres
folio string Opcional info
Atributo opcional para precisar el folio del comprobante para control interno del contribuyente, acepta una cadena de caracteres.
moneda_dr string Si info
Atributo requerido para identificar la clave de la moneda utilizada en los importes del documento relacionado, cuando se usa moneda nacional o el documento relacionado no especifica la moneda se registra MXN. Los importes registrados en los atributos "importe_saldo_anterior", "importe_pagado" e "importe_saldo_insoluto" de éste nodo, deben corresponder a esta moneda. Conforme con la especificación ISO 4217.
tipo_cambio_dr string Si info
Atributo condicional para expresar el tipo de cambio conforme con la moneda registrada en el documento relacionado. Es requerido cuando la moneda del documento relacionado es distinta de la moneda de pago. Se debe registrar el número de unidades de la moneda señalada en el documento relacionado que equivalen a una unidad de la moneda del pago. Por ejemplo: El documento relacionado se registra en USD El pago se realiza por 100 EUR. Este atributo se registra como 1.114700 USD/EUR. El importe pagado equivale a 100 EUR * 1.114700 USD/EUR = 111.47 USD
metodo_pago_dr string Si info
Atributo requerido para expresar la clave del método de pago que se registró en el documento relacionado.
numero_parcialidad string Opcional info
Atributo condicional para expresar el número de parcialidad que corresponde al pago. Es requerido cuando metodo_pago_dr contiene: “PPD” Pago en parcialidades o diferido.
importe_pagado string Opcional info
Atributo condicional para expresar el importe pagado para el documento relacionado. Es obligatorio cuando exista más de un documento relacionado o cuando existe un documento relacionado y el tipo_cambio_dr tiene un valor.
importe_saldo_anterior string Opcional info
Atributo condicional para expresar el monto del saldo insoluto de la parcialidad anterior. Es requerido cuando metodo_pago_dr contiene: “PPD” Pago en parcialidades o diferido.En el caso de que sea la primer parcialidad este campo debe contener el importe total del documento relacionado.
importe_saldo_insoluto string Si info
Atributo condicional para expresar la diferencia entre el importe del saldo anterior y el monto del pago. Es requerido cuando metodo_pago_dr contiene: “PPD” Pago en parcialidades o diferido.
        
    {
        "meta" : {
          "empresa_uid":"asd123asd",
          "empresa_api_key":"123123123",
          "ambiente" : "S",
          "objeto" : "recepcion"
        },
        "data" : [{
        "datos_fiscales" : {
            "certificado_pem": "",
              "llave_pem": "",
              "llave_password": ""},
          "cfdi": {
            "cfdi__comprobante": {
              "folio": "793",
              "serie": "C",
              "fecha": "",
              "tipo_comprobante": "P",
              "lugar_expedicion": "83448",
              "moneda": "XXX",
              "subtotal": "0",
              "total": "0",
              "cfdi__emisor": {
                "rfc": "DDM090629R13",
                "nombre": "CARLOS CESAR OCHOA GAXIOLA",
                "regimen_fiscal": "601"},
              "cfdi__receptor":{
                "rfc": "GNP9211244P0",
                "nombre": "GRUPO NACIONAL PROVINCIAL S.A.B.",
                "uso_cfdi": "P01"},
              "cfdi__conceptos": {
                "cfdi__concepto": [{
                 "clave_producto_servicio": "84111506",
                  "clave_unidad": "ACT",
                  "cantidad": "1",
                  "descripcion": "Pago",
                  "valor_unitario": "0",
                  "importe": "0"
                  }]
              },
              "cfdi__complemento": {
                "pago10__pagos" : {
                  "pago10__pago" : {
                        "fecha_pago":"2018-08-10T11:21:09",
                        "forma_pago":"01",
                        "tipo_cambio":"",
                        "moneda":"MXN",
                        "monto":"5000.00",
                        "rfc_emisor_ordenante":"",
                        "rfc_emisor_beneficiario":"",
                        "nombre_banco_ordenante":"",
                        "cuenta_ordenante":"",
                        "cuenta_beneficiario":"",
                        "tipo_cadena_pago":"",
                        "num_operacion":"1123121241",
                        "certificado_pago":"",
                        "cadena_pago":"",
                        "sello_pago":"",
                        "pago10__docto_relacionado":[{
                            "id_documento":"682C60DC-2A2F-47CD-A34D-39180EFAB2B1",
                            "serie":"ASD",
                            "folio":"53452",
                            "moneda_dr":"MXN",
                            "tipo_cambio_dr":"",
                            "metodo_pago_dr":"PPD",
                            "numero_parcialidad":"1",
                            "importe_pagado":"5000.00",
                            "importe_saldo_anterior":"7000.00",
                            "importe_saldo_insoluto":"2000.00"
                          }
                        ]
                      }
                    }
                  }
              } 
          } 
        }
      ] 
    }
        
    

Respuesta de una Generación de Recepción de pago

Meta

Atributos Tipo de dato Descripción
ambiente string Ambiente en el que fue procesada la cancelación
objeto string Tipo de CFDI procesado
respuesta_uid string Identificador de la respuesta registrada

Data

Atributos Tipo de dato Descripción
cfdi_respuesta Objeto Indica si la factura fue timbrada
cfdi_complemento Objeto Detalle de la factura

cfdi_respuesta

Atributos Tipo de dato Descripción
timbrada Boolean Indica si el cfdi fue timbrado

cfdi_complemento

Atributos Tipo de dato Descripción
uuid string Timbre de la factura
fecha_timbrado string Fecha de generación del timbre
sello_cfd string Sello
no_certificado_sat string Numero de certificado
sello_sat string Sello
rfc_prov_certif String RFC del proovedor de timbrado
  

  {
    "meta":{
        "ambiente":"S", 
        "objeto":"recepcion", 
        "respuesta_uid":"2deb5180de"
    }, 
    "data":[{
        "cfdi":{
            "cfdi__comprobante":{
                "folio":"793", 
                "serie":"C", 
                "fecha":"2018-08-22T17:02:14", 
                "tipo_comprobante":"P", 
                "lugar_expedicion":"83448", 
                "moneda":"XXX", 
                "subtotal":"0", 
                "total":"0", 
                "cfdi__emisor":{
                    "rfc":"DDM090629R13", 
                    "nombre":"CARLOS CESAR OCHOA GAXIOLA", 
                    "regimen_fiscal":"601"
                }, 
                "cfdi__receptor":{
                    "rfc":"GNP9211244P0", 
                    "nombre":"GRUPO NACIONAL PROVINCIAL S.A.B.", 
                    "uso_cfdi":"P01"
                }, 
                "cfdi__conceptos":{
                    "cfdi__concepto":[{
                        "clave_producto_servicio":"84111506", 
                        "clave_unidad":"ACT", 
                        "cantidad":"1", 
                        "descripcion":"Pago", 
                        "valor_unitario":"0", 
                        "importe":"0"
                    }]
                }, "cfdi__complemento":{
                    "pago10__pagos":{
                        "pago10__pago":{
                            "fecha_pago":"2018-08-10T11:21:09", 
                            "forma_pago":"01", 
                            "tipo_cambio":"", 
                            "moneda":"MXN", 
                            "monto":"5000.00", 
                            "rfc_emisor_ordenante":"", 
                            "rfc_emisor_beneficiario":"", 
                            "nombre_banco_ordenante":"", 
                            "cuenta_ordenante":"", 
                            "cuenta_beneficiario":"", 
                            "tipo_cadena_pago":"", 
                            "num_operacion":"1123121241", 
                            "certificado_pago":"", 
                            "cadena_pago":"", 
                            "sello_pago":"", 
                            "pago10__docto_relacionado":[{
                                "id_documento":"682C60DC-2A2F-47CD-A34D-39180EFAB2B1", 
                                "serie":"ASD", 
                                "folio":"53452", 
                                "moneda_dr":"MXN", 
                                "tipo_cambio_dr":"", 
                                "metodo_pago_dr":"PPD", 
                                "numero_parcialidad":"1", 
                                "importe_pagado":"5000.00", 
                                "importe_saldo_anterior":"7000.00", 
                                "importe_saldo_insoluto":"2000.00"
                            }]
                        }
                    }
                }
            }
        }, "cfdi_respuesta":{
            "timbrada":"true"
        }, "cfdi_complemento":{
            "xsi:schema_location":"http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/sitio_internet/cfd/TimbreFiscalDigital/TimbreFiscalDigitalv11.xsd", "xmlns:tfd":"http://www.sat.gob.mx/TimbreFiscalDigital", 
            "version":"1.1", 
            "uuid":"26B638C3-E534-4643-8F14-99CFB2999CA3", 
            "fecha_timbrado":"2018-08-22T19:02:20", 
            "sello_cfd":"aTKo7GdyT2eKg4ILe2jr+OXUZJ/mBcHhG0I3Of/vvikXTCzKN/btBBCTWU9xohGp7Uqcb0FQTVkKFf7AxPViz5gKHY5o+IJvPfikSlrprYVQYSbR3NAfA5ZIDV2ghy6VK7jlUqVTiw/EjVXy2gXd/BDhbKgS2s9y58IFFrxtTxv6H4+F8Ha9D0ed/ILkGPMNI/Sdw+ieq0l2MWJmMNsq/eMPi9jDXW1rRPuE8aHHJQZHKIGyQ8dghNTbCmPintLVBvB/jFiWwR4wmgHakfEdjNp2sJC6tC1RTRicsrFiVFB4tmEAgyf4S2out9qjbNvJ2gdZe9mglY4hckDO0s4BvA==", 
            "no_certificado_sat":"20001000000300022323", 
            "sello_sat":"WmjqNusVvBvgO5khVFYLrAwddCM+rDNv58lTNdhNkREWJ4K2PPgOhEWkK/+LtsYQe++22Ch9x2A/PRxS2II+5jg+GNEmTQErGFqA7fauCpZW5jChNzxzJuOAIxNyBlznUe60x+5XCNnsIbM71zxn6sknuETrLIpHzL0x8/cUAyaljj9nftbwDKSVcHz0RLpQv1VwaDFffOqvk6aE2rnG4M5/PLgFPV25LOQ4Hhz78MZizzljagvZ8bZGYFUpR56bHOiFO2pfj49N3PSnLi4g0kYcAdYc3i6T09mMTbv6wZU2DILlzyN6ZWu+mYE72n8id1P39nSBOBCOE31dDRCWVA==", "rfc_prov_certif":"IAD121214B34"
        }
    }]
}
  
  

Petición de Cancelación de una Factura

El API proporciona la opción de solicitar una cancelación de un CFDI enviando una petición estructurada de la siguiente manera:

Ruta de Solicitud de Cancelación

          
          POST https://api.docdigitales.com/v1/cancelaciones/solicitar
          
        

Data

Atributos Tipo de dato Descripción Requerido
rfc_emisor string RFC del emisor Si
folios Array [ ] objetos Arreglo de Objetos con la información a cancelar Si
datos_fiscales Objeto Datos fiscales del emisor Si
acuse boolean Indica si se requiere regresar el acuse de la cancelación Si

folios

Atributos Tipo de dato Descripción Requerido
rfc_receptor string RFC del Receptor Si
total string Total del CFDI a cancelar Si
uuid string UUID del CFDI a cancelar Si
    
      {  
        "meta":{  
            "empresa_uid":"asd123asd",
            "empresa_api_key":"123123123",
            "ambiente":"S",
            "objeto":"factura"
        },
        "data": [ {
        "rfc_emisor": "DDM090629R13",
        "folios": [{
          "rfc_receptor": "GNP9211244P0",
          "total": "6399.00",
          "uuid": "D4AD33B5-2017-4A2F-A442-D9E691D65591"	
        }],
        "datos_fiscales": {
          "certificado_pem": "-----BEGIN CERTIFICATE-----\nMIIGSTCCB...-----END CERTIFICATE-----\n",
          "llave_pem": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAK...-----END RSA PRIVATE KEY-----\n",
          "llave_password": "DDM090629R13"
        },
        "acuse": true
      }
    ]
  }
    
  

Respuesta de una solicitud de Cancelación

Meta

Atributos Tipo de dato Descripción
ambiente string Ambiente en el que fue procesada la cancelación
objeto string Tipo de CFDI procesado
respuesta_uid string Identificador de la respuesta registrada

Data

Atributos Tipo de dato Descripción
rfc string RFC del emisor
uuid string UUID procesado
estatus string Codigo de estatus
descripcion string Descripción del estatus
acuse XML El acuse de la solicitud de cancelación
    
      {  
        "meta": {
              "ambiente": "S",
              "objeto": "factura",
              "respuesta_uid": "a9fd78b87b"
          },
          "data": [
              {
                "rfc": "DDM090629R13",
                "uuid": "64DB7F1F-A1AA-40E3-A696-04E14E2ACB9F",
                "estatus": "201",
                "descripcion": "En espera de aceptación"
              }
          ],
          "acuse": [
            <?xml version='1.0'?>
                <Acuse 
                  Fecha='2018-08-28T13:26:09' 
                  RfcEmisor='DDM090629R13'>
                  <Folios>
                    <UUID>64DB7F1F-A1AA-40E3-A696-04E14E2ACB9F</UUID>    
                    <EstatusUUID>201</EstatusUUID>
                  </Folios>
                  <Signature xmlns='http://www.w3.org/2000/09/xmldsig#' Id='SelloSAT'>
                    <SignedInfo>
                      <CanonicalizationMethod Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315'/>
                      <SignatureMethod Algorithm='http://www.w3.org/2001/04/xmldsig-more#hmac-sha512'/>
                      <Reference URI=''>
                        <Transforms>
                          <Transform Algorithm='http://www.w3.org/TR/1999/REC-xpath-19991116'>
                            <XPath>not(ancestor-or-self::*[local-name()='Signature'])</XPath>          
                          </Transform>        
                        </Transforms>
                        <DigestMethod Algorithm='http://www.w3.org/2001/04/xmlenc#sha512'/>
                        <DigestValue>ML2rVJ79GS...VDdnhZsg==</DigestValue>
                      </Reference>
                    </SignedInfo>
                    <SignatureValue>lO73l44krA...+fM8Kuw==</SignatureValue>
                    <KeyInfo>
                      <KeyName>00001088888800000016</KeyName>
                      <KeyValue>
                        <RSAKeyValue>
                          <Modulus>xnL2zDPtH5jDsAZDTIfMqbKG...Xu5O4pGM98Nz8pAM=</Modulus>          
                          <Exponent>AQAB</Exponent>        
                        </RSAKeyValue>      
                      </KeyValue>    
                    </KeyInfo>
                  </Signature>
                </Acuse>
          ]
      }
    
  

Consulta del estatus de una Factura

El API proporciona la opción de consultar el estatus de un CFDI en proceso de cancelacón de la siguiente manera:

Ruta de Solicitud de Consulta

          
          POST https://api.docdigitales.com/v1/cancelaciones/consultar
          
        

Data

Atributos Tipo de dato Descripción Requerido
rfc_emisor string RFC del emisor Si
rfc_receptor string RFC del receptor Si
uuid string UUID del CFDI que esta en proceso de cancelación Si
total string Indica el total del CFDI que está en proceso de cancelación Si
    
      {
      "meta": {
        "empresa_uid":"asd123asd",
        "empresa_api_key":"123123123",
        "ambiente": "S",
        "objeto": "factura"
      },
      "data": [ {
          "rfc_emisor": "DDM090629R13",
          "rfc_receptor": "GNP9211244P0",
          "uuid": "64DB7F1F-A1AA-40E3-A696-04E14E2ACB9F",
          "total": "6399.00"
        }
      ]
    }
    
  

Respuesta de Consulta del estatus

Data

Atributos Tipo de dato Descripción
rfc_emisor string RFC del emisor
rfc_receptor string RFC del receptor
uuid string UUID del CFDI que esta en proceso de cancelación
total string Indica el total del CFDI que está en proceso de cancelación
respuesta Objeto Detalle del estatus de cancelación para el CFDI solicitado

respuesta

Atributos Tipo de dato Descripción
codigo_estatus string Codigo de cancelación
es_cancelable string Indica si el CFDI es cancelable o no
estado string Estatus del UUID
estatus_cancelacion Objeto Estatus del proceso de cancelación
    
      {
          "meta": {
          "ambiente": "S",
          "objeto": "factura",
          "respuesta_uid": "6e8b7b9233"
      },
      "data": [
        {
            "rfc_emisor": "DDM090629R13",
            "rfc_receptor": "GNP9211244P0",
            "uuid": "64DB7F1F-A1AA-40E3-A696-04E14E2ACB9F",
            "total": "6399.00",
            "respuesta": {
                "codigo_estatus": "S - Comprobante obtenido satisfactoriamente.",
                "es_cancelable": "Cancelable con aceptación",
                "estado": "Vigente",
                "estatus_cancelacion": {
                    "@xsi:type": "xsd:string"
                }
            }
        }
    ]
    }
    
  

Aceptar/Rechazar una solicitud de cancelación

Data

Atributos Tipo de dato Descripción Requerido
datos_fiscales Objeto Datos fiscales del emisor Si
rfc_receptor string RFC del receptor Si
uuid string UUID del CFDI que esta en proceso de cancelación Si
total string Indica el total del CFDI que está en proceso de cancelación Si
respuesta Array [] Objeto Detalle del estatus de cancelación para el CFDI solicitado Si

respuestas

Atributos Tipo de dato Descripción Requerido
rfc_emisor string RFC del emisor Si
uuid string UUID del CFDI que se solicita cancelar Si
total string Total del CFDI que se solicita cancelar Si
respuesta string A = Aceptar / R = Rechazar Si
    
      {  
        "meta":{  
            "empresa_uid":"asd123asd",
            "empresa_api_key":"123123123",
            "ambiente":"S",
            "objeto":"factura"
        },
        "data": [ {
          "datos_fiscales" : {
              "certificado_pem": "-----BEGIN CERTIFICATE-----\nMIIGSTC.... =\n-----END CERTIFICATE-----\n",
              "llave_pem": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAkI..... \n-----END RSA PRIVATE KEY-----\n",
              "llave_password": "DDM090629R13" },
          "rfc_receptor": "GNP9211244P0",
          "respuestas" : [{
            "rfc_emisor": "DDM090629R13",
              "uuid": "D4AD33B5-2017-4A2F-A442-D9E691D65591",
              "total": "6399.00",
              "respuesta": "A"
          }]
          }
        ]
      }
    
  

Respuesta de Aceptación/Rechazo de una solicitud de cancelación

Data

Atributos Tipo de dato Descripción
datos_fiscales Objeto Datos fiscales del emisor
rfc_receptor string RFC del receptor
uuid string UUID del CFDI que esta en proceso de cancelación
total string Indica el total del CFDI que está en proceso de cancelación
respuesta Array [] Objeto Detalle del estatus de cancelación para el CFDI solicitado
estatus Array [] Objeto Detalle del estatus de cancelación para el CFDI solicitado

respuestas

Atributos Tipo de dato Descripción
rfc_emisor string RFC del emisor
uuid string UUID del CFDI que se solicita cancelar
total string Total del CFDI que se solicita cancelar
respuesta string A = Aceptar / R = Rechazar

estatus

Atributos Tipo de dato Descripción
uuid string UUID del CFDI que se solicita cancelar
codigo string Codigo de cancelación
mensaje string Texto de la respuesta de la solicitud de cancelación
    
      {  
        "meta":{  
            "empresa_uid":"asd123asd",
            "empresa_api_key":"123123123",
            "ambiente":"S",
            "objeto":"factura"
        },
        "data": [{
          "rfc_receptor": "GNP9211244P0",
          "respuestas": [{
            "rfc_emisor": "DDM090629R13",
            "uuid": "D4AD33B5-2017-4A2F-A442-D9E691D65591",
            "total": "6399.00",
            "respuesta": "A"
          }],
          "estatus": [{
            "uuid": "D4AD33B5-2017-4A2F-A442-D9E691D65591",
            "codigo": "CANC110",
            "mensaje": "El CFDI ha sido cancelado previamente por plazo vencido, no puede ser rechazado."
          }]
        }]
      }
    
  

Envío de una Factura

La petición de envío está desarrollada para facilitar el envío por correo electrónico de los CFDIs solicitados. Se pueden enviar múltiples CFDIs para ser procesados por el API para su envío a los destinatarios indicados de la siguiente manera:

Ruta de Envío

          
          POST https://api.docdigitales.com/v1/facturas/enviar
          
        

Data

Atributos Tipo de dato Descripción
uuid Array [ ] string Arreglo de UUIDs de los cfdis que se requieren cancelar
destinatarios Array [ ] Objeto Estructura donde se definen los correos a los cuales se enviaran los cfdis establecidos
titulo string Descripción que será el título del correo
texto string Descripción en el cuerpo del del correo
pdf boolean Indica si se requiere el envío del documento en formato PDF
  
    {  
      "meta":{  
          "empresa_uid":"asd123asd",
          "empresa_api_key":"123123123",
          "ambiente":"S",
          "objeto":"factura"
      },
      "data":[  
          {  
            "uuid":[  
                "7ECA8EF2-9AB1-42A4-ACEE-EE23145209FE"
            ],
            "destinatarios":[  
                {  
                  "correo":"sandbox@docdigitales.com"
                }
            ],
            "titulo":"Envio de Factura: 123",
            "texto":"Envio de Factura con folio 123, para su revisión.",
            "pdf": true
          }
      ]
    }
  

Respuesta de un Envío

Meta

Atributos Tipo de dato Descripción
ambiente string Ambiente en el que fue procesado el envío
objeto string Tipo de CFDI procesado
respuesta_uid string Identificador de la respuesta registrada

Data

Atributos Tipo de dato Descripción
uuid Array [ ] string UUIDs enviados
destinatarios Array [ ] Objetos Correos de destinatarios
titulo string Texto que sera enviado como titulo del correo
texto string Texto que sera enviado como cuerpo del correo
pdf boolean Indica si se envia PDF del CFDI adjunto
enviado boolean Indica el estatus de envio del correo
  
    {  
      "meta":{  
          "ambiente":"S",
          "objeto":"factura",
          "respuesta_uid":"cb8080e3f3"
      },
      "data":[  
          {  
            "uuid":[  
                "7ECA8EF2-9AB1-42A4-ACEE-EE23145209FE"
            ],
            "destinatarios":[  
                {  
                  "correo":"sandbox@docdigitales.com"
                }
            ],
            "titulo":"Envio de Factura: 123",
            "texto":"Envio de Factura con folio 123, para su revision.",
            "pdf":true,
            "enviado":true
          }
      ]
    }
  

Descarga de una Factura

Esta petición está desarrollada para la descarga de los CFDIs solicitados, en los formatos XML y PDF.

Ruta de Envío

          
          POST https://api.docdigitales.com/v1/facturas/descargar
          
        

Data

Atributos Tipo de dato Descripción
uuid Array [ ] string Arreglo de UUIDs de los cfdis que se requieren cancelar
destinatarios Array [ ] Objeto Estructura donde se definen los correos a los cuales se enviaran los cfdis establecidos
titulo string Descripción que será el título del correo
texto string Descripción en el cuerpo del del correo
pdf boolean Indica si se requiere el envío del documento en formato PDF
  
    {  
      "meta":{  
          "empresa_uid":"asd123asd",
          "empresa_api_key":"123123123",
          "ambiente":"S",
          "objeto":"factura"
      },
      "data":[  
          {  
            "uuid":[  
                ""
            ],
            "destinatarios":[  
                {  
                  "correo":"sandbox@docdigitales.com"
                }
            ],
            "titulo":"Descargar factura",
            "texto":"Adjunto factura generada",
            "pdf":"true"
          }
      ]
    }
  

Respuesta de una Descarga

Meta

Atributos Tipo de dato Descripción
ambiente string Ambiente en el que fue procesado el envío
objeto string Tipo de CFDI procesado
respuesta_uid string Identificador de la respuesta registrada

Data

Atributos Tipo de dato Descripción
uuid Array [ ] string UUIDs enviados
destinatarios Array [ ] Objetos Correos de destinatarios
titulo string Texto que sera enviado como titulo del correo
texto string Texto que sera enviado como cuerpo del correo
pdf boolean Indica si se envia PDF del CFDI adjunto
link string Link donde se puede descargar la solicitud
  
  {  
   "meta":{  
      "ambiente":"S",
      "objeto":"factura",
      "respuesta_uid":"623108d152"
   },
   "data":[  
      {  
         "uuid":[  
            "7ECA8EF2-9AB1-42A4-ACEE-EE23145209FE"
         ],
         "destinatarios":[  
            {  
               "correo":"sandbox@docdigitales.com"
            }
         ],
         "titulo":"Descargar factura",
         "texto":"Adjunto factura generada",
         "pdf": true,
         "link":"https://4da0961797191a1fe127-f6af86ec88a7e06419f555e1609a58b7.ssl.cf2.rackcdn.com/DDM090629R13_20180627170846.zip"
      }
   ]
}