# Atualizar transação

> Atualiza uma transação existente. Todos os campos são opcionais, envie apenas o que deseja alterar.

Página: https://doc.rapidchargeback.com/canais/transactions/atualizar-transacao/

Atualiza uma transação existente. Todos os campos são opcionais, envie apenas o que deseja alterar.

Quando child records são enviados (`items`, `addresses`, `payments`, `refunds`, `customer`), eles **substituem completamente** os registros existentes.

## Endpoint

```
PATCH https://api.rapidchargeback.com/api/v1/transactions/:id
```

## Autenticação

```
Authorization: Basic base64(client_id:client_secret)
Content-Type: application/json
```

---

## Parâmetro de URL

| Parâmetro | Tipo | Descrição |
|---|---|---|
| `id` | string (UUID) | ID da transação (retornado no campo `id` da resposta de criação) |

Não guardou o `id`? Ache a transação [pelo ID do seu sistema](https://doc.rapidchargeback.com/canais/transactions/consultar-transacao/#pelo-id-do-seu-sistema).

---

## Campos aceitos

Todos os campos aceitos por [Criar transação](https://doc.rapidchargeback.com/canais/transactions/criar-transacao/) podem ser enviados aqui, todos opcionais:

- Campos enviados substituem o valor atual
- Campos omitidos mantêm o valor atual
- Child records enviados (`items`, `addresses`, etc.) substituem completamente os existentes

---

## Validações

- Se `merchant_id` for alterado, o novo merchant deve pertencer à sua empresa
- Se `external_id` ou `external_source` forem alterados, a combinação não pode duplicar outra transação existente
- Se a transação já foi utilizada por alguma solução (ex: consultada pela **Prevenção**), a atualização é bloqueada com `409 Conflict`

---

## Exemplo de requisição

### Atualizar apenas o ARN e auth_code

```bash
curl -X PATCH https://api.rapidchargeback.com/api/v1/transactions/00000000-0000-0000-0000-000000000042 \
  -H "Authorization: Basic Y2xpZW50X2lkOmNsaWVudF9zZWNyZXQ=" \
  -H "Content-Type: application/json" \
  -d '{
    "arn": "74537119547024600128228",
    "auth_code": "AUTH999"
  }'
```

### Atualizar items (substitui todos os itens existentes)

```bash
curl -X PATCH https://api.rapidchargeback.com/api/v1/transactions/00000000-0000-0000-0000-000000000042 \
  -H "Authorization: Basic Y2xpZW50X2lkOmNsaWVudF9zZWNyZXQ=" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 300.00,
    "items": [
      { "product_description": "Plano Premium", "unit_price": 150.00 },
      { "product_description": "Taxa de Setup", "unit_price": 150.00 }
    ]
  }'
```

---

## Exemplos de resposta

### Sucesso

```json
{
  "data": {
    "id": "00000000-0000-0000-0000-000000000042",
    "merchant_id": "00000000-0000-0000-0000-000000000001",
    "amount": 300.00,
    "transaction_items": [
      { "product_description": "Plano Premium", "unit_price": 150.00 },
      { "product_description": "Taxa de Setup", "unit_price": 150.00 }
    ]
  }
}
```

### Transação não encontrada

```json
{
  "error": {
    "code": "TRANSACTION_NOT_FOUND",
    "message": "Transaction not found"
  }
}
```

### Transação imutável (já utilizada por uma solução)

```json
{
  "error": {
    "code": "TRANSACTION_IMMUTABLE",
    "message": "Transaction cannot be modified, it has been used by a network event"
  }
}
```

### Duplicata de external_id

```json
{
  "error": {
    "code": "TRANSACTION_DUPLICATE",
    "message": "Another transaction with this external_source/external_id already exists"
  }
}
```
