# Pagamento em passo único

Este guia explica como executar um pagamento em passo único usando um POS Integrado. Um pagamento em passo único conclui a autorização e a captura em uma única operação, por meio da função `Sale`.

## O que é um pagamento em passo único

Um pagamento em passo único é uma venda que autoriza e captura a transação em uma única requisição. O sistema de automação envia uma requisição `Sale` com os parâmetros desejados; o POS executa o fluxo de pagamento e retorna uma resposta estruturada. O mesmo comportamento se aplica a USB (`CreateUsb`), Rede (`CreateHttp`) e Nuvem (`CreateCloud`).

## Antes de começar

Antes de realizar um pagamento, confirme que:

* Um Connector foi criado usando um modelo de conexão suportado
* O terminal foi validado com `Polling`
* O Modo POS Integrado está ativo

## Passo 1: Monte e execute a requisição de venda

Pagamentos em passo único usam a operação `Sale`. Se um parâmetro não for informado, o POS exibe a tela de digitação correspondente.

| Parâmetro | Tipo | Obrigatório | Descrição |
| :--- | :--- | :--- | :--- |
| `Amount` | Long | Não | Valor na moeda local (por exemplo, `10000` = 100,00). Se omitido, o POS solicita o valor. |
| `SaleType` | Enum | Não | Tipo de pagamento: `Card` ou `QrCode`. Se omitido, o POS solicita o tipo de pagamento. |
| `PrintOnPos` | Bool | Não | Se `true`, o recibo é impresso no POS; se `false`, o conteúdo do recibo é retornado na resposta. |
| `EmployeeId` | Int | Não | Identificação do garçom ou operador. |
| `Tip` | Long | Não | Valor da gorjeta adicionado ao total da transação. |
| `Installments` | Int | Não | Número de parcelas. |
| `SkipReceipt` | Bool | Não | Se `true`, ignora a tela de recibo do cliente após a transação. |
| `SkipConfirmation` | Bool | Não | Se `true`, ignora a tela que exibe os detalhes de valor e parcelas para confirmação. |
| `PlanId` | String | Não | Plano de parcelamento (por exemplo, Argentina). Consulte [Planos de Parcelamento e Plan Ids](/pt/integrated-pos/reference/installment-plans). |
| `Interest` | Enum | Não | Se o plano inclui juros: `OnPosSelection`, `Interest` ou `NoInterest`. |
| `OperationMode` | Enum | Não | Quem calcula o valor final: `CalculatedGetnet` (o terminal calcula) ou `CalculatedISV` (sua aplicação calcula e envia o valor final). |
| `CallerId` | String | Não | ID gerado pelo sistema de automação, necessário para consultar a transação depois com o Check Status. Sem caracteres especiais ou Unicode. |

Veja um exemplo de requisição de pagamento em passo único:

```csharp
var saleRequest = new SaleRequest
{
    Amount = 10000,
    SaleType = SaleType.Card
};

var saleResult = connector.SaleAsync(saleRequest);
```

Durante a execução, o POS conduz toda a interação necessária com o cliente (leitura do cartão, senha, confirmação, etc.).

## Passo 2: Trate a resposta

Uma resposta bem-sucedida inclui pelo menos os campos abaixo. Sempre verifique o `Code` (por exemplo, `0` = sucesso) antes de prosseguir.

| Campo | Tipo | Descrição |
| :--- | :--- | :--- |
| `Code` | Int | Código de resposta (ver anexos). `0` = sucesso. |
| `Message` | String | Resultado da operação (por exemplo, `"APPROVED"`). |
| `CommerceCode` | String | Código de filial aprovado pela Getnet. |
| `TerminalId` | String | Código do terminal POS. |
| `AuthorizationCode` | String | Código de autorização da transação. |
| `Amount` | Long | Valor da transação na moeda local. |
| `OriginalAmount` | Long | Valor original da transação na moeda local. |
| `OperationMode` | Enum | Modo de operação selecionado. `CalculatedGetnet` ou `CalculatedISV`. |
| `Last4Digits` | String | Últimos quatro dígitos do cartão. |
| `CardBrand` | String | Bandeira do cartão usado na transação (por exemplo, `"Mastercard"`). |
| `CardType` | String | Tipo de cartão (por exemplo, `"Credit"`). |
| `AccountingDate` | String | Data/hora da transação (GMT). |
| `RealDate` | Date | Data/hora da transação (local). |
| `SaleType` | Enum | Tipo de pagamento (por exemplo, `"Card"`). |
| `ReceiptContent` | Dict | Linhas do recibo quando `PrintOnPos` é `false`. |
| `PlanId`, `Interest`, `Installments` | — | Presentes quando há parcelamento. |
| `CallerId` | String | ID gerado pelo sistema de automação. |
| `CardBin` | String | Oito primeiros dígitos do cartão do cliente (máx. 8). |

Este é um exemplo de resposta bem-sucedida:

```json
{
  "Code": 0,
  "Message": "APPROVED",
  "CommerceCode": "0000081561",
  "TerminalId": "AR001P0B",
  "AuthorizationCode": "551437",
  "Amount": 10000,
  "OriginalAmount": 10000,
  "OperationMode": "CalculatedGetnet",
  "Last4Digits": "7167",
  "CardBrand": "master",
  "CardType": null,
  "AccountingDate": "2025-08-25T16:11:23.0000000+00:00",
  "RealDate": "2025-08-25T13:11:50.8570000-03:00",
  "SaleType": "Card",
  "ReceiptContent": null,
  "PlanId": "contado",
  "Interest": null,
  "Installments": 1,
  "CallerId": "123456-789000",
  "CardBin": "84168075"
}
```

## Próximos passos

* Para detalhes sobre parcelamento, PlanId e opções de juros, consulte o guia [Pagamentos Parcelados](/pt/integrated-pos/pos-payment-guides/installment-payment).
* Para aceitar pagamentos com carteira digital, consulte o guia [Pagamento com QR Code](/pt/integrated-pos/pos-payment-guides/qr-code-payment).
* Se você está começando com o POS Integrado, comece pelo guia [Início Rápido](/pt/integrated-pos/first-steps-pos/quickstart-integrated-pos).
* Para uma referência completa de todos os parâmetros de Sale e campos de resposta, consulte a [Referência de Métodos e Parâmetros](/pt/integrated-pos/reference/methods-parameters).