> For the complete documentation index, see [llms.txt](https://ftcoders.first-tech.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ftcoders.first-tech.com/landing-page/modulo-emv/modos-de-operacao-e-bandeiras.md).

# Modos de Operação e Bandeiras

Esta página detalha os parâmetros centrais para a correta integração com os endpoints EMV: a escolha do modo de operação (`mode`), o formato do criptograma de resposta (ARC vs CSU) e o mapeamento correto da bandeira do cartão (`schemeId`).

## Modos de Operação

O campo `mode` é o parâmetro central da integração EMV, pois controla exatamente o que o endpoint fará em uma única chamada. Entender os modos disponíveis evita o envio de requisições com dados faltantes e chamadas desnecessárias ao HSM.

### Tabela de Modos Disponíveis

A tabela abaixo relaciona o valor do `mode`, a operação que ele executa e qual método de ARPC é utilizado:

| mode | O que faz                                                       | Método ARPC Utilizado |
| ---- | --------------------------------------------------------------- | --------------------- |
| 0    | Validar ARQC apenas.                                            | -                     |
| 1    | Validar ARQC e gerar ARPC.                                      | Método 1 - ARC        |
| 2    | Gerar ARPC sem validar ARQC.                                    | Método 1 - ARC        |
| 3    | Validar ARQC e gerar ARPC.                                      | Método 2 - CSU        |
| 4    | Gerar ARPC sem validar ARQC.                                    | Método 2 - CSU        |
| 5    | Validar ARQC e gerar ARPC (ambos os métodos simultaneamente).   | Métodos 1 e 2         |
| 6    | Gerar ARPC sem validar ARQC (ambos os métodos simultaneamente). | Métodos 1 e 2         |
| 8    | Validar TC ou AAC (encerramento de transação offline).          | -                     |
| 9    | Validar TC/AAC e gerar ARPC.                                    | Método 1 - ARC        |

### Método 1 (ARC) vs Método 2 (CSU)

A diferença fundamental entre os métodos de geração de ARPC está na forma como a resposta do emissor é codificada no criptograma :

* **Método 1 — ARC (Authorization Response Code):** Utiliza o campo `arc`, que consiste em um par de bytes em hexadecimal codificando a resposta do emissor segundo a tabela padrão ISO 8583 (tag 8A) . **Exemplos comuns:** `00` = aprovado, `01` = referir, `05` = negado. É o formato mais amplamente utilizado em fluxos tradicionais de autorização.
* **Método 2 — CSU (Card Status Update):** Utiliza o campo `csu`, composto por quatro bytes em hexadecimal que fornecem informações estendidas sobre o status do cartão, além da própria resposta de autorização .

{% hint style="warning" %}

#### **Quando usar cada método**

* Utilize `mode=1` (ARC) para a maioria das autorizações convencionais, especialmente em fluxos legados ou quando o `schemeId` for do tipo VIS (`0`) ou M/Chip CVN 10/11 (`1`) .
* Utilize `mode=3` (CSU) quando o `schemeId` indicar M/Chip Advance, Visa qVSDC (`9`) ou esquemas mais modernos.
* Utilize `mode=5` (Ambos) apenas quando a arquitetura do emissor exigir a resposta simultânea em ambos os formatos.
  {% endhint %}

### Obrigatoriedade Condicional de `arc` e `csu`

A API valida se os campos `arc` e `csu` foram enviados dependendo estritamente do `mode` escolhido. O não envio gerará falha na requisição:

| mode  | arc                                              | cs                                               |
| ----- | ------------------------------------------------ | ------------------------------------------------ |
| **0** | Ignorado                                         | Ignorado                                         |
| **1** | <mark style="color:$warning;">Obrigatório</mark> | Ignorado                                         |
| **2** | <mark style="color:$warning;">Obrigatório</mark> | Ignorado                                         |
| **3** | Ignorado                                         | <mark style="color:$warning;">Obrigatório</mark> |
| **4** | Ignorado                                         | <mark style="color:$warning;">Obrigatório</mark> |
| **5** | <mark style="color:$warning;">Obrigatório</mark> | <mark style="color:$warning;">Obrigatório</mark> |
| **6** | <mark style="color:$warning;">Obrigatório</mark> | <mark style="color:$warning;">Obrigatório</mark> |
| **9** | <mark style="color:$warning;">Obrigatório</mark> | Ignorado                                         |

## Scheme ID e Bandeiras Suportadas

O campo `schemeId` identifica a variante do esquema criptográfico EMV que o cartão utiliza. Note que o mesmo número de cartão (PAN) pode estar vinculado a esquemas diferentes dependendo da bandeira, versão e do CVN (Cryptogram Version Number).

### Tabela de Scheme IDs

<table data-header-hidden="false" data-header-sticky><thead><tr><th>schemeId</th><th>Esquema</th><th>Observações</th></tr></thead><tbody><tr><td>0</td><td>Visa VIS (CVN 10 ou 17)</td><td>Esquema Visa tradicional, amplamente utilizado em crédito e débito Visa.</td></tr><tr><td>1</td><td>Mastercard M/Chip (CVN 10 ou 11)</td><td>Esquema Mastercard tradicional.</td></tr><tr><td>2</td><td>American Express AEIPS</td><td>Esquema proprietário American Express.</td></tr><tr><td>3</td><td>Mastercard M/Chip com PAN length</td><td>Variação do esquema M/Chip que inclui o tamanho do PAN no cálculo.</td></tr><tr><td>5</td><td>Visa VIS com PAN length</td><td>Variação do esquema VIS que inclui o tamanho do PAN.</td></tr><tr><td>6</td><td>JCB</td><td>Esquema JCB.</td></tr><tr><td>7</td><td>Discover</td><td>Esquema Discover.</td></tr><tr><td>9</td><td>Visa qVSDC</td><td>Esquema Visa contactless, típico de transações sem contato e tokenizadas.</td></tr><tr><td>A</td><td>Mastercard PayPass</td><td>Esquema Mastercard contactless (PayPass).</td></tr></tbody></table>

{% hint style="info" %}

#### Relação entre Brand e Scheme ID:

O campo `brand` aceita exclusivamente os valores `MASTERCARD`, `VISA` e `AMEX`, sendo utilizado para a seleção do perfil mestre no HSM. O `schemeId`, por sua vez, atua como um refinamento da variante criptográfica.

**Nota sobre outras bandeiras:** Embora a tabela de `schemeId` suporte esquemas como JCB (6) e Discover (7), e existam menções comerciais a bandeiras como Elo e Hipercard, esses nomes não são valores válidos atualmente para o campo `brand` na requisição. É fundamental garantir que a combinação enviada entre o `brand` (limitado aos três valores aceitos) e o `schemeId` seja consistente com o cartão para evitar erros de validação.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://ftcoders.first-tech.com/landing-page/modulo-emv/modos-de-operacao-e-bandeiras.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
