# Obtener detalle de QR Obtiene el detalle completo de una transacción QR usando su identificador único. Este endpoint permite: 1. Consultar el estado actual de la transacción (status) 2. Verificar si la transacción ya fue facturada (campo invoice) 3. Obtener los datos fiscales del cliente que facturó (campo customer) 4. Acceder a los datos completos de la transacción con descripciones SAT resueltas El campo status indica el estado actual de la transacción: - PENDING: QR generado, esperando a ser escaneado - SCANNED: QR escaneado por el usuario desde la app - INVOICED: La intención fue confirmada y el CFDi fue timbrado - EXPIRED: El QR alcanzó su fecha expires_at sin ser facturado - CANCELLED: El QR fue cancelado manualmente Endpoint: GET /v1/qrs/{qrId} Version: 1.0.0 Security: ApiKeyAuth ## Path parameters: - `qrId` (string, required) Identificador único de la transacción QR. Example: "tra_4aca0361cfcd41c097663db44008fbb9" ## Response 200 fields (application/json): - `qr_id` (string, required) Identificador único de la transacción QR. Example: "tra_4aca0361cfcd41c097663db44008fbb9" - `store_uid` (string, required) Identificador del punto de venta. Example: "store_abc123" - `store_name` (string) Nombre del punto de venta. Example: "PetroStation #45" - `sale_id` (string, required) Identificador de la venta proporcionado por el negocio. Example: "fcd68791-6a27-412f-a50f-8d47b7bc34d2" - `idempotency_key` (string, required) Clave de idempotencia usada al generar el QR. Example: "550e8400-e29b-41d4-a716-446655440000" - `operation` (string, required) Tipo de operación: INVOICE, PAYMENT, REFUND. Example: "INVOICE" - `issuer_rfc` (string) RFC del emisor. Example: "EKU9003173C9" - `issuer_name` (string) Nombre o razón social del emisor. Example: "ESCUELA KEMPER URGATE" - `amount` (number, required) Monto total de la transacción. Precisión: Hasta nueve enteros con seis decimales (15, 6). Example: 133 - `subtotal` (number, required) Subtotal de la transacción. Precisión: Hasta nueve enteros con seis decimales (15, 6). Example: 115.08 - `currency` (string, required) Código de moneda ISO 4217. Example: "MXN" - `exchange_rate` (number) Tasa de cambio, en caso de que currency sea diferente de MXN. Example: 1 - `sat_payment_method` (string, required) Clave del Método de Pago del SAT. Example: "PUE" - `sat_payment_method_desc` (string) Descripción del método de pago según el catálogo del SAT. Example: "Pago en una sola exhibición" - `sat_payment_form` (string, required) Clave de Forma de Pago del SAT. Example: "04" - `sat_payment_form_desc` (string) Descripción de la forma de pago según el catálogo del SAT. Example: "Tarjeta de crédito" - `type_of_receipt` (string, required) Tipo de comprobante según el catálogo del SAT. Example: "I" - `type_of_receipt_desc` (string) Descripción del Tipo de comprobante según el catálogo del SAT. Example: "Ingreso" - `export_code` (string, required) Identifica si la factura ampara una operación de exportación. Example: "01" - `export_code_desc` (string) Descripción de la clave de exportación. Example: "No aplica" - `status` (string, required) Estado actual de la transacción QR. Enum: "PENDING", "SCANNED", "INVOICED", "EXPIRED", "CANCELLED" - `related_cfdis` (object,null) Para Sustitución de facturas o Notas de Crédito. - `related_cfdis.tipo_relacion` (string) Tipo de relación entre CFDI según el catálogo del SAT (ej. '04' Sustitución de los CFDI previos). Example: "04" - `related_cfdis.cfdis` (array) Listado con los UUID de los CFDIs relacionados. - `global_info` (object,null) Para facturas globales. Información relacionada con el comprobante global de operaciones con el público en general. - `global_info.periodicity` (string) Catálogo Periodicidad SAT (ej. '04' Mensual). Example: "04" - `global_info.months` (string) Catálogo Meses SAT (ej. '12' Diciembre). Example: "12" - `global_info.year` (integer) Año a cuatro dígitos. Example: 2026 - `operation_data` (array, required) Detalle de los conceptos con descripciones SAT resueltas. - `operation_data.sku` (string) Identificador único de producto (SKU) para control interno. Example: "GAS87" - `operation_data.description` (string, required) Descripción del producto o servicio. Example: "Gasolina Magna" - `operation_data.amount` (number, required) Monto total del concepto (unit_price * quantity). Precisión: Hasta nueve enteros con seis decimales (15, 6). Example: 115.08 - `operation_data.quantity` (number, required) Número de unidades vendidas. Precisión: Hasta nueve enteros con seis decimales (15, 6). Example: 5.662 - `operation_data.discount` (number) Descuento aplicado al producto. - `operation_data.sat_unit_key` (string, required) Clave de Unidad según el catálogo del SAT. Example: "LTR" - `operation_data.sat_unit_desc` (string, required) Descripción de la clave de unidad del SAT. Example: "Litro" - `operation_data.unit_price` (number, required) Precio unitario del producto. Precisión: Hasta nueve enteros con seis decimales (15, 6). Example: 20.325 - `operation_data.sat_product_service_key` (string, required) Clave de Producto / Servicio según el catálogo del SAT. Example: "15101515" - `operation_data.sat_product_service_desc` (string, required) Descripción de la clave de Producto / Servicio del SAT. Example: "Gasolina premium mayor o igual a 91 octanos" - `operation_data.sat_tax_object_key` (string, required) Clave que indica si el concepto es objeto de impuesto. Example: "02" - `operation_data.sat_tax_object_desc` (string, required) Descripción de la clave de objeto de impuesto del SAT. Example: "Sí objeto de impuesto" - `operation_data.taxes` (array) Arreglo de impuestos aplicables al concepto. - `operation_data.taxes.type` (string, required) Define el tipo de impuesto. Valores válidos: 'Traslado' o 'Retencion'. Enum: "Traslado", "Retencion" - `operation_data.taxes.tax` (string, required) La clave del impuesto según el catálogo del SAT (ej. '002' para IVA, '001' para ISR). Example: "002" - `operation_data.taxes.factor` (string, required) El tipo de factor aplicable según el catálogo del SAT: Tasa, Cuota, Exento. Enum: "Tasa", "Cuota", "Exento" - `operation_data.taxes.rate` (string, required) La tasa o cuota del impuesto en su valor numérico (ej. 0.160000 para el 16% de IVA). Example: "0.160000" - `operation_data.taxes.taxable_base` (number, required) La base imponible sobre la cual se calcula el impuesto. Precisión: Hasta nueve enteros con seis decimales (15, 6). Example: 112 - `operation_data.taxes.amount` (number, required) El monto total del impuesto ya calculado (taxable_base * rate), listo para ser timbrado. Precisión: Hasta nueve enteros con seis decimales (15, 6). Example: 17.92 - `metadata` (object,null) Datos adicionales del comercio. - `invoice` (object,null) Detalle de la factura generada. Presente cuando la transacción ya fue timbrada a CFDi. - `invoice.uuid` (string) Folio fiscal (UUID del CFDI). Example: "A1B2C3D4-E5F6-7890-ABCD-EF1234567890" - `invoice.status` (string) Estado de la factura. Example: "ACTIVE" - `invoice.total` (number) Total facturado. Example: 133 - `invoice.subtotal` (number) Subtotal facturado. Example: 115.08 - `invoice.issued_at` (string) Fecha de emisión del CFDI. Example: "2026-01-02T10:30:00Z" - `invoice.xml_url` (string) URL del archivo XML del CFDI. Example: "https://api.qrwey.com/invoices/A1B2C3D4.xml" - `invoice.pdf_url` (string) URL del archivo PDF (representación impresa) del CFDI. Example: "https://api.qrwey.com/invoices/A1B2C3D4.pdf" - `customer` (object,null) Datos fiscales del cliente que completó la facturación. - `customer.rfc` (string) RFC del receptor. Example: "XAXX010101000" - `customer.name` (string) Razón social del receptor. Example: "JUAN PÉREZ LÓPEZ" - `customer.tax_regime` (string) Régimen fiscal SAT del receptor. Example: "616" - `customer.postal_code` (string) Código postal fiscal del receptor. Example: "06600" - `qr_base64` (string, required) La imagen del QR codificada en base64. Example: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUg..." - `qr_url` (string, required) URL pública para ver o descargar la imagen PNG del código QR. Example: "https://api.qrwey.com/qr.png?t=YWFh..." - `qr_content` (string, required) La URL segura (deep link) contenida en el QR. Example: "https://api.qrwey.com/go?v=1&t=YWFh...&m=YmJi..." - `created_at` (string, required) Fecha y hora de creación de la transacción en formato ISO 8601. Example: "2026-01-01T13:00:00Z" - `updated_at` (string, required) Fecha y hora de la última actualización. Example: "2026-01-01T13:00:00Z" - `scanned_at` (string,null) Fecha y hora en que el QR fue escaneado. Null si aún no ha sido escaneado. - `expires_at` (string, required) Fecha y hora de expiración del código QR en formato ISO 8601. Example: "2026-01-03T23:59:59Z" ## Response 401 fields (application/json): - `error` (object) - `error.code` (string, required) Identificador estable del error (usa este campo como clave programática). - `error.message` (string, required) Descripción legible del error. - `error.details` (array) Información adicional por campo (si aplica). - `error.details.field` (string) Nombre del campo con error. - `error.details.code` (string) Código específico del error de campo. - `error.details.message` (string) Descripción del error de campo. - `error.request_id` (string, required) Identificador único de la solicitud para trazabilidad y soporte. ## Response 404 fields (application/json): - `error` (object) - `error.code` (string, required) Identificador estable del error (usa este campo como clave programática). - `error.message` (string, required) Descripción legible del error. - `error.details` (array) Información adicional por campo (si aplica). - `error.details.field` (string) Nombre del campo con error. - `error.details.code` (string) Código específico del error de campo. - `error.details.message` (string) Descripción del error de campo. - `error.request_id` (string, required) Identificador único de la solicitud para trazabilidad y soporte. ## Response 422 fields (application/json): - `error` (object) - `error.code` (string, required) Identificador estable del error (usa este campo como clave programática). - `error.message` (string, required) Descripción legible del error. - `error.details` (array) Información adicional por campo (si aplica). - `error.details.field` (string) Nombre del campo con error. - `error.details.code` (string) Código específico del error de campo. - `error.details.message` (string) Descripción del error de campo. - `error.request_id` (string, required) Identificador único de la solicitud para trazabilidad y soporte.