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

# Timbrar factura

> Dispara la emisión de una factura con política manual, o reintenta una on_issue que falló.

Para las facturas creadas con `stamp_policy: "manual"`, que esperan exactamente este llamado.

También sirve para reintentar una `on_issue` cuyo timbrado automático falló de forma permanente — por ejemplo, si al crearla no tenías una resolución activa. Su disparo ya ocurrió, así que sin esta puerta habría que recrear la factura.

**No aplica a `on_payment` ni a `none`.** Con `on_payment` el disparo es el pago, y emitir a mano generaría un documento fiscal por una venta que todavía no cobraste — justo lo que esa política evita. Para forzarlo, cambia la política a `manual`.

Responde `202`: encola el envío y te avisa por webhook. La DIAN puede tardar minutos, así que no se bloquea el request esperándola.

### Headers

<ParamField header="x-idempotency" type="string" required placeholder="Token único para garantizar la idempotencia de la petición">
  Token único para garantizar la idempotencia de la petición
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://api.onepay.la/v1/invoices/inv_01J8XK9V4N/stamp \
    -H "Authorization: Bearer $ONEPAY_API_KEY" \
    -H "Idempotency-Key: 5c2e8a1b-9d3f-4e7c-8b2a-1f6d4c9e3b02"
  ```
</RequestExample>

<ResponseExample>
  ```json 202 theme={null}
  {
    "id": "inv_01J8XK9V4N",
    "status": "CREATED",
    "fiscal_status": null,
    "stamp_policy": "manual",
    "total": 28548100,
    "stampings": []
  }
  ```
</ResponseExample>

### Errores

Dos casos se rechazan de inmediato, sin encolar: una factura importada de otro sistema —que puede llegar porque esta subruta cuelga de `/invoices/{id}`— y una cuya política no admite emisión manual (`on_payment` o `none`).

```json 422 theme={null}
{
  "code": "invoice_not_stampable",
  "message": "La factura 9e8f1a2b… tiene stamp_policy `on_payment` y no se puede timbrar a mano: con `on_payment` la emisión la dispara el pago, y con `none` no se emite. Para forzarla, cambia la política a `manual`."
}
```

El resto se descubre al procesar, así que llegan como `invoice.stamp_rejected` o quedan en el log de la factura. Ninguno se arregla reintentando:

| Situación                             | Qué hacer                                                                           |
| ------------------------------------- | ----------------------------------------------------------------------------------- |
| La factura ya fue timbrada            | Para corregirla, emite una [nota crédito](/client/electronic-invoices/credit-notes) |
| La factura no tiene líneas            | La DIAN no acepta un documento vacío                                                |
| Al receptor le faltan datos           | Completa los campos que indica el error                                             |
| No hay resolución activa o sin folios | Carga y activa una [resolución](/client/electronic-invoices/resolutions)            |
