EFD Reinf - Versão 2.0

203 views
Skip to first unread message

Higor Morbini

unread,
Mar 14, 2019, 4:04:57 PM3/14/19
to NFePHP
A nível de atualizações referentes ao projeto da API do EFD Reinf, publicado uma atualização no portal do SPED no dia 11/03/2019, aonde diz:

EFD-Reinf 2.0

Foi publicada a versão 2.0 dos Leiautes da EFD-REINF.
Essa versão traz os novos eventos aonde as informações que substituirão a DIRF serão escrituradas. 
Para ter acesso à versão, clique aqui.

Junto com o ato declaratório: 
EFD-Reinf 2.0
Foi publicado no Diário Oficial da União, de 11/03/2019, ATO DECLARATÓRIO EXECUTIVO COFIS Nº 10, DE 07 DE MARÇO DE 2019, que aprova a versão 2.0 dos leiautes dos arquivos que compõem a Escrituração Fiscal Digital de Retenções e Outras Informações Fiscais - EFD-Reinf, que será exigida para os eventos ocorridos a partir da competência de janeiro de 2020.
Para ter acesso ao Ato Declaratório Executivo, clique aqui.


 

Roberto Machado

unread,
Mar 14, 2019, 5:20:18 PM3/14/19
to nfe...@googlegroups.com
Sim essa versão entra em VIGOR na competência de janeiro de 2020, até lá a versão é a 1.4.0.

Roberto

Alvaro grandems

unread,
Dec 26, 2022, 1:03:26 PM12/26/22
to NFePHP
Roberto, boa tarde!

No repositório tem essa mensagem sobre o evento R4020:
  • R-4020 Pagamentos/créditos a beneficiário pessoa jurídica (está problemas no XSD, e falta desenvolver tudo e obter xsd corrgido)
Você tem trabalhado nessa nova versão ultimamente? Existe uma previsão de atualização?


Grato,

Álvaro

Roberto Machado

unread,
Dec 26, 2022, 1:33:24 PM12/26/22
to nfe...@googlegroups.com
Alvaro;

Como está escrito, falta o XSD da Receita, sem isso não tem como desenvolver o código.
Eu não tenho uma previsão para isso, no site da Receita não tem informações, quem sabe alguma nova informação seja publicada no início do ano.

Roberto 



--
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Postar: nfe...@googlegroups.com
Para Sair do Grupo: nfephp+un...@googlegroups.com
Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositórios: https://github.com/nfephp-org
---
You received this message because you are subscribed to the Google Groups "NFePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to nfephp+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/nfephp/10e38d97-d22f-4f2f-b696-8039b67eb8f3n%40googlegroups.com.


--
Roberto
Nisi utile est quod facimus stulta est gloriae (Julius Phaedous)

Alvaro grandems

unread,
Dec 26, 2022, 2:26:54 PM12/26/22
to NFePHP
A última versão disponível no site da receita é esse: http://sped.rfb.gov.br/arquivo/download/6048.

Alvaro grandems

unread,
Dec 26, 2022, 2:28:36 PM12/26/22
to NFePHP
E a obrigação começa em março. Eu vi as falhas que você já apontou lá. Difícil a RFB deixar pra última hora.

Alvaro grandems

unread,
Dec 27, 2022, 7:51:03 AM12/27/22
to NFePHP
Roberto, bom dia!

Consegui entrar em contato com o Coordenador do EFD-Reinf e ele pediu que detalhasse os erros dos SXD apontados por você para ele corrigir ou mostrar alguma solução.

Você poderia ajudar nesse detalhamento?

Álvaro

Alvaro grandems

unread,
Dec 27, 2022, 12:36:34 PM12/27/22
to NFePHP
Roberto, o pessoal do suporte da EFD respondeu:

[14:13, 27/12/2022] +55 11 98208-6311: Álvaro, eu adiantei a análise considerando o que vc anotou acima.
Vc está com uma versão anterior.
Nós republicamos os xsd em 02/12.
Pfv, baixe os novos arquivos e tente novamente
[14:13, 27/12/2022] +55 11 98208-6311: Os erros que vc apontou estão todos corrigidos nessa versão

Para seu conhecimento.

Alvaro

Em segunda-feira, 26 de dezembro de 2022 às 15:33:24 UTC-3, linux.rlm escreveu:

Alvaro grandems

unread,
Dec 27, 2022, 12:40:44 PM12/27/22
to NFePHP
Roberto,

O coordenador da EFD da RFB respondeu sobre os XSD:


[14:13, 27/12/2022] +55 11 98208-6311: Álvaro, eu adiantei a análise considerando o que vc anotou acima.
Vc está com uma versão anterior.
Nós republicamos os xsd em 02/12.
Pfv, baixe os novos arquivos e tente novamente
[14:13, 27/12/2022] +55 11 98208-6311: Os erros que vc apontou estão todos corrigidos nessa versão

Segundo ele, todos os apontamentos foram corrigidos e publicados no início de dezembro/2022.

Obs: eu repassei os erros detectados e postados no repositório.

Álvaro
Em segunda-feira, 26 de dezembro de 2022 às 15:33:24 UTC-3, linux.rlm escreveu:

Alvaro grandems

unread,
Dec 27, 2022, 1:02:57 PM12/27/22
to NFePHP
Atualizei os XSD e parou de dar o erro e gerou o XML.

Roberto Machado

unread,
Dec 27, 2022, 4:09:50 PM12/27/22
to nfe...@googlegroups.com
Eu subi várias correções no pacote referentes a versão 2.1.1-A

Teste ai e reporte quaisquer erros, isso me ajuda a corrigir

Roberto

Alvaro grandems

unread,
Dec 29, 2022, 4:40:33 AM12/29/22
to NFePHP
Roberto,

Favor trocar no arq Fake_R4020_EvtRetPJ.php...

$std->idepgto[0]->infopgto[0]->infopgtoext->endExt->codPostal = 'codPostal';

por 

$std->idepgto[0]->infopgto[0]->infopgtoext->endExt->codPostal = '99999999';

Para que o teste funcione.



Álvaro

Alvaro grandems

unread,
Dec 29, 2022, 5:10:29 AM12/29/22
to NFePHP
Percebi também que somente no exemplo do R4020 não gera a assinatura no XML. Testei outros da série 2000 e 4000, todos ok.


Em terça-feira, 27 de dezembro de 2022 às 18:09:50 UTC-3, linux.rlm escreveu:

Alvaro grandems

unread,
Dec 29, 2022, 5:52:35 AM12/29/22
to NFePHP
O arq  EvtRetPJ.php tem a linha que invoca a assinatura comentada.

        $this->node->appendChild($ideEstab);
        $this->node->appendChild($ideBenef);
        $this->reinf->appendChild($this->node);
        $this->xml = $this->dom->saveXML($this->reinf);
        //$this->sign($this->evtTag);

Porém, se retirar o comentário, gera:

Este XML não é válido. 
Element '{http://www.reinf.esocial.gov.br/schemas/evt4020PagtoBeneficiarioPJ/v2_01_01} ideEstab': Missing child element(s). 
Element '{http://www.reinf.esocial.gov.br/schemas/evt4020PagtoBeneficiarioPJ/v2_01_01} ideBenef': This element is not expected.

Parece que falta o ideEstab e o ideBenef está sobrando.

Alvaro grandems

unread,
Jan 3, 2023, 5:35:36 AM1/3/23
to NFePHP
Roberto, bom dia!

O arq  EvtRetPJ.php tem a linha que invoca a assinatura comentada.

        $this->node->appendChild($ideEstab);
        $this->node->appendChild($ideBenef);
        $this->reinf->appendChild($this->node);
        $this->xml = $this->dom->saveXML($this->reinf);
        //$this->sign($this->evtTag);

Porém, se retirar o comentário, gera:

Este XML não é válido. 
Element '{http://www.reinf.esocial.gov.br/schemas/evt4020PagtoBeneficiarioPJ/v2_01_01} ideEstab': Missing child element(s). 
Element '{http://www.reinf.esocial.gov.br/schemas/evt4020PagtoBeneficiarioPJ/v2_01_01} ideBenef': This element is not expected.

Parece que falta o ideEstab e o ideBenef está sobrando.

Seria erro de layout ainda que a Receita teria que corrigir?

Álvaro

Em terça-feira, 27 de dezembro de 2022 às 18:09:50 UTC-3, linux.rlm escreveu:

Roberto Machado

unread,
Jan 3, 2023, 7:39:40 AM1/3/23
to nfe...@googlegroups.com
Isso tem que investigar no xsd desse evento.

Roberto

Alvaro grandems

unread,
Jan 3, 2023, 9:52:58 PM1/3/23
to NFePHP
Roberto, acho que consegui descobrir o que estava acontecendo.

Eu gerei um XML a partir do XSD e percebi que precisava fazer uma alteração no arquivo EvtRetPJ.php.

Teria que  trocar $this->node->appendChild($ideBenef); por $ideEstab->appendChild($ideBenef); 

no final do arquivo.

ou seja, deixar assim:

        $ideEstab->appendChild($ideBenef);
        $this->node->appendChild($ideEstab);
        $this->reinf->appendChild($this->node);
        //$this->xml = $this->dom->saveXML($this->reinf);
        $this->sign($this->evtTag);        
       
Ainda no mesmo arquivo, pela documentação do SPED seria nmBenef ao invés de nmfBenef

        $this->dom->addChild(
            $ideBenef,
            "nmfBenef", //pela documentação do SPED deveria ser nmBenef
            $nome,
            false
        );

  

Já no exemplo, só para facilitar o teste, deverá ser deixado como null o valor para 

$std->idepgto[0]->infopgto[0]->percSCP = null,

pois o valor deverá ser preenchido de 0 a 100 somente se

 $std->idepgto[0]->infopgto[0]->indFciScp = '2';




Fazendo essas alterações o evento R4020 será gerado e assinado.


Se possível, altera no repositório pra nós, por favor.

Álvaro

Roberto Machado

unread,
Jan 4, 2023, 6:56:40 AM1/4/23
to nfe...@googlegroups.com
Ajustado

--
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Postar: nfe...@googlegroups.com
Para Sair do Grupo: nfephp+un...@googlegroups.com
Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositórios: https://github.com/nfephp-org
---
You received this message because you are subscribed to the Google Groups "NFePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to nfephp+un...@googlegroups.com.

Alvaro grandems

unread,
Jan 24, 2023, 12:40:24 PM1/24/23
to NFePHP
Roberto, boa tarde!

No exemplo Fake_R4020_EvtRetPJ.php precisa trocar o código:

$std->idepgto[0]->infopgto[0]->retencoes = new stdclass();
$std->idepgto[0]->infopgto[0]->vlrBaseIR = 4324.56;
$std->idepgto[0]->infopgto[0]->vlrIR = 400.33;
$std->idepgto[0]->infopgto[0]->vlrBaseAgreg = 1000.00;
$std->idepgto[0]->infopgto[0]->vlrAgreg = 1000.00;
$std->idepgto[0]->infopgto[0]->vlrBaseCSLL = 1000.00;
$std->idepgto[0]->infopgto[0]->vlrCSLL = 1000.00;
$std->idepgto[0]->infopgto[0]->vlrBaseCofins = 1000.00;
$std->idepgto[0]->infopgto[0]->vlrCofins = 1000.00;
$std->idepgto[0]->infopgto[0]->vlrBasePP = 1000.00;
$std->idepgto[0]->infopgto[0]->vlrPP = 1000.00;


Por:

$std->idepgto[0]->infopgto[0]->retencoes = new stdclass();
$std->idepgto[0]->infopgto[0]->retencoes->vlrBaseIR = 4324.56;
$std->idepgto[0]->infopgto[0]->retencoes->vlrIR = 400.33;
$std->idepgto[0]->infopgto[0]->retencoes->vlrBaseAgreg = 1000.00;
$std->idepgto[0]->infopgto[0]->retencoes->vlrAgreg = 1000.00;
$std->idepgto[0]->infopgto[0]->retencoes->vlrBaseCSLL = 1000.00;
$std->idepgto[0]->infopgto[0]->retencoes->vlrCSLL = 1000.00;
$std->idepgto[0]->infopgto[0]->retencoes->vlrBaseCofins = 1000.00;
$std->idepgto[0]->infopgto[0]->retencoes->vlrCofins = 1000.00;
$std->idepgto[0]->infopgto[0]->retencoes->vlrBasePP = 1000.00;
$std->idepgto[0]->infopgto[0]->retencoes->vlrPP = 1000.00;

Álvaro

Alvaro grandems

unread,
Jan 25, 2023, 7:36:55 AM1/25/23
to NFePHP
Roberto, analisando o layout do evento R-4020, no tocante aos processos judiciais, temos a seguinte informação:

  45 infoProcRet infoPgto G - 0-50 - - Informações de processos relacionados a não retenção de tributos ou a depósitos judiciais.   

Então acho que deveria ser alterado o arquivo EvtRetPJ.php, onde está:

                    foreach ($info->infoprocret as $ret) {
                        $infoProcRet = $this->dom->createElement('infoProcRet');
                        $this->dom->addChild(
                            $infoProcRet,
                            "tpProcRet",
                            $ret->tpprocret,
                            true
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "nrProcRet",
                            $ret->nrprocret,
                            true
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "codSusp",
                            $ret->codsusp ?? null,
                            false
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "vlrBaseSuspIR",
                            self::format($ret->vlrbasesuspir ?? null),
                            false
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "vlrNIR",
                            self::format($ret->vlrnir ?? null),
                            false
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "vlrDepIR",
                            self::format($ret->vlrdepir ?? null),
                            false
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "vlrBaseSuspCSLL",
                            self::format($ret->vlrbasesuspcsll ?? null),
                            false
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "vlrNCSLL",
                            self::format($ret->vlrncsll ?? null),
                            false
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "vlrDepCSLL",
                            self::format($ret->vlrdepcsll ?? null),
                            false
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "vlrBaseSuspCofins",
                            self::format($ret->vlrbasesuspcofins ?? null),
                            false
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "vlrNCofins",
                            self::format($ret->vlrncofins ?? null),
                            false
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "vlrDepCofins",
                            self::format($ret->vlrdepcofins ?? null),
                            false
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "vlrBaseSuspPP",
                            self::format($ret->vlrbasesusppp ?? null),
                            false
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "vlrNPP",
                            self::format($ret->vlrnpp ?? null),
                            false
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "vlrDepPP",
                            self::format($ret->vlrdeppp ?? null),
                            false
                        );
                        $infoPgto->appendChild($infoProcRet);
                    }

Deveria ficar:

                if (!empty($info->infoprocret)) {
                    foreach ($info->infoprocret as $ret) {
                        $infoProcRet = $this->dom->createElement('infoProcRet');
                        $this->dom->addChild(
                            $infoProcRet,
                            "tpProcRet",
                            $ret->tpprocret,
                            true
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "nrProcRet",
                            $ret->nrprocret,
                            true
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "codSusp",
                            $ret->codsusp ?? null,
                            false
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "vlrBaseSuspIR",
                            self::format($ret->vlrbasesuspir ?? null),
                            false
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "vlrNIR",
                            self::format($ret->vlrnir ?? null),
                            false
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "vlrDepIR",
                            self::format($ret->vlrdepir ?? null),
                            false
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "vlrBaseSuspCSLL",
                            self::format($ret->vlrbasesuspcsll ?? null),
                            false
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "vlrNCSLL",
                            self::format($ret->vlrncsll ?? null),
                            false
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "vlrDepCSLL",
                            self::format($ret->vlrdepcsll ?? null),
                            false
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "vlrBaseSuspCofins",
                            self::format($ret->vlrbasesuspcofins ?? null),
                            false
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "vlrNCofins",
                            self::format($ret->vlrncofins ?? null),
                            false
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "vlrDepCofins",
                            self::format($ret->vlrdepcofins ?? null),
                            false
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "vlrBaseSuspPP",
                            self::format($ret->vlrbasesusppp ?? null),
                            false
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "vlrNPP",
                            self::format($ret->vlrnpp ?? null),
                            false
                        );
                        $this->dom->addChild(
                            $infoProcRet,
                            "vlrDepPP",
                            self::format($ret->vlrdeppp ?? null),
                            false
                        );
                        $infoPgto->appendChild($infoProcRet);
                    }
                }

Se não fizer essa alteração, passa a ser obrigatório informar um processo administrativo ou judicial para recolher alíquota diferenciada dos tributos e na maioria dos casos os recolhimentos são feitos pela alíquota padrão.

Concorda?

Se sim, sugiro alterar no repositório.



Álvaro

Samuel de Melo

unread,
Feb 24, 2023, 3:18:48 PM2/24/23
to NFePHP
Olá estou com erro de consulta no ambiente de homologação v 2.1
estou usando a seguinte url -> 'SOAPAction: http://sped.fazenda.gov.br/RecepcaoLoteReinf/ReceberLoteEventos'
O retorno de erro que tenho é que é para usar versão 1.05

o .json

"2.01.01": {
    "envioLote": {
      "servico": "envioLoteEventos",
      "metodo": "ReceberLoteEventos",
      "versao": "2.01.01",
      "tag_cabecalho": "",
      "tag_corpo": "ALTERAR_DADOS_XML",
      "schema": {
   
        "evtRetPF": "evt4010PagtoBeneficiarioPF-v2_01_01.xsd"
      },
      "namespaces": {
       
      }
    },
Reply all
Reply to author
Forward
0 new messages