Conciliação de pagamentos em cripto: associe faturas em stablecoins a encomendas

Conciliação de pagamentos em cripto: associe faturas em stablecoins a encomendas

Um pagamento com cartão chega aos seus livros através de um relatório do adquirente que já identifica a encomenda. Uma transferência de USDC chega-lhe apenas com um endereço, um montante e um hash de transação, e mais nada. A conciliação de pagamentos em cripto funciona quando a fatura contém a referência do negócio, porque a transferência não consegue fazê-lo.

Este guia destina-se às equipas financeiras e operacionais de comerciantes, PSP e EMI que aceitam stablecoins e liquidam em euros. Enumera os campos de que cada registo de fatura necessita, como tratar pagamentos parciais e pagamentos com a moeda errada, como os webhooks e a API alimentam o livro-razão, e que regras da UE determinam durante quanto tempo tudo isto deve ser conservado.

Resumo em vídeo, 119 segundos, em inglês.

Momentos-chave

Em resumo

  • Uma transferência ERC-20 contém apenas remetente, destinatário e montante. A referência da encomenda tem de constar da fatura, e não do pagamento.
  • Indique o preço da fatura em EUR e registe esse valor em euros. O montante em cripto é um número derivado que guarda para a trilha de auditoria.
  • A maior parte do trabalho está nas exceções: pagamentos parciais, faturas expiradas, a moeda errada. Reveja-as diariamente, e não no fecho do mês.
  • Use o webhook como gatilho, releia a fatura pelo ID como fonte de verdade, e extraia a lista de faturas todas as noites como rede de segurança e como origem da sua exportação CSV.

Porque é a conciliação de pagamentos em cripto mais difícil do que com cartões?#

A conciliação de pagamentos em cripto é mais difícil porque uma transferência em blockchain não tem um campo para o número da sua encomenda. Na Ethereum, o padrão de token ERC-20 (EIP-20) define o evento de transferência como `Transfer(address _from, address _to, uint256 _value)`: quem enviou, quem recebeu e quanto. Não existe nota, número de fatura nem nome do cliente.

Os pagamentos bancários e com cartão são construídos ao contrário. Uma transferência SEPA tem um campo de informação para preenchimento pelo ordenante, e o relatório de liquidação de um adquirente lista cada transação com cartão pela referência do comerciante. O seu sistema contabilístico faz a correspondência por essa referência.

Com stablecoins, há mais três obstáculos:

  • O montante raramente é redondo. Uma fatura de 250 EUR convertida em USDC passa a ser um valor como 279,2846 USDC, pelo que duas faturas de valor semelhante podem parecer iguais.
  • O pagamento não fica final de imediato. A Ethereum produz um bloco a cada 12 segundos, mas, segundo o ethereum.org (página atualizada em outubro de 2026), «demora cerca de 15 minutos para que um bloco da Ethereum seja finalizado.» Uma transferência pode estar visível e, ainda assim, não contar.
  • Os ordenantes cometem erros. Enviam um valor insuficiente, enviam duas vezes, enviam outra moeda ou pagam depois de a fatura ter expirado.

Por isso, a ligação tem de existir antes de o ordenante pagar: uma fatura por encomenda, com o seu ID de encomenda e o seu próprio endereço de pagamento, para que cada transferência recebida caia num registo que já sabe a que se destina.

Que campos precisa cada registo de fatura em cripto?#

Cada fatura precisa de um conjunto fixo de campos que relacionem quatro elementos: a sua encomenda, o preço em euros, a transferência na blockchain e o estado final. Se algum faltar, alguém acaba por fazer a correspondência manualmente. A tabela abaixo usa os nomes dos campos da API de faturas da ItisPay; outros prestadores usam nomes diferentes para as mesmas ideias.

CampoO que contémPorque é que a contabilidade precisa dele
invoice_idID único atribuído pelo prestadorChave primária de cada pesquisa e de cada linha do livro-razão
order_idO número da sua encomenda ou contrato, único por encomendaA ligação ao seu ERP, loja ou CRM; a referência que os cartões lhe dão gratuitamente
order_nameBreve descrição da encomendaPermite a uma pessoa verificar uma exceção sem abrir a loja
fiat_amount, fiat_currencyPreço em EURA receita que regista
currency, crypto_amountMoeda faturada e montante devidoMostra o que foi pedido ao ordenante que enviasse
actual_crypto_amount_paidO que efetivamente chegouDeteta pagamentos em falta e em excesso
currency_paidMoeda utilizada, se diferente da faturadaAssinala pagamentos com moeda errada para revisão
network, addressRede blockchain e endereço de pagamentoComprova para onde foi enviado o dinheiro; necessário para qualquer rastreio ou reembolso
transactions (tx_hash, amount, status)Uma linha por transferência recebidaUma fatura pode receber várias transferências; cada hash é a sua prova on-chain
statusnew, pending, completed, expired, cancelled, paid_partialDecide se regista, envia, cobra ou fecha
created_at, updated_at, expires_atCarimbos de data/horaCorte no fim do mês e prova de quando a encomenda foi paga

Dois destes campos fazem a maior parte do trabalho. `order_id` é a referência que uma transferência em blockchain não consegue transportar, por isso defina-a a partir do seu próprio sistema e torne-a única por encomenda, nunca por cliente. A lista `transactions` é importante porque uma fatura nem sempre é paga de uma só vez: cada transferência tem a sua própria linha com um hash e um estado, para que consiga ver quais as transferências que compõem o montante pago.

Guarde o montante em cripto com todas as casas decimais numa coluna separada. O seu livro-razão geral trabalha em cêntimos de euro; as colunas de cripto são prova, não valores contabilísticos.

Lista de faturas do ItisPay com número da encomenda, estado, montante em USDC, soma em EUR, parte recebida, rede e endereço de cada encomenda (dados de demonstração)

Que montante em euros se regista na contabilidade?#

Registe o preço em euros indicado na fatura. Quando a fatura é emitida em EUR, o prestador converte-a para um montante em criptoativos à taxa atual, e o pagador envia esse montante. Se o pagamento for liquidado em euros na sua conta, o valor em euros da fatura é a sua receita, e o montante em cripto é apenas um detalhe técnico de como o pagamento chegou.

Esta é a principal razão pela qual as equipas que aceitam pagamentos em cripto automaticamente com conversão para EUR raramente precisam de contabilidade de criptoativos: não há moeda no balanço para avaliar no fecho do mês.

A situação muda se mantiver as stablecoins. O Comité de Interpretações do IFRS decidiu em junho de 2019 que as detenções de criptomoedas se enquadram na IAS 2 (inventários) quando detidas para venda no decurso normal da atividade, e na IAS 38 (ativos intangíveis) nos restantes casos. A sua definição de criptomoeda exclui ativos que criam um contrato entre o detentor e outra parte. O USDC é diferente: a Circle declara que é "resgatável 1:1 por dólares norte-americanos" e, desde julho de 2024, a Circle emite USDC e EURC na UE como tokens de moeda eletrónica ao abrigo de uma licença de moeda eletrónica da entidade reguladora francesa ACPR. A classificação de uma stablecoin detida é uma questão para o seu auditor. Liquidar em EUR à receção deixa essa questão de lado.

Como lidar com pagamentos parciais e moedas erradas?#

Trate cada fatura que não esteja em `completed` como uma exceção, com um responsável e um prazo. A maior parte do esforço de conciliação de pagamentos em cripto concentra-se aqui; uma fatura totalmente paga concilia-se por si.

Eis o que cada estado significa para a área financeira, usando os estados do ItisPay:

EstadoO que aconteceuO que faz a área financeiraEnviar ou libertar?
newFatura aberta, nada recebidoNada a registarNão
pendingTransferência detetada, ainda não finalAguardar a mudança de estadoNão
completedPago na totalidadeRegistar a receita ao preço em EUR e libertar a encomendaSim
paid_partialParte do valor foi recebidaPedir o restante, reembolsar ou encerrar por acordoDepende
expiredO prazo expirou sem pagamento integralEncerrar a encomenda; verificar transferências tardiasNão
cancelledAnulou a faturaSem lançamento; reemitir se o cliente ainda quiser pagarNão

Pagamentos parciais#

Um pagamento parcial significa normalmente que a carteira ou a plataforma de câmbio do pagador cobrou uma comissão sobre o montante, ou que o pagador o introduziu incorretamente. O ItisPay regista cada transferência separadamente, pelo que uma segunda transferência pode completar a fatura. A fatura tem também a definição `allowed_error_percent`: uma pequena tolerância, configurada por fatura, para que um pagamento que fique ligeiramente aquém continue a contar como pago. Defina-a uma vez como política, por exemplo num nível que também aceitaria anular numa transferência bancária, e não a altere caso a caso.

Se o restante nunca chegar, decida dentro de um número fixo de dias: aceite a diferença e anule-a, reembolse o que foi recebido ou cancele a encomenda. Registe a decisão no registo da fatura, para que o auditor perceba porque é que uma encomenda paga tem menos dinheiro associado.

Moeda errada ou pagamento tardio#

Quando um pagador envia uma stablecoin diferente da faturada, o campo `currency_paid` mostra-o. Não registe automaticamente: verifique o montante e o valor em euros e depois aceite-o ou reembolse-o. Uma transferência para uma fatura expirada é semelhante. O dinheiro está na blockchain, mas a sua encomenda está encerrada, pelo que alguém tem de decidir se reabre a encomenda ou devolve os fundos. Se anular uma encomenda do seu lado, cancele a fatura através da API (uma atualização de estado), para que os seus registos a mostrem como encerrada antes de chegar qualquer pagamento tardio.

Como devem os webhooks e a API alimentar a conciliação de pagamentos em cripto?#

Use três camadas: o webhook informa que algo mudou, uma nova leitura da fatura indica o que é verdadeiro, e uma consulta noturna de todas as faturas apanha tudo o que as duas primeiras deixaram passar.

  1. Cada fatura pode ter um `callback_url`; o prestador envia para aí as atualizações de estado. Trate a mensagem como um gatilho, não como prova.
  2. Em cada webhook, chame `GET /invoices/{invoice_id}` e atue com base no estado e nos montantes dessa resposta. Isto protege-o de chamadas forjadas ou repetidas ao seu endpoint, uma vez que o pedido à API exige a sua chave de API.
  3. Torne o handler idempotente: o mesmo estado pode chegar duas vezes. Associe o lançamento no seu razão a `invoice_id` mais o estado, para que uma repetição não altere nada.
  4. Todas as noites, liste as faturas ordenadas por `updated_at`, das mais recentes para as mais antigas, e recue até à sua última execução; volte também a verificar todas as faturas que continuem em `new`, `pending` ou `paid_partial`. Compare-as com o seu razão. Qualquer fatura paga nos registos do prestador mas aberta no seu é uma exceção.

Para testes, o ItisPay disponibiliza um endpoint que simula uma mudança de estado numa fatura, e outro que reenvia o último webhook por `invoice_id` ou `order_id`. Use o reenvio quando o seu servidor esteve em baixo. As equipas que encaminham vários métodos de pagamento por uma camada de orquestração de pagamentos aplicam o mesmo padrão a todos os canais.

Cinco passos que associam um pagamento em stablecoin a uma encomenda: fatura com ID da encomenda, transferência na blockchain, webhook, nova leitura por ID da fatura, lançamento no razão em EUR

Como se cria uma exportação CSV para a contabilidade?#

Crie a exportação a partir da API de lista de faturas, com uma linha por fatura e uma linha por transferência. No ItisPay, `GET /invoices` filtra por estado, moeda e data de criação, ordena por data ou montante, e devolve até 100 faturas por página, com o número de páginas. Um pequeno script pode percorrer as páginas de um dia ou de um mês e escrever as colunas a partir da tabela de campos acima.

Dois ficheiros funcionam melhor do que um:

  • `invoices.csv`: invoice_id, order_id, fiat_amount, fiat_currency, currency, crypto_amount, actual_crypto_amount_paid, status, created_at, updated_at. É este o ficheiro que o contabilista importa e cruza com as vendas.
  • `transfers.csv`: invoice_id, tx_hash, amount, currency, transfer status, time. É o ficheiro de prova para o auditor.

Importe o ficheiro de faturas para a sua ferramenta de contabilidade da mesma forma que importaria um relatório de liquidação de cartões: uma linha por encomenda, em euros, usando o ID da encomenda como chave de correspondência.

Que regras da UE moldam os registos de pagamentos em criptoativos?#

Três regras da UE definem o contexto. Nenhuma delas torna um comerciante num prestador de serviços de criptoativos (CASP), mas determinam que dados existem e durante quanto tempo são conservados.

  • Regulamento (UE) 2023/1113 relativo às transferências de fundos. Desde 30 de dezembro de 2024, o prestador de serviços de criptoativos do ordenante deve garantir que cada transferência é acompanhada de informações sobre o ordenante e o beneficiário, como nomes e endereços em blockchain (artigo 14.º). Os dados seguem com a transferência, e não dentro dela. Para transferências superiores a 1 000 EUR de ou para uma carteira autohospedada, o prestador do lado relevante deve avaliar se essa carteira pertence ao seu próprio cliente (artigos 14.º e 16.º). Esta é a função do prestador licenciado, e é uma das razões pelas quais um pagamento pode ficar em análise.
  • Conservação de registos. Ao abrigo da atual Diretiva AML (UE) 2015/849, artigo 40.º, as entidades obrigadas conservam os registos das transações durante cinco anos após o fim da relação de negócio ou da realização da transação. O novo Regulamento AML (UE) 2024/1624 mantém o prazo de cinco anos (artigo 77.º) e é aplicável a partir de 10 de julho de 2027.
  • DAC8, Diretiva (UE) 2023/2226. A partir de 1 de janeiro de 2026, os prestadores de serviços de criptoativos comunicam às autoridades fiscais as transações em criptoativos dos seus utilizadores. Os seus próprios registos devem coincidir com o que o seu prestador comunica.

Se trabalhar através de um parceiro licenciado, é o parceiro que assume as obrigações de CASP ao abrigo do MiCA e destas regras, como se explica no nosso guia sobre a licença MiCA para CASP. Continua a ser responsável pelos seus registos de encomendas e pela parte que lhe cabe na trilha de auditoria.

Onde é que a reconciliação de criptoativos ainda precisa de uma pessoa?#

A automatização resolve o caso do pagamento integral. O restante exige um responsável identificado e uma política escrita e curta.

Onde não ajuda

  • Os reembolsos são novas transferências de saída, e não reversões. Exigem um pagamento para um endereço ou IBAN, bem como registos próprios.
  • Um pagador que envia a partir de uma conta numa exchange nem sempre pode ser identificado pelo endereço de envio. Faça a correspondência pela fatura, nunca pelo remetente.
  • Pagamentos a uma fatura expirada, pagamentos duplicados e moedas erradas exigem todos uma decisão humana.
  • As taxas de rede e os arredondamentos geram pequenas diferenças. Defina uma tolerância uma vez e mantenha-a.

Uma rotina diária de reconciliação de pagamentos em criptoativos em cinco passos#

Uma rotina diária curta torna o fecho mensal numa simples formalidade:

  1. Obtenha, a partir da API, as faturas criadas ou atualizadas desde a última execução e atualize os ficheiros de faturas e de transferências.
  2. Verifique se cada fatura `completed` tem uma encomenda paga correspondente na sua loja ou ERP, e vice-versa.
  3. Trabalhe a lista de exceções: `paid_partial`, pagamentos a faturas expiradas, moedas erradas. Feche cada uma com uma decisão escrita.
  4. Compare a liquidação em euros na sua conta bancária com a soma das faturas concluídas do período. A liquidação para um IBAN é onde os IBAN virtuais ajudam a separar fluxos por linha de negócio.
  5. Arquive ambos os ficheiros durante pelo menos cinco anos.

Se quiser aceitar stablecoins e receber euros sem construir esta infraestrutura por conta própria, a ItisPay oferece a API, a faturação e os dados de reconciliação: IDs de faturas e encomendas, hashes por transferência, estados e webhooks. O licenciamento, o KYC e a liquidação para o seu IBAN passam pelo nosso parceiro licenciado na UE, CASP + Instituição de Pagamento, e a maioria das equipas passa do KYB à primeira transação em menos de uma semana.

Este artigo tem fins exclusivamente informativos e não constitui aconselhamento jurídico ou regulamentar.

Perguntas frequentes

Um cliente pode colocar um número de encomenda numa transferência de USDC?

Não numa transferência ERC-20 padrão: esta transporta apenas remetente, destinatário e montante. Coloque o número de encomenda na fatura e atribua a cada fatura o seu próprio endereço de pagamento.

O que acontece se um cliente pagar a mesma fatura duas vezes?

A segunda transferência aparece como uma transação extra na fatura, pelo que o montante pago é superior ao preço. Trate-a como uma exceção de pagamento a mais: confirme com o cliente e, em seguida, reembolse o montante extra como uma nova transferência de saída e registe-o na mesma fatura.

Devemos registar o montante em criptoativos ou em euros?

Registe o preço em euros constante da fatura quando o pagamento for liquidado em euros. Mantenha o montante em criptoativos, a moeda, a rede e o hash da transação em colunas separadas, como prova. Se, em vez disso, detiver as stablecoins, acorde primeiro com o seu auditor o tratamento contabilístico.

Durante quanto tempo devem ser conservados os registos de pagamentos em criptoativos?

Planeie pelo menos cinco anos. É este o prazo que as regras da UE contra o branqueamento de capitais fixam para os registos de transações conservados pelas entidades obrigadas, e a legislação fiscal nacional pode exigir prazos mais longos. Conserve em conjunto o ficheiro de faturas, o ficheiro de transferências e as decisões sobre exceções.

Os pagamentos em stablecoins podem ser registados no Xero, NetSuite ou QuickBooks?

Sim, através de um ficheiro importado. Exporte uma linha por fatura paga, em euros, com o ID da encomenda, e importe-o da mesma forma que importa um relatório de liquidação de cartões. Os hashes das transações vão para um ficheiro de prova separado.

Nik Perkov

Nik Perkov

Founder, ItisPay

Share this article:

The newsletter for crypto entrepreneurs

Join founders and innovators exploring crypto payments. Get insights, product updates, and stories from businesses building the future of digital commerce.

Unsubscribe anytime. By entering your email, you agree to receive marketing emails from ItisPay. By proceeding, you agree to the Terms and Conditions and Privacy Policy.

Ready to launch stablecoin-first payments under your brand?

Stablecoin-first infrastructure with 1:1 EUR/USD backing. Deploy in 1 week. Built for high-volume PSPs and neobanks with zero volatility risk.