
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
@tyagoveras/node-mde
Advanced tools
Biblioteca para consultar notas destinadas e enviar evento de manifestação do destinatário
Biblioteca para consumo dos Web Services da Sefaz de Distribuição de DF-e e Evento de Manifestação do Destinatário.
Essa biblioteca permite consultar a relação das notas fiscais emitidas contra um determinado CNPJ/CPF e realizar o envio do evento de manifestação, podendo assim, baixar o XML da NF-e.
npm i node-mde
Resumo da NF-e, NF-e, Resumo do Evento ou Evento)XML da NF-e ou o Resumo da NF-eResumo, uma NF-e ou um EventoConfirmação da Operação, Ciência da Operação, Desconhecimento da Operação ou Operação não Realizada)new DistribuicaoDFe(config)
config <Object>
pfx <Buffer> - [OPCIONAL] - Arquivo .pfx. Se o pfx não for informado, as propriedades cert e key passam a ser obrigatórias.passphrase <String> - [OPCIONAL] - Senha do arquivo .pfx.cert <Buffer | String> - [OPCIONAL] - Conteúdo do cert.pem. Essa propriedade fica obrigatória se o pfx não for informado.key <Buffer | String> - [OPCIONAL] - Conteúdo do key.pem. Essa propriedade fica obrigatória se o pfx não for informado.cUFAutor <String> - [OBRIGATÓRIO] - Código da UF do autor. Consulte a tabela códigos UF.cnpj <String> - [OPCIONAL] - CNPJ do interessado no DF-e. Se não informado um CNPJ, será obrigatório informar um CPF.cpf <String> - [OPCIONAL] - CPF do interessado no DF-e. Se não informado um CPF, será obrigatório informar um CNPJ.tpAmb <String> - [OBRIGATÓRIO] - Identificação de Ambiente. Informar '1' para Produção ou '2' para Homologação.options <Object> - [OPCIONAL]
requestOptions <AxiosRequestConfig> - [OPCIONAL]httpsOptions <AgentOptions> - [OPCIONAL]| Campo | Tipo | Tamanho | Descrição |
|---|---|---|---|
ultNSU | string | 1-15 | Último NSU recebido pelo ator. |
const { DistribuicaoDFe } = require('node-mde')
const fs = require('fs')
const distribuicao = new DistribuicaoDFe({
pfx: fs.readFileSync('./certificado.pfx'),
passphrase: 'senha',
cnpj: '12345678901234',
cUFAutor: '41',
tpAmb: '2',
})
const consulta = await distribuicao.consultaUltNSU('000000000000000')
if (consulta.error) {
throw new Error(consulta.error)
}
console.log(consulta)
// {
// data: {
// tpAmb: '2',
// verAplic: '1.5.11',
// cStat: '138',
// xMotivo: 'Documento(s) localizado(s)',
// dhResp: '2022-06-21T10:48:14-03:00',
// ultNSU: '000000000000050',
// maxNSU: '000000000000212',
// docZip: [
// {
// xml: '<resNFe xmlns:xsd="http://www.w3.org/2001/XMLSchema" ... </resNFe>',
// json: { resNFe: { ... } },
// nsu: '000000000000049',
// schema: 'resNFe_v1.01.xsd',
// },
// {
// xml: '<nfeProc versao="4.00" xmlns="http://www.portalfiscal.inf.br/nfe"> ... </nfeProc>',
// json: { nfeProc: { ... } },
// nsu: '000000000000050',
// schema: 'procNFe_v4.00.xsd',
// },
// ],
// },
// reqXml: '<?xml version="1.0" encoding="utf-8"?> ... </soap12:Body></soap12:Envelope>',
// resXml: '<?xml version="1.0" encoding="utf-8"?> ... </soap:Body></soap:Envelope>',
// status: 200,
// }
| Campo | Tipo | Tamanho | Descrição |
|---|---|---|---|
chNFe | string | 44 | Chave de acesso específica. |
const { DistribuicaoDFe } = require('node-mde')
const fs = require('fs')
const distribuicao = new DistribuicaoDFe({
pfx: fs.readFileSync('./certificado.pfx'),
passphrase: 'senha',
cnpj: '12345678901234',
cUFAutor: '41',
tpAmb: '2',
})
const consulta = await distribuicao.consultaChNFe(
'41000000000000000000000000000000000000000039'
)
if (consulta.error) {
throw new Error(consulta.error)
}
console.log(consulta)
// {
// data: {
// tpAmb: '2',
// verAplic: '1.5.11',
// cStat: '138',
// xMotivo: 'Documento localizado',
// dhResp: '2022-06-21T10:49:21-03:00',
// ultNSU: '',
// maxNSU: '',
// docZip: [
// {
// xml: '<nfeProc versao="4.00" xmlns="http://www.portalfiscal.inf.br/nfe"> ... </nfeProc>',
// json: { nfeProc: { ... } },
// nsu: '000000000000050',
// schema: 'procNFe_v4.00.xsd',
// },
// ],
// },
// reqXml: '<?xml version="1.0" encoding="utf-8"?> ... </soap12:Body></soap12:Envelope>',
// resXml: '<?xml version="1.0" encoding="utf-8"?> ... </soap:Body></soap:Envelope>',
// status: 200,
// }
| Campo | Tipo | Tamanho | Descrição |
|---|---|---|---|
NSU | string | 1-15 | Número Sequencial Único específico. |
const { DistribuicaoDFe } = require('node-mde')
const fs = require('fs')
const distribuicao = new DistribuicaoDFe({
pfx: fs.readFileSync('./certificado.pfx'),
passphrase: 'senha',
cnpj: '12345678901234',
cUFAutor: '41',
tpAmb: '2',
})
const consulta = await distribuicao.consultaNSU('000000000000049')
if (consulta.error) {
throw new Error(consulta.error)
}
console.log(consulta)
// {
// data: {
// tpAmb: '2',
// verAplic: '1.5.11',
// cStat: '138',
// xMotivo: 'Documento localizado',
// dhResp: '2022-06-21T10:50:46-03:00',
// ultNSU: '000000000000049',
// maxNSU: '000000000000212',
// docZip: [
// {
// xml: '<resNFe xmlns:xsd="http://www.w3.org/2001/XMLSchema" ... </resNFe>',
// json: { resNFe: { ... } },
// nsu: '000000000000049',
// schema: 'resNFe_v1.01.xsd',
// },
// ],
// },
// reqXml: '<?xml version="1.0" encoding="utf-8"?> ... </soap12:Body></soap12:Envelope>',
// resXml: '<?xml version="1.0" encoding="utf-8"?> ... </soap:Body></soap:Envelope>',
// status: 200,
// }
new DistribuicaoCTe(config)
config <Object>
DistribuicaoDFe para certificado A1.const { DistribuicaoCTe } = require('node-mde')
const fs = require('fs')
const distribuicao = new DistribuicaoCTe({
pfx: fs.readFileSync('./certificado.pfx'),
passphrase: 'senha',
cnpj: '12345678901234',
cUFAutor: '41',
tpAmb: '2',
})
const consulta = await distribuicao.consultaUltNSU('000000000000000')
if (consulta.error) {
throw new Error(consulta.error)
}
console.log(consulta)
new DistribuicaoMDFe(config)
config <Object>
DistribuicaoDFe para certificado A1.const { DistribuicaoMDFe } = require('node-mde')
const fs = require('fs')
const distribuicao = new DistribuicaoMDFe({
pfx: fs.readFileSync('./certificado.pfx'),
passphrase: 'senha',
cnpj: '12345678901234',
cUFAutor: '41',
tpAmb: '2',
})
const consulta = await distribuicao.consultaUltNSU('000000000000000')
if (consulta.error) {
throw new Error(consulta.error)
}
console.log(consulta)
new RecepcaoEvento(config)
config <Object>
pfx <Buffer> - [OPCIONAL] - Arquivo .pfx. Se o pfx não for informado, as propriedades cert e key passam a ser obrigatórias.passphrase <String> - [OPCIONAL] - Senha do arquivo .pfx.cert <Buffer | String> - [OPCIONAL] - Conteúdo do cert.pem. Essa propriedade fica obrigatória se o pfx não for informado.key <Buffer | String> - [OPCIONAL] - Conteúdo do key.pem. Essa propriedade fica obrigatória se o pfx não for informado.cnpj <String> - [OPCIONAL] - CNPJ do interessado no DF-e. Se não informado um CNPJ, será obrigatório informar um CPF.cpf <String> - [OPCIONAL] - CPF do interessado no DF-e. Se não informado um CPF, será obrigatório informar um CNPJ.tpAmb <String> - [OBRIGATÓRIO] - Identificação de Ambiente. Informar '1' para Produção ou '2' para Homologação.timezone <String> - [OPCIONAL] - Fuso horário do autor. É utilizado 'America/Sao_Paulo' como valor padrão. Consulte a tabela lista de timezones válidos para o Brasil.options <Object> - [OPCIONAL]
requestOptions <AxiosRequestConfig> - [OPCIONAL]httpsOptions <AgentOptions> - [OPCIONAL]| Campo | Tipo | Tamanho | Descrição |
|---|---|---|---|
idLote | string | 1-15 | Identificador de controle do Lote de envio do Evento. |
lote | array | 1-20 | Lista de eventos para manifestação. |
lote.chNFe | string | 44 | Chave de Acesso da NF-e vinculada ao Evento. |
lote.tpEvento | number | 6 | Código do evento: 210200 - Confirmacao da Operacao; 210210 - Ciencia da Operacao; 210220 - Desconhecimento da Operacao; 210240 - Operacao nao Realizada. |
lote.justificativa | string | 15-255 | Informar a justificativa do porque a operação não foi realizada, este campo deve ser informado somente no evento de Operação não Realizada. |
const { RecepcaoEvento } = require('node-mde')
const fs = require('fs')
const recepcao = new RecepcaoEvento({
pfx: fs.readFileSync('./certificado.pfx'),
passphrase: 'senha',
cnpj: '12345678901234',
tpAmb: '2',
})
const lote = [
{
chNFe: '41000000000000000000000000000000000000000040',
tipoEvento: 210210,
},
{
chNFe: '41000000000000000000000000000000000000000041',
tipoEvento: 210240,
justificativa: 'Não foi realizado a entrega correta dos itens da nota.',
},
]
const manifestacao = await recepcao.enviarEvento({
idLote: '1337',
lote: lote,
})
if (manifestacao.error) {
throw new Error(manifestacao.error)
}
console.log(manifestacao)
// {
// data: {
// idLote: '1337',
// tpAmb: '2',
// verAplic: 'AN_1.4.3',
// cOrgao: '91',
// cStat: '128',
// xMotivo: 'Lote de evento processado',
// infEvento: [
// {
// tpAmb: '2',
// verAplic: 'AN_1.4.3',
// cOrgao: '91',
// cStat: '596',
// xMotivo: 'Rejeicao: Evento apresentado apos o prazo permitido para o evento: [10 dias]',
// chNFe: '41000000000000000000000000000000000000000040',
// tpEvento: '210210',
// xEvento: 'Ciencia da Operacao',
// nSeqEvento: '1',
// CNPJDest: '',
// dhRegEvento: '2022-06-21T11:20:10-03:00',
// nProt: ''
// },
// {
// tpAmb: '2',
// verAplic: 'AN_1.4.3',
// cOrgao: '91',
// cStat: '135',
// xMotivo: 'Evento registrado e vinculado a NF-e',
// chNFe: '41000000000000000000000000000000000000000041',
// tpEvento: '210240',
// xEvento: 'Operacao nao Realizada',
// nSeqEvento: '1',
// CNPJDest: '12345678901234',
// dhRegEvento: '2022-06-21T11:20:10-03:00',
// nProt: '891220000003301'
// },
// ],
// },
// reqXml: '<?xml version="1.0" encoding="utf-8"?> ... </soap12:Body></soap12:Envelope>',
// resXml: '<?xml version="1.0" encoding="utf-8"?> ... </soap:Body></soap:Envelope>',
// status: 200,
// }
| UF | cUF | Estado |
|---|---|---|
RO | 11 | Rondônia |
AC | 12 | Acre |
AM | 13 | Amazonas |
RR | 14 | Roraima |
PA | 15 | Pará |
AP | 16 | Amapá |
TO | 17 | Tocantins |
MA | 21 | Maranhão |
PI | 22 | Piauí |
CE | 23 | Ceará |
RN | 24 | Rio Grande do Norte |
PB | 25 | Paraíba |
PE | 26 | Pernambuco |
AL | 27 | Alagoas |
SE | 28 | Sergipe |
BA | 29 | Bahia |
MG | 31 | Minas Gerais |
ES | 32 | Espírito Santo |
RJ | 33 | Rio de Janeiro |
SP | 35 | São Paulo |
PR | 41 | Paraná |
SC | 42 | Santa Catarina |
RS | 43 | Rio Grande do Sul |
MS | 50 | Mato Grosso do Sul |
MT | 51 | Mato Grosso |
GO | 52 | Goiás |
DF | 53 | Distrito Federal |
| timezone | Estado | UTC |
|---|---|---|
America/Noronha | Fernando de Noronha | −02:00 |
America/Araguaina | TO | −03:00 |
America/Bahia | BA | −03:00 |
America/Belem | AP, PA (leste) | −03:00 |
America/Fortaleza | CE, MA, PB, PI, RN | −03:00 |
America/Maceio | AL, SE | −03:00 |
America/Recife | PE | −03:00 |
America/Santarem | PA (oeste) | −03:00 |
America/Sao_Paulo | DF, ES, GO, MG, PR, RJ, RS, SC, SP | −03:00 |
America/Boa_Vista | RR | −04:00 |
America/Campo_Grande | MS | −04:00 |
America/Cuiaba | MT | −04:00 |
America/Manaus | AM (leste) | −04:00 |
America/Porto_Velho | RO | −04:00 |
America/Eirunepe | AM (oeste) | −05:00 |
America/Rio_Branco | AC | −05:00 |
FAQs
Biblioteca para consultar notas destinadas e enviar evento de manifestação do destinatário
We found that @tyagoveras/node-mde demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.