Ir al contenido

Retención y percepción

Los emiten los agentes que SUNAT designa. El comprobante de retención (tipo 20) declara lo que retuviste al pagar a un proveedor; el de percepción (tipo 40), lo que percibiste al cobrar a un cliente. Declaras los pagos; Emitay calcula lo retenido o percibido, el neto y los totales, siempre en soles.

Ventana de terminal
curl https://api.emitay.com/v1/retentions \
-H "Authorization: Bearer $EMITAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"series": "R001",
"issue_date": "2026-10-08",
"supplier": {
"document_number": "20601234565",
"name": "COMERCIAL ANDINA S.A.C."
},
"regime": { "code": "01" },
"documents": [
{
"type": "01",
"series": "F001",
"number": 245,
"issue_date": "2026-10-01",
"total": "1180.00",
"payment": { "date": "2026-10-07", "amount": "1180.00" }
}
]
}'
  • supplier es el proveedor al que pagaste: siempre con RUC.

  • regime.code es el régimen (catálogo 23). La tasa la fija el régimen: no se envía.

    Código Tasa
    01 3 %
    02 6 %, solo para comprobantes emitidos hasta el 2014-02-28
  • documents lleva una entrada por pago: el comprobante que pagaste (tipo, serie, número, fecha y total) y, en payment, la fecha y el importe del pago.

La respuesta trae en total el importe retenido: 3 % de S/ 1,180.00 son S/ 35.40.

Ventana de terminal
curl https://api.emitay.com/v1/perceptions \
-H "Authorization: Bearer $EMITAY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"series": "P001",
"issue_date": "2026-10-08",
"customer": {
"document_type": "6",
"document_number": "20100066603",
"name": "CLIENTE S.A."
},
"regime": { "code": "01" },
"documents": [
{
"type": "01",
"series": "F001",
"number": 310,
"issue_date": "2026-10-02",
"total": "1180.00",
"collection": { "date": "2026-10-07", "amount": "1180.00" }
}
]
}'
  • customer es a quien cobraste; admite cualquier tipo de documento del catálogo 06.

  • regime.code es del catálogo 22:

    Código Régimen Tasa
    01 Venta interna 2 %
    02 Adquisición de combustible 1 %
    03 Agente de percepción con tasa especial 0.5 %
  • Cada entrada de documents lleva collection (el cobro) en lugar de payment.

SUNAT valida estas reglas, y Emitay las comprueba antes de numerar. Un 422 nombra el campo (documents.0.payment.date) y no consume número.

  • Un comprobante cubre los pagos de un solo mes, el de su fecha de emisión. Un pago no puede ser posterior a la fecha de emisión ni anterior a la del comprobante que paga.
  • Un comprobante pagado en partes se repite: una entrada por pago, con el mismo comprobante y otro payment.number (1, 2, 3…). Los pagos de un comprobante no pueden sumar más que su total.
  • En otra moneda, la entrada lleva currency y exchange_rate: soles por unidad de esa moneda el día del pago. En soles no se envía.
  • Una nota de crédito (type: "07") solo se informa: va sin pago y no suma.
  • Qué comprobantes admite: la retención, facturas (01), tickets (12) y notas de débito (08); la percepción, además, boletas (03).

Las fechas del ejemplo son de un mismo mes. Si omites issue_date, es hoy, y los pagos deben ser de este mes.

Referir un comprobante de retención o percepción revertido, la percepción excepcional y el domicilio de la contraparte en el XML.

Se anulan con la misma llamada que cualquier otro comprobante: ver Anular. Los campos están en la referencia: retención y percepción.