> ## Documentation Index
> Fetch the complete documentation index at: https://docs.chargefy.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Obter uma transação

> Retorna um movimento do extrato pelo ID.

Retorna um movimento do extrato pelo `txn_`. É a leitura pontual do
[objeto transaction](/api-reference/transactions/object): quanto entrou ou
saiu, quando liquida e o que foi descontado no caminho.

Cada movimento pertence a uma única organização. A plataforma lê os próprios
movimentos de fee; o lojista lê os movimentos da venda dele. Um `txn_` que não
pertence à organização autenticada responde `404`, nunca `403` — o extrato de
terceiro não existe do ponto de vista da sua key.

## Autenticação

| Credencial             | Acesso                                                                 |
| ---------------------- | ---------------------------------------------------------------------- |
| API key da organização | Movimentos da própria organização da key.                              |
| API key da plataforma  | Movimentos da organização conectada indicada no header `Organization`. |

Escopo `read` é suficiente.

## Parâmetros de caminho

<ParamField path="id" type="string" required>
  ID do movimento (`txn_*`).
</ParamField>

<Note>
  A leitura respeita o modo da chave: uma key de produção não enxerga movimentos
  de sandbox, e vice-versa. O mesmo `txn_` consultado com a chave do modo errado
  responde `404`.
</Note>

<RequestExample>
  ```bash cURL theme={"theme":"css-variables"}
  curl -X GET "https://api.chargefy.io/v1/transactions/txn_Y5m9G8EV9gaM9myx" \
    -H "Authorization: Bearer {{API_KEY}}"
  ```
</RequestExample>

## Resposta

`200 OK` com o objeto `transaction` completo — mesmo shape retornado por
[`GET /v1/transactions`](/api-reference/transactions/list) e descrito campo a
campo em [O objeto Transaction](/api-reference/transactions/object).

Duas coisas que o seu parser precisa suportar desde a primeira integração:

* **`amount` e `net_amount` têm sinal.** Entrada é positiva, saída é negativa.
  Somar uma página é somar o extrato, sem tratar estorno como caso especial.
* **`net_amount = amount - fee_amount`, em todo tipo de movimento**, e
  `fee_amount` é a soma exata de `fee_details[].amount`. Se `fee_details` vier
  `[]`, `fee_amount` é `0`.

`settled_at` só é preenchido quando `status` é `paid`. Enquanto o movimento
está `pending`, use `available_at` como previsão — e trate `null` ali como
"data ainda não definida", não como "liquida hoje".

<ResponseExample>
  ```json Parcela de venda theme={"theme":"css-variables"}
  {
    "id": "txn_Y5m9G8EV9gaM9myx",
    "object": "transaction",
    "amount": 11000,
    "available_at": "2026-09-19T00:00:00Z",
    "created_at": "2026-07-20T14:32:11Z",
    "currency": "brl",
    "description": "Installment 2/10",
    "fee_amount": 1399,
    "fee_details": [
      {
        "amount": 1000,
        "description": "Installment interest",
        "type": "installment_interest"
      },
      {
        "amount": 399,
        "description": "Chargefy processing fee",
        "type": "chargefy_fee"
      }
    ],
    "installment": 2,
    "installment_count": 10,
    "livemode": true,
    "metadata": {},
    "net_amount": 9601,
    "payment_intent": "pi_sNN4v8eiGe2J25PV",
    "settled_at": null,
    "source": "ch_5irPR9SANyNmKc4r",
    "status": "pending",
    "type": "charge",
    "updated_at": null
  }
  ```

  ```json Estorno theme={"theme":"css-variables"}
  {
    "id": "txn_sm4Lk6f9p24Rv5hY",
    "object": "transaction",
    "amount": -11000,
    "available_at": null,
    "created_at": "2026-07-21T09:14:03Z",
    "currency": "brl",
    "description": "Refund",
    "fee_amount": 0,
    "fee_details": [],
    "installment": null,
    "installment_count": null,
    "livemode": true,
    "metadata": {},
    "net_amount": -11000,
    "payment_intent": "pi_sNN4v8eiGe2J25PV",
    "settled_at": "2026-07-21T09:14:03Z",
    "source": "re_YPuC24HYFqF3LQh7",
    "status": "paid",
    "type": "refund",
    "updated_at": "2026-07-21T09:14:03Z"
  }
  ```
</ResponseExample>

## Erros comuns

O `txn_` não existe, pertence a outra organização, ou foi consultado com uma
key do outro modo — os três casos respondem igual, de propósito:

```json 404 theme={"theme":"css-variables"}
{
  "error": {
    "code": "resource_missing",
    "message": "No such transaction",
    "type": "invalid_request_error"
  }
}
```

```json 401 theme={"theme":"css-variables"}
{
  "error": {
    "code": "authentication_failed",
    "message": "Invalid API key provided.",
    "type": "authentication_error"
  }
}
```

O extrato é somente leitura: ele é gerado pelo processamento do pagamento,
nunca criado ou alterado por integração. Qualquer verbo diferente de `GET`
responde `405`.

```json 405 theme={"theme":"css-variables"}
{
  "error": {
    "code": "method_not_allowed",
    "message": "Method not allowed",
    "type": "invalid_request_error"
  }
}
```
