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

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
RFCSíStringRFC del receptor del comprobante.
NombreReceptorOpcionalStringNombre o razón social del receptor.Se vuelve requerido si STATUS=FACTURAR
RegimenFiscalReceptorOpcionalStringRégimen fiscal del receptor.Si STATUS=ALMACENAR debe venir vacío
codigoPostalOpcionalStringCódigo postal del receptor.En la práctica suele ser requerido para facturar
SellerOrderIdSíStringIdentificador de la venta.
PurchaseDateSíStringFecha de compra.Layout indica AAAA-MM-DD; en docs recomendamos usar AAAA-MM-DDTHH:MM:SS
OrderStatusSíStringEstatus operativo de la orden.Ej.: Pending, Shipped, Canceled, Completed, etc.
SalesChannelSíStringCanal de venta configurado en QMF.Ejemplos documentados: MATRIZ, Phidias
MonedaSíStringClave del catálogo SAT c_Moneda.MXN para pesos mexicanos es el caso usual
BuyerEmailOpcionalStringEmail del comprador o receptor.En la práctica es altamente recomendable
UsoCFDIOpcionalStringClave SAT de uso del CFDI.Si FACTURAR, normalmente debe venir en el request o estar resuelto por configuración
FormaPagoOpcionalStringClave SAT de forma de pago.Puede venir por API, quedar fija o usarse como default, según configuración
ObservacionesCondicionalStringMotivo 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
DescuentoOpcionalNodoContenedor del descuento total de la orden.
Descuento/AmountOpcionalNuméricoSuma de todos los descuentos de la orden.
OrderTotalSíNodoContenedor del total.
OrderTotal/AmountSíNuméricoMonto total de la orden, incluyendo descuentos e impuestos.
OrderSubTotalSíNodoContenedor del subtotal.
OrderSubTotal/AmountSíNuméricoSubtotal monetario de la operación.
NumberOfItemsShippedSíString / enteroCantidad de partidas compradas.

Bloque de artículos (OrderItems)

Campo Obligatorio Tipo Descripción Observaciones
OrderItemsSíNodo (n…n)Contenedor de artículos.Puede contener múltiples partidas
OrderItemIdSíStringClave del concepto.Se convierte en NoIdentificacion del CFDI
ASINSíStringIdentificador único del producto.Debe hacer match con PRODUCTOS
TitleSíStringDescripción del producto.
QuantityShippedSíString / decimalCantidad del concepto.
ObjetoImpSíStringIndica si el item es objeto de impuesto.Valores aceptados: 01, 02, 03, 04
PedimentoOpcionalStringNúmero de pedimento del artículo.Para importadores de primera mano cuando aplique
ValorUnitario/AmountSíNuméricoValor unitario del concepto.
Importe/AmountSíNuméricoImporte del concepto.Debe corresponder a cantidad × valor unitario
DescuentoOpcionalNuméricoDescuento específico del concepto.
ShippingPriceOpcionalNodoPrecio de envío.
ShippingPrice/AmountSí, si el nodo existeNuméricoImporte total del envío.

Impuestos por concepto

TrasladoConcepto

Campo Obligatorio Tipo Descripción
TrasladoConceptoOpcional (0…n)NodoInicio del bloque de traslados del concepto.
ImpuestoSíStringClave del impuesto: 001, 002, 003.
TipoFactorSíStringTasa, Cuota o Exento.
TasaOCuotaCondicionalStringValor de tasa o cuota del impuesto.
ImporteCondicionalDecimal (6)Importe del impuesto trasladado.
BaseSíDecimal (6)Base de cálculo del impuesto.

RetencionConcepto

Campo Obligatorio Tipo Descripción
RetencionConceptoOpcional (0…n)NodoInicio del bloque de retenciones del concepto.
ImpuestoSíStringClave del impuesto retenido: 001, 002, 003.
TipoFactorSíStringTasa, Cuota o Exento.
TasaOCuotaSíDecimal (6)Tasa o cuota de la retención.
ImporteSíDecimal (6)Importe retenido.
BaseSíDecimal (6)Base para cálculo de la retención.

Addenda y complementos opcionales

AddendaDomicilioReceptor

CampoObligatorioTipo
calleOpcionalString
noExteriorOpcionalString
noInteriorOpcionalString
coloniaOpcionalString
municipioOpcionalString
estadoOpcionalString
paisOpcionalString

ComplementoIEDU (Para facturación automatizada en Instituciones Educativas)

CampoObligatorioTipoUso
nombreAlumnoOpcionalStringRequerido si el cobro corresponde a colegiaturas.
CURPOpcionalStringCURP del alumno.
nivelEducativoOpcionalStringNivel educativo cursado.
AutRVOEOpcionalStringClave del centro de trabajo o RVOE.
rfcPagoOpcionalStringRFC de quien realiza el pago si es distinto al receptor.

Respuesta del web service

Campo Tipo Descripción
EstatusStringÉXITO o ERROR.
CFDIStringXML timbrado en base 64.
UUIDStringFolio fiscal UUID del XML.
DOCUMENTOSStringLink para descargar PDF y XML en ZIP.
DescripcionStringDescripció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="https://quieromifactura.mx">
      <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>
  
Scroll al inicio