Error 2071 SUNAT: La moneda debe ser la misma en todo el documento. Salvo las percepciones que sólo son en moneda nacional

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 2071 con el mensaje «La moneda debe ser la misma en todo el documento. Salvo las percepciones que sólo son en moneda nacional».

Es un error: SUNAT rechaza el comprobante y no tiene validez tributaria.

Aparece en: Resumen diario, Factura, Boleta de venta, Nota de crédito, Nota de débito.

Cuándo aparece

Estas son las reglas de validación de SUNAT que devuelven el código 2071, con su texto oficial:

  • Resumen diarioError

    Dato: Importe total de la venta Tipo de moneda del Comprobante

    Tag UBL: /SummaryDocuments/sac:SummaryDocumentsLine/sac:TotalAmount@currencyID (Tipo de moneda del comprobante)

    Condición: Si existe algún atributo currencyID en la misma línea /SummaryDocuments/sac:SummaryDocumentsLine/ con valor diferente a "Tipo de moneda del comprobante" (excepto las monedas contenidas en el tag sac:SUNATPerceptionSummaryDocumentReference/)

  • FacturaError

    Dato: Tipo de moneda en la cual se emite la factura electrónica

    Tag UBL: /Invoice/cbc:DocumentCurrencyCode

    Condición: La moneda de los totales de línea y totales de comprobantes (excepto para los totales de Percepción y Detracción) es diferente al valor del Tag UBL

  • FacturaError

    Dato: Valor unitario por ítem

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor del atributo es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: Precio de venta unitario por item

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor del atributo es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: Valor referencial unitario por ítem en operaciones gratuitas (no onerosas)

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: Monto total de tributos del ítem

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: Afectación al IGV por ítem Afectación al IVAP por ítem

    Tag UBL: @currencyID (Moneda base)

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: Afectación al IGV por ítem Afectación al IVAP por ítem

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: Sistema de ISC por ítem Afectacion otros tributos por ítem

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: Impuesto al consumo de bolsas de plástico por ítem

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: Valor de venta por ítem

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: Cargo/descuento por ítem

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: Monto total de tributos

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: Total valor de venta - exportación Total valor de venta - operaciones inafectas Total valor de venta - operaciones exoneradas

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: Total valor de venta - operaciones gratuitas Sumatoria de tributos de operaciones gratuitas

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: Total valor de venta - operaciones gravadas (IGV/IVAP) Sumatoria de IGV/IVAP

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: Sumatoria ISC Sumatoria otros tributos Sumatoria ICBPER

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: Cargos y/o descuentos globales

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: Sumatoria otros descuentos (que no afectan la base imponible del IGV)

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: Sumatoria otros cargos (que no afectan la base imponible del IGV)

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: Importe total de la venta, cesión en uso o del servicio prestado

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: Total valor de venta

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: Total precio de venta (Subtotal de la factura)

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: Monto de redondeo del importe total

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: FISE (Ley N.° 29852) Fondo de Inclusión Social Energético

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: Importe del anticipo

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: Total de anticipos

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: Forma de pago Monto neto pendiente de pago

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor del atributo es diferente al ingresado en 'Tipo de moneda' * Validación a partir del 01/09/2021 es ERROR

  • FacturaError

    Dato: Monto del pago único o de las cuotas Fecha del pago único o de las cuotas

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor del atributo es diferente al ingresado en 'Tipo de moneda' * Validación a partir del 01/09/2021 es ERROR

  • FacturaError

    Dato: Importe de la operación Porcentaje de la retención Importe de la retención

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor del atributo es diferente al ingresado en 'Tipo de moneda'

  • FacturaError

    Dato: Retenciones de Renta de segunda categoría

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: Tipo de moneda en la cual se emite la boleta de venta electrónica

    Tag UBL: /Invoice/cbc:DocumentCurrencyCode

    Condición: La moneda de los totales de línea y totales de comprobantes (excepto para los totales de Percepción y Detracción) es diferente al valor del Tag UBL

  • Boleta de ventaError

    Dato: Valor unitario por ítem

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: Precio de venta unitario por ítem

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: Valor referencial unitario por ítem en operaciones gratuitas (no onerosas)

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: Monto total de tributos del ítem

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: Afectación al IGV por ítem Afectación IVAP por ítem

    Tag UBL: @currencyID (Moneda base)

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: Afectación al IGV por ítem Afectación IVAP por ítem

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: Sistema de ISC por ítem Afectacion otros tributos por ítem

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: Impuesto al consumo de bolsas de plástico por ítem

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: Valor de venta por ítem

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: Cargo/descuento por ítem

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: Monto total de tributos

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: Total valor de venta - exportación Total valor de venta - operaciones inafectas Total valor de venta - operaciones exoneradas

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: Total valor de venta - operaciones gratuitas Sumatoria de tributos de operaciones gratuitas

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: Total valor de venta - operaciones gratuitas Sumatoria de tributos de operaciones gratuitas

    Tag UBL: /Invoice/cac:TaxTotal/cac:TaxSubtotal/cbc:TaxAmount (Importe del tributo)

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: Total valor de venta - operaciones gravadas (IGV o IVAP) Sumatoria IGV o IVAP

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: Sumatoria ISC Sumatoria otros tributos Sumatoria ICBPER

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: Cargos y/o descuentos globales

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: Sumatoria otros descuentos (que no afectan la base imponible del IGV)

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: Sumatoria otros cargos (que no afectan la base imponible del IGV)

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: Importe total

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: Total valor de venta

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: Subtotal de la boleta de venta

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: Monto de redondeo del importe total

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: FISE (Ley N.° 29852) Fondo de Inclusión Social Energético

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: Importe del anticipo

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Boleta de ventaError

    Dato: Total de anticipos

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de créditoError

    Dato: Tipo de moneda en la cual se emite la nota de crédito electrónica

    Tag UBL: /CreditNote/cbc:DocumentCurrencyCode

    Condición: La moneda de los totales de línea y totales de comprobantes es diferente al valor del Tag UBL

  • Nota de créditoError

    Dato: Valor unitario por ítem que modifica

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de créditoError

    Dato: Precio de venta unitario por item que modifica Valor referencial unitario por ítem en operaciones gratuitas (no onerosas)

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de créditoError

    Dato: Monto total de tributos del ítem que modifica

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de créditoError

    Dato: Afectación al IGV por ítem Afectación IVAP por ítem

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de créditoError

    Dato: Sistema de ISC por ítem Afectación otros tributos por ítem

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de créditoError

    Dato: Impuesto al consumo de bolsas de plástico por ítem

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de créditoError

    Dato: Valor de venta por ítem que modifica

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de créditoError

    Dato: Monto total de tributos

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de créditoError

    Dato: Total valor de venta - exportación Total valor de venta - operaciones inafectas Total valor de venta - operaciones exoneradas

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de créditoError

    Dato: Total valor de venta - operaciones gratuitas Sumatoria de impuestos de operaciones gratuitas

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de créditoError

    Dato: Total valor de venta - operaciones gravadas (IGV o IVAP) Sumatoria IGV o IVAP

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de créditoError

    Dato: Sumatoria ISC Sumatoria otros tributos

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de créditoError

    Dato: Sumatoria ICBPER

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de créditoError

    Dato: Sumatoria otros cargos (que no afectan la base imponible)

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de créditoError

    Dato: Importe total

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de créditoError

    Dato: Monto de redondeo del importe total

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de créditoError

    Dato: Forma de pago Monto neto pendiente de pago

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor del atributo es diferente al ingresado en 'Tipo de moneda'

  • Nota de créditoError

    Dato: Monto del pago único o de las cuotas Fecha del pago único o de las cuotas

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor del atributo es diferente al ingresado en 'Tipo de moneda'

  • Nota de débitoError

    Dato: Tipo de moneda en la cual se emite la nota de débito electrónica

    Tag UBL: /DebitNote/cbc:DocumentCurrencyCode

    Condición: La moneda de los totales de línea y totales de comprobantes es diferente al valor del Tag UBL

  • Nota de débitoError

    Dato: Valor unitario por ítem que modifica

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de débitoError

    Dato: Precio de venta unitario por item que modifica Valor referencial unitario por ítem en operaciones gratuitas (no onerosas)

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de débitoError

    Dato: Monto total de tributos del ítem que modifica

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de débitoError

    Dato: Afectación al IGV por ítem Afectación IVAP por ítem

    Tag UBL: @currencyID (Moneda base)

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de débitoError

    Dato: Afectación al IGV por ítem Afectación IVAP por ítem

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de débitoError

    Dato: Sistema de ISC por ítem Afectacion otros tributos por ítem

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de débitoError

    Dato: Impuesto al consumo de bolsas de plástico por ítem

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de débitoError

    Dato: Valor de venta por ítem

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de débitoError

    Dato: Monto total de tributos

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de débitoError

    Dato: Total valor de venta - exportación Total valor de venta - operaciones inafectas Total valor de venta - operaciones exoneradas

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de débitoError

    Dato: Total valor de venta - operaciones gratuitas Sumatoria de impuestos de operaciones gratuitas

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de débitoError

    Dato: Total valor de venta - operaciones gravadas (IGV o IVAP) Sumatoria IGV o IVAP

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de débitoError

    Dato: Sumatoria ISC Sumatoria otros tributos

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de débitoError

    Dato: Sumatoria ICBPER

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de débitoError

    Dato: Sumatoria otros cargos (que no afectan la base imponible)

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de débitoError

    Dato: Importe total

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

  • Nota de débitoError

    Dato: Monto de redondeo del importe total

    Tag UBL: @currencyID

    Condición: Si existe el atributo, el valor es diferente al ingresado en 'Tipo de moneda'

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.