Error 3262 SUNAT: Si existe retencion de IGV en el comprobante, el receptor debe ser un Agente de Retencion
Fuente: Reglas de validación de SUNAT, actualizado al 26.08.2026. Los mensajes y las condiciones son textos oficiales de SUNAT.
Qué significa
SUNAT devuelve el código 3262 con el mensaje «Si existe retencion de IGV en el comprobante, el receptor debe ser un Agente de Retencion».
Es un error: SUNAT rechaza el comprobante y no tiene validez tributaria.
Aparece en: Factura.
Cuándo aparece
Estas son las reglas de validación de SUNAT que devuelven el código 3262, con su texto oficial:
FacturaError
Dato: Importe de la operación Porcentaje de la retención Importe de la retención
Tag UBL:
/Invoice/cac:AllowanceCharge/cbc:AllowanceChargeReasonCode (Código de motivo de cargo/descuento: Retención del IGV)Condición: Si el valor del tag es '62' y el Tipo de documento de identidad del receptor del comprobante (/Invoice/cac:AccountingCustomerParty/cac:Party/cac:PartyIdentification/cbc:ID@schemeID) es diferente de 6-RUC * Validación a partir del 01/01/2022 es ERROR
FacturaError
Dato: Importe de la operación Porcentaje de la retención Importe de la retención
Tag UBL:
/Invoice/cac:AllowanceCharge/cbc:AllowanceChargeReasonCode (Código de motivo de cargo/descuento: Retención del IGV)Condición: Si el valor del tag es '62' y el receptor del comprobante (/Invoice/cac:AccountingCustomerParty/cac:Party/cac:PartyIdentification/cbc:ID) no es un agente de retención (no existe ind_padrón igual a "03" en el listado) * Validación a partir del 01/09/2021 es ERROR
Cómo resolverlo
Revisa el dato y el tag UBL que indica la regla y corrígelo para que no se cumpla la condición de SUNAT.
Si SUNAT ya rechazó el comprobante, su número queda usado: no lo reenvíes igual. Corrige los datos y emite un comprobante nuevo.
Cómo lo ves en API SUNAT
Con API SUNAT no armas el XML: envías la venta en JSON y la API lo genera, lo firma y lo envía a SUNAT. Si SUNAT rechaza el comprobante, la emisión responde con status "rejected" y el código en sunat.errorCode y sunat.errorMessage; las observaciones llegan con status "accepted_with_observations".
También puedes recibirlo por webhook (document.rejected o document.observed). Ver los estados en la documentación.
