Generación y timbrado de Facturas

Con nuestro servicio Enlazatte podrás generar y timbrar facturas a tus clientes en tu sistema Contpaqi Comercial.

Request para crear nueva factura

La petición es una petición tipo POST, al endpoint /invoices, (API Reference ...), como parámetros QueryString envías el Token que previamente debiste haber generado (Ve como generar un token ...), dentro del body del request enviarás una estructura tipo JSON con la información de la factura que se desea generar, en el encabezado del request se envía el Content-Type con valor application/x-www-form-urlencoded.


Consideraciones Request Data

  • fecha: El formato de la fecha del documento es "yyyy-MM-ddTHH:mm:ss", ej: 2019-11-30T10:26:58
  • serie: Se enviará la serie del documento que se generará SIN el folio interno, ya que el sistema Contpaqi Comercial generará el folio consecutivo que le corresponda.
  • formaDePago: Se enviará el código de moneda correspondiene (PUE o PPD).
  • $this->message = $responseData->error->message;
  • metodoDePago: Se enviará la forma de pago, los valores permitidos son: ['01', '02', '03', '04', '05', '06', '08', '28', '29', '99']
  • Moneda: Se enviará el código de moneda correspondiene (MXN o USD).
  • TipoDocumento: El tipo de documento es el Concepto del documento correspondiente a la factura en el sistema Contpaqi Comercial.
  • Emisor: Es el RFC de la empresa emisora del documento.
  • CodigoCliente: El código del cliente debe estar previamente creado en el sistema Contpaqi Comercial, ya sea de forma manual directamente en el sistema o bien por medio de Enlazatte con el endpoint para creación de clientes API Reference ....
  • Conceptos[n][codigo]: Es el código del producto o servicio en el sistema Contpaqi Comercial que se va a facturar.
  • Conceptos[n][valorUnitario]: Es el precio unitario, sin impuestos.


public function crearFactura($json)
    {
        $this->code    = null;
        $this->message = null;

        try {
            $url = $this->baseUri . 'invoices';

            $response = $this->client->request('POST', $url, array(
                'query' => array('token' => $this->token),
                'body' => json_encode($json)
            ));

            $responseData  = json_decode($response->getBody()->getContents());

            return $responseData;
        } catch (RequestException $e) {
            $statusCode   = $e->getResponse()->getStatusCode();
            $responseData = json_decode($e->getResponse()->getBody()->getContents());

            switch ($statusCode) {
                case 400:
                    $this->message = 'Token invalido.';
                    break;
                case 401:
                    $this->message = 'Token expirado.';
                    break;
                case 422:
                    $this->message = $responseData->error->message;
                    break;
                case 500:
                    $this->message = 'Error, al intentar timbrar el documento.';
                    break;
            }
            $this->code = $statusCode;
        }
    
{
  "fecha": "2020-01-01T10:32:57",
  "serie": "A",
  "Moneda": "MXN",
  "TipoCambio": "1.00",
  "formaDePago": "PUE",
  "metodoDePago": "99",
  "Emisor": "LAN7008173R5",
  "CodigoCliente": "CLIEN0001",
  "TipoDocumento": "4",
  "Conceptos": [
    {
      "codigo": "PROD0001",
      "cantidad": 1,
      "descripcion": "Descripcion detallada del producto",
      "valorUnitario": 150
    }
  ]
}


















{
    "error": "token_expired"
}

































{
    "error": {
        "message": "No se encontró el cliente con código: CLIENTE001",
        "status_code": 422
    }
}































Response exitoso

El response de la petición es una estructura tipo JSON donde se devuelven los siguientes valores en caso de ser una petición exitosa:

  • xml: Cadena de texto con el documento XML del CFDI timbrado.
  • pdf: Cadena en formato base 64 que contiene el archivo de la representación impresa del PDF del CFDI, para visualizarlo es necesario decodificar el string de este elemento del json y guardarlo con extensión PDF. Existen herramientas en línea donde puedes decodificar el archivo codificado en base64 para poder visualizarlo, aquí el link de un sitio donde puedes decodificarlo de forma manual.
  • uuid: Es la cadena con el identificador único ante el SAT para este documento timbrado.

Screenshot Insomnia

Login Insomnia

¿Listo para empezar?

Escribenos y comprueba lo rápido y sencillo que es enlazarte con Contpaqi, genera pedidos, cotizaciones, facturas, pagos, clientes, productos y timbra documentos desde tus propios sistemas aprovechando el protencial de tu empresa al máximo.