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 String Identificador único del emisor, proporcionado por QMF. variable_RFC
STATUS String Define la función posterior al recibir el XML. Valores: FACTURAR / ALMACENAR
Order 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
RFCStringRFC 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
SellerOrderIdStringIdentificador de la venta.
PurchaseDateStringFecha de compra.Layout indica AAAA-MM-DD; en docs recomendamos usar AAAA-MM-DDTHH:MM:SS
OrderStatusStringEstatus operativo de la orden.Ej.: Pending, Shipped, Canceled, Completed, etc.
SalesChannelStringCanal de venta configurado en QMF.Ejemplos documentados: MATRIZ, Phidias
MonedaStringClave 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.
OrderTotalNodoContenedor del total.
OrderTotal/AmountNuméricoMonto total de la orden, incluyendo descuentos e impuestos.
OrderSubTotalNodoContenedor del subtotal.
OrderSubTotal/AmountNuméricoSubtotal monetario de la operación.
NumberOfItemsShippedString / enteroCantidad de partidas compradas.

Bloque de artículos (OrderItems)

Campo Obligatorio Tipo Descripción Observaciones
OrderItemsNodo (n…n)Contenedor de artículos.Puede contener múltiples partidas
OrderItemIdStringClave del concepto.Se convierte en NoIdentificacion del CFDI
ASINStringIdentificador único del producto.Debe hacer match con PRODUCTOS
TitleStringDescripción del producto.
QuantityShippedString / decimalCantidad del concepto.
ObjetoImpStringIndica 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/AmountNuméricoValor unitario del concepto.
Importe/AmountNumé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.
ImpuestoStringClave del impuesto: 001, 002, 003.
TipoFactorStringTasa, Cuota o Exento.
TasaOCuotaCondicionalStringValor de tasa o cuota del impuesto.
ImporteCondicionalDecimal (6)Importe del impuesto trasladado.
BaseDecimal (6)Base de cálculo del impuesto.

RetencionConcepto

Campo Obligatorio Tipo Descripción
RetencionConceptoOpcional (0…n)NodoInicio del bloque de retenciones del concepto.
ImpuestoStringClave del impuesto retenido: 001, 002, 003.
TipoFactorStringTasa, Cuota o Exento.
TasaOCuotaDecimal (6)Tasa o cuota de la retención.
ImporteDecimal (6)Importe retenido.
BaseDecimal (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="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>
  
Scroll al inicio