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

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