Catálogo 16 — Tipo de precio
Catálogo SUNAT que indica si el precio unitario de una línea incluye IGV (operación onerosa) o es un valor referencial (operación no onerosa, como donaciones o promociones).
Tabla de códigos
Sección titulada «Tabla de códigos»| Código | Descripción |
|---|---|
| 01 | Precio unitario (incluye IGV) |
| 02 | Valor referencial unitario en operaciones no onerosas |
Uso típico
Sección titulada «Uso típico»Se aplica a nivel de línea en DocumentoVentaDetalle. openUBL asigna el código 01 de forma predeterminada cuando se emite una factura o boleta gravada. El código 02 se usa para operaciones no onerosas o gratuitas.
Ejemplo
Sección titulada «Ejemplo»from openubl.models import Invoice, Proveedor, Cliente, DocumentoVentaDetallefrom decimal import Decimal
# Operación onerosa: precio unitario incluye IGV (tipo 01)invoice = Invoice( serie="F001", numero=128, proveedor=Proveedor(ruc="20100100100", razonSocial="Mi Empresa S.A.C."), cliente=Cliente( nombre="Cliente Ejemplo", numeroDocumentoIdentidad="20123456789", tipoDocumentoIdentidad="6", ), detalles=[ DocumentoVentaDetalle( descripcion="Producto con IGV", cantidad=Decimal("1"), precio=Decimal("118.00"), tipoAfectacionIGV="10", ) ], moneda="PEN",)import { createInvoice } from "@openubl/sdk";import { zInvoice } from "@openubl/sdk/zod.gen";
// Operación onerosa: el precio unitario incluye IGV (tipo 01)const invoice = zInvoice.parse({serie: "F001",numero: 128,proveedor: { ruc: "20100100100", razonSocial: "Mi Empresa S.A.C." },cliente: { nombre: "Cliente Ejemplo", numeroDocumentoIdentidad: "20123456789", tipoDocumentoIdentidad: "6",},detalles: [ { descripcion: "Producto con IGV", cantidad: 1, precio: 118.00, tipoAfectacionIGV: "10", },],moneda: "PEN",});
const { data, error } = await createInvoice({ body: invoice });if (error) throw new Error(JSON.stringify(error));# Operación onerosa: el precio unitario incluye IGV (tipo 01)curl -X POST http://localhost:8000/api/v1/invoice/create -H "Content-Type: application/json" -d '{ "serie": "F001", "numero": 128, "proveedor": { "ruc": "20100100100", "razonSocial": "Mi Empresa S.A.C." }, "cliente": { "nombre": "Cliente Ejemplo", "numeroDocumentoIdentidad": "20123456789", "tipoDocumentoIdentidad": "6" }, "detalles": [{ "descripcion": "Producto con IGV", "cantidad": 1, "precio": 118.00, "tipoAfectacionIGV": "10" }], "moneda": "PEN"}'openUBL maneja el Catálogo 16 internamente durante el renderizado del XML; no es necesario especificarlo manualmente salvo casos avanzados de operaciones no onerosas.