Pular para o conteúdo principal
Este guia mostra como importar dados de transações de fontes externas para o Matcher para conciliação.

Formatos aceitos


O Matcher aceita arquivos de transações em três formatos de uso geral:
  • CSV: valores separados por vírgula com cabeçalhos. O mais comum para exportações bancárias.
  • JSON: array de objetos de transação. Melhor para integrações de API.
  • XML: elementos estruturados. Comum em sistemas corporativos.
Além desses, o endpoint de upload também aceita formatos bancários especializados como camt053 e as chaves de descritor com namespace do catálogo de formatos (CNAB, layouts de adquirente). Veja Formatos de importação para o catálogo completo.

Requisitos de estrutura do arquivo


Cada arquivo deve conter registros de transações com campos que você possa mapear para o schema interno do Matcher.

Campos obrigatórios

Cada transação deve ter estes campos (ou equivalentes mapeáveis):

Campos opcionais

O Matcher guarda as colunas não mapeadas como metadados da transação.

Coluna de débito e crédito

Alguns arquivos marcam cada linha como débito ou crédito em uma coluna separada. Para ler o sinal dessa coluna, mapeie a chave opcional direction para um objeto {column, debit, credit}:
Uma linha de débito é importada com valor negativo, e uma linha de crédito é importada com valor positivo. Com direction mapeada, a coluna de valor deve vir sem sinal. Um valor com sinal, uma célula de direção vazia ou um valor de direção desconhecido rejeita a linha. O Matcher lê direction apenas em arquivos CSV, JSON e XML.

Exemplos de formato


CSV

Requisitos do CSV:
  • A primeira linha deve ser o cabeçalho das colunas
  • Codificação UTF-8 e delimitador vírgula por padrão (configuráveis)
  • Coloque entre aspas os campos que contêm vírgulas ou quebras de linha
Exemplo de código

JSON

Requisitos do JSON:
  • Um array de objetos ou um único objeto
  • Nomes de campo consistentes entre os objetos
  • Codificação UTF-8 por padrão (configurável)
Exemplo de código

XML

Requisitos do XML:
  • XML bem formado
  • Elementos de registro chamados transaction, row, record, item ou entry
  • Codificação UTF-8 por padrão (configurável)
Exemplo de código

Upload pela API


Use o endpoint de importação para enviar arquivos de transações.

Pré-visualize antes de enviar

Antes de confirmar um arquivo para ingestão, você pode pré-visualizá-lo para conferir a detecção de colunas e uma amostra dos dados. Isso ajuda a pegar problemas de mapeamento de campos cedo.
cURL

Resposta

Referência da API: Pré-visualizar arquivo

Upload de um único arquivo

cURL
Envie o campo format antes da parte file. Se file chega primeiro, o Matcher infere o formato pela extensão do nome do arquivo apenas para .csv e .json. O Matcher nunca infere .xml, porque é uma família de formatos que cobre XML puro e camt.053. Envie o campo format explícito para XML. Sem ele, o Matcher rejeita o upload.
O Matcher interpreta e armazena o arquivo inteiro dentro da requisição de upload. O upload retorna 202 Accepted com o job concluído. Quando a importação falha, o Matcher responde com um erro em vez do job. O Matcher lê uma chave de idempotência apenas do header X-Idempotency, e apenas quando você envia uma. Uma requisição que traz uma chave apenas em X-Idempotency-Key ou Idempotency-Key é recusada com 400 (MTCH-0015), e nada é processado. Uma resposta repetida traz o header X-Idempotency-Replayed.
O limite padrão de upload é 1 GiB. Ele conta todo o corpo da requisição, incluindo cada parte, header de parte e boundary, não apenas o arquivo.
O Matcher recusa um upload maior que o limite de upload com 413 (MTCH-0010). Ele recusa um upload que para de enviar dados por tempo demais com 408 (MTCH-0311).
Referência da API: Enviar arquivo

Resposta

Verificar o status da importação

cURL
Referência da API: Obter status da importação

Resposta (em processamento)

Resposta (concluída)

Os erros de parsing/normalização por linha não ficam embutidos no job. Quando completedWithErrors é true (ou o job está FAILED), busque os detalhes em GET /v1/imports/contexts/{contextId}/jobs/{jobId}/errors (limitado a 100 linhas armazenadas, com a contagem em totalErrors/truncated). Para um job FAILED por inteiro, diagnosis traz um motivo seguro de uma linha.
reviewRows conta as linhas com external_id vazio que o Matcher importa com status PENDING_REVIEW. Isso acontece quando a fonte define blank_external_id como NEEDS_REVIEW no seu config. Com o padrão, REJECT, um external_id vazio faz a linha falhar.

Valores de status do job de importação

Validação e tratamento de erros


O Matcher valida os arquivos enviados em várias etapas.

Etapas de validação

1

Validação de formato

Verifica se o arquivo é um CSV, JSON ou XML válido com a estrutura correta.
2

Validação de schema

Confere se os campos obrigatórios estão presentes e batem com o mapa de campos configurado.
3

Validação de tipo de dado

Valida se os valores são decimais válidos, se as datas podem ser interpretadas e se as moedas são códigos ISO válidos.

Erros comuns de validação

Cada erro de linha traz o número da linha, o campo quando houver um e uma mensagem. Mensagens comuns:

Tratamento de erros

Por padrão, o Matcher importa as linhas válidas mesmo se algumas linhas têm erros. Para fazer o job falhar quando as linhas com falha passam de um percentual, defina fail_on_error_rate_percent (de 1 a 99) no config da fonte.

Detecção de duplicatas


O Matcher detecta e trata transações duplicadas automaticamente para evitar contagem em dobro.

Como as duplicatas são detectadas

Por padrão, uma linha é duplicata quando repete o external_id de uma linha da mesma fonte, dentro do mesmo upload ou contra dados já persistidos. Para detectar duplicatas por outros campos, defina duplicate_key no config da fonte. O valor é uma lista ordenada de nomes do mapeamento de campos, como ["external_id", "amount"].

Opções de tratamento de duplicatas

Defina a chave duplicate_policy no config da fonte para controlar o tratamento: Quando duplicate_policy está ausente, vale FLAG_AS_EXCEPTION.

Ver os detalhes das duplicatas

O resumo da importação mostra o número de duplicatas:

Uploads em lote


Para jobs grandes de conciliação, você pode enviar vários arquivos em sequência.

Enviar vários arquivos

Aguarde todas as importações

Antes de rodar a correspondência, garanta que todas as importações terminaram.

Buscar as transações enviadas


Depois de importar os arquivos, você pode buscar em todas as transações de um contexto para conferir a qualidade dos dados ou investigar registros específicos.
cURL

Resposta

Referência da API: Buscar transações
Os filtros aceitos incluem amount_min, amount_max, date_from, date_to, currency, source_id, status, a correspondência exata de external_id pelo parâmetro reference e a busca em texto livre pelo parâmetro q.

Boas práticas


Verifique o formato e a codificação do arquivo localmente antes de enviar. Isso pega erros óbvios mais rápido.
Padronize o formato ISO 8601 (YYYY-MM-DD ou YYYY-MM-DDTHH:MM:SSZ) em todas as fontes para evitar problemas de interpretação.
Sempre inclua IDs únicos de transação do sistema de origem. Isso permite uma detecção de duplicatas correta e trilhas de auditoria.
Defina uma convenção (negativo para débitos, positivo para créditos) e aplique-a de forma consistente. Quando um arquivo marca débitos e créditos em uma coluna separada, mapeie essa coluna com a chave direction em vez disso.
Para arquivos maiores que 50 MB, considere dividi-los em pedaços menores por intervalo de datas. Essa é uma recomendação de confiabilidade, não o limite de upload, e permite novas tentativas parciais.
Para conciliação recorrente, automatize os uploads de arquivo usando jobs agendados.

Próximos passos


Revisão de correspondências

Veja como interpretar os resultados de correspondência e as pontuações de confiança.

Mapeamento de campos

Configure como os campos da fonte mapeiam para o schema do Matcher.