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

# Venta Interna de Minerales

> Factura de venta de minerales en el territorio nacional. Sector 21.

Para la venta de minerales dentro de Bolivia. Se emite por `POST /api/v1/invoices` con `documentSectorType: 21`.

<Info>
  Para la venta al exterior corresponde el sector `20`, [Exportación de Minerales](/api/sectors/export-minerals),
  que no da crédito fiscal. El sector `3` (Comercial de Exportación) excluye minerales.
</Info>

## Datos del sector

| Campo                | Valor                                                            |
| -------------------- | ---------------------------------------------------------------- |
| `documentSectorType` | `21`                                                             |
| Servicio SIAT        | Facturación Electrónica / Computarizada (genérico por modalidad) |

## Campos específicos

Además de los [campos estándar](/api/create-invoice#request-body):

### Cabecera — la carga

| Campo                | Tipo    | Req | Descripción                                                      |
| -------------------- | ------- | --- | ---------------------------------------------------------------- |
| `documentSectorType` | integer | Sí  | `21`                                                             |
| `buyerAddress`       | string  | Sí  | Dirección del comprador (`direccionComprador`)                   |
| `bulkConcentrate`    | string  | Sí  | Concentrado a granel, ej. `"Zinc - Plata"` (`concentradoGranel`) |
| `origin`             | string  | Sí  | Origen del mineral, ej. `"Potosi - Bolivia"` (`origen`)          |
| `incoterm`           | string  | Sí  | Incoterm de la operación, ej. `"CIFFO"` (`incoterm`)             |
| `transitPort`        | string  | No  | Puerto de tránsito (`puertoTransito`)                            |
| `destinationPort`    | string  | No  | Puerto de destino (`puertoDestino`)                              |
| `codeCountry`        | integer | No  | País de destino (`paisDestino`, catálogo SIAT de países)         |

### Cabecera — el lote

| Campo             | Tipo   | Req | Descripción                                          |
| ----------------- | ------ | --- | ---------------------------------------------------- |
| `lotNumber`       | string | Sí  | Número de lote (`numeroLote`)                        |
| `netWetKilos`     | number | Sí  | Kilos netos húmedos, mayor a 0 (`kilosNetosHumedos`) |
| `netDryKilos`     | number | Sí  | Kilos netos secos, mayor a 0 (`kilosNetosSecos`)     |
| `humidityPercent` | number | No  | Porcentaje de humedad (`humedadPorcentaje`)          |
| `humidityValue`   | number | No  | Humedad en valor (`humedadValor`)                    |
| `wastePercent`    | number | No  | Merma en porcentaje (`mermaPorcentaje`)              |
| `wasteValue`      | number | No  | Merma en valor (`mermaValor`)                        |

### Cabecera — la liquidación

| Campo                   | Tipo    | Req | Descripción                                                                        |
| ----------------------- | ------- | --- | ---------------------------------------------------------------------------------- |
| `exchangeRate`          | number  | Sí  | Tipo de cambio oficial (`tipoCambio`)                                              |
| `exchangeRateAnb`       | number  | Sí  | Tipo de cambio ANB (`tipoCambioANB`)                                               |
| `realizationExpenses`   | number  | Sí  | Gastos de realización, mayor a 0 (`gastosRealizacion`)                             |
| `preliminarySettlement` | number  | No  | Ajuste de liquidación preliminar; **puede ser negativo** (`liquidacionPreliminar`) |
| `currencyCode`          | integer | No  | Moneda de la operación (`codigoMoneda`)                                            |
| `observations`          | string  | No  | Se envía como `otrosDatos`                                                         |

<Info>
  **Cómo se arma el total**, según las operaciones publicadas por Impuestos. Los precios del
  detalle van en la **moneda del documento**:

  ```
  subTotal         = Σ (cantidad × precioUnitario − montoDescuento)
  iva              = (subTotal − gastosRealizacion) × 0.1494253      ← tasa efectiva
  montoTotalMoneda = subTotal − gastosRealizacion + iva
                     + liquidacionPreliminar − descuentoAdicional
  montoTotal       = montoTotalMoneda × tipoCambioANB                ← el ANB, no el oficial
  montoTotalSujetoIva = montoTotal
  ```

  Ni `subTotal` ni el `iva` se envían: **los calcula la API**. El IVA sale de la tasa efectiva
  y el total se lleva a bolivianos con el **tipo de cambio ANB** (`exchangeRateAnb`); el
  `exchangeRate` oficial se declara igual en el XML.
</Info>

### Detalle

| Campo                   | Tipo    | Req | Descripción                                                         |
| ----------------------- | ------- | --- | ------------------------------------------------------------------- |
| `codeNandina`           | string  | Sí  | Código Nandina del mineral (`codigoNandina`)                        |
| `gradeDescription`      | string  | Sí  | Ley o pureza del mineral, ej. `"51.90 gr/ton"` (`descripcionLeyes`) |
| `extractionQuantity`    | number  | Sí  | Cantidad en la unidad de **extracción** (`cantidadExtraccion`)      |
| `extractionUnitMeasure` | integer | Sí  | Unidad de medida de extracción (`unidadMedidaExtraccion`)           |
| `quantity`              | number  | Sí  | Cantidad en la unidad con la que se **comercializa**                |
| `unitMeasure`           | integer | Sí  | Unidad de medida de venta                                           |
| `priceUnit`             | number  | Sí  | Cotización a la que se comercializó el mineral                      |

<Warning>
  El detalle **no admite descuento por línea**: el XSD del SIAT fija `montoDescuento` en `0`.
  Enviar `amountDiscount` distinto de cero en un ítem devuelve `422`. Para descontar del
  total usá `descuentoAdicional` en la cabecera.
</Warning>

<CodeGroup>
  ```bash cURL theme={"system"}
  curl -X POST https://sandbox.cucu.bo/api/v1/invoices \
    -H "Content-Type: application/json" \
    -H "X-API-Key: YOUR_API_KEY" \
    -d '{
      "pointOfSaleId": "660e8400-e29b-41d4-a716-446655440004",
      "documentSectorType": 21,
      "clientDocumentType": 1,
      "clientDocumentNumber": "5115889",
      "clientBusinessName": "MINERA DEL SUR S.A.",
      "buyerAddress": "Av. Arce No 2299 Edif Multicentro Piso 4",
      "bulkConcentrate": "Zinc - Plata",
      "origin": "Potosi - Bolivia",
      "transitPort": "Antofagasta",
      "destinationPort": "Toyama Shinko",
      "codeCountry": 200,
      "incoterm": "CIFFO",
      "lotNumber": "18-ZN-QMA-009 FINAL",
      "netWetKilos": 323.72,
      "humidityPercent": 98,
      "humidityValue": 346.81,
      "netDryKilos": 323.72,
      "currencyCode": 1,
      "exchangeRate": 6.96,
      "exchangeRateAnb": 6.96,
      "realizationExpenses": 74030.63,
      "paymentMethodCode": 1,
      "details": [
        {
          "activityEconomic": "451010",
          "codeProductSin": "49111",
          "codeProduct": "123",
          "codeNandina": "2608.00.00.00",
          "description": "Zinc",
          "gradeDescription": "51.90 gr/ton",
          "extractionQuantity": 168010.68,
          "extractionUnitMeasure": 1,
          "quantity": 311375.93,
          "unitMeasure": 1,
          "priceUnit": 1.46
        }
      ]
    }'
  ```

  ```javascript JavaScript theme={"system"}
  const response = await fetch('https://sandbox.cucu.bo/api/v1/invoices', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': 'YOUR_API_KEY'
    },
    body: JSON.stringify({
      pointOfSaleId: '660e8400-e29b-41d4-a716-446655440004',
      documentSectorType: 21,
      clientDocumentType: 1,
      clientDocumentNumber: '5115889',
      clientBusinessName: 'MINERA DEL SUR S.A.',
      buyerAddress: 'Av. Arce No 2299 Edif Multicentro Piso 4',
      bulkConcentrate: 'Zinc - Plata',
      origin: 'Potosi - Bolivia',
      incoterm: 'CIFFO',
      lotNumber: '18-ZN-QMA-009 FINAL',
      netWetKilos: 323.72,
      netDryKilos: 323.72,
      currencyCode: 1,
      exchangeRate: 6.96,
      exchangeRateAnb: 6.96,
      realizationExpenses: 74030.63,
      paymentMethodCode: 1,
      details: [{
        activityEconomic: '451010',
        codeProductSin: '49111',
        codeNandina: '2608.00.00.00',
        description: 'Zinc',
        gradeDescription: '51.90 gr/ton',
        extractionQuantity: 168010.68,
        extractionUnitMeasure: 1,
        quantity: 311375.93,
        unitMeasure: 1,
        priceUnit: 1.46
      }]
    })
  });
  ```

  ```python Python theme={"system"}
  import requests

  response = requests.post(
      'https://sandbox.cucu.bo/api/v1/invoices',
      headers={
          'Content-Type': 'application/json',
          'X-API-Key': 'YOUR_API_KEY'
      },
      json={
          'pointOfSaleId': '660e8400-e29b-41d4-a716-446655440004',
          'documentSectorType': 21,
          'clientDocumentType': 1,
          'clientDocumentNumber': '5115889',
          'clientBusinessName': 'MINERA DEL SUR S.A.',
          'buyerAddress': 'Av. Arce No 2299 Edif Multicentro Piso 4',
          'bulkConcentrate': 'Zinc - Plata',
          'origin': 'Potosi - Bolivia',
          'incoterm': 'CIFFO',
          'lotNumber': '18-ZN-QMA-009 FINAL',
          'netWetKilos': 323.72,
          'netDryKilos': 323.72,
          'currencyCode': 1,
          'exchangeRate': 6.96,
          'exchangeRateAnb': 6.96,
          'realizationExpenses': 74030.63,
          'paymentMethodCode': 1,
          'details': [{
              'activityEconomic': '451010',
              'codeProductSin': '49111',
              'codeNandina': '2608.00.00.00',
              'description': 'Zinc',
              'gradeDescription': '51.90 gr/ton',
              'extractionQuantity': 168010.68,
              'extractionUnitMeasure': 1,
              'quantity': 311375.93,
              'unitMeasure': 1,
              'priceUnit': 1.46
          }]
      }
  )
  ```
</CodeGroup>

<Info>
  Ver [Crear Factura](/api/create-invoice) para la referencia completa de campos estándar, response y códigos de error.
</Info>
