v0.3.0
What's Changed
correct()— files an electronic correction letter (CC-e) against an authorized invoiceinvalidate()— regularizes a range of numbers that was reserved and never usedidempotencyKeyonissue()andreissue()— makes a retry safe
correct() — correction letter (CC-e)
Fixes an already authorized invoice without cancelling and issuing again. It consumes no credit and burns no number in the series.
const result = await invoice.correct(
"35240912345678000199550010000000011000000017",
{
documentType: DocumentType.NFE,
correction: "Carrier corrected to Rapido Ltda",
}
);Text between 15 and 1000 characters, checked locally. It cannot correct anything that changes the tax, the issuer, the recipient or the date — those still mean cancelling and issuing again. NF-e only.
invalidate() — invalidate a number range
Regularizes numbering that was reserved and never used, which is the gap an audit looks for.
const result = await invoice.invalidate({
series: "1",
numberStart: 10,
numberEnd: 12,
reason: "Numbering reserved and left unused after an ERP failure",
});Reason between 15 and 255 characters, range inclusive, both checked locally. A number that already reached the tax authority cannot be invalidated — the API answers 409 naming which ones.
idempotencyKey on issue() and reissue()
Issuing is the call you must not repeat blindly: if the response is lost, the document may have been authorized already, and a second attempt issues a second invoice.
const result = await invoice.issue({ ..., idempotencyKey: randomUUID() });Repeat with the same key and the same body and you get the first response back — no second document, no credit spent. Keys last 24 hours. The SDK never generates the key for you: a key generated per call would protect nothing, because the retry would generate another one.
Nothing was removed and no signature changed.
Full Changelog: v0.2.0...v0.3.0