# Processar operações de Cashback

Este guia fornece instruções sobre como implementar operações de Cashback (Compra com Saque). Essa funcionalidade permite que o usuário faça uma compra e receba dinheiro em espécie em uma única transação, declarando explicitamente dois valores separados.

## Como funciona

Uma operação de Cashback modifica o fluxo de transação padrão ao dividir a transação total entre o custo base dos bens/serviços e o valor adicional em dinheiro solicitado pelo cliente.

* **Condições de Acionamento**: Uma transação é processada como Cashback apenas se o campo `TTY` estiver definido como **"09"** e o campo `ICB` contiver um valor maior que zero.
* **Tag EMV 9C**: Quando o `TTY` é definido como **"09"**, o kernel EMV interno formata automaticamente a Tag **9C** (Tipo de Transação) para o valor correto definido pelo EMV para Compra com Cashback (`09`).
* **Comportamento da UI**: O Pinpad exibe uma tela dividida específica mostrando o valor da compra e o valor do cashback claramente ao portador do cartão antes de solicitar o cartão.

Para acionar um fluxo de Cashback, o Sistema Host modifica os parâmetros de inicialização usados em uma sequência de pagamento padrão (Y19 → Y15 → Y02). Os passos abaixo seguem essa sequência.

## Passo 1: Inicializar com Y19

Defina os parâmetros principais de Cashback durante a requisição inicial:

* **Tipo de Transação (`TTY`)**: Definir estritamente como **"09"** (Compra com Cashback).
* **Valor da Compra (`IMP`)**: O valor numérico de 12 dígitos que representa o custo dos bens/serviços (ex: \$15.00 \= `000000001500`).
* **Valor do Cashback (`ICB`)**: O valor numérico de 12 dígitos que representa o valor do saque em dinheiro (ex: \$20.00 \= `000000002000`).

## Passo 2: Definir o valor total (Y15)

Se o seu fluxo usar o comando **Y15** para transações EMV com contato, garanta que os valores estejam alinhados:

* **Atualização de Valor**: O terminal usa os valores fornecidos no fluxo para calcular o total apresentado ao usuário.
* **Confirmação**: O terminal pede que o usuário confirme os valores na tela antes da apresentação do cartão.

## Passo 3: Recuperar dados e autorizar (Y02 / Y03)

Assim que o usuário confirmar os valores e apresentar o cartão:

1. **Atualização Y02**: O Sistema Host pode atualizar os valores `IMP` ou `ICB` no comando **Y02**, se necessário.
2. **Autorização**: O Sistema Host recebe os dados de trilha criptografados e as tags EMV (incluindo a Tag 9C) para montar a requisição de autorização para o backend.
3. **Conclusão**: Use o comando **Y03** para entregar a resposta da autorizadora de volta ao terminal.

## Telas do terminal

Quando a requisição `Y19` indica uma operação de Cashback, o terminal apresenta uma UI especializada ao portador do cartão:

* **Exibição do Valor**: A tela mostra explicitamente o valor a ser entregue em dinheiro junto com o valor da compra.
* **Fallback Padrão**: Se o valor de `ICB` for definido como **"000000000000"**, o terminal ignora a lógica de Cashback e continua com uma tela de compra convencional.

> Embora o software suporte este fluxo, a solução Pinpad Getnet não foi oficialmente certificada para operações com cashback.

## Próximos passos

Com o fluxo de Cashback implementado, você pode prosseguir para outros tipos de transação especializados:

1. [**Pagamentos com Código QR**](https://docs.globalgetnet.com/pt/products/in-store-payments/host-to-host?doc=h2h-process-qr-code-payments\&section=kei2fli2gqggbwgaddtl3xb7): Saiba como implementar o fluxo `Y0Q` para carteiras digitais.
2. [**Comandos da API**](https://docs.globalgetnet.com/pt/products/in-store-payments/host-to-host?doc=h2h-api-commands\&section=g7b851vgbt737kwul1fmgve2): Consulte a estrutura técnica completa dos campos dos comandos `Y19` e `Y02`.