Ingresa o reemplaza resumenes mensuales de ventas en el RCV
Ingresa o reemplaza el resumen mensual de ventas del contribuyente.
/api/v1/sii/rcv/ventas/set_resumen/{emisor}/{periodo}v1 · ESTABLEIngresa o reemplaza el resumen mensual de ventas del contribuyente.
Permite al contribuyente registrar el resumen mensual agregado de
tipos de documento que no son facturados electronicamente (boletas,
otros registros, comprobantes de pago electronico, etc.) directamente
en el Registro de Ventas del periodo. El RUT del emisor (path) se
valida sintacticamente (modulo 11) y se pasa al SII tal cual; la
sesion (auth.pass) debe estar autorizada para escribir sobre ese
RUT.
Para registrar el detalle dia-por-dia de boletas (tipos 35, 38, 39,
41, 48, 47, 139, 141) usar el endpoint
POST /ventas/set_boletas_diarias/{emisor}/{periodo}/{dte}.
El SII solo permite un resumen por tipo de documento por request;
si el cliente envia varios documentos en documentos[], el gateway
procesa cada uno independientemente y agrega los resultados.
Autenticacion requerida: API token en header X-API-Token con scope sii:write
- credenciales SII PassAuth del emisor en el body.
Quota: Consume N consultas | Peso: 5x por documento (operacion critica de escritura)
Parametros de ruta
| Parametro | Tipo | Requerido | Descripcion |
|---|---|---|---|
emisor | string | Si | RUT del emisor (validado modulo 11) |
periodo | string | Si | Periodo tributario AAAAMM |
Parametros de consulta
| Parametro | Tipo | Default | Descripcion |
|---|---|---|---|
ambiente | string | 0 | 0 produccion, 1 certificacion |
Body (JSON)
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
auth.pass.rut | string | Si | RUT del emisor (XX.XXX.XXX-X, debe coincidir con el path) |
auth.pass.clave | string | Si | Clave tributaria |
documentos[] | array | Si | Lista de resumenes a guardar (1 a N entradas) |
documentos[].det_tipo_doc | integer | Si | Tipo DTE del resumen. |
Validos: 35, 38, 39, 41, 48, 105, 906, 919, 920, 922, 924 | |||
documentos[].det_nro_doc | integer | Si | Numero de documentos del resumen |
documentos[].det_mnt_neto | integer | No | Monto neto |
documentos[].det_mnt_iva | integer | No | Monto IVA |
documentos[].det_mnt_exe | integer | No | Monto exento |
documentos[].det_mnt_total | integer | Si | Monto total |
documentos[].det_op_exe | integer | No | Numero de operaciones exentas |
documentos[].canalTransacc | integer | No | Solo para det_tipo_doc=48. |
0 presencial, 1 internet, 2 ambos | |||
documentos[].codRznModifica | integer | No | Codigo motivo de modificacion (al cambiar Canal Internet) |
documentos[].txtRznModifica | string | No | Texto motivo cuando codRznModifica=4 (Otro) |
documentos[].grabaConReparos | string | No | "" (default) en primer intento; |
"GRABA CON REPAROS" cuando se reintenta tras error.tipo == "REPARO" del SII |
Request de ejemplo
Respuesta exitosa (200)
Donde por cada documento del input:
det_tipo_doc: echo del tipo de DTE consultado.data: numero de registros modificados por el SII (>0si hubo cambio,nullcuando hubo error).error: objeto con el detalle del rechazo del SII (nullcuando OK). Shape:{"tipo": "<etiqueta>", "mensaje": "<texto>"}. Cuando el SII clasifica el error con una etiqueta (ej."NEGOCIO"), la API la transmite tal cual, sin restringirla a un set cerrado. Cuando el SII solo entrega un mensaje sin clasificarlo, la API respondetipo="ERROR"por default. Elmensajees el texto literal del SII; no se inventan ni clasifican mensajes localmente.
El cliente puede inspeccionar error.mensaje para decidir si
reintenta — por ejemplo, cuando el SII indica que el guardado se
puede forzar reenviando con grabaConReparos="GRABA CON REPAROS".
Si todos los documentos fallaron, la API retorna 200 con cada error
poblado y data: null. El cliente debe inspeccionar resultados[]
para distinguir exitos de fallos.
Respuesta con error de negocio (200)
Errores especificos
| Codigo | error_code | Causa | Resolucion |
|---|---|---|---|
| 400 | AUTH_ERROR | Credenciales SII incorrectas | Revisar RUT/clave |
| 401 | HTTP_401 | API token ausente o invalido | Enviar X-API-Token valido |
| 403 | INSUFFICIENT_SCOPE | Token sin scope sii:write | Generar token con scope |
| 400 | VALIDATION_ERROR | RUT del path con DV invalido (modulo 11) | Usar un RUT chileno valido |
| 422 | VALIDATION_ERROR | Body con formato invalido | Verificar shape de documentos[] |
| 429 | SII_RATE_LIMIT / QUOTA_EXCEEDED | Rate limit | Respetar Retry-After |
| 502 | SII_GATEWAY_ERROR | SII upstream rechazo la conexion | Reintentar |
| 503 | SII_UNAVAILABLE | SII en mantenimiento | Reintentar en 5 min |
Notas
- Los datos persisten en el Registro de Ventas del SII para el periodo.
- Una vez guardado, el resumen aparece en
/ventas/resumen/{emisor}/{periodo}. - Para eliminar un resumen, el SII expone otro endpoint
(
borraResumenByCodigo); este endpoint solo cubre alta/reemplazo.
Parámetros
Cuerpo de la solicitud
Requerido. Content-Type: application/json.
Respuestas
Forma de la respuesta
Código 200. Estructura del JSON devuelto.