Skip to content
↑↓ navigate ↵ open Esc close
Resource · E33

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

POST /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

debit-note.sh
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": []
}'
debit-note.ts
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

response.json
{
"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.

Next steps

Next step

Continue here