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

# Listar movimientos de una empresa

> Todos los movimientos de la empresa, de todas sus cuentas bancarias, los más nuevos primero. Cada movimiento trae la contraparte con su RUT y la razón social del maestro de entidades de Tupana. El GET nunca toca al banco.

Todos los movimientos de la empresa, de todas sus cuentas bancarias, los más
nuevos primero. Es lo que usa la consola de developers para mostrar los
movimientos de un cliente. El GET nunca toca al banco.

```bash theme={null}
curl "https://api.tupana.ai/v2/movements/?company_id=ment_3672486436546233854&since=2026-10-01" \
  -H "Authorization: Api-Key TU_API_KEY"
```

```json theme={null}
{
  "data": [
    {
      "id": "move_Qm8102938475612",
      "account_id": "bacc_7Hk2938475610293",
      "company_id": "ment_3672486436546233854",
      "amount": 595000,
      "direction": "inbound",
      "currency": "CLP",
      "status": "posted",
      "transaction_date": "2026-10-14",
      "description": "0765432103 PAGO PROVEEDOR",
      "balance_after": 12016781,
      "counterparty": { "tax_id": "76.543.210-3", "name": "COMERCIAL EJEMPLO SPA" }
    }
  ],
  "meta": { "page": 1, "page_size": 50, "total": 1, "total_pages": 1 },
  "links": { "next": null, "prev": null }
}
```

* `company_id` es obligatorio; `account_id` acota a una cuenta.
* `search` busca en la glosa, el RUT y la razón social de la contraparte.
* Acepta los mismos filtros que el [listado por cuenta](https://docs.tupana.ai/api-reference/v2/movements/list.md): `since`, `until`, `direction`, `status`, `min_amount` y `max_amount`.
* `counterparty.name` es la razón social del maestro de entidades de Tupana. Si la contraparte no está en el maestro, es el nombre que trae el banco.
* Para mantener una copia al día sin releer rangos, usa [`GET /v2/movements/sync/`](https://docs.tupana.ai/api-reference/v2/movements/sync).


## OpenAPI

````yaml api-reference/openapi-v2.json GET /movements/
openapi: 3.0.0
info:
  title: Tupana API — v2
  description: >-
    API v2 de Tupana: facturación electrónica, cesiones, recaudación, consultas,
    boleta de honorarios y nómina. Los identificadores de recursos son public
    IDs opacos con prefijo (docu_, ment_, cred_, doce_, empl_…).
  version: 2.0.0
servers:
  - url: https://api.tupana.ai/v2
    description: Producción (v2)
security:
  - apiKeyAuth: []
paths:
  /movements/:
    get:
      tags:
        - Movimientos
      summary: Listar movimientos de una empresa
      description: >-
        Todos los movimientos de la empresa, de todas sus cuentas bancarias, los
        más nuevos primero. Cada movimiento trae la contraparte con su RUT y la
        razón social del maestro de entidades de Tupana. El GET nunca toca al
        banco.
      operationId: listCompanyMovements_v2
      parameters:
        - name: company_id
          in: query
          required: true
          description: Tupana ID de la empresa (ment_…).
          schema:
            type: string
            example: ment_3672486436546233854
        - name: account_id
          in: query
          required: false
          description: Acota a una cuenta (bacc_…).
          schema:
            type: string
        - name: search
          in: query
          required: false
          description: Busca en la glosa, el RUT y la razón social de la contraparte.
          schema:
            type: string
        - name: since
          in: query
          required: false
          schema:
            type: string
            format: date
          description: Desde esta `transaction_date`, inclusive.
        - name: until
          in: query
          required: false
          schema:
            type: string
            format: date
          description: Hasta esta `transaction_date`, inclusive.
        - name: direction
          in: query
          required: false
          schema:
            type: string
            enum:
              - inbound
              - outbound
        - name: status
          in: query
          required: false
          schema:
            type: string
            enum:
              - pending
              - posted
        - name: min_amount
          in: query
          required: false
          schema:
            type: number
          description: Sobre el monto sin signo.
        - name: max_amount
          in: query
          required: false
          schema:
            type: number
          description: Sobre el monto sin signo.
        - name: page
          in: query
          required: false
          schema:
            type: integer
            default: 1
        - name: page_size
          in: query
          required: false
          schema:
            type: integer
            default: 50
            maximum: 200
        - name: fields
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Movimientos
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Movement'
                  meta:
                    type: object
                    properties:
                      page:
                        type: integer
                      page_size:
                        type: integer
                      total:
                        type: integer
                      total_pages:
                        type: integer
                  links:
                    type: object
                    properties:
                      next:
                        type: string
                        nullable: true
                      prev:
                        type: string
                        nullable: true
        '400':
          description: 'Un filtro inválido (`code: parameter_invalid`, `param`)'
        '403':
          description: >-
            La API key de producción no tiene `banking:read` explícito (`code:
            banking_permission_required`). Actívalo en la consola de developers,
            en API Keys.
      security:
        - apiKeyAuth: []
components:
  schemas:
    Movement:
      type: object
      properties:
        id:
          type: string
          example: move_Qm8102938475612
        account_id:
          type: string
          example: bacc_7Hk2938475610293
        company_id:
          type: string
          example: ment_3672486436546233854
        amount:
          type: number
          example: 450000
          description: Sin signo. Entero en CLP.
        direction:
          type: string
          enum:
            - inbound
            - outbound
        currency:
          type: string
          example: CLP
        status:
          type: string
          enum:
            - pending
            - posted
            - removed
        posted_movement_id:
          type: string
          nullable: true
          description: >-
            En una pendiente retirada: el id del movimiento posteado que la
            reemplazó.
        transaction_date:
          type: string
          format: date
          nullable: true
        post_date:
          type: string
          format: date
          nullable: true
        description:
          type: string
          description: La glosa tal cual la entrega el banco.
        balance_after:
          type: number
          nullable: true
          description: >-
            Saldo de la cuenta tras el movimiento, cuando la fuente lo entrega
            (cartolas).
        counterparty:
          $ref: '#/components/schemas/Counterparty'
        category:
          type: string
          nullable: true
          enum:
            - customer_payment
            - supplier_payment
            - payroll
            - taxes
            - bank_fees
            - internal_transfer
            - card_settlement
          description: >-
            Clasificación Tupana del movimiento. `null` si no se clasificó o no
            se identificó.
        card:
          type: object
          nullable: true
          description: Solo en movimientos de una cuenta de crédito.
          properties:
            last_four:
              type: string
              example: '2105'
            merchant:
              type: string
              nullable: true
              example: AMAZON WEB SERVICES
            installments:
              type: integer
              nullable: true
              description: '`null` hasta que la fuente lo entregue.'
    Counterparty:
      type: object
      nullable: true
      description: >-
        La contraparte resuelta por Tupana. `null` cuando no hay nada que
        resolver.
      properties:
        tax_id:
          type: string
          nullable: true
          example: 76.543.169-7
        name:
          type: string
          nullable: true
          example: Comercial Andina SpA
        institution:
          type: object
          nullable: true
          properties:
            code:
              type: string
              example: cl_banco_de_chile
            name:
              type: string
              example: Banco de Chile
        account_number_mask:
          type: string
          nullable: true
          example: '0912'
          description: Últimos 4 dígitos. El número completo nunca sale.
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        API Key para autenticación. Debe proporcionarse en el header
        Authorization con el formato: 'Api-Key YOUR-API-KEY' (incluye el prefijo
        'Api-Key ' seguido de tu API key)

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.