API de Anulações e Reembolsos

A API de Anulações e Reembolsos permite cancelar ou reembolsar transações que foram autorizadas ou capturadas. Dependendo do status da transação, você pode enviar uma solicitação usando os métodos Void ou Refund.

Para entender melhor as anulações e reembolsos, incluindo conceitos-chave e considerações, consulte este documento.

Considerações por País

Antes de usar a API de Anulações e Reembolsos, leve em conta as seguintes considerações específicas por país.

Argentina

  • Uma solicitação de anulação deve ser enviada dentro de 14 dias; caso contrário, a transação será automaticamente anulada.
  • Reembolsos podem ser solicitados pelo menos 10 minutos após a aprovação e até 357 dias após a transação.
  • Reembolsos com valores decimais não são suportados.
  • Após a aprovação do reembolso, o pagador recebe os fundos dentro de 30 dias úteis.

Brasil

  • Uma solicitação de anulação deve ser enviada dentro de 7 dias; caso contrário, a transação será cancelada.
  • Reembolsos podem ser solicitados pelo menos 10 minutos após a aprovação e até:
    • 87 dias para transações feitas com PIX.
    • 172 dias para transações com cartão.
  • Reembolsos parciais múltiplos são suportados para transações via PIX.
  • Após a aprovação:
    • Reembolsos para transações via PIX são processados imediatamente.
    • Reembolsos para outros métodos de pagamento levam até 15 dias úteis.

Chile

  • Devido a restrições da rede, uma solicitação de anulação só pode ser autorizada dentro de 3 horas após a transação. Se a anulação não for aceita ou nenhuma captura for enviada dentro de 7 dias, a transação será automaticamente anulada.
  • Reembolsos podem ser solicitados pelo menos 10 minutos após a aprovação e até 327 dias.
  • Reembolsos estão disponíveis para transações processadas por WebPay Plus ou Redcompra.
  • Para transações com cartões pré-pagos não processadas pelo WebPay Plus:
    • Reembolsos solicitados na primeira hora podem ser aprovados ou rejeitados pela rede financeira.
    • Reembolsos solicitados após a primeira hora são automaticamente rejeitados.
  • Se um reembolso for rejeitado, o PayU exibirá o código de erro correspondente.
  • Reembolsos com valores decimais não são suportados.
  • Após a aprovação do reembolso, o pagador recebe os fundos dentro de 8 a 20 dias úteis.
  • Reembolsos parciais para transações com parcelamento são recebidos online, mas processados manualmente devido a restrições do adquirente.
  • O valor mínimo para reembolso é 10 CLP.

Colômbia

  • Anulações não são suportadas.
  • Reembolsos podem ser solicitados pelo menos 10 minutos após a aprovação e até 357 dias.
  • O valor mínimo para reembolso é 100 COP.
  • Se uma solicitação de reembolso não for enviada no mesmo dia da captura da transação (antes das 21h UTC-5), ela será processada manualmente em vez de tentada online.
  • Após a aprovação do reembolso, o pagador recebe os fundos dentro de 30 dias úteis.
  • Reembolsos parciais não estão disponíveis para cartões de crédito internacionais.

México

  • Uma solicitação de anulação deve ser enviada pelo menos 10 minutos após a autorização e até:
    • 30 dias para a maioria das transações.
    • 7 dias para transações feitas com American Express.
    • Se nenhuma anulação ou captura for enviada dentro do prazo, a transação será automaticamente anulada.
  • Reembolsos podem ser solicitados pelo menos 10 minutos após a aprovação e até:
    • 175 dias para a maioria das transações.
    • 40 dias se processadas pelo Bancomer.
  • Após a aprovação do reembolso, o pagador recebe os fundos dentro de 30 dias úteis.
  • Reembolsos com valores decimais não são suportados.

Panamá

  • Anulações não são suportadas.
  • Reembolsos podem ser solicitados pelo menos 10 minutos após a aprovação e até 357 dias.
  • Após a aprovação do reembolso, o pagador recebe os fundos dentro de 8 dias úteis.

Peru

  • O prazo máximo para anular uma autorização depende da rede de pagamento:
    • Visa: 21 dias → Se nenhuma anulação ou captura for enviada, a transação será automaticamente capturada.
    • Mastercard: 28 dias → Se nenhuma anulação ou captura for enviada, a transação será automaticamente capturada.
    • American Express: 30 dias → Se nenhuma anulação ou captura for enviada, a transação será automaticamente anulada.
    • Diners: 11 dias → Se nenhuma anulação ou captura for enviada, a transação será automaticamente anulada.
  • Reembolsos podem ser solicitados pelo menos 10 minutos após a aprovação e até 357 dias.
  • Reembolsos parciais são suportados para transações sem parcelamento (incluindo transações com uma única parcela).
  • Reembolsos parciais com a Visanet devem ser enviados pelo menos um dia após a transação.
  • Após a aprovação do reembolso, o pagador recebe os fundos dentro de 15 a 25 dias úteis.
  • O valor mínimo para reembolso é 1 USD ou 1 PEN.

Anulação (Void)

O método VOID cancela uma transação previamente autorizada. Este é um processo automático—assim que a solicitação VOID é enviada, não segue nenhum fluxo de aprovação, e a transação não é cobrada do portador do cartão.

Parâmetros para Solicitação e Resposta

Solicitação
Nome do Campo Formato Tamanho Descrição Obrigatório
language Alfanumérico 2 Idioma utilizado na requisição. Define o idioma das mensagens de erro. Veja idiomas suportados. Sim
command Alfanumérico Máx: 32 Definir como SUBMIT_TRANSACTION. Sim
test (JSON)
isTest (XML)
Booleano Definir como true para modo de teste; caso contrário, false. Sim
merchant Objeto Contém os dados de autenticação. Sim
merchant > apiLogin Alfanumérico Mín: 12, Máx: 32 Usuário ou login fornecido pela PayU. Como obter API Login. Sim
merchant > apiKey Alfanumérico Mín: 6, Máx: 32 Senha fornecida pela PayU. Como obter API Key. Sim
transaction Objeto Contém os dados da transação. Sim
transaction > order Objeto Contém os detalhes do pedido. Sim
transaction > order > id Numérico ID do pedido a ser anulado. Sim
transaction > type Alfanumérico 32 Definir como VOID para cancelar uma transação autorizada. Sim
transaction > reason Alfanumérico Motivo da anulação da transação. Não
transaction > parentTransactionId Alfanumérico 36 ID da transação a ser anulada. Sim
Resposta
Nome do Campo Formato Tamanho Descrição
code Alfanumérico Código de resposta da transação. Valores possíveis: ERROR, SUCCESS.
error Alfanumérico Máx: 2048 Mensagem de erro quando o código de resposta é ERROR.
transactionResponse Objeto Contém os detalhes da resposta.
transactionResponse > orderId Numérico O ID do pedido gerado ou existente na PayU.
transactionResponse > transactionId Alfanumérico 36 ID da transação na PayU.
transactionResponse > state Alfanumérico Máx: 32 Status da transação.
transactionResponse > paymentNetworkResponseCode Alfanumérico Máx: 255 Código de resposta da rede financeira.
transactionResponse > paymentNetworkResponseErrorMessage Alfanumérico Máx: 255 Mensagem de erro da rede financeira.
transactionResponse > trazabilityCode Alfanumérico Máx: 32 Código de rastreabilidade da rede financeira.
transactionResponse > authorizationCode Alfanumérico Máx: 12 Código de autorização da rede financeira.
transactionResponse > responseCode Alfanumérico Máx: 64 Código de resposta relacionado ao status da transação.
transactionResponse > responseMessage Alfanumérico Máx: 2048 Mensagem relacionada ao código de resposta.
transactionResponse > operationDate Data Data em que a resposta foi gerada no sistema da PayU.

Chamada da API

Os exemplos a seguir mostram os corpos de requisição e resposta para este tipo de transação.


Exemplo de uma Solicitação:

{
   "language": "es",
   "command": "SUBMIT_TRANSACTION",
   "merchant": {
      "apiKey": "4Vj8eK4rloUd272L48hsrarnUA",
      "apiLogin": "pRRXKOl8ikMmt9u"
   },
   "transaction": {
      "order": {
         "id": "1400462414"
      },
      "type": "VOID",
      "reason": "Motivo do pedido de cancelamento da transação",
      "parentTransactionId": "c8ec8737-7645-4756-a991-6e60a99eb4d9"
   },
   "test": false
}

Exemplo de uma Resposta:

{
    "code": "SUCCESS",
    "error": null,
    "transactionResponse": {
        "orderId": 1400462414,
        "transactionId": "57546e0a-8275-48e3-af11-7d3dc7420bfe",
        "state": "APPROVED",
        "paymentNetworkResponseCode": "0",
        "paymentNetworkResponseErrorMessage": null,
        "trazabilityCode": "49263990",
        "authorizationCode": "NPS-011111",
        "pendingReason": null,
        "responseCode": "APPROVED",
        "errorCode": null,
        "responseMessage": "APROBADA - Autorizada",
        "transactionDate": null,
        "transactionTime": null,
        "operationDate": 1624880273010,
        "referenceQuestionnaire": null,
        "extraParameters": null,
        "additionalInfo": null
    }
}

Exemplo de uma Solicitação:

<request>
   <language>es</language>
   <command>SUBMIT_TRANSACTION</command>
   <merchant>
      <apiKey>4Vj8eK4rloUd272L48hsrarnUA</apiKey>
      <apiLogin>pRRXKOl8ikMmt9u</apiLogin>
   </merchant>
   <transaction>
      <order>
         <id>1400462466</id>
      </order>
      <type>VOID</type>
      <parentTransactionId>50876ad6-46f2-4c8d-bb91-2f028b56ccb8</parentTransactionId>
   </transaction>
   <isTest>false</isTest>
</request>

Exemplo de uma Resposta:

<paymentResponse>
    <code>SUCCESS</code>
    <transactionResponse>
        <orderId>1400462466</orderId>
        <transactionId>5fbb1ab0-3d2e-448f-a0be-b0bcfb5501ae</transactionId>
        <state>APPROVED</state>
        <paymentNetworkResponseCode>0</paymentNetworkResponseCode>
        <trazabilityCode>49263990</trazabilityCode>
        <authorizationCode>NPS-011111</authorizationCode>
        <responseCode>APPROVED</responseCode>
        <responseMessage>APROBADA - Autorizada</responseMessage>
        <operationDate>2021-06-28T06:57:44</operationDate>
    </transactionResponse>
</paymentResponse>

Reembolsos

Um reembolso é emitido quando o comerciante devolve voluntariamente o pagamento ao comprador. Isso pode ocorrer devido à insatisfação do cliente ou quando o produto está fora de estoque. O método REFUND reverte uma transação que já foi capturada.

Os reembolsos podem ser emitidos para o valor total ou como um reembolso parcial (PARTIAL_REFUND).

Parâmetros para Solicitação e Resposta

Solicitação
Nome do Campo Formato Tamanho Descrição Obrigatório
language Alfanumérico 2 Idioma usado na requisição. Isso determina o idioma das mensagens de erro. Veja os idiomas suportados. Sim
command Alfanumérico Máx: 32 Defina como SUBMIT_TRANSACTION. Sim
test (JSON)
isTest (XML)
Booleano Defina como true para o modo de teste; caso contrário, false. Sim
merchant Objeto Contém os dados de autenticação. Sim
merchant > apiLogin Alfanumérico Mín: 12, Máx: 32 Usuário ou login fornecido pela PayU. Como obter o API Login. Sim
merchant > apiKey Alfanumérico Mín: 6, Máx: 32 Senha fornecida pela PayU. Como obter o API Key. Sim
transaction Objeto Contém os dados da transação. Sim
transaction > additionalValues Objeto Especifica o valor para um reembolso parcial. Obrigatório para reembolsos parciais. Não
transaction > additionalValues > TX_VALUE Objeto Contém os detalhes do valor da transação. Obrigatório para reembolsos parciais. Não
transaction > additionalValues > TX_VALUE > value Número Máx: 19 Valor a ser reembolsado. Obrigatório para reembolsos parciais. Não
transaction > additionalValues > TX_VALUE > currency Alfanumérico 3 Código da moeda em formato ISO. Veja as moedas aceitas. Obrigatório para reembolsos parciais. Não
transaction > order Objeto Contém os detalhes do pedido. Sim
transaction > order > id Número ID do pedido a ser reembolsado. Sim
transaction > type Alfanumérico 32 Especifica o tipo de reembolso:
- REFUND para reembolsos totais.
- PARTIAL_REFUND para reembolsos parciais (se suportado).
Sim
transaction > reason Alfanumérico Motivo do reembolso. Não
transaction > parentTransactionId Alfanumérico 36 ID da transação original que está sendo reembolsada. Sim
Resposta
Nome do Campo Formato Tamanho Descrição
code Alfanumérico Código de resposta da transação. Valores possíveis: ERROR, SUCCESS.
error Alfanumérico Máx: 2048 Mensagem de erro quando o código de resposta é ERROR.
transactionResponse Objeto Contém os detalhes da resposta.
transactionResponse > orderId Número O ID do pedido gerado ou existente na PayU.
transactionResponse > transactionId Alfanumérico 36 ID da transação na PayU.
transactionResponse > state Alfanumérico Máx: 32 Status da transação.
transactionResponse > paymentNetworkResponseCode Alfanumérico Máx: 255 Código de resposta da rede financeira.
transactionResponse > paymentNetworkResponseErrorMessage Alfanumérico Máx: 255 Mensagem de erro da rede financeira.
transactionResponse > trazabilityCode Alfanumérico Máx: 32 Código de rastreabilidade da rede financeira.
transactionResponse > authorizationCode Alfanumérico Máx: 12 Código de autorização da rede financeira.
transactionResponse > responseCode Alfanumérico Máx: 64 Código de resposta associado ao status da transação.
transactionResponse > responseMessage Alfanumérico Máx: 2048 Mensagem associada ao código de resposta.
transactionResponse > operationDate Data Data em que a resposta foi gerada no sistema da PayU.

Chamada da API

Os exemplos a seguir mostram os corpos de requisição e resposta para esse tipo de transação.


Exemplo de uma Solicitação de Reembolso:

{
   "language": "es",
   "command": "SUBMIT_TRANSACTION",
   "merchant": {
      "apiKey": "4Vj8eK4rloUd272L48hsrarnUA",
      "apiLogin": "pRRXKOl8ikMmt9u"
   },
   "transaction": {
      "order": {
         "id": "1400462687"
      },
      "type": "REFUND",
      "reason": "Motivo do pedido de reembolso da transação",
      "parentTransactionId": "60e2080d-08b1-4db2-a54f-8bcbe8271662"
   },
   "test": false
}

Exemplo de uma Solicitação de Reembolso Parcial:

{  
   "command":"SUBMIT_TRANSACTION",
   "language":"es",
   "merchant":{  
      "apiKey": "4Vj8eK4rloUd272L48hsrarnUA",
      "apiLogin": "pRRXKOl8ikMmt9u"
   },
   "transaction":{  
      "additionalValues":{  
         "TX_VALUE":{  
            "value":"950",
            "currency":"ARS"
         }
      },
      "order":{  
         "id":"1400462690"
      },
      "parentTransactionId":"0486359b-a048-4b6b-9b72-af584e710e64",
      "reason":"Reason for requesting the refund ou cancellation da transação",
      "type":"PARTIAL_REFUND"
   }
}

Exemplo de uma Resposta:

{
    "code": "SUCCESS",
    "error": null,
    "transactionResponse": {
        "orderId": 1400462690,
        "transactionId": null,
        "state": "PENDING",
        "paymentNetworkResponseCode": null,
        "paymentNetworkResponseErrorMessage": null,
        "trazabilityCode": null,
        "authorizationCode": null,
        "pendingReason": "PENDING_REVIEW",
        "responseCode": null,
        "errorCode": null,
        "responseMessage": "1400462690",
        "transactionDate": null,
        "transactionTime": null,
        "operationDate": null,
        "referenceQuestionnaire": null,
        "extraParameters": null,
        "additionalInfo": null
    }
}

Exemplo de uma Solicitação de Reembolso:

<request>
   <language>es</language>
   <command>SUBMIT_TRANSACTION</command>
   <merchant>
      <apiKey>4Vj8eK4rloUd272L48hsrarnUA</apiKey>
      <apiLogin>pRRXKOl8ikMmt9u</apiLogin>
   </merchant>
   <transaction>
      <order>
         <id>1400462689</id>
      </order>
      <type>REFUND</type>
      <reason>Motivo do pedido de reembolso da transação.</reason>
      <parentTransactionId>1d31ea44-0d8f-4e65-93ac-6be4347e5b40</parentTransactionId>
   </transaction>
   <isTest>false</isTest>
</request>

Exemplo de uma Solicitação de Reembolso Parcial:

<request>
   <command>SUBMIT_TRANSACTION</command>
   <language>es</language>
   <merchant>
      <apiKey>4Vj8eK4rloUd272L48hsrarnUA</apiKey>
      <apiLogin>pRRXKOl8ikMmt9u</apiLogin>
   </merchant>
   <transaction>
      <additionalValues>
         <entry>
            <string>TX_VALUE</string>
            <additionalValue>
               <value>950</value>
               <currency>ARS</currency>
            </additionalValue>
         </entry>
      </additionalValues>
      <order>
         <id>1400462690</id>
      </order>
      <parentTransactionId>0486359b-a048-4b6b-9b72-af584e710e64</parentTransactionId>
      <reason>Reason for requesting the refund or cancellation of the transaction</reason>
      <type>PARTIAL_REFUND</type>
   </transaction>
</request>

Exemplo de uma Resposta:

<paymentResponse>
    <code>SUCCESS</code>
    <transactionResponse>
        <orderId>1400462691</orderId>
        <transactionId>6cef020a-8006-4744-b7f9-d9a343807297</transactionId>
        <state>PENDING</state>
        <pendingReason>PENDING_REVIEW</pendingReason>
        <responseMessage>1400462690</responseMessage>
    </transactionResponse>
</paymentResponse>

Consultando o Status do Reembolso

Conforme mencionado anteriormente, os pedidos de reembolso passam por um processo de aprovação no qual a PayU leva de 1 a 3 dias para processar e aprovar ou rejeitar a solicitação. Você pode verificar o status de um reembolso usando um dos seguintes métodos:

Verificando o Status pelo Painel de Gestão da PayU

  1. Acesse sua conta no módulo da PayU. No painel esquerdo, expanda o menu Transações e selecione Relatório de Vendas.

    PrintScreen

  2. Utilize o campo Filtrar minhas vendas para buscar o pedido usando o ID do pedido ou o ID da transação.

    PrintScreen

  3. A coluna Status indica se o reembolso foi aprovado, rejeitado ou se está pendente.

    PrintScreen

Verificando o Status pela API de Consultas

Você também pode verificar o status do reembolso usando a API de Consultas. Para isso, envie uma requisição contendo o ID do pedido.

Ao consultar um pedido, o sistema retorna a última transação associada a ele.

A resposta pode indicar um dos três possíveis status:

  • Solicitação Pendente: Se o pedido de reembolso ainda estiver em análise, o pedido aparecerá com status CAPTURED (result.payload.status na resposta).

    • O primeiro tipo de transação será AUTHORIZATION_AND_CAPTURE (result.transactions.type na resposta).
    • O primeiro status da transação será APPROVED (result.transactions.transactionResponse.state na resposta).
  • Aprovado: Se o pedido de reembolso for aprovado por um agente de atendimento da PayU, o pedido aparecerá com status REFUNDED (result.payload.status na resposta).

    • O primeiro tipo de transação será REFUND (result.transactions.type na resposta).
    • O primeiro status da transação será APPROVED (result.transactions.transactionResponse.state na resposta).
  • Recusado: Se o pedido de reembolso for rejeitado por um agente de atendimento da PayU, o pedido aparecerá com status CAPTURED (result.payload.status na resposta).

    • O primeiro tipo de transação será REFUND (result.transactions.type na resposta).
    • O primeiro status da transação será DECLINED (result.transactions.transactionResponse.state na resposta).
Última modificação 28 de março de 2025: Documentation updates (6385d288b)