Debit notes API
The /debit-notes resource issues debit notes (E33) that increase the amount of a previous document. Useful for late-payment interest, additional service charges, or subsequent adjustments that add to the recipient's balance.
Overview
A debit note is linked to an original document (E31 or E32) and adds lines with an additional charge. The DGII recognises the document as a supplement to the original for ITBIS and accounting reconciliation purposes.
Available operations
-
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 Stable 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.
| Name | Type | Description |
|---|---|---|
pageNumber query | integer Optional | Página solicitada. Por defecto 1. |
pageSize query | integer Optional | Tamaño de página. Por defecto 10. La API no impone un máximo. |
search query | string Optional | Filtra por número, RNC del receptor o por el e-CF original referenciado. |
/api/v1/debit-notes/{id} X-Api-Key Stable Devuelve el detalle completo de una nota de débito (E33).
| Name | Type | Description |
|---|---|---|
id path | string (uuid) Required | Identificador de la nota. |
/api/v1/debit-notes X-Api-Key Stable Emite una nota de débito (E33) referenciando un comprobante original.
| Name | Type | Description |
|---|---|---|
branchId body | string (uuid) Required | Identificador de la sucursal emisora dentro del espacio de trabajo. |
sequence body | string Optional | 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 Optional | Referencia externa libre del emisor (orden, ticket, ID en tu sistema). |
issuedAt body | string (ISO 8601) Required | Fecha de emisión de la nota. |
paymentTermId body | integer Required | Identificador del término de pago aplicable. |
limitDate body | string (ISO 8601) Required | Fecha límite asociada al término de pago. |
customerId body | string (uuid) Optional | Receptor de la nota. Obligatorio si el comprobante original era E31. |
currencyId body | integer Required | Identificador de la moneda de la nota. |
currencyRate body | decimal Required | Tasa de cambio aplicada (1 cuando la moneda coincide con DOP). |
freight body | decimal Optional | Monto del flete o transporte cuando aplica. |
notes body | string Optional | Notas libres impresas en la nota. |
referenceCreatedAt body | string (ISO 8601) Required | Fecha de emisión del comprobante original (E31 o E32) sobre el que se aplica el cargo. |
referenceSequence body | string Required | 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 Required | Código DGII del motivo. `1` anula el comprobante original, `2` corrige texto y `3` corrige montos. |
lines body | V1LineDto[] Required | Líneas con el cargo adicional (intereses, mora, ajuste por diferencia de cambio). |
payments body | V1PaymentDto[] Optional | Pagos asociados a la nota. Suele ir vacío en notas de débito. |
Example: issue a debit note
The request body mirrors an invoice: lines with quantities, prices and taxes. The difference is in the reference fields: referenceSequence with the original NCF, referenceCreatedAt with its issue date, and modificationCode with the reason for the adjustment per DGII rules. Valid codes are 1 (cancels the original document), 2 (Corrige Texto, text-only correction with no amount change) and 3 (Corrige Monto, numeric adjustment to the balance); all four use cases below map to code 3. The lines describe the additional charge with their associated taxes. The sequence field is ignored: the note always takes the next NCF from the active sequence. If no document exists with that referenceSequence, the API responds 404 with { message }. Note that /credit-notes and /debit-notes list the same mix of credit and debit notes.
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();Response
{ "documentId": "9b2f4c6d-1e3a-4b5c-8d7e-6f0a1b2c3d4e", "consultationUrl": "https://ecf.dgii.gov.do/ecf/ConsultaTimbre?RNCEmisor=131000001&ENCF=E330000000001&…"}When to issue a debit note
- Late-payment interest: the recipient pays after the agreed date.
- Additional service charges: extra work not included in the original document.
- Exchange-rate adjustments: when the transaction was invoiced in foreign currency and the difference favours the issuer.
- Contractual penalties: charges for non-compliance or warranty breach.