Ir al contenido
Documentación

Facturar

Corregir o anular una factura

Una factura que la DGII aceptó no se edita ni se borra. Para anularla o cambiar sus montos, emites una nota que la modifica: una nota de crédito (E34) para anularla o reducir lo facturado, o una nota de débito (E33) para aumentarlo. Cada nota es una factura más en /v1/invoices, con su propio invoiceId y su propio e-NCF.

La nota indica la factura original en originalInvoiceId, el código de modificación y el motivo. Sus artículos son los montos que la nota corrige, no los de la factura original:

import { createTimbroInvoices } from "@timbro/invoices";
const timbro = createTimbroInvoices({ apiKey: process.env.TIMBRO_INVOICES_API_KEY! });
const creditNote = await timbro.invoices.create({
invoiceReference: "venta-842-nota-credito-1",
type: "E34",
originalInvoiceId: "f35b7ae4-c484-4c63-981e-4f0f15e913b5",
modificationCode: "3",
reason: "Devolución parcial",
currency: "DOP",
incomeType: "01",
paymentTerms: { type: "immediate" },
items: [{
description: "Servicio devuelto",
quantity: "1",
unit: "unit",
kind: "service",
unitPrice: "100.00",
tax: { kind: "itbis_18", included: true },
}],
});
Código Para qué sirve Tipos
1 Anular la factura completa E34
2 Corregir un texto, como el nombre del comprador E33 y E34
3 Corregir montos E33 y E34

La factura original debe estar aceptada. Timbro comprueba que una nota de crédito no supere el saldo que queda de la factura original, contando las notas anteriores. El motivo (reason) admite hasta 90 caracteres.

Emitir una nota no devuelve dinero. Si el cliente pagó con Timbro, reembolsa el pago y relaciona la nota con el reembolso.

Corrige una factura que no emitiste con Timbro

Sección titulada «Corrige una factura que no emitiste con Timbro»

Si la factura original se emitió con otro sistema de facturación o en papel, Timbro no tiene su invoiceId. En su lugar, envía externalOriginal con su número y su fecha de emisión:

{
"fiscalNumber": "E310000000123",
"issuedOn": "2026-08-14"
}

fiscalNumber puede ser un e-NCF o un NCF en papel. Si la original es una Factura de Consumo (E32), envía también su total, porque la DGII exige los datos del comprador en una nota contra una Factura de Consumo de RD$ 250,000.00 o más. En ese caso, envía el comprador de la factura original en externalOriginal.buyer. Si la original se emitió con otro RNC, por ejemplo antes de una fusión, envía ese RNC en issuerTaxId.

Si la API responde 422 y no devuelve un invoiceId, no se creó ninguna factura. Corrige los campos que indica el error y vuelve a llamar a invoices.create.

Si la DGII rechazó la factura (authorityRejected), o una persona administradora del negocio la cerró antes de que llegara a la DGII (closed), emite su reemplazo con invoices.replace. Envía el invoiceId de la factura rechazada y la solicitud completa ya corregida:

const replacement = await timbro.invoices.replace(
"f35b7ae4-c484-4c63-981e-4f0f15e913b5",
{
invoiceReference: "venta-842-factura-2",
type: "E32",
currency: "DOP",
incomeType: "01",
paymentTerms: { type: "immediate" },
items: [{
description: "Servicio",
quantity: "1",
unit: "unit",
kind: "service",
unitPrice: "1250.00",
tax: { kind: "itbis_18", included: true },
}],
},
);

El reemplazo tiene un invoiceId y un e-NCF nuevos, y replacesInvoiceId identifica la factura que reemplaza. Si usas source, conserva su id y envía una version nueva. Si se pierde la respuesta, repite la misma solicitud con la misma invoiceReference para recuperar el mismo reemplazo. Algunos reemplazos necesitan una autorización antes de emitirse; si es el caso, la respuesta de la API lo indica.

Un reemplazo no es una nota de crédito o de débito: sirve para una factura que nunca quedó aceptada.