Catálogo 23 — Régimen de retención
Catálogo SUNAT que identifica el régimen de retención aplicado en un Comprobante de Retención Electrónico (tipo 20). Determina la tasa y el escenario en el que se retiene el pago al proveedor.
Tabla de códigos
Sección titulada «Tabla de códigos»| Código | Descripción |
|---|---|
| 01 | Tasa 3% |
| 02 | Tasa 6% |
| 03 | Tasa mixta |
Uso típico
Sección titulada «Uso típico»Se utiliza en:
Retention.tipoRegimen
Debe combinarse con tipoRegimenPorcentaje para indicar la tasa exacta de retención aplicada a las operaciones.
Ejemplo
Sección titulada «Ejemplo»from datetime import datefrom decimal import Decimalfrom openubl.models import ( Retention, Proveedor, Cliente, PercepcionRetencionOperacion, ComprobanteAfectado,)
retencion = Retention( serie="R001", numero=1, proveedor=Proveedor(ruc="20100100100", razonSocial="Mi Empresa S.A.C."), cliente=Cliente( nombre="Proveedor Ejemplo", numeroDocumentoIdentidad="20123456790", tipoDocumentoIdentidad="6", ), importeTotalRetenido=Decimal("30.00"), importeTotalPagado=Decimal("970.00"), tipoRegimen="01", # Tasa 3% tipoRegimenPorcentaje=Decimal("0.03"), operaciones=[ PercepcionRetencionOperacion( numeroOperacion=1, fechaOperacion=date(2026, 6, 10), importeOperacion=Decimal("1000.00"), comprobante=ComprobanteAfectado( tipoComprobante="01", serieNumero="F001-10", fechaEmision=date(2026, 6, 9), importeTotal=Decimal("1000.00"), moneda="PEN", ), ) ],)import { createRetention } from "@openubl/sdk";import { zRetention } from "@openubl/sdk/zod.gen";
const retention = zRetention.parse({serie: "R001",numero: 1,proveedor: { ruc: "20100100100", razonSocial: "Mi Empresa S.A.C." },cliente: { nombre: "Proveedor Ejemplo", numeroDocumentoIdentidad: "20123456790", tipoDocumentoIdentidad: "6",},importeTotalRetenido: 30.00,importeTotalPagado: 970.00,tipoRegimen: "01",tipoRegimenPorcentaje: 0.03,operaciones: [ { numeroOperacion: 1, fechaOperacion: "2026-06-10", importeOperacion: 1000.00, comprobante: { tipoComprobante: "01", serieNumero: "F001-10", fechaEmision: "2026-06-09", importeTotal: 1000.00, moneda: "PEN", }, },],});
const { data, error } = await createRetention({ body: retention });if (error) throw new Error(JSON.stringify(error));curl -X POST http://localhost:8000/api/v1/retention/create -H "Content-Type: application/json" -d '{ "serie": "R001", "numero": 1, "proveedor": { "ruc": "20100100100", "razonSocial": "Mi Empresa S.A.C." }, "cliente": { "nombre": "Proveedor Ejemplo", "numeroDocumentoIdentidad": "20123456790", "tipoDocumentoIdentidad": "6" }, "importeTotalRetenido": 30.00, "importeTotalPagado": 970.00, "tipoRegimen": "01", "tipoRegimenPorcentaje": 0.03, "operaciones": [ { "numeroOperacion": 1, "fechaOperacion": "2026-06-10", "importeOperacion": 1000.00, "comprobante": { "tipoComprobante": "01", "serieNumero": "F001-10", "fechaEmision": "2026-06-09", "importeTotal": 1000.00, "moneda": "PEN" } } ]}'