> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Fontes externas

> Conecte bancos, gateways de pagamento como Stripe e Adyen, ERPs como SAP ou Oracle e bandeiras de cartão ao Matcher pelos tipos LEDGER, BANK, GATEWAY ou CUSTOM.

As fontes externas fornecem dados de transações de sistemas fora da sua organização. Este guia cobre como conectar bancos, gateways de pagamento e outros sistemas externos ao Matcher.

## Tipos de fonte com suporte

***

O Matcher oferece suporte a cinco tipos de fonte. Cada um representa uma categoria de origem de dados:

| Tipo      | Descrição                       | Uso típico                                                 |
| --------- | ------------------------------- | ---------------------------------------------------------- |
| `LEDGER`  | Ledger interno                  | Sistemas contábeis internos (incluindo o Midaz)            |
| `BANK`    | Feed de extrato bancário        | Feeds bancários externos                                   |
| `GATEWAY` | Gateway de pagamento            | Processadores de pagamento (Stripe, Adyen, PayPal)         |
| `CUSTOM`  | Feed sob medida                 | ERPs, bandeiras de cartão ou qualquer outra fonte de dados |
| `FETCHER` | Extração do motor de descoberta | Conexões de agregador puxadas automaticamente              |

## Métodos de ingestão

***

Os dados de transações chegam ao Matcher por vários caminhos:

| Método                      | Caso de uso                                                                                                                                           |
| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Upload de arquivo**       | Envios manuais (CSV, JSON, XML, OFX, camt.053, CNAB, EDIs de adquirente)                                                                              |
| **Busca por transporte**    | O Matcher puxa arquivos de um transporte configurado (por exemplo, SFTP) e os ingere                                                                  |
| **Extração pelo Discovery** | O [Discovery](/pt/products/matcher/integrations/matcher-discovery) extrai dados das conexões descobertas para a ingestão                              |
| **Webhooks de agregador**   | Os [agregadores de Open Finance](/pt/products/matcher/integrations/matcher-aggregator-connections) sinalizam dados novos, puxados de forma assíncrona |

## Ingestão baseada em arquivos

***

O método mais comum para extratos bancários e exportações de ERP.

### Upload manual

Use o endpoint de upload de arquivo para importar arquivos de transações manualmente.

<Tip>
  Referência da API: [Enviar arquivo de transações](/pt/reference/products/matcher/upload-transaction-file)
</Tip>

## Conexões bancárias

***

### Formato bancário padrão

A maioria dos bancos fornece extratos em um formato que o Matcher interpreta nativamente (CSV, OFX, camt.053 ou os layouts CNAB brasileiros):

```json theme={null}
{
  "name": "Chase Business Account",
  "type": "BANK",
  "config": {
    "bank_name": "Chase",
    "account_number": "****1234",
    "currency": "USD",
    "statement_format": "CSV",
    "timezone": "America/New_York"
  }
}
```

<Note>O objeto `config` é metadado descritivo de forma livre. O Matcher o armazena, mas não interpreta chaves como `bank_name` ou `statement_format`. O dialeto de formato declarado e as chaves de configuração fixadas comandam o comportamento do parse, não esses rótulos. Essas chaves são a política de taxa de erro, a chave e a política de duplicados, `blank_external_id` e as opções de camt.053.</Note>

<Tip>
  Referência da API: [Criar fonte](/pt/reference/products/matcher/create-source)
</Tip>

## Conexões de ERP e customizadas

***

Use o tipo de fonte `CUSTOM` para sistemas de ERP (SAP, Oracle, NetSuite etc.) e para qualquer outra fonte de dados que não se encaixe nas categorias `BANK`, `LEDGER` ou `GATEWAY`.

### Exemplo: fonte de ERP

```json theme={null}
{
  "name": "SAP S/4HANA",
  "type": "CUSTOM",
  "config": {
    "erp_type": "SAP",
    "company_codes": ["1000", "2000"]
  }
}
```

Exporte os dados de transações do seu ERP e envie pelo endpoint de upload de arquivo do Matcher. Use o [mapeamento de campos](/pt/products/matcher/configuration/matcher-field-mapping) para traduzir os campos específicos do ERP para o formato canônico do Matcher.

## Conexões com processadores de pagamento

***

### Stripe

```json theme={null}
{
  "name": "Stripe Payments",
  "type": "GATEWAY",
  "config": {
    "provider": "stripe"
  }
}
```

### Adyen

```json theme={null}
{
  "name": "Adyen Settlements",
  "type": "GATEWAY",
  "config": {
    "provider": "adyen",
    "merchant_account": "CompanyECOM"
  }
}
```

Exporte os relatórios de liquidação do seu processador de pagamento e envie-os pelo endpoint de upload de arquivo do Matcher.

### Bandeiras de cartão

Para arquivos de liquidação de bandeira de cartão (Visa, Mastercard, Elo), use o tipo de fonte `CUSTOM`:

```json theme={null}
{
  "name": "Visa Settlement",
  "type": "CUSTOM",
  "config": {
    "network": "VISA",
    "file_format": "TC33"
  }
}
```

## Segurança da conexão

***

### Armazenamento de credenciais

Guarde todas as credenciais com segurança em um vault criptografado. Referencie-as por ID nas configurações de fonte.

### Lista de IPs permitidos

Configure a lista de IPs permitidos no nível da infraestrutura (load balancer, API gateway ou firewall) para restringir quais IPs podem enviar dados ao Matcher. As entidades de fonte não têm uma configuração `settings.security`. Gerencie as restrições de IP fora da aplicação.

### Assinaturas de webhook

O Matcher assina os payloads de webhook de saída com HMAC-SHA256. Para dados de entrada, verifique as assinaturas no nível da infraestrutura antes de os dados chegarem ao Matcher. As entidades de fonte não têm uma configuração `settings.webhook`.

## Requisitos de formato dos dados

***

### Campos obrigatórios

Cada transação deve incluir:

Os mapas de campo usam um vocabulário canônico **fechado**: as *chaves* do mapeamento são fixas, e os *valores* nomeiam a coluna bruta da fonte. Estas chaves canônicas são obrigatórias:

| Chave canônica | Tipo    | Descrição                                       |
| -------------- | ------- | ----------------------------------------------- |
| `external_id`  | String  | Identificador da transação no sistema de origem |
| `amount`       | Decimal | Valor da transação                              |
| `currency`     | String  | Código ISO 4217                                 |
| `date`         | Date    | Data da transação                               |

### Campos opcionais

| Chave canônica | Tipo    | Descrição                                                                   |
| -------------- | ------- | --------------------------------------------------------------------------- |
| `description`  | String  | Texto de referência/descrição (alimenta a coluna de descrição da transação) |
| `fee_amount`   | Decimal | Slot de tarifa: coluna da fonte que carrega o valor da tarifa               |
| `fee_currency` | String  | Slot de tarifa: coluna da fonte que carrega a moeda da tarifa               |

Nenhuma outra chave é aceita.

### Mapeamento de campos

Gerencie os mapas de campo pelo endpoint dedicado (não pelo objeto `config` da fonte). O corpo da requisição é um único objeto `mapping` com pares `{ canonicalKey: sourceColumnName }`:

```bash cURL theme={null}
curl -X POST "https://api.matcher.example.com/v1/contexts/{contextId}/sources/{sourceId}/field-maps" \
 -H "Authorization: Bearer $TOKEN" \
 -H "Content-Type: application/json" \
 -d '{
   "mapping": {
     "external_id": "TXN_ID",
     "amount": "trans_amount",
     "currency": "CCY",
     "date": "POST_DATE",
     "description": "memo",
     "fee_amount": "mdr_fee",
     "fee_currency": "fee_ccy"
   }
 }'
```

Veja o [Mapeamento de campos](/pt/products/matcher/configuration/matcher-field-mapping) para detalhes.

## Boas práticas

***

<AccordionGroup>
  <Accordion title="Valide os arquivos antes de enviar">
    Confira se os arquivos enviados têm colunas para os campos canônicos obrigatórios (external\_id, amount, currency, date) antes do envio. Isso evita erros de ingestão.
  </Accordion>

  <Accordion title="Use formatos de arquivo consistentes">
    Padronize um único formato (CSV, JSON ou XML) por fonte para simplificar o mapeamento de campos e reduzir erros.
  </Accordion>

  <Accordion title="Proteja as credenciais de forma adequada">
    Guarde todas as chaves de API e senhas no vault. Nunca inclua credenciais nos payloads de configuração.
  </Accordion>

  <Accordion title="Teste primeiro com dados de exemplo">
    Valide o mapeamento de campos e a qualidade dos dados com arquivos de exemplo antes de enviar dados de produção.
  </Accordion>
</AccordionGroup>

## Próximos passos

***

<Card title="Mapeamento de campos" icon="arrows-left-right" href="/pt/products/matcher/configuration/matcher-field-mapping" horizontal>
  Configure como os campos da fonte se mapeiam para o Matcher.
</Card>

<Card title="Envio de arquivos" icon="upload" href="/pt/products/matcher/daily-reconciliation/matcher-uploading-files" horizontal>
  Procedimentos de upload manual de arquivos.
</Card>
