# Documento soporte

> Documento soporte (05) en adquisiciones a no obligados a facturar y su nota de ajuste (95) por la API de Trevol.

Fuente: https://platform.trevol.si/docs/documento-soporte

Genera el documento soporte (05) de una compra a quien no está obligado a facturar —una persona natural, un campesino, un proveedor del exterior— y su nota de ajuste (95). Trevol valida, numera con tu rango, firma y envía a la DIAN.

## Antes de emitir

La empresa necesita, en la app de Trevol:

- la habilitación ante la DIAN y su **software** asociado al modo de documento soporte (si falta: `422 company_not_enabled`, `reason: "missing_software"`);
- un **rango de documento soporte** registrado, vigente y con números libres (si no: `422 numbering_unavailable`, `reason: "no_resolution"`). `GET /v1/company` lo lista en `capabilities.support_documents.numbering`, con el `next` de cada uno;
- el certificado de firma.

La nota de ajuste no usa rango: tiene su consecutivo propio. Todo esto se comprueba **antes de numerar**: un pedido que no puede salir no gasta número.

## Emitir un documento soporte

`POST /v1/support_documents` (`createSupportDocument`)

#### cURL

```bash
curl -X POST "https://api.trevol.si/v1/support_documents" \
  -H "Authorization: Bearer $TREVOL_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "external_id": "OC-991",
  "seller": {
    "resident": true,
    "person_type": "natural",
    "document_type": "31",
    "document_number": "1020304050",
    "name": "PEREZ GOMEZ ANA MARIA",
    "address": "Vereda El Silencio, finca La Esperanza",
    "municipality_code": "25053",
    "postal_code": "252007",
    "tax_responsibilities": [
      "R-99-PN"
    ]
  },
  "items": [
    {
      "description": "Leche cruda",
      "unit": "LTR",
      "quantity": "120",
      "unit_price": "1800"
    }
  ],
  "payment": {
    "form": "cash",
    "methods": [
      {
        "code": "10"
      }
    ]
  },
  "notes": [
    "Compra de la semana 42 de octubre"
  ]
}'
```

#### Respuesta 201

```json
{
  "id": "sd_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b",
  "object": "support_document",
  "environment": "test",
  "status": "accepted",
  "number": "DS994001",
  "prefix": "DS",
  "external_id": "OC-991",
  "origin": "api",
  "cuds": "abababababababababababababababababababababababababababababababababababababababababababababababab",
  "qr": "https://catalogo-vpfe-hab.dian.gov.co/document/searchqr?documentkey=abababababababababababababababababababababababababababababababababababababababababababababababab",
  "issued_at": "2026-10-23T09:15:02-05:00",
  "seller": {
    "resident": true,
    "person_type": "natural",
    "document_type": "31",
    "document_number": "1020304050",
    "name": "PEREZ GOMEZ ANA MARIA",
    "address": "Vereda El Silencio, finca La Esperanza",
    "municipality_code": "25053",
    "postal_code": "252007",
    "tax_responsibilities": [
      "R-99-PN"
    ]
  },
  "items": [
    {
      "description": "Leche cruda",
      "unit": "LTR",
      "quantity": "120",
      "unit_price": "1800"
    }
  ],
  "payment": {
    "form": "cash",
    "methods": [
      {
        "code": "10"
      }
    ]
  },
  "transmission": "per_operation",
  "adjustment_note": null,
  "totals": {
    "subtotal": "216000.00",
    "discounts": "0.00",
    "line_extension": "216000.00",
    "tax_exclusive": "0.00",
    "taxes": [],
    "allowances": "0.00",
    "charges": "0.00",
    "rounding": "0.00",
    "total": "216000.00",
    "withholdings": [],
    "prepayments": "0.00",
    "net_payable": null,
    "items": [
      {
        "gross": "216000.00",
        "discount": "0.00",
        "line_extension": "216000.00"
      }
    ]
  },
  "dian": {
    "status_code": "00",
    "message": "Procesado Correctamente.",
    "rules": []
  },
  "delivery": {
    "status": null,
    "pdf": false,
    "zip": false,
    "xml": true,
    "email": null
  },
  "created_at": "2026-10-23T09:15:02-05:00",
  "updated_at": "2026-10-23T09:15:03-05:00"
}
```

[Probar en el Playground](https://platform.trevol.si/playground?op=createSupportDocument&ejemplo=compra)

Se genera, no se expide: no hay PDF, ZIP ni correo. Se descargan `…/xml` y `…/dian_response` ([Archivos](/docs/archivos)).

## La nota de ajuste

`POST /v1/support_document_adjustments` (`createSupportDocumentAdjustment`)

#### cURL

```bash
curl -X POST "https://api.trevol.si/v1/support_document_adjustments" \
  -H "Authorization: Bearer $TREVOL_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "external_id": "OC-991-ANULA",
  "concept": "2",
  "description": "Anulación: la compra de leche se registró dos veces en el ERP",
  "support_document": {
    "id": "sd_3f0c1a2b3f0c1a2b3f0c1a2b3f0c1a2b"
  },
  "items": [
    {
      "description": "Leche cruda",
      "unit": "LTR",
      "quantity": "120",
      "unit_price": "1800"
    }
  ]
}'
```

[Probar en el Playground](https://platform.trevol.si/playground?op=createSupportDocumentAdjustment&ejemplo=anulacion)

## Lo que hay que saber

- Las respuestas son las de [toda la API](/docs/respuestas): `201`, `422 dian_rejected` con `document`, `422 validation_error` antes de numerar, `402` sin saldo, y `202`/`503` con la DIAN sin contestar. `Idempotency-Key` es obligatoria.
- El `external_id` es único entre facturas, notas, documentos soporte y equivalentes (y sus notas).
- Cuenta como facturación en el cobro: lo que se cobra al validarse un documento de producción.
- Los avisos (webhooks) salen por cualquier camino (la API o la app); el `data` es un resumen: nunca el vendedor ni las líneas. Tipos: `support_document.*` y `support_document_adjustment.*` ([eventos](/docs/webhooks/eventos)).

Referencia: [Documento soporte](/docs/api/support-documents) y [su nota de ajuste](/docs/api/support-document-adjustments).
