Docs / API Reference / Notas de débito
API Reference

Notas de débito

codDoc 05 — el VENDEDOR emite cargos adicionales sobre una factura ya emitida (intereses, penalizaciones, servicios extra). Estructura más simple que la NC: en lugar de líneas de productos, una lista de motivos (pares razon / valor) con un único codigoPorcentaje de IVA aplicado al total.

Eventos

Cada ND emite nota_debito.creada al encolarse y nota_debito.autorizada / nota_debito.rechazada / nota_debito.devuelta al resolverse en el SRI.

Emitir una nota de débito

POST /api/v1/notas-debito — Crea y encola una ND (async)

Body

Parámetro Tipo Descripción
tipo_identificacion required string Tipo de identificación del comprador (tabla SRI).
identificacion required string RUC/cédula/doc. del cliente.
razon_social required string Razón social del cliente.
direccion optional string Dirección del cliente.
email optional string Email del cliente (para enviar el RIDE).
factura_id optional integer Factura LOCAL a la que se aplica el cargo. Si lo envías, el backend copia automáticamente cliente y doc_sustento.
cod_doc_sustento optional string Código del doc. sustento. Default: '01' (factura).
doc_sustento_numero optional string Número del doc. sustento (15 dígitos). Obligatorio si NO envías factura_id.
doc_sustento_fecha optional date Fecha del doc. sustento (ISO 8601). Obligatorio si NO envías factura_id.
tarifa_iva required integer Tarifa de IVA aplicada al total: 0, 5 ó 15 (default 15).
iva_codigo optional string codigoPorcentaje del SRI (autoritativo; si se omite se deriva de tarifa_iva).
motivos required array Lista de cargos. Mínimo 1. Cada elemento: { razon (≤300 chars), valor (≥0) }.
pagos optional array Formas de pago (mismo shape que en la factura). Si se omite, se persiste un único pago '01' (efectivo) por el total.
sucursal_id optional integer Sucursal emisora. Se infiere del usuario si se omite.
es_borrador optional boolean Si true, guarda como BORRADOR sin encolar al SRI.
idempotency_key optional string Idempotencia (también header Idempotency-Key).

Respuesta (201 Created)

{
  "id": 8,
  "numero_comprobante": "001-001-000000003",
  "fecha_emision": "2026-07-05T11:02:00",
  "tipo_identificacion": "04",
  "identificacion": "0991234567001",
  "razon_social": "ACME S.A.",
  "cod_doc_sustento": "01",
  "doc_sustento_numero": "001-001-000000177",
  "doc_sustento_fecha": "2026-07-03T00:00:00",
  "tarifa_iva": 15,
  "iva_codigo": "4",
  "base_imponible": 80.0,
  "iva": 12.0,
  "total": 92.0,
  "estado": "PENDIENTE",
  "clave_acceso": null,
  "numero_autorizacion": null,
  "factura_id": 177,
  "motivos": [
    { "razon": "Interés por mora", "valor": 50.0 },
    { "razon": "Servicio extra",   "valor": 30.0 }
  ],
  "pagos": [ { "forma_pago": "01", "total": 92.0 } ]
}
import { Emitoo } from "emitoo";

const client = new Emitoo(); // lee la API key de EMITOO_API_KEY

const nd = await client.notasDebito.crear(
  {
    factura_id: 177,
    tarifa_iva: 15,
    motivos: [
      { razon: "Interés por mora", valor: 50.0 },
      { razon: "Servicio extra",   valor: 30.0 },
    ],
  },
  { idempotencyKey: "nd-90210" },
);

¿Cuándo se considera autorizada?

POST /api/v1/notas-debito responde al instante con la ND en PENDIENTE. Te avisamos por webhook con nota_debito.autorizada, o puedes hacer polling al endpoint de estado de más abajo.

Obtener una nota de débito

GET /api/v1/notas-debito/{id} — Detalle completo, con motivos y pagos

Consultar el estado

GET /api/v1/notas-debito/{id}/status — Solo el estado actual (más liviano, ideal para polling)

Reenviar al SRI

POST /api/v1/notas-debito/{id}/reenviar — Re-encola la ND al worker (sin body)

RIDE (PDF)

GET /api/v1/notas-debito/{id}/ride — Devuelve el PDF binario

Reenviar por email

POST /api/v1/notas-debito/{id}/email?to=opcional — Envía el RIDE (y el XML firmado) por email

Listado

GET /api/v1/notas-debito — Listado compacto (id, número, fecha, cliente, total, estado, ambiente)