# Capítulo 1 - "Consulta de Facturación SAT"

## Requisitos previos

Antes de comenzar, asegúrate de contar con los siguientes elementos:

- Un RFC válido del contribuyente.
- Credenciales de acceso a la API de Moffin (clientId y clientSecret).


## Objetivo de la Misión

Automatizar la consulta de facturación de un RFC a través de la API de Moffin Solutions, obteniendo la información fiscal de manera segura y eficiente.

## Introducción

Antes de poder realizar consultas de facturación al SAT, es necesario crear un perfil SAT del contribuyente utilizando su RFC y CIEC. Luego, se podrá obtener la información de facturación correspondiente al periodo solicitado.

### Paso 1: Obtener el token de autenticación

Para poder realizar consultas, primero necesitamos autenticarnos en la API de Moffin y obtener un token de acceso.

**Llamada a la API:**

### Paso 2: Crear el perfil SAT

- Antes de realizar consultas, debes registrar un perfil utilizando el RFC y la CIEC del contribuyente.
- Guarda el `rfc` que recibirás en la respuesta, ya que será necesario para futuras consultas.


**Ejemplo de solicitud API:**

**Ejemplo de respuesta de la API:**


```json
{
  "message": "Perfil creado satisfactoriamente",
  "rfc": "MOCKRFC123456",
  "profileId": 27287
}
```

### Paso 3: Solicitar la facturación del RFC

- Con el perfil SAT creado, ahora puedes consultar la facturación enviando el RFC y el periodo de consulta.
- Períodos válidos: `1M`, `3M`, `6M`, `1Y`, `2Y`, `3Y`.


**Ejemplo de solicitud API:**

**Ejemplo de respuesta inicial de la API:**


```json
{
  "message": "Solicitud de facturación procesada exitosamente",
  "queryId": "6791b216ddf6a1c971a08624"
}
```

### Paso 4: Recepción de los datos de facturación vía Webhook

- Una vez que la consulta ha sido procesada, recibirás los resultados en tu webhook configurado.
- La respuesta incluirá detalles de facturas emitidas y recibidas, junto con los montos totales.


**Ejemplo de respuesta Webhook:**


```json
{
  "_id": "6791b216ddf6a1c971a08624",
  "service": "invoices",
  "status": "SUCCESS",
  "authentication": "MOFFIN",
  "metadata": {
    "clientType": "PM",
    "query": {
      "rfc": "MOCKRFC123456"
    }
  },
  "query": {
    "rfc": "MOCKRFC123456"
  },
  "response": {
    "periodo": "2025-01",
    "totalEmitidas": "$100,000.00",
    "totalRecibidas": "$50,000.00",
    "totalDiferencia": "$50,000.00",
    "facturasEmitidas": [
      {
        "folio": "MOCK1234-5678-ABCD-EFGH",
        "rfcEmisor": "MOCKRFC123456",
        "razonSocialEmisor": "EMPRESA MOCK",
        "monto": "$10,000.00",
        "estado": "Vigente"
      }
    ]
  },
  "createdAt": "2025-01-23T10:00:00.000Z",
  "updatedAt": "2025-01-23T10:05:00.000Z"
}
```

### Paso 5: Manejo de errores comunes

- La API puede devolver errores en caso de datos incorrectos o perfiles inexistentes.
- Asegúrate de validar las respuestas para manejar posibles errores de manera efectiva.


**Ejemplo de error 400:**


```json
{
  "message": "El perfil no existe. Primero debe crear un perfil con CIEC utilizando el endpoint POST /api/query/sat/profile"
}
```

**Ejemplo de error 403:**


```json
{
  "message": "CIEC y/o RFC inválidos",
  "rfc": null,
  "profileId": null
}
```

## Resultado esperado

Después de completar estos pasos, podrás obtener la facturación de un RFC de manera automatizada y segura, utilizando la API de Moffin Solutions para optimizar la gestión fiscal de tus clientes.