Recursos para IA
Reembolsar uma order

Este endpoint executa a devolução total ou parcial de uma order processada. Para fazer o reembolso total, não é necessário enviar o valor a ser reembolsado no body da solicitação. Para efetuar um reembolso parcial, deverá indicar o valor a ser reembolsado, juntamente com o identificador da transação que deseja devolver. Múltiplos reembolsos parciais podem ser realizados sobre a mesma order, desde que o valor acumulado reembolsado não exceda o valor total pago. Em caso de sucesso, a requisição retornará uma resposta com o status 201.

POST

https://api.mercadopago.com/v1/orders/{order_id}/refund
Request parameters
Header
Authorization
string

OBRIGATÓRIO

Token de acesso para autenticar a requisição. Para mais informações, consulte a documentação de Autenticação.
X-Idempotency-Key
string

OBRIGATÓRIO

Esta função permite repetir requisições de forma segura, sem o risco de realizar a mesma ação mais de uma vez por engano. Isso é útil para evitar erros, como a criação de dois pagamentos idênticos. Para garantir que cada
Path
order_id
string

OBRIGATÓRIO

ID da order que deve ser reembolsada. Esse valor é retornado na resposta à requisição feita ao endpoint POST /v1/orders.
Body
transactions
array

OBRIGATÓRIO CONDICIONAL

Contém informações sobre as transações associadas à order. Pode conter apenas uma transação. Obrigatório para reembolso parcial. Para reembolso total, envie body vazio. Mutuamente exclusivo com splits.
splits
array

OBRIGATÓRIO CONDICIONAL

Participantes do split a reembolsar. Mutuamente exclusivo com transactions.
Response parameters
id
string
Identificador da order processada na requisição.
status
string
Status atual da order. Para conhecer os valores de status e status_detail e seus significados, consulte a referência de status da order.
processed: Todas as transações foram processadas com sucesso.
refunded: A order foi reembolsada.
status_detail
string
Detalhes sobre o status do pagamento. Para conhecer os valores de status e status_detail e seus significados, consulte a referência de status da order.
refunded: A order foi reembolsada.
partially_refunded: A order foi reembolsada parcialmente.
transactions
object
Contém informações sobre as transações associadas a uma order.
Erros

400Erro de requisição.

refund_amount_exceeds

Um valor inválido foi enviado para alguma propriedade. O valor fornecido excede o disponível para reembolso. Verifique a mensagem retornada nos detalhes do erro para identificar o problema e tente novamente.

order_refund_already_in_process

Um reembolso total já está em processamento para esta order. Verifique a mensagem retornada nos detalhes do erro para identificar o problema e tente novamente.

401Erro. Access Token não autorizado.

401

O Access Token enviado está incorreto. Revise o valor e tente enviar a requisição novamente com a informação correta.

invalid_credentials

Não há suporte para credenciais de teste. Utilize usuários de teste com credenciais de produção para o ambiente de teste (sandbox) e as suas credenciais de produção para o ambiente de produção.

403Erro. Proibido.

forbidden

A aplicação não tem permissão para acessar este recurso. Verifique se o Access Token utilizado tem as permissões e escopos necessários para esta operação.

PA_UNAUTHORIZED_RESULT_FROM_POLICIES

A conta está bloqueada e suas chaves de API foram revogadas. Ao menos uma política avaliada pelo Policy Agent retornou um resultado não autorizado.

404Recurso não encontrado.

transaction_not_found

O ID da transação fornecido não existe nesta order. Use o id de transactions.payments[].id.

409Alguma regra específica do sistema não permite a realização da ação devido a restrições definidas.

idempotency_key_already_used

O valor enviado como header de idempotência (X-Idempotency-Key) já foi utilizado. Por favor, tente a solicitação novamente enviando um novo valor.

order_already_refunded

Order já reembolsada.

cannot_refund_order

Não é possível reembolsar a order. Verifique se a order já foi reembolsada.

order_refund_already_in_process

Já existe em processamento uma solicitação de reembolso completo para a order em questão.

429Limite de requisições excedido.

too_many_requests

Client ID bloqueado pelo gateway porque o limite de requisições pelo ID em questão foi atingido. Leia o header Retry-After da resposta e aguarde o número de segundos indicado antes de tentar novamente. Para maior resiliência, implemente backoff exponencial com jitter, ou seja, aumente o tempo de espera a cada nova tentativa e adicione uma variação aleatória para evitar o reenvio simultâneo de muitas requisições.

usage_quota_exceeded

Cota imposta pelo backend da API porque o limite de requisições por cliente foi atingido. Leia o header Retry-After da resposta e aguarde o número de segundos indicado antes de tentar novamente. Para maior resiliência, implemente backoff exponencial com jitter, ou seja, aumente o tempo de espera a cada nova tentativa e adicione uma variação aleatória para evitar o reenvio simultâneo de muitas requisições.

500Erro genérico.

internal_error

Erro genérico. Tente enviar a solicitação novamente.

Request
curl -X POST \
    'https://api.mercadopago.com/v1/orders/{order_id}/refund'\
    -H 'Content-Type: application/json' \
       -H 'Authorization: Bearer ' \
       -H 'X-Idempotency-Key: 33c8bec9-34bb-4df0-b200-c426de9c123c' \
    -d '{
  "transactions": [
    {
      "id": "PAY01HRYFWNYRE1MR1E60MW3X0T2P",
      "amount": "100.00"
    }
  ],
  "splits": [
    {
      "user_id": 1,
      "amount": "50.00"
    }
  ]
}'
Response
{
  "id": "ORD01J49MMW3SSBK5PSV3DFR32959",
  "status": "refunded",
  "status_detail": "refunded",
  "transactions": {
    "refunds": [
      {
        "id": "REF01J49MMW3SSBK5PSV3DFR32959",
        "transaction_id": "PAY01JEVQM06WDW16MAQ8B5SC0MSC",
        "reference_id": "01JEVQM899NWSQC4FYWWW7KTF9",
        "amount": "24.50",
        "status": "processed"
      }
    ]
  }
}