Saltar al contenido
Tarifa anual desde S/ 37 al mes + IGV. Pide tu demo sin costo. Reserva tu demo
Sistema Facturación Perú
Menú del portal

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_operacion va con 1001 (o 1004 si es transporte de carga). Con otra operación responde 422 detraccion_operacion.
  • codigo_tipo_detraccion es 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, 422 detraccion_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 422 detraccion_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 con factor_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_bancaria es tu cuenta de detracciones del Banco de la Nación y codigo_metodo_pago el medio de pago del catálogo 59 (001 depó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:

  1. Emite el comprobante del anticipo como una factura normal, con "pago_anticipado": true.
  2. En la factura final, descuéntalo. Lista el anticipo en anticipos y su descuento global, y pon el importe en totales.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
  }
}
  • numero es la serie y el número del anticipo (F001-25); codigo_tipo_documento es el tipo del catálogo 12 (02 factura de anticipo, 03 boleta de anticipo).
  • El descuento global usa el código 04 si el anticipo está gravado (05 exonerado, 06 inafecto).
  • 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_existe o anticipo_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
  }]
}
  • 0200 es exportación de bienes (catálogo 51). Las líneas van con afectación 40 y 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_plastica de 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 en total_impuestos_bolsa_plastica, en total_impuestos y en total_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.

Portal para desarrolladores · ¿Algo no está claro o te falta un ejemplo? Escríbenos y lo mejoramos.