Guías por comprobante
Casos especiales: detracción, anticipos, exportación, gratuitas e ICBPER
Los campos que cambian en una factura con detracción, anticipos, exportación, moneda extranjera, operaciones gratuitas o impuesto a las bolsas plásticas (ICBPER).
Actualizado el
Todos estos casos van en POST /comprobantes con el JSON de la factura. Aquí solo
están los campos que cambian. El servidor aplica las mismas reglas que la pantalla de la web, así que la API no
deja emitir lo que la web tampoco deja.
Prueba cada caso en el modo pruebas antes de pasarlo a producción: la beta de SUNAT valida los importes igual que producción y te dice qué corregir.
Detracción
Para una venta sujeta al sistema de detracciones (SPOT):
{
"codigo_tipo_operacion": "1001",
"detraccion": {
"codigo_tipo_detraccion": "037",
"porcentaje": 12,
"monto": 141.6,
"codigo_metodo_pago": "001",
"cuenta_bancaria": "00-000-123456"
}
}
codigo_tipo_operacionva con1001(o1004si es transporte de carga). Con otra operación responde 422detraccion_operacion.codigo_tipo_detracciones el código del bien o servicio (catálogo 54 de SUNAT) y tiene que estar activo en tu empresa (Ventas › Configuración › Detracciones); si no, 422detraccion_codigo.- Mínimo por código. Cada código aplica desde un monto: el
037(demás servicios gravados con el IGV), por ejemplo, a ventas mayores a S/ 700. Por debajo responde 422detraccion_minimo, salvo que tu empresa tenga encendida «Detracción para montos menores» en Ventas › Configuración. En moneda extranjera, el mínimo se compara en soles confactor_tipo_de_cambio. - Sin retención junto. SUNAT no aplica detracción y retención del IGV a la misma venta: si mandas las dos, 422
detraccion_con_retencion. cuenta_bancariaes tu cuenta de detracciones del Banco de la Nación ycodigo_metodo_pagoel medio de pago del catálogo 59 (001depósito en cuenta).
Transporte de carga (1004). La detracción acepta además ubigeo_origen, direccion_origen, ubigeo_destino,
direccion_destino, detalle_viaje, valor_referencial_servicio_transporte, valor_referencial_carga_util y
valor_referencia_carga_efectiva. El mínimo se compara con el mayor entre el total y el valor referencial del
servicio.
Anticipos
Un anticipo es un pago antes de entregar el bien o el servicio. Se hace en dos pasos:
- Emite el comprobante del anticipo como una factura normal, con
"pago_anticipado": true. - En la factura final, descuéntalo. Lista el anticipo en
anticiposy su descuento global, y pon el importe entotales.total_anticipos:
{
"anticipos": [
{ "numero": "F001-25", "codigo_tipo_documento": "02", "monto": 500, "total": 590 }
],
"descuentos": [
{ "codigo": "04", "descripcion": "Descuento global por anticipos gravados", "factor": 0.25, "monto": 500, "base": 2000 }
],
"totales": {
"total_anticipos": 590,
"total_descuentos": 500,
"total_operaciones_gravadas": 1500,
"total_igv": 270,
"total_impuestos": 270,
"total_valor": 1500,
"total_venta": 1770
}
}
numeroes la serie y el número del anticipo (F001-25);codigo_tipo_documentoes el tipo del catálogo 12 (02factura de anticipo,03boleta de anticipo).- El descuento global usa el código
04si el anticipo está gravado (05exonerado,06inafecto). - El servidor revisa cada anticipo: que exista, que sea de anticipo, que no esté anulado y que tenga saldo para lo que
descuentas. Si no, 422
anticipo_no_existeoanticipo_sin_saldo(con el saldo que le queda).
Exportación
{
"codigo_tipo_operacion": "0200",
"codigo_tipo_moneda": "USD",
"factor_tipo_de_cambio": 3.741,
"datos_del_cliente_o_receptor": {
"codigo_tipo_documento_identidad": "0",
"numero_documento": "98-7654321",
"apellidos_y_nombres_o_razon_social": "ANDES IMPORTS LLC",
"codigo_pais": "US",
"direccion": "1200 Brickell Ave, Miami FL"
},
"totales": {
"total_exportacion": 1000,
"total_igv": 0,
"total_impuestos": 0,
"total_valor": 1000,
"total_venta": 1000
},
"items": [{
"codigo_interno": "CAF-EXP",
"descripcion": "Café en grano tostado, saco de 25 kg",
"unidad_de_medida": "NIU",
"cantidad": 10,
"valor_unitario": 100,
"codigo_tipo_precio": "01",
"precio_unitario": 100,
"codigo_tipo_afectacion_igv": "40",
"total_base_igv": 1000,
"porcentaje_igv": 18,
"total_igv": 0,
"total_impuestos": 0,
"total_valor_item": 1000,
"total_item": 1000
}]
}
0200es exportación de bienes (catálogo 51). Las líneas van con afectación40y sin IGV.- El cliente del exterior va con el tipo
0(no domiciliado, sin RUC), su número de identificación y su país.
Moneda extranjera
Cualquier comprobante puede ir en dólares: "codigo_tipo_moneda": "USD" y "factor_tipo_de_cambio": 3.741. Las
cuotas van en la misma moneda. El tipo de cambio de SUNAT del día sale de
GET /consultas/tipo-cambio.
Operaciones gratuitas
Un bien que entregas sin cobrar (un premio, una muestra, una bonificación) va en el comprobante con su valor referencial, pero no suma al total que paga el cliente. En la línea gratuita:
| Campo | Qué poner |
|---|---|
codigo_tipo_afectacion_igv |
El de transferencia gratuita: 11 a 16 si está gravada (por ejemplo, 15 bonificación), 21 exonerada, 31 a 37 inafecta |
codigo_tipo_precio |
02 (valor referencial en operaciones no onerosas) |
valor_unitario |
0 |
precio_unitario |
El valor referencial unitario |
En los totales, el valor de lo gratuito va en total_operaciones_gratuitas (y su IGV, si está gravada, en
total_igv_operaciones_gratuitas), fuera de total_venta. Si SUNAT responde 2640 («Operación gratuita, solo debe
consignar un monto referencial»), revisa que la línea no tenga precio cobrado.
Impuesto a las bolsas plásticas (ICBPER)
Si entregas bolsas de plástico, cada bolsa paga el ICBPER. En la línea de la bolsa:
{
"codigo_interno": "BOLSA-01",
"descripcion": "Bolsa plástica",
"unidad_de_medida": "NIU",
"cantidad": 2,
"valor_unitario": 0.08,
"codigo_tipo_precio": "01",
"precio_unitario": 0.1,
"codigo_tipo_afectacion_igv": "10",
"total_base_igv": 0.17,
"porcentaje_igv": 18,
"total_igv": 0.03,
"total_impuestos_bolsa_plastica": 1,
"total_impuestos": 1.03,
"total_valor_item": 0.17,
"total_item": 1.2
}
total_impuestos_bolsa_plasticade la línea es la cantidad de bolsas por el monto por bolsa (S/ 0,50 desde 2023). El monto por bolsa sale de la configuración de tu empresa.- En
totales, suma ese impuesto entotal_impuestos_bolsa_plastica, entotal_impuestosy entotal_venta.
Cargos y descuentos
Los descuentos y cargos por línea o globales van en descuentos y cargos con codigo (catálogo 53), descripcion,
factor, monto y base, y sus sumas en totales.total_descuentos y totales.total_cargos.