SIIRCV

Ingresa o reemplaza resumenes mensuales de ventas en el RCV

Ingresa o reemplaza el resumen mensual de ventas del contribuyente.

POST /api/v1/sii/rcv/ventas/set_resumen/{emisor}/{periodo}
import requests
 
headers = {
    "X-API-Token": "sk_live_replace_with_your_token",
}
 
response = requests.post(
    "https://api.fiscalbridge.cl/api/v1/sii/rcv/ventas/set_resumen/76192083-9/202602",
    headers=headers,
)
response.raise_for_status()
print(response.json())

Ingresa 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

ParametroTipoRequeridoDescripcion
emisorstringSiRUT del emisor (validado modulo 11)
periodostringSiPeriodo tributario AAAAMM

Parametros de consulta

ParametroTipoDefaultDescripcion
ambientestring00 produccion, 1 certificacion

Body (JSON)

CampoTipoRequeridoDescripcion
auth.pass.rutstringSiRUT del emisor (XX.XXX.XXX-X, debe coincidir con el path)
auth.pass.clavestringSiClave tributaria
documentos[]arraySiLista de resumenes a guardar (1 a N entradas)
documentos[].det_tipo_docintegerSiTipo DTE del resumen.
Validos: 35, 38, 39, 41, 48, 105, 906, 919, 920, 922, 924
documentos[].det_nro_docintegerSiNumero de documentos del resumen
documentos[].det_mnt_netointegerNoMonto neto
documentos[].det_mnt_ivaintegerNoMonto IVA
documentos[].det_mnt_exeintegerNoMonto exento
documentos[].det_mnt_totalintegerSiMonto total
documentos[].det_op_exeintegerNoNumero de operaciones exentas
documentos[].canalTransaccintegerNoSolo para det_tipo_doc=48.
0 presencial, 1 internet, 2 ambos
documentos[].codRznModificaintegerNoCodigo motivo de modificacion (al cambiar Canal Internet)
documentos[].txtRznModificastringNoTexto motivo cuando codRznModifica=4 (Otro)
documentos[].grabaConReparosstringNo"" (default) en primer intento;
"GRABA CON REPAROS" cuando se reintenta tras error.tipo == "REPARO" del SII

Request de ejemplo

{
    "auth": {
        "pass": {
            "rut": "76.192.083-9",
            "clave": "clave_tributaria"
        }
    },
    "documentos": [
        {
            "det_tipo_doc": 39,
            "det_nro_doc": 1,
            "det_mnt_neto": 25042,
            "det_mnt_iva": 4758,
            "det_mnt_exe": 0,
            "det_mnt_total": 29800
        }
    ]
}

Respuesta exitosa (200)

{
    "resultados": [
        {
            "det_tipo_doc": 39,
            "data": 1,
            "error": null
        }
    ]
}

Donde por cada documento del input:

  • det_tipo_doc: echo del tipo de DTE consultado.
  • data: numero de registros modificados por el SII (>0 si hubo cambio, null cuando hubo error).
  • error: objeto con el detalle del rechazo del SII (null cuando 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 responde tipo="ERROR" por default. El mensaje es 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)

{
    "resultados": [
        {
            "det_tipo_doc": 41,
            "data": null,
            "error": {
                "tipo": "ERROR",
                "mensaje": "No es posible modificar la información de las boletas electrónicas..."
            }
        }
    ]
}

Errores especificos

Codigoerror_codeCausaResolucion
400AUTH_ERRORCredenciales SII incorrectasRevisar RUT/clave
401HTTP_401API token ausente o invalidoEnviar X-API-Token valido
403INSUFFICIENT_SCOPEToken sin scope sii:writeGenerar token con scope
400VALIDATION_ERRORRUT del path con DV invalido (modulo 11)Usar un RUT chileno valido
422VALIDATION_ERRORBody con formato invalidoVerificar shape de documentos[]
429SII_RATE_LIMIT / QUOTA_EXCEEDEDRate limitRespetar Retry-After
502SII_GATEWAY_ERRORSII upstream rechazo la conexionReintentar
503SII_UNAVAILABLESII en mantenimientoReintentar 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

Header / Body
Tipo
Descripción
Requerido
emisor
string · path
RUT del emisor de las ventas
periodo
string · path
Periodo tributario `AAAAMM`
ambiente
string · query
`0` produccion, `1` certificacion
No

Cuerpo de la solicitud

Requerido. Content-Type: application/json.

{
  "auth": {
    "pass": {
      "clave": "string",
      "rut": "string"
    }
  },
  "documentos": [
    {
      "canalTransacc": 0,
      "codRznModifica": 0,
      "det_iva_propio": 0,
      "det_iva_terceros": 0,
      "det_ley_18211": 0,
      "det_mnt_exe": 0,
      "det_mnt_iva": 0,
      "det_mnt_neto": 0,
      "det_mnt_total": 0,
      "det_nro_doc": 0,
      "det_op_exe": 0,
      "det_tipo_doc": 0,
      "grabaConReparos": "",
      "txtRznModifica": "string"
    }
  ]
}

Respuestas

200Successful Response
400Documentos invalidos o credenciales SII incorrectas
401API token ausente o invalido
403Sin scope `sii:write` o cuenta bloqueada
422Body con formato invalido
429Limite de tasa excedido
502SII rechazo la operacion
503SII en mantenimiento

Forma de la respuesta

Código 200. Estructura del JSON devuelto.

{
  "resultados": [
    {
      "data": 0,
      "det_tipo_doc": 0,
      "error": {
        "mensaje": "string",
        "tipo": "string"
      }
    }
  ]
}

On this page