Estornar Transação
Use esta rota para estornar uma transação previamente paga, podendo ser utilizada para estornar transações criadas com cartão de crédito ou pix.
Request Variable Path
Atributo | Tipo | Descrição |
---|---|---|
transaction_id | string | ID Marlim da transação. |
É necessário salvar o transaction_id
que a Marlim retorna nas solicitações de criação na sua aplicação. Somente com este id será possível para prosseguir com o estorno.
Response Object
O objeto de resposta varia de acordo com o método de pagamento utilizado na transação original. Abaixo você encontra a estrutura detalhada para cada tipo de transação:
Credit Card
Propriedade | Tipo | Descrição |
---|---|---|
status | string | Representa o estado atual da transação. Valores possíveis: refunded . |
nsu | string | Código que identifica a transação na Adquirente. |
date_created | dateTime | Data de criação da transação no formato ISODateTime. |
date_updated | dateTime | Data de atualização do status da transação no formato ISODateTime. |
authorized_amount | int32 | Valor em centavos autorizado na transação. |
paid_amount | int32 | Valor em centavos capturado na transação. |
refunded_amount | int32 | Valor em centavos estornado na transação. |
installments | string | Número de parcelas em que o cliente pagou. |
transaction_id | string | Número identificador da transação na Marlim. |
item_id | string | Número identificador da transação na sua plataforma. |
payment_method | string | Método de pagamento utilizado na transação. Valores possíveis: credit_card . |
card_holder_name | string | Nome do portador do cartão utilizado no pagamento. |
card_brand | string | Bandeira do cartão utilizado no pagamento. Valores possíveis: visa , mastercard , amex , hipercard e elo . |
card_first_digits | string | Primeiros 6 dígitos do cartão utilizado no pagamento. |
card_last_digits | string | Últimos 4 dígitos do cartão utilizado no pagamento. |
acquirer_status_code | string | Código identificador da resposta do Banco Emissor. Valores possíveis: 0000 . |
acquirer_status_message | string | Mensagem referente ao código da resposta do Banco Emissor. |
{
"status": "refunded",
"nsu": "31022400001",
"date_created": "2024-02-15T10:30:00.000Z",
"date_updated": "2024-02-15T11:30:00.000Z",
"authorized_amount": 1000,
"paid_amount": 0,
"refunded_amount": 1000,
"installments": "1",
"transaction_id": "HcDscltTIVK3VMAAOj7J",
"item_id": "ABC987654321",
"payment_method": "credit_card",
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"acquirer_status_code": "0000",
"acquirer_status_message": "The amount has been refunded to the card."
}
Pix
Propriedade | Tipo | Descrição |
---|---|---|
status | string | Representa o estado atual da transação. Valores possíveis: refund_pending . |
date_created | dateTime | Data de criação da transação no formato ISODateTime. |
date_updated | dateTime | Data de atualização do status da transação no formato ISODateTime. |
item_id | string | ID da transação na sua plataforma. |
transaction_id | string | Número identificador Marlim da transação. |
amount | int32 | Valor em centavos a ser cobrado na transação. |
paid_amount | int32 | Valor em centavos capturado na transação. |
payout_amount | int32 | Valor em centavos a ser repassado. |
refunded_amount | int32 | Valor em centavos estornado na transação. |
{
"status": "refund_pending",
"date_created": "2025-07-09T14:46:20.598Z",
"date_updated": "2025-07-09T14:46:20.598Z",
"item_id": "ABC123456789",
"transaction_id": "mMaNRQqDAypdGatmyquR",
"amount": 1000,
"payout_amount": 1000,
"paid_amount": 1000,
"refunded_amount": 0
}
Webhook Pix
O processo de estorno Pix é assíncrono. Ao solicitar um estorno, a transação passará imediatamente para o status refund_pending
enquanto processamos a solicitação junto à Adquirente. O resultado do estorno será notificado através de webhook, caso você tenha configurado um webhook_url
quando criou a transação.
Caso ocorra algum problema durante o processo de estorno, será enviado um webhook onde a transação continuará com o status paid
mas com uma nova propriedade no payload com o nome de refund_status
com valor refund_failed
.
Este cenário indica que a tentativa atual de estorno falhou e a transação permanece paga, mas uma nova tentativa de estorno pode ser feita posteriormente.
🕹 Exemplos de respostas de webhook de estorno com sucesso ou falha.
- Estorno com sucesso
- Estorno com falha
curl -X POST "https://suaaplicacao.com.br/pedidos/123456789/webhook" \
-H "Content-Type: application/json" \
-H "User-Agent: Marlim/1.0.0" \
-H "Marlim-Api-Signature: Star98765Wars43210ANewHope1977" \
-H "Authorization: Bearer 123456" \
-d '{
"event": "transaction_status_changed",
"current_status": "refunded",
"transaction_id": "HcDscltTIVK3VMAAOj7J",
"item_id": "ABC123456789",
"payment_method": "pix",
"date_created": "2025-07-24T12:32:06.146Z",
"date_updated": "2025-07-24T12:32:06.146Z",
"amount": 1000,
"paid_amount": 0,
"payout_amount": -1000,
"refunded_amount": 1000
}'
curl -X POST "https://suaaplicacao.com.br/pedidos/123456789/webhook" \
-H "Content-Type: application/json" \
-H "User-Agent: Marlim/1.0.0" \
-H "Marlim-Api-Signature: Star98765Wars43210ANewHope1977" \
-H "Authorization: Bearer 123456" \
-d '{
"event": "transaction_status_changed",
"current_status": "paid",
"refund_status": "refund_failed",
"transaction_id": "HcDscltTIVK3VMAAOj7J",
"item_id": "ABC123456789",
"payment_method": "pix",
"date_created": "2025-07-24T12:32:06.146Z",
"date_updated": "2025-07-24T12:32:06.146Z",
"amount": 1000,
"paid_amount": 1000,
"payout_amount": 1000,
"refunded_amount": 0
}'
Exemplos
- Estorno Cartão
- Estorno Pix
- Estorno sem Sucesso
- Transação não encontrada
curl -X POST "https://api.marlim.co/v3/transactions/HcDscltTIVK3VMAAOj7J/refund" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{}'
{
"status": "refunded",
"nsu": "31022400001",
"date_created": "2025-07-24T12:32:06.146Z",
"date_updated": "2025-07-24T13:32:06.146Z",
"authorized_amount": 1000,
"paid_amount": 0,
"refunded_amount": 1000,
"installments": "1",
"transaction_id": "HcDscltTIVK3VMAAOj7J",
"item_id": "ABC987654321",
"payment_method": "credit_card",
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"acquirer_status_code": "0000",
"acquirer_status_message": "The amount has been refunded to the card."
}
curl -X POST "https://api.marlim.co/v3/transactions/EeI6TVKxU5AXtAFCWsLP/refund" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{}'
{
"status": "refund_pending",
"date_created": "2025-07-09T14:46:20.598Z",
"date_updated": "2025-07-09T14:46:20.598Z",
"item_id": "ABC123456789",
"transaction_id": "mMaNRQqDAypdGatmyquR",
"amount": 1000,
"payout_amount": 1000,
"paid_amount": 1000,
"refunded_amount": 0
}
curl -X POST "https://api.marlim.co/v3/transactions/HcDscltTIVK3VMAAOj7J/refund" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{}'
{
"errors": {
"type": "status",
"message": "Only transactions with paid status can be refunded."
}
}
curl -X POST "https://api.marlim.co/v3/transactions/AABBCCDD/refund" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{}'
{
"errors": {
"type": "Transaction with id [ AABBCCDD ] was not found."
}
}