# Reembolsar um Pagamento

Este guia explica como reembolsar (ou cancelar) um pagamento previamente aprovado usando a operação `Refund` do POS Integrado.

## O que é um reembolso

A operação Refund reverte uma venda concluída, total ou parcialmente. Você pode executá-la no mesmo dia da venda original ou em até 365 dias. Se algum parâmetro não for informado, o POS exibe as telas de digitação correspondentes. O manual usa "Cancellation" (cancelamento) para este comando.

## Antes de começar

Antes de emitir um reembolso:

* Um Connector deve ser criado e validado usando `Polling`
* O Modo POS Integrado deve estar ativo
* A transação original deve ser elegível para reembolso

## Passo 1: Execute o reembolso

Para realizar um reembolso, chame a operação `Refund` com os detalhes da transação original. A maioria dos parâmetros é opcional: o POS os solicita na tela se estiverem ausentes. Informá-los garante um fluxo de automação mais fluido.

| Parâmetro | Tipo | Obrigatório | Descrição |
| :--- | :--- | :--- | :--- |
| `AuthorizationCode` | String | Não | Código de autorização da transação original (por exemplo, do campo "AUT" do recibo ou da resposta de Sale). |
| `OriginTransDate` | Date | Não | Data da transação original, no formato ISO8601 com fuso horário. Não pode ser posterior à data atual. |
| `Amount` | Long | Não | Valor do reembolso na moeda local. Se omitido, o valor total é reembolsado (reembolsos parciais são suportados). |
| `SkipConfirmation` | Bool | Não | Ignora a tela de confirmação. |
| `SkipReceipt` | Bool | Não | Não imprime o recibo do cliente. |
| `PrintOnPos` | Bool | Não | Imprime no POS ou retorna o conteúdo do recibo. Consulte o Capítulo 4, Responsabilidade de Impressão. |
| `RefundType` | Enum | Não | Qual parte da venda reembolsar: `SaleWithdrawal` (venda e saque), `Sale` (somente a venda) ou `Withdrawal` (somente o saque). |

<Callout type="note">

Se uma informação obrigatória for omitida, o POS a solicita na tela. A elegibilidade para reembolso e as regras de reembolso parcial são aplicadas pelo POS e pelo adquirente. Você pode emitir vários reembolsos sobre a mesma transação original até que a soma dos valores alcance o total original.

</Callout>

O exemplo a seguir mostra como iniciar um reembolso de uma venda previamente aprovada. A data da transação (`OriginTransDate`) não pode ser posterior à data atual. A data retornada pela venda original é um valor válido.

```csharp
var refundRequest = new RefundRequest
{
    AuthorizationCode = "551437",
    OriginTransDate = originalSale.AccountingDate,
    Amount = 10000
};

var refundResult = await connector.RefundAsync(refundRequest);
```

## Passo 2: Trate a resposta

Após o processamento bem-sucedido, o POS retorna uma resposta estruturada com o resultado da reversão. Os campos a seguir estão **sempre presentes** em uma resposta de reembolso bem-sucedida:

```json
{
  "Code": 0,
  "Message": "APPROVED",
  "CommerceCode": "1234567890",
  "TerminalId": "GET00123",
  "AuthorizationCode": "654321",
  "NsuLastSuccessfulMessage": "123456789",
  "ReceiptContent": null
}
```

Onde:

| Campo | Tipo | Obrigatório | Descrição |
| :--- | :--- | :--- | :--- |
| `Code` | Int | Sim | Código de resposta. `0` indica sucesso. |
| `Message` | String | Sim | Mensagem de resultado (por exemplo, `APPROVED`). |
| `CommerceCode` | String | Sim | Código de filial aprovado pela Getnet para o processamento de transações. |
| `TerminalId` | String | Sim | Código do terminal POS. |
| `AuthorizationCode` | String | Sim | Código de autorização da transação de reembolso. |
| `NsuLastSuccessfulMessage` | String | Sim | Última mensagem NSU. |
| `ReceiptContent` | Dict | Não | Conteúdo estruturado do recibo. `null` quando `PrintOnPos` é `true`. Consulte [Responsabilidade de Impressão](/pt/integrated-pos/core-concepts-pos/printing-responsibility). |

<Callout type="note">

`ReceiptContent` é `null` quando a requisição define `PrintOnPos` como `true` — o terminal imprime o recibo em vez de retorná-lo.

</Callout>

Sempre verifique os campos `Code` e `Message` antes de confirmar o reembolso no seu sistema.

## Próximos passos

* Para informações sobre o processamento de vendas que geram códigos de autorização, consulte o guia [Pagamento em Passo Único](/pt/integrated-pos/pos-payment-guides/single-step-payment).
* Para controlar a impressão de recibos e recuperar o conteúdo do recibo, consulte o guia [Responsabilidade de Impressão](/pt/integrated-pos/core-concepts-pos/printing-responsibility).
* Para uma referência completa dos parâmetros e valores de retorno de Refund, consulte a [Referência de Métodos e Parâmetros](/pt/integrated-pos/reference/methods-parameters).