> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abacco.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Crear comprobante

Crea un asiento manual posteado en el libro diario. Mínimo 2 líneas y el total Debe debe cuadrar con el total Haber; con `idempotency_key`, reintentar no duplica. Ver la [tabla de campos](/api/accounting/introduction).


## OpenAPI

````yaml POST /journal-entries/
openapi: 3.0.3
info:
  title: API Contable de Abacco
  version: 1.0.0
  description: >-
    Comprobantes contables y F29. Autenticación Bearer (token de sesión de la
    plataforma).
servers:
  - url: https://api.abacco.ai/api/accounting
    description: Producción
security:
  - bearerAuth: []
paths:
  /journal-entries/:
    post:
      tags:
        - Contabilidad
      summary: Crear un comprobante contable
      operationId: createJournalEntry
      parameters:
        - name: entity_id
          in: query
          required: true
          schema:
            type: string
          description: Id de la empresa
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JournalEntryCreate'
            example:
              date: '2026-08-31'
              description: Arriendo oficina agosto
              lines:
                - account_code: '6101'
                  debit: 500000
                  credit: 0
                  glosa: Arriendo
                - account_code: '1101'
                  debit: 0
                  credit: 500000
                  glosa: Pago banco
      responses:
        '201':
          description: Comprobante creado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JournalEntry'
        '400':
          description: >-
            Fecha/descripción faltante, menos de 2 líneas, asiento descuadrado o
            período cerrado
components:
  schemas:
    JournalEntryCreate:
      type: object
      properties:
        date:
          type: string
          format: date
        description:
          type: string
        lines:
          type: array
          minItems: 2
          items:
            $ref: '#/components/schemas/JournalEntryLine'
          description: Mínimo 2 líneas; total Debe = total Haber
        norma:
          type: string
          description: Norma del comprobante (default tributaria)
        allow_locked:
          type: boolean
          description: true para pasar la barrera de período cerrado
        idempotency_key:
          type: string
          description: Reintentar con la misma key no duplica el asiento
      required:
        - date
        - description
        - lines
    JournalEntry:
      type: object
      properties:
        id:
          type: integer
        date:
          type: string
          format: date
        description:
          type: string
        lines:
          type: array
          items:
            $ref: '#/components/schemas/JournalEntryLine'
    JournalEntryLine:
      type: object
      properties:
        account_code:
          type: string
          example: '1101'
        debit:
          type: number
          example: 500000
        credit:
          type: number
          example: 0
        glosa:
          type: string
        auxiliar_rut:
          type: string
          description: RUT del auxiliar/contraparte (opcional)
        document_id:
          type: integer
          description: Documento tributario asociado (opcional)
      required:
        - account_code
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````