# How to check status and retrieve info (https://docs-fpm2731fy-ton-core-docs.vercel.app/llms/ecosystem/ton-pay/payment-integration/status-info/content.md)



After sending, look up the final result and details. The SDK exposes two lookup functions.

## By body hash [#by-body-hash]

Use the Base64 hash of the signed message body payload.

```ts
import { getTonPayTransferByBodyHash } from "@ton-pay/api";

const info = await getTonPayTransferByBodyHash(bodyBase64Hash, {
  chain: "testnet",
});
```

## By reference [#by-reference]

Use the `reference` returned by `createTonPayTransfer`.

```ts
import { getTonPayTransferByReference } from "@ton-pay/api";

const info = await getTonPayTransferByReference(reference, {
  chain: "testnet",
});
```

### Return shape [#return-shape]

```ts
type CompletedTonPayTransferInfo = {
  amount: string;
  rawAmount: string;
  senderAddr: string;
  recipientAddr: string;
  asset: string;
  assetTicker?: string;
  status: string;
  reference: string;
  bodyBase64Hash: string;
  txHash: string;
  traceId: string;
  commentToSender?: string;
  commentToRecipient?: string;
  date: string;
  errorCode?: number;
  errorMessage?: string;
};
```

Use `status` to drive UI state and use `reference`, `bodyBase64Hash`, and `txHash` for reconciliation.

<Callout type="caution">
  For Toncoin payments, the recipient amount may be reduced by [network fees](/llms/foundations/fees/content.md). Use jettons or slightly overpay in TON when an exact settlement amount is
  required.
</Callout>

## Response fields [#response-fields]

<ResponseField name="amount" type="string">
  Human-readable amount with decimals.
</ResponseField>

<ResponseField name="rawAmount" type="string">
  Amount in base units; nano for TON and jetton base units.
</ResponseField>

<ResponseField name="senderAddr" type="string">
  Sender wallet address.
</ResponseField>

<ResponseField name="recipientAddr" type="string">
  Recipient wallet address.
</ResponseField>

<ResponseField name="asset" type="string">
  Asset address. "TON" for coin or jetton master address.
</ResponseField>

<ResponseField name="status" type="string">
  Possible values:

  * `pending` – the transfer is created and awaits confirmation on the blockchain.
  * `success` – the transfer is completed successfully; the trace completes without errors.
  * `error` – the transfer fails; the trace completes with an error.
</ResponseField>

<ResponseField name="reference" type="string">
  Tracking reference returned at creation time.
</ResponseField>

<ResponseField name="bodyBase64Hash" type="string">
  Base64 hash of the signed message body content (payload). Used for lookups.
</ResponseField>

<ResponseField name="txHash" type="string">
  Transaction hash assigned by the network.
</ResponseField>

<ResponseField name="traceId" type="string">
  Trace identifier for explorer.
</ResponseField>

<ResponseField name="commentToSender" type="string">
  Optional note shown to the payer while signing. Public on-chain; avoid confidential data and keep under 120 characters to reduce gas.
</ResponseField>

<ResponseField name="commentToRecipient" type="string">
  Optional note shown to the payee after receipt. Public on-chain; avoid confidential data and keep under 120 characters to reduce gas.
</ResponseField>
