Sellar Factura
Este endpoint recibe un XML CFDI ya sellado por el cliente (con su propia FIEL/HSM) y lo envía a la PAC para timbrado. Valida estructura, sello y certificado antes de enviar. NO persiste datos en la base de datos.
- Método HTTP:
POST - URL:
/invoices/stamp
Cabeceras
| Nombre | Descripción | Requerido |
|---|---|---|
x-organization-id | ID de la organización del usuario. | Sí |
x-api-key | API key para autenticación. | Sí |
Estructura del Request
El cuerpo de la petición es un objeto JSON que representa el StampInvoiceDto.
Objeto Principal: StampInvoiceDto
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
sealedXml | string | Obligatorio | El contenido del XML del CFDI previamente sellado. |
Ejemplos de Código
- cURL
- Python
curl -X POST https://sandbox-api.lummy.com/invoices/stamp \
-H "Content-Type: application/json" \
-H "x-organization-id: ${LUMMY_ORG_ID}" \
-H "x-api-key: ${LUMMY_API_KEY}" \
-d
```json
{
"sealedXml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><cfdi:Comprobante ... Sello=\"...\" ... />"
}
import os
import requests
headers = {
'Content-Type': 'application/json',
'x-organization-id': os.environ.get('LUMMY_ORG_ID'),
'x-api-key': os.environ.get('LUMMY_API_KEY'),
}
# El XML sellado debe ser leído de un archivo o provenir de tu proceso de sellado
with open('factura_sellada.xml', 'r') as f:
sealed_xml = f.read()
json_data = {
'sealedXml': sealed_xml,
}
response = requests.post('https://sandbox-api.lummy.com/invoices/stamp', headers=headers, json=json_data)
print(response.json())
Respuesta Exitosa
En caso de éxito, la respuesta será un objeto JSON con la estructura StampInvoiceResponseDto.
{
"cfdi": "<?xml version=...",
"status": "STAMPED"
}
Respuestas de Error
| Código HTTP | Descripción |
|---|---|
| 400 | XML sellado inválido, sello faltante o certificado no coincide. |
| 404 | Sucursal o CSD no encontrado. |