SIIRCV

Ingresa o reemplaza el detalle diario de boletas en el RCV de ventas

Ingresa o reemplaza el detalle dia-por-dia de boletas en el RCV ventas.

POST /api/v1/sii/rcv/ventas/set_boletas_diarias/{emisor}/{periodo}/{dte}
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_boletas_diarias/76192083-9/202602/39",
    headers=headers,
)
response.raise_for_status()
print(response.json())

Ingresa o reemplaza el detalle dia-por-dia de boletas en el RCV ventas.

Permite al contribuyente registrar el detalle DIARIO de boletas en el Registro de Ventas del periodo, donde el SII calcula el resumen mensual a partir de la sumatoria de los dias enviados.

Esta funcionalidad es complementaria a POST /ventas/set_resumen/{emisor}/{periodo} (que registra el resumen mensual agregado en una sola fila): los dos endpoints apuntan a SPAs distintos del SII (complementoscvui para diario, complementowebdcvui para mensual). Este endpoint solo soporta tipos DTE de boletas: 35, 38, 39, 41, 47, 48, 139, 141.

El gateway calcula automaticamente las sumas mensuales (montoTotal, totalDocumentos, montoExento, montoNeto, montoIva, opExentas) a partir de dias[] y construye el body con shape SII.

Limitacion del SII conocida: los tipos 39 (Boleta Electronica) y 41 (Boleta Exenta Electronica) estan bloqueados desde el 1° de agosto 2022 — el SII responde con error.tipo == "NEGOCIO" y el mensaje literal "No es posible modificar la información de las boletas electrónicas desde el 1° de agosto 2022.". La regla la enforce el SII upstream; el gateway propaga el rechazo tal cual.

Autenticacion requerida: API token en header X-API-Token con scope sii:write + credenciales SII PassAuth del emisor en el body.

Quota: Consume 1 consulta | Peso: 5x (operacion critica de escritura)


Parametros de ruta

ParametroTipoRequeridoDescripcion
emisorstringSiRUT del emisor (validado modulo 11)
periodostringSiPeriodo tributario AAAAMM
dtestringSiCodigo tipo DTE. Permitidos: 35, 38, 39, 41, 47, 48, 139, 141

Parametros de consulta

ParametroTipoDefaultDescripcion
ambientestring00 produccion, 1 certificacion

Body (JSON)

CampoTipoRequeridoDescripcion
auth.pass.rutstringSiRUT del emisor (XX.XXX.XXX-X)
auth.pass.clavestringSiClave tributaria
graba_con_reparosbooleanNofalse (default) primer intento;
true para reintentar tras error.tipo == "REPARO"
dias[]arraySiDetalle por dia (al menos un dia con datos). Solo incluir dias modificados
dias[].diastringSiNumero de dia con dos caracteres ("01" a "31")
dias[].tot_documentosintegerNoTotal de documentos del dia
dias[].mnt_totalintegerNoMonto total del dia
dias[].mnt_netointegerNoMonto neto del dia
dias[].mnt_ivaintegerNoMonto IVA del dia
dias[].mnt_exentointegerNoMonto exento del dia
dias[].op_exentasintegerNoNumero de operaciones exentas del dia
dias[].iva_3rosintegerNoIVA terceros del dia
dias[].canal_transaccintegerNoSolo dte=48: 0 presencial, 1 internet, 2 ambos
dias[].cod_rzn_modificaintegerNoCodigo motivo de modificacion (Canal Internet)
dias[].txt_rzn_modificastringNoTexto motivo cuando cod_rzn_modifica=4 (Otro)
operadoresarray | nullNoDetalle por operador (solo dte=48); null (default) para casos comunes

Request de ejemplo

{
    "auth": {
        "pass": {
            "rut": "76.192.083-9",
            "clave": "clave_tributaria"
        }
    },
    "graba_con_reparos": false,
    "dias": [
        {
            "dia": "01",
            "tot_documentos": 2,
            "mnt_total": 1500,
            "mnt_exento": 1500,
            "mnt_neto": 0,
            "mnt_iva": 0
        },
        {
            "dia": "02",
            "tot_documentos": 1,
            "mnt_total": 5950,
            "mnt_neto": 5000,
            "mnt_iva": 950
        }
    ]
}

Respuesta exitosa (200)

{
    "data": 5,
    "error": null
}
  • data: numero de filas modificadas por el SII (>0 si hubo cambio, null cuando hubo error de negocio).
  • error: objeto tipado cuando hubo rechazo (null cuando OK).

Respuesta con error de negocio (200)

{
    "data": null,
    "error": {
        "tipo": "NEGOCIO",
        "mensaje": "No es posible modificar la información de las boletas electrónicas desde el 1° de agosto 2022."
    }
}

El cliente puede reintentar con graba_con_reparos: true SOLO cuando recibe error.tipo == "REPARO". Para NEGOCIO, VALIDACION o ERROR el reintento no resuelve la situacion.

Errores especificos

Codigoerror_codeCausaResolucion
400AUTH_ERRORCredenciales SII incorrectasRevisar RUT/clave
400VALIDATION_ERRORTipo DTE no permitido para boletas diarias
Usar tipo en [35, 38, 39, 41, 47, 48, 139, 141]
400VALIDATION_ERRORRUT del path con DV invalido (modulo 11)Usar un RUT chileno valido
401HTTP_401API token ausente o invalidoEnviar X-API-Token valido
403INSUFFICIENT_SCOPEToken sin scope sii:writeGenerar token con scope
422VALIDATION_ERRORBody con formato invalidoVerificar shape de dias[]
429SII_RATE_LIMIT / QUOTA_EXCEEDEDRate limitRespetar Retry-After
502SII_GATEWAY_ERRORSII upstream rechazo la conexionReintentar
503SII_UNAVAILABLESII en mantenimientoReintentar en 5 min

Ejemplo cURL

curl -X POST       "https://api.fiscalbridge.cl/api/v1/sii/rcv/ventas/set_boletas_diarias/76192083-9/202602/35?ambiente=0" \
  -H "X-API-Token: <api_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "auth": {"pass": {"rut": "76.192.083-9", "clave": "<clave_tributaria>"}},
    "dias": [
      {"dia": "01", "tot_documentos": 2, "mnt_total": 1500, "mnt_exento": 1500}
    ]
  }'

Notas

  • Solo incluir en dias[] los dias modificados; los dias omitidos quedan sin tocar en el SII.
  • El gateway calcula las sumas mensuales y las envia al SII junto al array boletas[] con shape interno; el cliente nunca arma el body crudo del SII.
  • Una vez guardado, el detalle aparece en /ventas/detalle/{emisor}/{periodo}/{dte}.

Parámetros

Header / Body
Tipo
Descripción
Requerido
dte
string · path
Codigo tipo DTE. Permitidos: `35`, `38`, `39`, `41`, `47`, `48`, `139`, `141`.
emisor
string · path
RUT del emisor de las ventas
periodo
string · path
Periodo tributario `AAAAMM`
ambiente
string · query
`0` produccion, `1` certificacion
No
dry_run
string | null · query
Si es `true` (o `1`/`yes`/`on`), el endpoint valida el payload y retorna una respuesta de previsualización (mismo shape que la respuesta real) sin contactar al SII. Útil para validar requests sin consumir folios, cuota ni créditos.
No

Cuerpo de la solicitud

Requerido. Content-Type: application/json.

{
  "auth": {
    "pass": {
      "clave": "string",
      "rut": "string"
    }
  },
  "dias": [
    {
      "canal_transacc": 0,
      "cod_rzn_modifica": 0,
      "dia": "string",
      "iva_3ros": 0,
      "mnt_exento": 0,
      "mnt_iva": 0,
      "mnt_neto": 0,
      "mnt_total": 0,
      "op_exentas": 0,
      "tot_documentos": 0,
      "txt_rzn_modifica": "string"
    }
  ],
  "graba_con_reparos": false,
  "operadores": [
    {}
  ]
}

Respuestas

200Successful Response
400RUT invalido, tipo DTE no permitido 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.

{
  "data": 0,
  "error": {
    "mensaje": "string",
    "tipo": "string"
  }
}

On this page