---
title: "Carga el balance de apertura desde las filas de un archivo"
method: POST
path: "/contabilidad/saldos-iniciales"
tags: ["contabilidad"]
---

# Carga el balance de apertura desde las filas de un archivo

`POST /contabilidad/saldos-iniciales`

## Request

- Base URL: `https://contadeo.com/api`
- URL: `https://contadeo.com/api/contabilidad/saldos-iniciales`
- Auth: HTTP bearer

Cada fila es una cuenta que recibe movimientos con su saldo en `debe` o en `haber` (texto, con punto o coma decimal, sin separador de miles). Las filas sin saldo se saltan. El balance tiene que cuadrar al centavo. Sin `confirmar` no cambia nada: responde el balance general que quedaría, los errores por fila y los `bloqueos`. Con `confirmar: true` cuelga el asiento de apertura, ya contabilizado y fechado el día del corte (`origen_tipo` `saldos_iniciales`), y fija el inicio de la contabilidad en el día siguiente: desde entonces la contabilización automática ignora los documentos anteriores. Volver a cargarlo rehace: el asiento anterior queda anulado. Solo mientras sigan abiertos el mes del corte y el del inicio, y sin asientos con fecha anterior o igual al corte. Máximo 2000 filas.

## Request body

- object
  - `emisorId` string, uuid, required
  - `fechaCorte` string, date, required: Fecha del balance. No puede ser posterior a hoy
  - `confirmar` boolean
  - `filas` object[], required
    - `codigo` string, required
    - `nombre` string: Para quien lee el archivo: no se usa
    - `debe` string
    - `haber` string

## Response `201`

Lo que haría la carga, o lo que hizo si `aplicado` es `true`

- object
  - `aplicado` boolean
  - `fechaCorte` string, date
  - `inicio` string, date: El día siguiente al corte
  - `lineas` integer: Cuentas con saldo
  - `totalDebe` number
  - `totalHaber` number
  - `diferencia` number
  - `cuadra` boolean
  - `errores` object[]: Con uno solo no se asienta nada
    - `fila` integer: Fila del archivo, contando la cabecera como la 1
    - `campo` 'codigo' | 'nombre' | 'debe' | 'haber'
    - `mensaje` string
  - `avisos` object[]: Conviene mirarlos antes de asentar. No bloquean
    - `fila` integer: Fila del archivo, contando la cabecera como la 1
    - `campo` 'codigo' | 'nombre' | 'debe' | 'haber'
    - `mensaje` string
  - `bloqueos` string[]
  - `reemplaza` object, nullable: El asiento de apertura que quedaría anulado
    - `id` string, uuid
    - `numero` integer
    - `ejercicio` integer
    - `fecha` string, date
    - `total` number
  - `balance` object, nullable: El balance general que resulta: `activo`, `pasivo` y `patrimonio` (cada uno con sus grupos y su total), `resultadoDelEjercicio` y `cuadra`. Sin las notas ni las fechas de `GET /contabilidad/balance-general`. `null` si el archivo tiene errores
  - `asiento` object, nullable
    - `id` string, uuid
    - `numero` integer
    - `ejercicio` integer

## Other responses

- `400`: Cuerpo inválido o validación de negocio (previene errores SRI 62/52/65/69/39)
- `403`: Token/key ausente, inválido o expirado
- `409`: Conflicto de unicidad

---

[API](https://skmtc.dev/contadeo/apis/api-de-contadeo.md) · [All operations](https://skmtc.dev/contadeo/apis/api-de-contadeo/llms.txt) · [OpenAPI document](https://skmtc.dev/contadeo/apis/api-de-contadeo/revisions/461bbb9a74ce?raw)
