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

# Compras y gastos

> Registrar y consultar compras de proveedores

**Permiso requerido:** `expenses`

## Registrar compra

```http theme={null}
POST /expenses
```

<Warning>
  Igual que en ventas, el sistema externo debe enviar los desgloses fiscales por línea y los totales calculados.
</Warning>

```json theme={null}
{
  "branch_id": "uuid",
  "provider_id": "uuid",
  "document_type": "ccf",
  "date": "2026-10-01",
  "observation": "Compra de insumos",
  "is_credit": false,
  "credit_days": 0,
  "number_control": "DTE-03-M001P001-000000000000123",
  "generation_code": "A1B2C3D4-...",
  "stamp": "2026XYZ...",
  "products": [
    {
      "sku": "INS-001",
      "name": "Insumo A",
      "type": "goods",
      "quantity": 5,
      "price_before_taxes": 8.00,
      "expense_not_suject": 0,
      "expense_exent": 0,
      "expense_taxed": 40.00,
      "subtotal": 40.00
    }
  ],
  "totals": {
    "netTotals": 40.00,
    "charge_1": 0,
    "charge_2": 0,
    "expenseTotalTax": 40.00,
    "totalRent": 0,
    "totalTax": 5.20,
    "totalRetein": 0,
    "expenseTotalToPayment": 45.20
  }
}
```

### Campos

| Campo | Tipo | Requerido | Descripción |
| - | - | - | - |
| `branch_id` | uuid | Sí | Sucursal que registra la compra. |
| `provider_id` | uuid | Sí | Proveedor. Ver [Proveedores](/docs/api/facturacion/proveedores). |
| `document_type` | string | Sí | `ccf` (Crédito Fiscal), `fse` (Factura de Sujeto Excluido) o `ticket`. |
| `date` | date | Sí | Fecha del documento. |
| `is_credit` | boolean | Sí | Compra al crédito. |
| `credit_days` | integer | No | Días de crédito. |
| `observation` | string | No | Observaciones. |
| `number_control` | string | No | Número de control del DTE del proveedor. |
| `generation_code` | string | No | Código de generación del DTE del proveedor. |
| `stamp` | string | No | Sello de recepción del DTE del proveedor. |
| `products` | array | Sí | Líneas (mínimo 1). |
| `totals` | object | Sí | Totales. |

### `products[]` (todos requeridos)

| Campo | Tipo | Descripción |
| - | - | - |
| `sku` | string | Código del bien o servicio. |
| `name` | string | Descripción. |
| `type` | string | `goods` (bien) o `services` (servicio). |
| `quantity` | number | Cantidad (mínimo 0.01). |
| `price_before_taxes` | number | Precio unitario sin impuestos. |
| `expense_not_suject` | number | Monto no sujeto. |
| `expense_exent` | number | Monto exento. |
| `expense_taxed` | number | Monto gravado. |
| `subtotal` | number | Total de la línea. |

### `totals` (todos requeridos)

| Campo | Descripción |
| - | - |
| `netTotals` | Suma de subtotales sin impuestos. |
| `charge_1` | Cargo especial 1 (en El Salvador: COTRANS en combustibles). |
| `charge_2` | Cargo especial 2 (en El Salvador: FOVIAL en combustibles). |
| `expenseTotalTax` | Base gravada. |
| `totalRent` | Renta retenida. |
| `totalTax` | IVA (crédito fiscal). |
| `totalRetein` | IVA retenido / percibido. |
| `expenseTotalToPayment` | Total a pagar. |

### Respuesta `200`

```json theme={null}
{
  "status": true,
  "message": "Expense created successfully",
  "data": {
    "expense_id": "uuid",
    "generation_code": "A1B2C3D4-...",
    "control_number": "DTE-03-M001P001-000000000000123",
    "status": "processed",
    "issue_time": "2026-10-01 10:00:00",
    "total": 45.20
  }
}
```

## Consultar compra

```http theme={null}
GET /expenses/{expense_id}
```

```json theme={null}
{
  "status": true,
  "data": {
    "expense_id": "uuid",
    "generation_code": "A1B2C3D4-...",
    "control_number": "DTE-03-...",
    "document_type": "ccf",
    "status": "processed",
    "issue_time": "2026-10-01 10:00:00",
    "payment_status": "pending",
    "is_credit": true,
    "provider": { "id": "uuid", "legal_name": "Distribuidora XYZ S.A. de C.V.", "provider_name": "Distribuidora XYZ" },
    "totals": { "expense_total": 45.20, "expense_to_payment": 45.20 },
    "products": [
      { "sku": "INS-001", "name": "Insumo A", "quantity": 5, "individual_price": 8.00, "subtotal": 40.00 }
    ]
  }
}
```


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