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

# Fiscal Sync Status

> Consultar el estado de una sincronización fiscal SAT o DIAN

Consulta el progreso de una sincronización disparada con [`POST /fiscal-sync`](/api-reference/fiscal-sync/trigger). El formato de la respuesta depende del país de la compañía asociada a la API key.

## Parámetros

| Parámetro    | Requerido   | Descripción                                                                                                                                                                                                            |
| ------------ | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `started_at` | Recomendado | Timestamp ISO 8601 devuelto por `POST /fiscal-sync` en el campo `started_at`. En Colombia se usa como punto de partida para detectar si la sync terminó. Si lo omites en Colombia, Payana usa las **últimas 2 horas**. |

## Respuesta — México

Devuelve el estado de la extracción Satws más reciente de la compañía.

| Campo             | Descripción                                                                                                                 |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------- |
| `country`         | Siempre `"MEX"`.                                                                                                            |
| `status`          | Estado de la extracción: `pending`, `waiting`, `running`, `finished`, `failed`, o `not_started` si aún no hay extracciones. |
| `fetching_status` | Progreso de descarga de facturas: `pending`, `running`, `finished`, o `null`.                                               |
| `from` / `to`     | Rango de la extracción (ISO 8601).                                                                                          |
| `extraction_id`   | Identificador externo Satws.                                                                                                |
| `error_code`      | Código de error si la extracción falló; `null` en caso contrario.                                                           |

### Ejemplo — extracción en curso

```json theme={null}
{
  "country": "MEX",
  "status": "running",
  "fetching_status": "running",
  "from": "2026-06-21T15:30:00.000-06:00",
  "to": "2026-06-22T15:30:00.000-06:00",
  "extraction_id": "ext-abc123",
  "error_code": null
}
```

### Ejemplo — sin extracciones previas

```json theme={null}
{
  "country": "MEX",
  "status": "not_started",
  "fetching_status": null,
  "from": null,
  "to": null,
  "extraction_id": null,
  "error_code": null
}
```

## Respuesta — Colombia

Consulta si la sincronización DIAN iniciada después de `started_at` ya finalizó, falló o sigue pendiente.

| Campo     | Descripción                       |
| --------- | --------------------------------- |
| `country` | Siempre `"COL"`.                  |
| `status`  | `pending`, `finished` o `failed`. |
| `message` | Descripción legible del estado.   |

### Ejemplo — sync completada

```json theme={null}
{
  "country": "COL",
  "status": "finished",
  "message": "Sync finished"
}
```

### Ejemplo — sync en progreso

```json theme={null}
{
  "country": "COL",
  "status": "pending",
  "message": "Sync pending"
}
```

## Flujo recomendado de polling

1. Llama `POST /fiscal-sync` y guarda `started_at` de la respuesta.
2. Consulta `GET /fiscal-sync/status?started_at={started_at}` cada **30–60 segundos**.
3. Detén el polling cuando:
   * **MEX:** `status` sea `finished` o `failed`.
   * **COL:** `status` sea `finished` o `failed`.
4. Opcionalmente, lista documentos nuevos con [`GET /documents`](/api-reference/documents/list) o espera el webhook `document.created`.

## Ejemplo

```bash theme={null}
curl "https://api.prod.payana.cloud/public/api/v1/fiscal-sync/status?started_at=2026-06-22T15:30:00.000Z" \
  -H "api-key: YOUR_API_KEY"
```

## Errores

| Código HTTP | Código                                  | Cuándo                                                   |
| ----------- | --------------------------------------- | -------------------------------------------------------- |
| `401`       | —                                       | Falta el header `api-key` o la clave es inválida.        |
| `422`       | `fiscal_sync_not_supported_for_country` | El país de la compañía no soporta sincronización fiscal. |
| `422`       | `company_not_found`                     | La compañía de la API key no existe.                     |


## OpenAPI

````yaml GET /fiscal-sync/status
openapi: 3.1.0
info:
  title: Payana Accounts Payable API
  description: >-
    API pública para gestionar cuentas por pagar (payments) y beneficiarios
    (beneficiaries) en Payana, incluyendo notificaciones por webhooks cuando se
    procesan pagos.
  version: 1.0.0
servers:
  - url: https://api.prod.payana.cloud/public/api/v1
    description: Production
  - url: https://api.develop.payana.cloud/public/api/v1
    description: Develop
security:
  - apiKeyAuth: []
tags:
  - name: Payments
    description: Crear y listar pagos
  - name: Beneficiaries
    description: Crear, listar y consultar beneficiarios
  - name: Webhooks
    description: Eventos de webhooks enviados por Payana
  - name: Banks
    description: Listar y consultar bancos
  - name: Transactions In
    description: Transacciones entrantes (polling, mismo formato que webhooks)
  - name: Documents
    description: Listar, consultar y operar documentos (cuentas por pagar)
  - name: DIAN Events
    description: >-
      Encolar eventos DIAN (030 Acuse de recibo, 031 Reclamo, 032 Recibo del
      bien, 033 Aceptación expresa, 034 Aceptación tácita) para documentos
      identificados por CUFE. El procesamiento es asíncrono.
  - name: Fiscal Sync
    description: >-
      Disparar y consultar sincronización de documentos fiscales desde el SAT
      (México) o la DIAN (Colombia).
  - name: Workflow Steps
    description: >-
      Resolver el paso en que está parado un documento dentro de su flujo:
      aprobación, clasificación o etiquetado.
paths:
  /fiscal-sync/status:
    get:
      tags:
        - Fiscal Sync
      summary: Get fiscal sync status
      description: >-
        Consulta el progreso de una sincronización disparada con `POST
        /fiscal-sync`.


        **México:** devuelve el estado de la extracción Satws más reciente
        (`status`, `fetching_status`, `extraction_id`, etc.).


        **Colombia:** consulta si la sync DIAN iniciada después de `started_at`
        finalizó (`finished`), falló (`failed`) o sigue pendiente (`pending`).
        Si omites `started_at`, se usan las últimas 2 horas como referencia.
      parameters:
        - name: started_at
          in: query
          required: false
          description: >-
            Timestamp ISO 8601 devuelto por `POST /fiscal-sync`. Recomendado
            para polling en Colombia.
          schema:
            type: string
            format: date-time
          example: '2026-06-22T15:30:00.000Z'
      responses:
        '200':
          description: Estado actual de la sincronización fiscal.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/FiscalSyncStatusMexico'
                  - $ref: '#/components/schemas/FiscalSyncStatusColombia'
              examples:
                mexico_running:
                  summary: México — extracción en curso
                  value:
                    country: MEX
                    status: running
                    fetching_status: running
                    from: '2026-06-21T15:30:00.000-06:00'
                    to: '2026-06-22T15:30:00.000-06:00'
                    extraction_id: ext-abc123
                    error_code: null
                colombia_finished:
                  summary: Colombia — sync completada
                  value:
                    country: COL
                    status: finished
                    message: Sync finished
        '401':
          description: Header `api-key` ausente o inválido.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FiscalSyncError'
        '422':
          description: País no soportado o compañía no encontrada.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FiscalSyncError'
components:
  schemas:
    FiscalSyncStatusMexico:
      type: object
      required:
        - country
        - status
      properties:
        country:
          type: string
          const: MEX
        status:
          type: string
          enum:
            - not_started
            - pending
            - waiting
            - running
            - finished
            - failed
          description: Estado de la extracción Satws.
        fetching_status:
          type:
            - string
            - 'null'
          enum:
            - pending
            - running
            - finished
            - null
        from:
          type:
            - string
            - 'null'
          format: date-time
        to:
          type:
            - string
            - 'null'
          format: date-time
        extraction_id:
          type:
            - string
            - 'null'
        error_code:
          type:
            - string
            - 'null'
    FiscalSyncStatusColombia:
      type: object
      required:
        - country
        - status
        - message
      properties:
        country:
          type: string
          const: COL
        status:
          type: string
          enum:
            - pending
            - finished
            - failed
        message:
          type: string
          example: Sync finished
    FiscalSyncError:
      type: object
      properties:
        status:
          type: integer
          description: Código HTTP.
        code:
          type: string
          description: Código de error estable (snake_case).
          enum:
            - sat_credentials_not_configured
            - sat_ciec_invalid
            - sat_ciec_pending
            - dian_automatic_sync_not_configured
            - dian_credentials_not_configured
            - dian_sync_window_empty
            - fiscal_sync_not_supported_for_country
            - company_not_found
            - user_not_found
        message:
          type: string
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: api-key
      description: API key provista por Payana.

````