Pesquisar

Are you looking for test card numbers?

Would you like to contact support?

Point-of-sale icon

Pagamentos com cartão nas lojas do Brasil

Aprenda a fazer pagamentos com cartão, incluindo pagamentos parcelados, no Brasil.

No Brasil, os clientes geralmente utilizam um cartão com funcionalidade de débito e crédito, e a maioria dos cartões de crédito permitem pagamentos parcelados. Dessa forma, ao pagar com cartão, os clientes terão que responder as seguintes perguntas:

  • A compra será realiza em débito ou crédito?
  • Em caso de crédito, a compra será realizada em um pagamento único do valor total ou o pagamento será parcelado?
  • Se parcelado, serão quantas parcelas?

Quando um cliente paga em prestações, o valor da compra é dividido entre 2 a 12 pagamentos mensais iguais. Esses pagamentos são cobrados no cartão de crédito do cliente a cada 30 dias até que sua compra seja paga na totalidade. Esta opção de pagamento é popular entre os compradores porque eles recebem as mercadorias ou os serviços de forma imediata, mas distribuem o valor total ao longo dos meses.

A seguir, explicamos como fazer pagamentos com cartão nas lojas brasileiras:

Pagamento com cartão a partir de uma integração com terminal API

Veja abaixo o fluxo de um pagamento com cartão, a partir de uma integração do terminal API, no Brasil:

  1. Os funcionários da sua loja perguntam ao cliente como eles preferem pagar:

    • Débito ou crédito.
    • Se crédito: pagamento único ou parcelado.
    • Se parcelado: número de parcelas.

  2. Os funcionários da sua loja inserem essas informações na sua caixa registradora.

    Você precisa garantir que o software da caixa registradora possa coletar essas informações.

  3. Sua caixa registradora envia essas informações na solicitação de pagamento.
  4. O cliente apresenta seu cartão e insere seu PIN (senha) ou assinatura no terminal.
  5. Quando a transação é aprovada, você recebe uma resposta contendo os dados de recebimento.

Antes de começar

Antes de efetuar um pagamento pelo terminal API, certifique-se de ter projetado sua integração com o terminal da Adyen. Isso inclui:

  1. Criar uma conta de teste Adyen.
  2. Determinar a estrutura de sua conta Adyen e criar contas para sua lojas físicas.
  3. Solicitar um terminal.
  4. Ativar o terminal para associá-lo a uma loja física.
  5. Determinar se sua integração usará uma arquitetura local ou em nuvem.
  6. Ler e entender os fundamentos de um terminal API.
  7. Para uma integração que utiliza comunicação em nuvem assíncrona, verifique se você configurou as notificações de exibição. É dessa forma que sua integração receberá o resultado do pagamento.

Faça o pagamento

A solicitação de pagamento para o terminal API precisa conter um sinalizador (flag) para indicar um pagamento com cartão de crédito ou débito. Ao pagar com crédito parcelado, a solicitação também precisa conter um objeto para definir as parcelas.

Quando você fizer uma solicitação POST para o terminal API iniciar um pagamento:

  1. Comece a construir o seu PaymentRequest especificando:

    • MessageHeader: Segue a estrutura padrão de MessageHeader, explicada nos fundamentos de um terminal API, que incluem:

      • ProtocolVersion: 3.0
      • MessageCategory: Payment. Isso indica que você está iniciando uma solicitação de pagamento
      • MessageType: Request
      • SaleID: Seu ID exclusivo para a caixa registradora.
      • ServiceID: Seu ID exclusivo para esta tentativa de transação. Isso precisa ser único nas últimas 48 horas.
      • POIID: ID exclusivo do terminal. Isso indica para qual terminal o pagamento será roteado.

    • PaymentRequest: O corpo da solicitação de pagamento deve incluir:

      • SaleData.SaleTransactionID.TransactionID: Sua referência exclusiva para esta solicitação de pagamento.
      • SaleData.SaleTransactionID.TimeStamp: Data e hora da solicitação de pagamento, no formato UTC.
      • PaymentTransaction.AmountsReq.Currency: A moeda da transação. Deve ser BRL.
      • PaymentTransaction.AmountsReq.RequestedAmount: O valor da transação.

  2. Adicione um sinalizador (flag) para especificar se o cliente deseja pagar por débito ou crédito:

    • TransactionConditions.DebitPreferredFlag:
      • true: Efetua um pagamento com cartão de débito.
      • false: Efetua um pagamento com cartão de crédito.

    Para um pagamento por débito ou crédito em parcela única, não são necessários parâmetros adicionais.

  3. Se o cliente estiver pagando em crédito parcelado, defina as parcelas adicionando:

    • PaymentData: Os detalhes da parcela. Este contém:

      • PaymentType: Instalment
      • Instalment.InstalmentType: EqualInstalments
      • Instalment.SequenceNumber: 1
      • Instalment.Period: 1
      • Instalment.PeriodUnit: Monthly
      • Instalment.TotalNbOfPayments: O número de parcelas. O mínimo são 2, o máximo 12.

  4. Envie sua solicitação POST para o endpoint do terminal API.

    Aqui estão alguns exemplos de solicitação para um pagamento com cartão de débito, um pagamento com cartão de crédito à vista e um pagamento com cartão de crédito em 12 parcelas.

    Pagamento com cartão de débito

    {
      "SaleToPOIRequest":{
        "MessageHeader":{
          "ProtocolVersion":"3.0",
          "MessageClass":"Service",
          "MessageCategory":"Payment",
          "MessageType":"Request",
          "ServiceID":"2307d64b8",
          "SaleID":"Demo",
          "POIID":"P400Plus-275040710"
        },
        "PaymentRequest":{
          "SaleData":{
            "SaleTransactionID":{
              "TransactionID":"TID-2018-07-23-21:43:03",
              "TimeStamp":"2018-07-23T21:43:03"
            },
            "SaleReferenceID":"TID-2018-07-23-21:43:03",
            "SaleToAcquirerData":""
          },
          "PaymentTransaction":{
            "AmountsReq":{
              "Currency":"BRL",
              "RequestedAmount":12000
            },
            "TransactionConditions":{
              "DebitPreferredFlag":true
            }
          }
        }
      }
    }
    String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";
    String saleID = "YOUR_CASH_REGISTER_ID";
    String POIID = "YOUR_TERMINAL_ID";
    String transactionID = "YOUR_UNIQUE_TRANSACTION_ID";
    
    SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
    MessageHeader messageHeader = new MessageHeader();
    messageHeader.setProtocolVersion("3.0");
    messageHeader.setMessageClass( MessageClassType.SERVICE );
    messageHeader.setMessageCategory( MessageCategoryType.PAYMENT );
    messageHeader.setMessageType( MessageType.REQUEST );
    messageHeader.setServiceID(serviceID);
    messageHeader.setSaleID(saleID);
    messageHeader.setPOIID(POIID);
    saleToPOIRequest.setMessageHeader(messageHeader);
    
    PaymentRequest paymentRequest = new PaymentRequest();
    SaleData saleData = new SaleData();
    TransactionIdentification saleTransactionID = new TransactionIdentification();
    saleTransactionID.setTransactionID(transactionID);
    saleTransactionID.setTimeStamp(DatatypeFactory.newInstance().newXMLGregorianCalendar(new GregorianCalendar()));
    saleData.setSaleTransactionID(saleTransactionID);
    saleData.setSaleReferenceID("TID-2018-07-23-21:43:03");
    saleData.setSaleToAcquirerData("");
    paymentRequest.setSaleData(saleData);
    
    PaymentTransaction paymentTransaction = new PaymentTransaction();
    AmountsReq amountsReq = new AmountsReq();
    amountsReq.setCurrency("BRL");
    amountsReq.setRequestedAmount( BigDecimal.valueOf(12000) );
    paymentTransaction.setAmountsReq(amountsReq);
    
    TransactionConditions transactionConditions = new TransactionConditions();
    transactionConditions.setDebitPreferredFlag( Boolean.TRUE );
    paymentTransaction.setTransactionConditions(transactionConditions);
    paymentRequest.setPaymentTransaction(paymentTransaction);
    saleToPOIRequest.setPaymentRequest(paymentRequest);
    terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

    Pagamento com cartão de crédito à vista

    {
      "SaleToPOIRequest":{
        "MessageHeader":{
          "ProtocolVersion":"3.0",
          "MessageClass":"Service",
          "MessageCategory":"Payment",
          "MessageType":"Request",
          "ServiceID":"2307d64b8",
          "SaleID":"Demo",
          "POIID":"P400Plus-275040710"
        },
        "PaymentRequest":{
          "SaleData":{
            "SaleTransactionID":{
              "TransactionID":"TID-2018-07-23-21:43:03",
              "TimeStamp":"2018-07-23T21:43:03"
            },
            "SaleReferenceID":"TID-2018-07-23-21:43:03",
            "SaleToAcquirerData":""
          },
          "PaymentTransaction":{
            "AmountsReq":{
              "Currency":"BRL",
              "RequestedAmount":12000
            },
            "TransactionConditions":{
              "DebitPreferredFlag":false
            }
          }
        }
      }
    }
    String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";
    String saleID = "YOUR_CASH_REGISTER_ID";
    String POIID = "YOUR_TERMINAL_ID";
    String transactionID = "YOUR_UNIQUE_TRANSACTION_ID";
    
    SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
    MessageHeader messageHeader = new MessageHeader();
    messageHeader.setProtocolVersion("3.0");
    messageHeader.setMessageClass( MessageClassType.SERVICE );
    messageHeader.setMessageCategory( MessageCategoryType.PAYMENT );
    messageHeader.setMessageType( MessageType.REQUEST );
    messageHeader.setServiceID(serviceID);
    messageHeader.setSaleID(saleID);
    messageHeader.setPOIID(POIID);
    saleToPOIRequest.setMessageHeader(messageHeader);
    
    PaymentRequest paymentRequest = new PaymentRequest();
    SaleData saleData = new SaleData();
    TransactionIdentification saleTransactionID = new TransactionIdentification();
    saleTransactionID.setTransactionID(transactionID);
    saleTransactionID.setTimeStamp(DatatypeFactory.newInstance().newXMLGregorianCalendar(new GregorianCalendar()));
    saleData.setSaleTransactionID(saleTransactionID);
    saleData.setSaleReferenceID("TID-2018-07-23-21:43:03");
    saleData.setSaleToAcquirerData("");
    paymentRequest.setSaleData(saleData);
    
    PaymentTransaction paymentTransaction = new PaymentTransaction();
    AmountsReq amountsReq = new AmountsReq();
    amountsReq.setCurrency("BRL");
    amountsReq.setRequestedAmount( BigDecimal.valueOf(12000) );
    paymentTransaction.setAmountsReq(amountsReq);
    
    TransactionConditions transactionConditions = new TransactionConditions();
    transactionConditions.setDebitPreferredFlag( Boolean.FALSE );
    paymentTransaction.setTransactionConditions(transactionConditions);
    paymentRequest.setPaymentTransaction(paymentTransaction);
    saleToPOIRequest.setPaymentRequest(paymentRequest);
    terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

    Pagamento com cartão de crédito em 12 parcelas

    {
      "SaleToPOIRequest":{
        "MessageHeader":{
          "ProtocolVersion":"3.0",
          "MessageClass":"Service",
          "MessageCategory":"Payment",
          "MessageType":"Request",
          "ServiceID":"2307d64b8",
          "SaleID":"Demo",
          "POIID":"P400Plus-275040710"
        },
        "PaymentRequest":{
          "SaleData":{
            "SaleTransactionID":{
              "TransactionID":"TID-2018-07-23-21:43:03",
              "TimeStamp":"2018-07-23T21:43:03"
            },
            "SaleReferenceID":"TID-2018-07-23-21:43:03",
            "SaleToAcquirerData":""
          },
          "PaymentTransaction":{
            "AmountsReq":{
              "Currency":"BRL",
              "RequestedAmount":12000
            },
            "TransactionConditions":{
              "DebitPreferredFlag":false
            }
          },
          "PaymentData":{
            "PaymentType":"Instalment",
            "Instalment":{
              "InstalmentType":"EqualInstalments",
              "SequenceNumber":1,
              "Period":1,
              "PeriodUnit":"Monthly",
              "TotalNbOfPayments":12
            }
          }
        }
      }
    }
    String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";
    String saleID = "YOUR_CASH_REGISTER_ID";
    String POIID = "YOUR_TERMINAL_ID";
    String transactionID = "YOUR_UNIQUE_TRANSACTION_ID";
    
    SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
    MessageHeader messageHeader = new MessageHeader();
    messageHeader.setProtocolVersion("3.0");
    messageHeader.setMessageClass( MessageClassType.SERVICE );
    messageHeader.setMessageCategory( MessageCategoryType.PAYMENT );
    messageHeader.setMessageType( MessageType.REQUEST );
    messageHeader.setServiceID(serviceID);
    messageHeader.setSaleID(saleID);
    messageHeader.setPOIID(POIID);
    saleToPOIRequest.setMessageHeader(messageHeader);
    
    PaymentRequest paymentRequest = new PaymentRequest();
    SaleData saleData = new SaleData();
    TransactionIdentification saleTransactionID = new TransactionIdentification();
    saleTransactionID.setTransactionID(transactionID);
    saleTransactionID.setTimeStamp(DatatypeFactory.newInstance().newXMLGregorianCalendar(new GregorianCalendar()));
    saleData.setSaleTransactionID(saleTransactionID);
    saleData.setSaleReferenceID("TID-2018-07-23-21:43:03");
    saleData.setSaleToAcquirerData("");
    paymentRequest.setSaleData(saleData);
    
    PaymentTransaction paymentTransaction = new PaymentTransaction();
    AmountsReq amountsReq = new AmountsReq();
    amountsReq.setCurrency("BRL");
    amountsReq.setRequestedAmount( BigDecimal.valueOf(12000) );
    paymentTransaction.setAmountsReq(amountsReq);
    
    TransactionConditions transactionConditions = new TransactionConditions();
    transactionConditions.setDebitPreferredFlag( Boolean.FALSE );
    paymentTransaction.setTransactionConditions(transactionConditions);
    paymentRequest.setPaymentTransaction(paymentTransaction);
    saleToPOIRequest.setPaymentRequest(paymentRequest);
    
    PaymentData paymentData = new PaymentData();
    paymentData.setPaymentType( PaymentType.INSTALMENT );
    Instalment instalment = new Instalment();
    instalment.getInstalmentType.add( InstalmentType.EQUAL_INSTALMENTS );
    instalment.setSequenceNumber(1);
    instalment.setPeriod(1);
    instalment.setPeriodUnit( PeriodUnitType.MONTHLY );
    instalment.setTotalNbOfPayments(12);
    paymentData.setInstalment(instalment);
    saleToPOIRequest.setPaymentData(paymentData);
    terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);
  5. Receba o resultado do pagamento.
    Se o pagamento for bem sucedido, a tela do terminal mostrará que o pagamento foi aprovado e você recebe uma respota do terminal API. Esta resposta contém:

    • PaymentReceipt: Dados de recibo, gerados de forma dinâmica, que você pode usar para imprimir (ou enviar por e-mail) recibos. O recibo do comerciante e o recibo do cliente possuem chaves adicionais necessárias:

      • productType: Indica se o cliente pagou em débito, crédito à vista ou crédito em um número especificado de parcelas.
      • cnpj: Número de identificação emitido pelo Registro Nacional das Pessoas Jurídicas.

    • Se o comprador paga utilizando crédito em parcelas, a resposta também inclui:
      • PaymentResult.PaymentType: Instalment
      • PaymentResult.Instalment: Objeto que contém os mesmos detalhes da parcela que você definiu no PaymentData de seu PaymentRequest.

    Resposta para pagamento com cartão de crédito em 12 parcelas

    {
        "SaleToPOIResponse":{
            "MessageHeader":{...},
            "PaymentResponse":{
                "PaymentReceipt":[
                    {
                        "OutputContent":{
                            "OutputFormat":"Text",
                            "OutputText":[
                                ...
                                {
                                    "EndOfLineFlag":true,
                                    "Text":"key=productType&name=productType&value=Credit%20in%2012%20Installments"
                                },
                                {
                                    "EndOfLineFlag":true,
                                    "Text":"key=cnpj&name=cnpj&value=00.000.000%2F0000-00"
                                },
                                ...
                            ]
                        },
                        "DocumentQualifier":"CashierReceipt"
                    },
                    {
                        "OutputContent":{
                            "OutputFormat":"Text",
                            "OutputText":[
                                ...
                                {
                                    "EndOfLineFlag":true,
                                    "Text":"key=productType&name=productType&value=Credit%20in%2012%20Installments"
                                },
                                {
                                    "EndOfLineFlag":true,
                                    "Text":"key=cnpj&name=cnpj&value=00.000.000%2F0000-00"
                                },
                                ...
                            ]
                        },
                        "DocumentQualifier":"CustomerReceipt"
                    }
                ],
                "POIData":{...},
                "PaymentResult":{
                    "PaymentType":"Instalment",
                    ...
                    "Instalment":{
                        "InstalmentType":"EqualInstalments",
                        "SequenceNumber":1,
                        "Period":1,§
                        "PeriodUnit":"Monthly",
                        "TotalNbOfPayments":12
                    },
                    ...
                },
                "SaleData":{...},
                "Response":{"Result": "Success"...}
            }
        }
    }

Pagamento com cartão em um terminal não integrado

Se você estiver usando nossa solução de terminais não integrados, poderá iniciar transações diretamente de um terminal não integrado.

Antes de começar

Antes de efetuar um pagamento com cartão em um terminal não integrado, verifique se você concluiu as seguintes etapas:

  1. Criar uma conta de teste Adyen.
  2. Determinar a estrutura da sua conta Adyen e criar contas para suas lojas físicas.
  3. Solicitar um terminal com uma impressora embutida.
  4. 4. Ativar o terminal para associá-lo a uma loja física.
  5. Configurar o terminal como um terminal não integrado.

Faça o pagamento

Para efetuar um pagamento com cartão em um terminal não integrado:

  1. Pergunte ao cliente como ele prefere pagar:

    • Débito ou crédito.
    • Se crédito: pagamento único ou parcelado.
    • Se se parcelado: número de parcelas.

  2. Na tela do terminal, selecione Start.
  3. No teclado do terminal, insira o valor da transação e .
  4. Deixe o cliente inserir seu cartão no terminal.
  5. Siga as instruções no terminal para inserir as informações obtidas do cliente sobre como ele deseja realizar o pagamento.
  6. Deixe o cliente digitar sua senha PIN ou assinatura no terminal.

Se o pagamento for bem-sucedido, a tela do terminal mostra que o pagamento foi aprovado. O terminal também imprime o recibo do comerciante e o recibo do cliente (nessa ordem).

Reconciliando parcelas

Se um cliente pagar parcelado, a primeira parcela será cobrada imediatamente no cartão de crédito dele, e todas as parcelas futuras serão cobradas automaticamente.

Você receberá os fundos de cada parcela conforme estas forem sendo liquidadas. Há um período para a liquidação do pagamento, que é de 30 dias.

Também oferecemos adiantamentos se você precisar de fundos mais cedo. Há uma taxa adicional por este serviço. Entre em contato com o seu gerente de contas da Adyen para obter mais detalhes.

Se você usar terminais não integrados, precisará reconciliar manualmente suas transações do terminal com suas vendas e devoluções.
Para obter mais informações sobre como as parcelas são liquidadas e reconciliadas, consulte Reconciliar pagamentos de parcelas.

Veja também