Inicio Rápido
Antes de emitir su primer CFDI desde la API REST de CSPlug, recomendamos leer los primeros pasos de la emisión en CSFacturación..
Timbrar un CFDI
Emitir una factura mediante la API REST de CSPlug es un proceso sencillo que implica enviar un objeto JSON a nuestro endpoint de emisión.
Estructura JSON
Para facturar, asegúrese de que la estructura del objeto JSON cumpla con las especificaciones detalladas en la referencia JSON.
-
Identifique el endpoint de emisión:
https://csplug.csfacturacion.com/cfdi(Producción) ohttps://csplug.csfacturacion.com/demo/cfdi(Demo). -
Implemente un cliente HTTP en su lenguaje de programación:
curl -X POST https://csplug.csfacturacion.com/cfdi \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -u "USUARIO:CONTRASEÑA" \ -d @request.json<?php $client = new \GuzzleHttp\Client(); $response = $client->request('POST', 'https://csplug.csfacturacion.com/cfdi', [ 'auth' => ['USUARIO', 'CONTRASEÑA'], 'headers' => [ 'Accept' => 'application/json', 'Content-Type' => 'application/json', ], 'json' => $datos_cfdi // Array asociativo con la estructura del CFDI ]); echo $response->getBody();const response = await fetch('https://csplug.csfacturacion.com/cfdi', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'Basic ' + btoa('USUARIO:CONTRASEÑA') }, body: JSON.stringify(datosCfdi) }); const data = await response.json(); console.log(data);import requests import json url = "https://csplug.csfacturacion.com/cfdi" payload = json.dumps(datos_cfdi) headers = { 'Content-Type': 'application/json', 'Accept': 'application/json' } response = requests.request("POST", url, auth=('USUARIO', 'CONTRASEÑA'), headers=headers, data=payload) print(response.text) -
Construya el payload JSON. Puede consultar un ejemplo completo de la estructura JSON a continuación o en la referencia.
{
"Version": "4.0",
"Serie": "A",
"Folio": "100",
"FormaPago": "01",
"Moneda": "MXN",
"TipoDeComprobante": "I",
"Exportacion": "01",
"MetodoPago": "PUE",
"LugarExpedicion": "20000",
"Receptor": {
"Rfc": "XAXX010101000",
"Nombre": "AL PUBLICO EN GENERAL",
"DomicilioFiscalReceptor": "20000",
"RegimenFiscalReceptor": "616",
"UsoCFDI": "S01"
},
"Emisor": {
"Nombre": "EMPRESA DE PRUEBA",
"RegimenFiscal": "601",
"Rfc": "AAA010101AAA"
},
"Conceptos": {
"Concepto": {
"0": {
"ClaveProdServ": "01010101",
"NoIdentificacion": "001",
"Cantidad": "1.00",
"ClaveUnidad": "H87",
"Descripcion": "Producto de prueba",
"ValorUnitario": "100.00",
"Importe": "100.00",
"ObjetoImp": "02",
"Impuestos": {
"Traslados": {
"Traslado": [
{
"Base": "100.00",
"Impuesto": "002",
"TipoFactor": "Tasa",
"TasaOCuota": "0.160000",
"Importe": "16.00"
}
]
}
}
}
}
}
}
Interpretando la respuesta
La API REST utiliza códigos de estado HTTP estándar.
- 201 Created: El CFDI fue timbrado exitosamente. La respuesta contendrá los archivos en Base64.
- 422 Unprocessable Entity: Hubo errores de validación en los datos enviados. La respuesta detallará los campos con error.
- 401 Unauthorized: Las credenciales son incorrectas.
Ejemplo de respuesta exitosa:
{
"message": "Factura timbrada correctamente",
"data": {
"xml": "PD94bW... (Base64)",
"pdf": "JVBERi... (Base64)",
"qr": "iVBORw... (Base64)"
}
}
Para más información consulte la referencia completa.