# Transactions and receipts (/guides/operate/transactions-receipts)

A transaction shows its current payment status, payer, amounts, times, and `payment_request_id`. Authorized means the payer approved payment. Settled means payment finished. The Python examples assume the [client is installed and configured](/sdks/python/client/); direct HTTP integrations can use [List transactions](/api-reference/transactions/payments.transactions.list/) and [Get a transaction](/api-reference/transactions/payments.transactions.get/).

```python
from recuut import Recuut

with Recuut() as client:
    transactions = client.transactions.list(page_size=50)
    for transaction in transactions.items:
        print(
            transaction.id,
            transaction.status,
            transaction.payment_request_id,
        )
```

Filter by status or payer when you need a smaller list:

```python
from recuut import Recuut
from recuut.merchant_api import ListOrder, TransactionFilter, TransactionStatus

with Recuut() as client:
    failed = client.transactions.list(
        filter=TransactionFilter(
            status=TransactionStatus.FAILED,
            payer_id="pyr_00000000000070008000000000000000",
        ),
        order=ListOrder.NEWEST,
        page_size=25,
    )
```

Use the transaction ID to read details and get the receipt for a successful payment:

```python
from recuut import Recuut

with Recuut() as client:
    transactions = client.transactions.list(page_size=1)
    if not transactions.items:
        raise RuntimeError("Complete a payment before requesting its receipt.")
    detail = client.transactions.get(transaction_id=transactions.items[0].id)
    if receipt := detail.receipt:
        print(receipt.model_dump_json())
        print(
            receipt.payment.transaction_hash,
            receipt.payment.settled_atomic,
            receipt.payment.asset,
            receipt.payment.network,
        )
```

A receipt is a permanent record of one successful payment. It includes the seller, resource, price, test or live data, parties, and payment reference. A pending, authorized, settling, reconciling, or failed transaction has no receipt.

Amounts ending in `_atomic` are integer strings in the settlement asset’s smallest unit. Base Sepolia USDC uses six decimal places: `10000` is 0.01 USDC and `1000000` is 1 USDC. Use the receipt’s `asset`, `asset_id`, and `network` before formatting an amount for people.

For a pending transaction, query the same ID with bounded waits and honor `Retry-After` when provided. Stop on `succeeded` or `failed`; do not infer a terminal outcome from an application timeout.

Let the SDK check a receipt before your app uses it. The SDK rejects a receipt when it disagrees with the transaction, completion response, or `PAYMENT-RESPONSE`.

`payment_request_id` helps you match a transaction to your own logs. Store it when useful. Do not parse it or infer payment status from its shape.

[Inspect payers →](/guides/operate/payers/)
