---
title: Boleta de honorarios (BHE)
description: Emite honorarios con la retención vigente del año, consulta el cálculo de líquido y anula dentro del plazo legal de 3 meses.
url: https://notta.cl/docs/bhe
related:
  - https://notta.cl/docs/api/bhe
  - https://notta.cl/docs/rcv-f29
  - https://notta.cl/docs/errors
  - https://notta.cl/docs/cli-reference
---

> Documentación de Notta en markdown. Índice completo: https://notta.cl/llms.txt — corpus entero: https://notta.cl/llms-full.txt

# Boleta de honorarios (BHE)

La Boleta de Honorarios Electrónica usa un pipeline propio del SII (distinto del de los DTE 33-61): tu **clave tributaria** custodiada cifrada, no el certificado `.p12`. Emites sobre un `monto_bruto`; Notta calcula la retención del año y el `monto_liquido` es lo que recibes.

Puedes emitirla por los 3 canales programáticos (API, CLI, MCP) + el dashboard — `notta bhe emit` en el [CLI](/docs/cli-reference) y la tool `notta_bhe_emit` en [MCP](/docs/mcp). Los ejemplos de esta guía usan curl.

## Tasa de retención por año

La tasa sube gradualmente según la Ley 21.420 y se determina por el año de `fecha_emision`:

| Año de emisión | Tasa de retención |
|---|---|
| Hasta 2022 | 10% |
| 2023 | 12,25% |
| 2024 | 13% |
| 2025 | 14,5% |
| 2026 y 2027 | 17% |

Si el receptor es persona natural sin giro (consumidor final), marca `persona_natural_sin_giro: true` y la retención es 0.

## Campos del request

| Campo | Tipo | Requerido | Notas |
|---|---|---|---|
| `rut_emisor` | string | Sí | RUT del emisor persona natural, formato `BODY-DV` |
| `receptor.rut` | string | Sí | RUT del receptor |
| `receptor.razon_social` | string (1-100) | Sí | Nombre o razón social del receptor |
| `receptor.persona_natural_sin_giro` | boolean | Sí | `true` = consumidor final, retención 0 |
| `fecha_emision` | `YYYY-MM-DD` | Sí | Define el año de la tasa de retención |
| `monto_bruto` | entero positivo | Sí | Monto bruto en CLP, sin decimales |
| `descripcion` | string (1-1000) | Sí | Detalle del servicio prestado |
| `sii_env` | `"cert"` \| `"prod"` | No | Default `"cert"` |

## Request

```bash
curl -X POST https://app.notta.cl/api/v1/bhe \
  -H "Authorization: Bearer ntt_cert_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "rut_emisor": "12345678-5",
    "receptor": {
      "rut": "76123456-0",
      "razon_social": "Empresa Cliente SpA",
      "persona_natural_sin_giro": false
    },
    "fecha_emision": "2026-05-13",
    "monto_bruto": 1000000,
    "descripcion": "Servicios de consultoría mayo 2026"
  }'
```

## Response

El endpoint responde `202` con el cálculo de retención ya resuelto: `monto_liquido = monto_bruto - monto_retencion`. Para 2026 la tasa es 17%.

```json
{
  "id": "01957a91-0b50-7000-8000-0000000000be",
  "status": "queued",
  "sii_status": "queued",
  "tasa_retencion": 0.17,
  "monto_retencion": 170000,
  "monto_liquido": 830000,
  "period_year": 2026,
  "period_month": 5,
  "links": { "self": "/api/v1/bhe/01957a91-0b50-7000-8000-0000000000be" }
}
```

El detalle completo (folio asignado, `monto_bruto`, `track_id`, estado de anulación) está en `GET /api/v1/bhe/:id`. El listado `GET /api/v1/bhe` filtra por `period_year`, `period_month`, `anulada` y `sii_status`.

## Anula una BHE

`POST /api/v1/bhe/:id/anular` con la razón en el body:

```bash
curl -X POST https://app.notta.cl/api/v1/bhe/01957a91-0b50-7000-8000-0000000000be/anular \
  -H "Authorization: Bearer ntt_cert_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{ "razon": "Servicio no prestado" }'
```

```json
{
  "id": "01957a91-0b50-7000-8000-0000000000be",
  "anulada": true,
  "folio": 142
}
```

> **Plazo de anulación: 3 meses:**
El SII solo permite anular una BHE dentro de los 3 meses calendario desde su emisión. Pasado el plazo, la API responde `422` con código `bhe.plazo_anulacion.expired`.

## Próximos pasos

- **[Referencia API de BHE](/docs/api/bhe)** — shape completo de emisión, listado, detalle y anulación.
- [RCV y F29](/docs/rcv-f29) — cómo se reflejan tus retenciones en la declaración mensual.
- [Errores](/docs/errors) — envelope de error y códigos de la API.
- [Referencia del CLI](/docs/cli-reference) — `notta bhe emit` y el resto de los comandos.
