En QRwey!, generar un código QR significa crear una intención de autofactura asociada a una transacción específica.
Este QR representa una operación fiscal pendiente que:
- Tiene un monto definido
- Tiene una expiración
- Está firmada y protegida
- Puede convertirse en un CFDI timbrado cuando el usuario la confirma
Normalmente debes generar un QR cuando:
- Se completa una venta
- Se imprime un ticket
- El cliente solicita factura
- Deseas habilitar autofactura sin capturas manuales
Cada QR debe representar una sola transacción.
POST /api/v1/qrsHost (DEV):
https://api-dev.qrwey.comHost (PROD):
https://clients.qrwey.comX-API-Key: TU_API_KEY
Idempotency-Key: <uuid>
Content-Type: application/jsonX-API-Keyautentica la solicitudIdempotency-Keyevita duplicados en reintentos
⚠️ Usa el mismo Idempotency-Key si reintentas la operación.
El cuerpo de la solicitud describe completamente la transacción fiscal.
| Campo | Descripción |
|---|---|
store | Identificador o nombre del punto de venta |
issuer_rfc | RFC del emisor configurado en QRwey! |
amount | Total de la operación |
subtotal | Subtotal antes de impuestos |
currency | Moneda (MXN) |
sat_payment_method | Forma de pago SAT |
expires_at | Fecha/hora de expiración del QR |
operation | Tipo de operación (ej. INVOICE) |
Cada elemento representa un concepto del CFDI:
| Campo | Descripción |
|---|---|
sku | Identificador interno del producto |
description | Descripción del concepto |
quantity | Cantidad |
unit_price | Precio unitario |
amount | Importe del concepto |
sat_unit_key | Clave SAT de unidad |
sat_product_service_key | Clave SAT producto/servicio |
sat_tax_object_key | Objeto de impuesto |
taxes | Impuestos aplicables |
curl -X POST "https://api-dev.qrwey.com/api/v1/qrs" -H "X-API-Key: TU_API_KEY" -H "Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000" -H "Content-Type: application/json" -d '{
"store": "PetroStation #45",
"issuer_rfc": "EKU9003173C9",
"amount": 133.00,
"subtotal": 115.08,
"currency": "MXN",
"sat_payment_method": "04",
"expires_at": "2025-11-01T23:59:59Z",
"operation": "INVOICE",
"operation_data": [
{
"sku": "GAS87",
"description": "Gasolina Magna",
"quantity": 5.662,
"unit_price": 20.325,
"amount": 115.08,
"sat_unit_key": "LTR",
"sat_product_service_key": "15101515",
"sat_tax_object_key": "02",
"taxes": [
{
"type": "Traslado",
"tax": "002",
"factor": "Tasa",
"rate": "0.160000",
"taxable_base": 112.0,
"amount": 17.92
}
]
}
]
}'{
"qr_base64": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUg...",
"qr_url": "https://clients.qrwey.com/qr.png?...",
"qr_content": "https://clients.qrwey.com/go?v=1&t=...&m=...",
"created_at": "2025-09-11T18:25:43Z",
"expires_at": "2025-11-01T23:59:59Z"
}qr_content: valor principalexpires_at: control de vigenciaqr_urloqr_base64: para mostrar o imprimir
| Código | Motivo |
|---|---|
| 400 | Campos inválidos o faltantes |
| 401 | API Key inválida |
| 409 | Solicitud duplicada |
| 410 | QR expirado |
| 422 | Error de reglas de negocio |
Consulta: Manejo de errores
- Genera el QR una sola vez por venta
- Define expiraciones realistas conforme a las reglas del negocio (ej. 5 días, hasta fin de mes, etc.)
- Maneja explícitamente errores
409y410
- Resolver un QR: Resolver código QR
- Entender estados: Ciclo de vida del QR
- Detalle completo: Referencia del API