Resulth Checkout: Rejeição - 865: Ajuste de Divergência entre Pagamentos e Total da Nota.

Criado por Bruno Ferreira em 24/02/2026 21:32  ·  Atualizado em 24/02/2026 21:33  ·  Leitura: 7 min

Situação: 

Ao transmitir um cupom fiscal no Checkout, é dado a seguinte rejeição:  Rejeição 865: Total dos pagamentos menor que o total da nota.

sso ocorre devido a inconsistência na gravação dos campos referentes a forma de pagamento na tabela ENCEFAT, onde o valor total das formas de pagamento fica menor que o valor da nota na tabela NFSAIDC.

Solução

Para a solução, siga os passos abaixo. Antes disso, lembre-se de realizar um backup do banco do Checkout e do banco da API. Caso ocorra rejeição na forma de pagamento PIX, o update específico encontra-se ao final do documento. 

Lembre-se de alterar o CODEMPRESA, a SÉRIE e a DATA de acordo com a correção desejada. Essas três condições foram incluídas para evitar que outros cupons sejam alterados de forma incorreta.


Caso seja necessário definir um intervalo de datas, utilize o BETWEEN, por exemplo:

BETWEEN '01.01.2026' AND '05.01.2026'.


Se precisar trabalhar com datas específicas em um único update, utilize o IN, por exemplo:

IN ('01.01.2026', '02.01.2026', '05.01.2026').


1. Preparação e Alteração de Status


O primeiro passo é marcar os cupons que precisam de correção. O script abaixo altera o status para 'R' (Reprocessar) na tabela COMPLNFCE, vinculando com a data de emissão da nota.

Este primeiro update é essencial, pois ajusta os status de todos os registros que estiverem diferentes de 'A'. Os próximos updates só serão aplicados aos cupons com status 'R', garantindo que não ocorram alterações indevidas em cupons que não têm relação.


UPDATE COMPLNFCE CP

SET CP.STATUS = 'R'

WHERE CP.CODEMPRESA = '00'   

  AND CP.SERIE = '21'         

  AND CP.STATUS <> 'A'      

  AND EXISTS (

      SELECT 1 FROM NFSAIDC N 

      WHERE N.NUMNF = CP.NUMNFCE 

        AND N.SERIE = CP.SERIE 

        AND N.CODEMPRESA = CP.CODEMPRESA

        AND N.DT_EMISSAO = '27.01.2026'

  );



2. Correção das Parcelas (CONVENCEFAT)

Para evitar travamentos no Firebird 2.5, utilizamos o comando MERGE. Ele sincroniza o campo VALOR com o TOTALNF da nota de origem.


 MERGE INTO CONVENCEFAT C

USING (

    SELECT N.TOTALNF, N.CODPEDIDO, N.CODEMPRESA

    FROM NFSAIDC N

    INNER JOIN COMPLNFCE CP ON (N.NUMNF = CP.NUMNFCE AND N.SERIE = CP.SERIE AND N.CODEMPRESA = CP.CODEMPRESA)

    WHERE CP.STATUS = 'R'

      AND CP.CODEMPRESA = '00'

      AND CP.SERIE = '21'

      AND N.DT_EMISSAO = '27.01.2026'

) src

ON (C.CODPEDIDO = src.CODPEDIDO AND C.CODEMPRESA = src.CODEMPRESA)

WHEN MATCHED THEN

    UPDATE SET C.VALOR = src.TOTALNF;



3. Correção da ENCEFAT 

Este comando corrige todos os campos de valor (VLR...). A lógica identifica qual forma de pagamento foi usada e atualiza apenas o campo que contém valor maior que zero.



    MERGE INTO ENCEFAT E

USING (

    SELECT N.TOTALNF, N.CODPEDIDO, N.CODEMPRESA

    FROM NFSAIDC N

    INNER JOIN COMPLNFCE CP ON (N.NUMNF = CP.NUMNFCE AND N.SERIE = CP.SERIE AND N.CODEMPRESA = CP.CODEMPRESA)

    WHERE CP.STATUS = 'R'

      AND CP.CODEMPRESA = '00'

      AND CP.SERIE = '21'

      AND N.DT_EMISSAO = '27.01.2026'

) src

ON (E.CODPEDIDO = src.CODPEDIDO AND E.CODEMPRESA = src.CODEMPRESA)

WHEN MATCHED THEN

    UPDATE SET 

        E.VLRCONVENIO   = CASE WHEN E.VLRCONVENIO > 0   THEN src.TOTALNF ELSE E.VLRCONVENIO END,

        E.VLRDINHEIRO   = CASE WHEN E.VLRDINHEIRO > 0   THEN src.TOTALNF ELSE E.VLRDINHEIRO END,

        E.VLRCARTAO     = CASE WHEN E.VLRCARTAO > 0     THEN src.TOTALNF ELSE E.VLRCARTAO END,

        E.VLRCHEQUE     = CASE WHEN E.VLRCHEQUE > 0     THEN src.TOTALNF ELSE E.VLRCHEQUE END,

        E.VLRTICKET     = CASE WHEN E.VLRTICKET > 0     THEN src.TOTALNF ELSE E.VLRTICKET END,

        E.VLRRECEBER    = CASE WHEN E.VLRRECEBER > 0    THEN src.TOTALNF ELSE E.VLRRECEBER END,

        E.VLRBANCO      = CASE WHEN E.VLRBANCO > 0      THEN src.TOTALNF ELSE E.VLRBANCO END,

        E.VLRCHPREDATADO= CASE WHEN E.VLRCHPREDATADO > 0 THEN src.TOTALNF ELSE E.VLRCHPREDATADO END,

        E.VLRFINANC     = CASE WHEN E.VLRFINANC > 0     THEN src.TOTALNF ELSE E.VLRFINANC END,

        E.VLRCTF        = CASE WHEN E.VLRCTF > 0        THEN src.TOTALNF ELSE E.VLRCTF END;



Observação Importante: Rejeição no PIX


Caso a rejeição ocorra especificamente em vendas via PIX, o valor divergente estará na tabela PAGAMENTODIGITAL. Para resolver, basta rodar o update específico abaixo após realizar o Passo 1:


MERGE INTO PAGAMENTODIGITAL PD

USING (

    SELECT N.TOTALNF, N.CODPEDIDO, N.CODEMPRESA

    FROM NFSAIDC N

    INNER JOIN COMPLNFCE CP ON (N.NUMNF = CP.NUMNFCE AND N.SERIE = CP.SERIE AND N.CODEMPRESA = CP.CODEMPRESA)

    WHERE CP.STATUS = 'R'

      AND CP.CODEMPRESA = '00'

      AND CP.SERIE = '21'

      AND N.DT_EMISSAO = '28.01.2026'

) src

ON (PD.CODPEDIDO = src.CODPEDIDO AND PD.CODEMPRESA = src.CODEMPRESA)

WHEN MATCHED THEN

    UPDATE SET PD.VALOR = src.TOTALNF;

Qualquer duvida, tem um vídeo demonstrando o passo a passo: https://jam.dev/c/cef4c561-cbb8-463d-8097-49224259a907



 

Bruno Ferreira
Desenvolvedor
Central de Atendimento
(31) 2112-3700

atsinformatica.com.br