Referencia de campos: RequestXMLCFDICompleto
Esta referencia resume el layout operativo del método RequestXMLCFDICompleto y organiza los campos por bloques funcionales para facilitar su implementación.
Quiero Mi Factura recibe la operación estructurada desde el sistema integrador. Por ello,
el desarrollador es responsable de enviar correctamente la información comercial, fiscal y
aritmética del request.
Importante antes de implementar
- Los productos deben existir previamente con ClaveProdServ, Unidad y ClaveUnidad.
- Los importes, descuentos, impuestos y totales deben cuadrar correctamente.
- Para validar correctamente los valores enviados, revisa las reglas de impuestos y decimales
- La sustitución de caracteres debe aplicarse antes de construir el XML.
- El comportamiento final también depende de la configuración activa del cliente en QMF.
Bloque raíz del request
| Campo | Obligatorio | Tipo | Descripción | Observaciones |
|---|---|---|---|---|
| USUARIO | Sí | String | Identificador único del emisor, proporcionado por QMF. | variable_RFC |
| STATUS | Sí | String | Define la función posterior al recibir el XML. | Valores: FACTURAR / ALMACENAR |
| Order | Sí | Nodo | Contenedor principal de la operación. | Inicio del bloque de orden |
Datos principales de la orden y del receptor
| Campo | Obligatorio | Tipo | Descripción | Observaciones |
|---|---|---|---|---|
| RFC | Sí | String | RFC del receptor del comprobante. | |
| NombreReceptor | Opcional | String | Nombre o razón social del receptor. | Se vuelve requerido si STATUS=FACTURAR |
| RegimenFiscalReceptor | Opcional | String | Régimen fiscal del receptor. | Si STATUS=ALMACENAR debe venir vacío |
| codigoPostal | Opcional | String | Código postal del receptor. | En la práctica suele ser requerido para facturar |
| SellerOrderId | Sí | String | Identificador de la venta. | |
| PurchaseDate | Sí | String | Fecha de compra. | Layout indica AAAA-MM-DD; en docs recomendamos usar AAAA-MM-DDTHH:MM:SS |
| OrderStatus | Sí | String | Estatus operativo de la orden. | Ej.: Pending, Shipped, Canceled, Completed, etc. |
| SalesChannel | Sí | String | Canal de venta configurado en QMF. | Ejemplos documentados: MATRIZ, Phidias |
| Moneda | Sí | String | Clave del catálogo SAT c_Moneda. | MXN para pesos mexicanos es el caso usual |
| BuyerEmail | Opcional | String | Email del comprador o receptor. | En la práctica es altamente recomendable |
| UsoCFDI | Opcional | String | Clave SAT de uso del CFDI. | Si FACTURAR, normalmente debe venir en el request o estar resuelto por configuración |
| FormaPago | Opcional | String | Clave SAT de forma de pago. | Puede venir por API, quedar fija o usarse como default, según configuración |
| Observaciones | Condicional | String | Motivo documentado para cambios especiales. | Requerido con al menos 5 caracteres cuando OrderStatus=Inhabilitado |
Montos y resumen de la operación
| Nodo / Campo | Obligatorio | Tipo | Descripción |
|---|---|---|---|
| Descuento | Opcional | Nodo | Contenedor del descuento total de la orden. |
| Descuento/Amount | Opcional | Numérico | Suma de todos los descuentos de la orden. |
| OrderTotal | Sí | Nodo | Contenedor del total. |
| OrderTotal/Amount | Sí | Numérico | Monto total de la orden, incluyendo descuentos e impuestos. |
| OrderSubTotal | Sí | Nodo | Contenedor del subtotal. |
| OrderSubTotal/Amount | Sí | Numérico | Subtotal monetario de la operación. |
| NumberOfItemsShipped | Sí | String / entero | Cantidad de partidas compradas. |
Bloque de artículos (OrderItems)
| Campo | Obligatorio | Tipo | Descripción | Observaciones |
|---|---|---|---|---|
| OrderItems | Sí | Nodo (n…n) | Contenedor de artículos. | Puede contener múltiples partidas |
| OrderItemId | Sí | String | Clave del concepto. | Se convierte en NoIdentificacion del CFDI |
| ASIN | Sí | String | Identificador único del producto. | Debe hacer match con PRODUCTOS |
| Title | Sí | String | Descripción del producto. | |
| QuantityShipped | Sí | String / decimal | Cantidad del concepto. | |
| ObjetoImp | Sí | String | Indica si el item es objeto de impuesto. | Valores aceptados: 01, 02, 03, 04 |
| Pedimento | Opcional | String | Número de pedimento del artículo. | Para importadores de primera mano cuando aplique |
| ValorUnitario/Amount | Sí | Numérico | Valor unitario del concepto. | |
| Importe/Amount | Sí | Numérico | Importe del concepto. | Debe corresponder a cantidad × valor unitario |
| Descuento | Opcional | Numérico | Descuento específico del concepto. | |
| ShippingPrice | Opcional | Nodo | Precio de envío. | |
| ShippingPrice/Amount | Sí, si el nodo existe | Numérico | Importe total del envío. |
Impuestos por concepto
TrasladoConcepto
| Campo | Obligatorio | Tipo | Descripción |
|---|---|---|---|
| TrasladoConcepto | Opcional (0…n) | Nodo | Inicio del bloque de traslados del concepto. |
| Impuesto | Sí | String | Clave del impuesto: 001, 002, 003. |
| TipoFactor | Sí | String | Tasa, Cuota o Exento. |
| TasaOCuota | Condicional | String | Valor de tasa o cuota del impuesto. |
| Importe | Condicional | Decimal (6) | Importe del impuesto trasladado. |
| Base | Sí | Decimal (6) | Base de cálculo del impuesto. |
RetencionConcepto
| Campo | Obligatorio | Tipo | Descripción |
|---|---|---|---|
| RetencionConcepto | Opcional (0…n) | Nodo | Inicio del bloque de retenciones del concepto. |
| Impuesto | Sí | String | Clave del impuesto retenido: 001, 002, 003. |
| TipoFactor | Sí | String | Tasa, Cuota o Exento. |
| TasaOCuota | Sí | Decimal (6) | Tasa o cuota de la retención. |
| Importe | Sí | Decimal (6) | Importe retenido. |
| Base | Sí | Decimal (6) | Base para cálculo de la retención. |
Addenda y complementos opcionales
AddendaDomicilioReceptor
| Campo | Obligatorio | Tipo |
|---|---|---|
| calle | Opcional | String |
| noExterior | Opcional | String |
| noInterior | Opcional | String |
| colonia | Opcional | String |
| municipio | Opcional | String |
| estado | Opcional | String |
| pais | Opcional | String |
ComplementoIEDU (Para facturación automatizada en Instituciones Educativas)
| Campo | Obligatorio | Tipo | Uso |
|---|---|---|---|
| nombreAlumno | Opcional | String | Requerido si el cobro corresponde a colegiaturas. |
| CURP | Opcional | String | CURP del alumno. |
| nivelEducativo | Opcional | String | Nivel educativo cursado. |
| AutRVOE | Opcional | String | Clave del centro de trabajo o RVOE. |
| rfcPago | Opcional | String | RFC de quien realiza el pago si es distinto al receptor. |
Respuesta del web service
| Campo | Tipo | Descripción |
|---|---|---|
| Estatus | String | ÉXITO o ERROR. |
| CFDI | String | XML timbrado en base 64. |
| UUID | String | Folio fiscal UUID del XML. |
| DOCUMENTOS | String | Link para descargar PDF y XML en ZIP. |
| Descripcion | String | Descripción del error o del resultado. |
Supuestos documentados por QMF
- QMF asume que ningún comprobante es de exportación y utiliza Exportación=01 (No aplica).
- QMF asume que ningún comprobante es PPD y utiliza MetodoPago=PUE, salvo configuración específica del cliente.
- El campo ObjetoImp puede ser calculado por QMF si viene cualquier impuesto, de acuerdo con el layout documentado.
Ejemplo completo de request
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns2824:RequestXMLCFDICompleto xmlns:ns2824="http://159.203.10.206">
<USUARIO>XXXX_XXXX000000XXX</USUARIO>
<STATUS>ALMACENAR</STATUS>
<Order>
<RFC>XAXX010101000</RFC>
<NombreReceptor>NOMBRE</NombreReceptor>
<RegimenFiscalReceptor>601</RegimenFiscalReceptor>
<codigoPostal>11000</codigoPostal>
<SellerOrderId>MATRIZORDEN-1111</SellerOrderId>
<PurchaseDate>2023-09-21T05:31:51</PurchaseDate>
<OrderStatus>Shipped</OrderStatus>
<SalesChannel>MATRIZ</SalesChannel>
<Moneda>MXN</Moneda>
<Descuento>
<Amount></Amount>
</Descuento>
<OrderTotal>
<Amount>100</Amount>
</OrderTotal>
<OrderSubTotal>
<Amount>86.206897</Amount>
</OrderSubTotal>
<NumberOfItemsShipped>1</NumberOfItemsShipped>
<BuyerEmail>[email protected]</BuyerEmail>
<UsoCFDI>G03</UsoCFDI>
<FormaPago>01</FormaPago>
</Order>
<!-- ... resto del bloque de items e impuestos ... -->
</ns2824:RequestXMLCFDICompleto>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Explora la documentación
Navega por todas las secciones técnicas de Quiero Mi Factura para completar tu integración:
Developers
Inicio del portal técnico y visión general.
Getting Started
Recorrido recomendado para comenzar una integración.
Autenticación y ambientes
Endpoints QA/PROD, acceso, USUARIO e IP.
RequestXMLCFDICompleto
Método principal para enviar órdenes a QMF.
Campos del request
Referencia completa campo por campo del XML.
PRODUCTOS
Catálogo fiscal requerido para facturación.
DESCARGACFDI
Descarga de CFDI con paginación y tokens.
Configuración
Parámetros fiscales y operativos del sistema.
Reglas
Índice de reglas técnicas y fiscales.
Impuestos y decimales
Validación fiscal y cálculos del CFDI.
Caracteres permitidos
Reglas de texto para XML y timbrado.
OrderStatus
Estados de la orden y comportamiento en QMF.
