Transactions and receipts
Check payment status, match payment attempts, and save payment 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; direct HTTP integrations can use List transactions and Get a transaction.
from recuut import Recuutwith 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:
from recuut import Recuutfrom recuut.merchant_api import ListOrder, TransactionFilter, TransactionStatuswith 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:
from recuut import Recuutwith 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.