API de notas de débito
El recurso /debit-notes emite notas de débito (E33) que incrementan el monto de un comprobante anterior. Útil para intereses por mora, cargos por servicios adicionales o ajustes posteriores que sumen al saldo del receptor.
Resumen
Una nota de débito se enlaza con un comprobante original (E31 o E32) y agrega líneas con cargo adicional. La DGII reconoce el documento como complemento del comprobante original a efectos de ITBIS y conciliación contable.
Operaciones disponibles
-
GET /api/v1/debit-notes— Devuelve un PagedResult con las notas de crédito y de débito del espacio de trabajo; esta ruta no filtra por tipo de e-CF. -
GET /api/v1/debit-notes/{id}— Devuelve el detalle completo de una nota de débito (E33). -
POST /api/v1/debit-notes— Emite una nota de débito (E33) referenciando un comprobante original.
/api/v1/debit-notes X-Api-Key Estable Devuelve un PagedResult con las notas de crédito y de débito del espacio de trabajo; esta ruta no filtra por tipo de e-CF.
| Nombre | Tipo | Descripción |
|---|---|---|
pageNumber query | integer Opcional | Página solicitada. Por defecto 1. |
pageSize query | integer Opcional | Tamaño de página. Por defecto 10. La API no impone un máximo. |
search query | string Opcional | Filtra por número, RNC del receptor o por el e-CF original referenciado. |
/api/v1/debit-notes/{id} X-Api-Key Estable Devuelve el detalle completo de una nota de débito (E33).
| Nombre | Tipo | Descripción |
|---|---|---|
id path | string (uuid) Requerido | Identificador de la nota. |
/api/v1/debit-notes X-Api-Key Estable Emite una nota de débito (E33) referenciando un comprobante original.
| Nombre | Tipo | Descripción |
|---|---|---|
branchId body | string (uuid) Requerido | Identificador de la sucursal emisora dentro del espacio de trabajo. |
sequence body | string Opcional | Se ignora. La nota siempre toma el siguiente NCF de la secuencia E33 activa. Si no hay una secuencia E33 activa, la API responde `500`. |
externalReference body | string Opcional | Referencia externa libre del emisor (orden, ticket, ID en tu sistema). |
issuedAt body | string (ISO 8601) Requerido | Fecha de emisión de la nota. |
paymentTermId body | integer Requerido | Identificador del término de pago aplicable. |
limitDate body | string (ISO 8601) Requerido | Fecha límite asociada al término de pago. |
customerId body | string (uuid) Opcional | Receptor de la nota. Obligatorio si el comprobante original era E31. |
currencyId body | integer Requerido | Identificador de la moneda de la nota. |
currencyRate body | decimal Requerido | Tasa de cambio aplicada (1 cuando la moneda coincide con DOP). |
freight body | decimal Opcional | Monto del flete o transporte cuando aplica. |
notes body | string Opcional | Notas libres impresas en la nota. |
referenceCreatedAt body | string (ISO 8601) Requerido | Fecha de emisión del comprobante original (E31 o E32) sobre el que se aplica el cargo. |
referenceSequence body | string Requerido | NCF del comprobante original sobre el que se aplica el cargo. Si no existe un documento con esa secuencia, la API responde `404` con `{ message }`. |
modificationCode body | integer Requerido | Código DGII del motivo. `1` anula el comprobante original, `2` corrige texto y `3` corrige montos. |
lines body | V1LineDto[] Requerido | Líneas con el cargo adicional (intereses, mora, ajuste por diferencia de cambio). |
payments body | V1PaymentDto[] Opcional | Pagos asociados a la nota. Suele ir vacío en notas de débito. |
Ejemplo: emitir nota de débito
El cuerpo replica la forma de una factura: lines con cantidades, precios e impuestos. La diferencia está en los campos de referencia: referenceSequence con el NCF original, referenceCreatedAt con su fecha de emisión y modificationCode con el motivo del ajuste según la DGII. Los códigos vigentes son 1 (anula el comprobante original), 2 (Corrige Texto, sin tocar montos) y 3 (Corrige Monto, ajuste numérico al saldo); los cuatro casos de uso siguientes encajan todos en el código 3. Las líneas describen el cargo adicional con sus impuestos asociados. El campo sequence se ignora: la nota siempre toma el siguiente NCF de la secuencia activa. Si no existe un documento con ese referenceSequence, la API responde 404 con { message }. Ten en cuenta que /credit-notes y /debit-notes listan la misma mezcla de notas de crédito y de débito.
POST /api/v1/debit-notes
curl -X POST https://tuempresa.factura.com.do/api/v1/debit-notes \ -H "X-Api-Key: $FACTURA_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "branchId": "b1a2c3d4-e5f6-4789-abcd-1234567890ab", "issuedAt": "2026-05-08T10:00:00Z", "paymentTermId": 1, "limitDate": "2026-05-08T10:00:00Z", "customerId": "5f0c3a8e-2b7d-4c1e-9a6f-3d8b2e1c7a40", "currencyId": 1, "currencyRate": 1, "referenceCreatedAt": "2026-04-08T10:00:00Z", "referenceSequence": "E320000000123", "modificationCode": 3, "lines": [ { "code": "INT-MORA", "order": 1, "description": "Intereses por mora 30 días", "isService": true, "quantity": 1, "unitId": 1, "unitPrice": 1250.00, "taxes": [{ "taxId": "3a5e98e0-33ff-44be-bd37-e3f9b35a25e2", "rate": 18.0, "taxTypeId": 1 }] } ], "payments": [] }'const res = await fetch( "https://tuempresa.factura.com.do/api/v1/debit-notes", { method: "POST", headers: { "X-Api-Key": process.env.FACTURA_API_KEY!, "Content-Type": "application/json", }, body: JSON.stringify({ branchId, issuedAt: new Date().toISOString(), paymentTermId: 1, limitDate: new Date().toISOString(), customerId, currencyId: 1, currencyRate: 1, referenceCreatedAt: originalIssuedAt, referenceSequence: originalSequence, modificationCode: 3, lines, payments: [], }), },);if (!res.ok) throw new Error(`factura.com.do: ${res.status}`);const { documentId, consultationUrl } = await res.json();Respuesta
{ "documentId": "9b2f4c6d-1e3a-4b5c-8d7e-6f0a1b2c3d4e", "consultationUrl": "https://ecf.dgii.gov.do/ecf/ConsultaTimbre?RNCEmisor=131000001&ENCF=E330000000001&…"}Cuándo emitir una nota de débito
- Intereses por mora: el receptor paga después de la fecha pactada.
- Cargos por servicios adicionales: trabajo extra no incluido en el comprobante original.
- Ajustes por diferencia de cambio: cuando la operación se facturó en moneda extranjera y la diferencia favorece al emisor.
- Penalidades contractuales: cargos por incumplimiento o rotura de garantía.