> The full uetr.ai documentation index is at https://uetr.ai/llms.txt, and every page under https://uetr.ai/docs/api is also Markdown at its address plus `.md`.

# Get a payment record

Read a payment record from its link: the bank reports on a paid transfer, shared by its owner with whoever holds the link. Any key can read a record it has the link to, from any account. A link the owner replaced, or one that never existed, is not found. Reading changes nothing and is not counted as a visit to the record.

`GET https://uetr.ai/api/v1/records/{record_token}`

- MCP tool: `get_payment_record`
- Access: any key or connection

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `record_token` | path | string (at least 8 characters, at most 64 characters) | Yes | The token at the end of a payment record link (/p/...), or the whole link. |

## Response

The response is one of 2 shapes.

### When `paused` is `false`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `found` | boolean | Yes |  |
| `paused` | boolean | Yes |  |
| `archivedAt` | string or null | No |  |
| `checksFinished` | boolean | Yes |  |
| `request` | object | Yes |  |
| `request.uetr` | string | Yes |  |
| `request.status` | string | Yes |  |
| `request.statusCode` | string or null | Yes |  |
| `request.statusReported` | boolean | Yes |  |
| `request.statusInfo` | object or null | Yes |  |
| `request.statusInfo.code` | string | Yes |  |
| `request.statusInfo.short_description` | string | Yes |  |
| `request.statusInfo.long_description` | string | Yes |  |
| `request.statusInfo.next_action` | string | Yes |  |
| `request.statusInfo.severity` | string | Yes |  |
| `request.statusInfo.is_terminal` | boolean | Yes |  |
| `request.senderBic` | string or null | Yes |  |
| `request.beneficiaryBic` | string or null | Yes |  |
| `request.lastPolledAt` | string or null | Yes |  |
| `request.showFees` | boolean | Yes |  |
| `request.showCommentary` | boolean | Yes |  |
| `events` | array of object | Yes |  |
| `events[].id` | string | Yes |  |
| `events[].observed_at` | string | Yes |  |
| `events[].bank_reported_at` | string or null | Yes |  |
| `events[].report_clock` | object | No |  |
| `events[].report_clock.at` | string or null | Yes |  |
| `events[].report_clock.observedAt` | string or null | Yes |  |
| `events[].report_clock.unavailable` | boolean | Yes |  |
| `events[].report_clock.sourceObservedAt` | string or null | No |  |
| `events[].created_at` | string or null | Yes |  |
| `events[].source_bank_name` | string | Yes |  |
| `events[].source_bank_bic` | string | Yes |  |
| `events[].source_bank_country` | string or null | Yes |  |
| `events[].status_code` | string or null | Yes |  |
| `events[].bank_processing_status` | string or null | Yes |  |
| `events[].extended_tracking_status` | string or null | Yes |  |
| `events[].amount` | number or string or null | Yes |  |
| `events[].fees` | number or string or null | Yes |  |
| `events[].currency` | string or null | Yes |  |
| `events[].payment_date` | string or null | Yes |  |
| `events[].bank_reference_number` | string or null | Yes |  |
| `events[].chips_ssn` | string or null | Yes |  |
| `events[].evidence` | array of value | No |  |
| `events[].status_info` | object or null | Yes |  |
| `events[].status_info.code` | string | Yes |  |
| `events[].status_info.short_description` | string | Yes |  |
| `events[].status_info.long_description` | string | Yes |  |
| `events[].status_info.next_action` | string | Yes |  |
| `events[].status_info.severity` | string | Yes |  |
| `events[].status_info.is_terminal` | boolean | Yes |  |
| `route` | array of object | Yes |  |
| `route[].key` | string | Yes |  |
| `route[].kind` | `sender`, `hop`, `beneficiary`, `handoff` | Yes |  |
| `route[].bic` | string or null | Yes |  |
| `route[].country` | string or null | Yes |  |
| `route[].name` | string or null | Yes |  |
| `route[].provenance` | `user`, `trail` | No |  |
| `route[].time` | string or null | No |  |
| `route[].timeSource` | `bank`, `monitoring` | No |  |
| `route[].city` | string or null | No |  |
| `route[].chargeBearer` | string or null | No |  |
| `route[].current` | boolean | No |  |
| `route[].eventId` | string or null | No |  |
| `position_sentence` | string or null | No | The payment position from its status and verified route, when commentary is shown. |

### When `paused` is `true`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `found` | boolean | Yes |  |
| `paused` | boolean | Yes |  |
| `pausedSince` | string or null | Yes | When automatic checking ended, or null when no date is known. |

## Example

```sh
curl -X GET "https://uetr.ai/api/v1/records/0f1e2d3c4b5a69788796a5b4c3d2e1f0" \
  -H "Authorization: Bearer $UETR_API_KEY"
```

The answer:

```json
{
  "found": true,
  "paused": false,
  "archivedAt": null,
  "checksFinished": false,
  "request": {
    "uetr": "eb6305c9-1f7f-49de-aed0-16487c27b42d",
    "status": "in_progress",
    "statusCode": "ACSP/G000",
    "statusReported": true,
    "statusInfo": {
      "code": "ACSP/G000",
      "short_description": "PaymentTransferredAndTracked",
      "long_description": "The Status Originator transferred the payment to the next Agent or to a Market Infrastructure. The payment transfer is tracked. No further updates will follow from the Status Originator.",
      "next_action": "On track. The payment was passed on and stays tracked, and this bank sends no further updates on it.",
      "severity": "info",
      "is_terminal": false
    },
    "senderBic": "BANKGB2L",
    "beneficiaryBic": "BANKDEFF",
    "lastPolledAt": "2026-10-14T09:20:00.000Z",
    "showFees": true,
    "showCommentary": true
  },
  "events": [
    {
      "id": "c2a4e6f8-1b3d-4f5a-8c7e-9d0b2a4c6e81",
      "observed_at": "2026-10-14T09:10:00.000Z",
      "bank_reported_at": "2026-10-14T09:10:00.000Z",
      "created_at": "2026-10-14T09:10:00.000Z",
      "source_bank_name": "Demo Sending Bank",
      "source_bank_bic": "BANKGB2L",
      "source_bank_country": "GB",
      "status_code": "ACSP/G000",
      "bank_processing_status": null,
      "extended_tracking_status": "",
      "amount": 1500.5,
      "fees": null,
      "currency": "USD",
      "payment_date": "2026-10-01",
      "bank_reference_number": null,
      "chips_ssn": null,
      "evidence": [],
      "status_info": {
        "code": "ACSP/G000",
        "short_description": "PaymentTransferredAndTracked",
        "long_description": "The Status Originator transferred the payment to the next Agent or to a Market Infrastructure. The payment transfer is tracked. No further updates will follow from the Status Originator.",
        "next_action": "On track. The payment was passed on and stays tracked, and this bank sends no further updates on it.",
        "severity": "info",
        "is_terminal": false
      }
    },
    {
      "id": "d3b5f7a9-2c4e-4a6b-9d8f-0e1c3b5d7f92",
      "observed_at": "2026-10-14T09:20:00.000Z",
      "bank_reported_at": "2026-10-14T09:20:00.000Z",
      "created_at": "2026-10-14T09:20:00.000Z",
      "source_bank_name": "Demo Correspondent Bank",
      "source_bank_bic": "BANKUS33",
      "source_bank_country": "US",
      "status_code": "ACSP/G000",
      "bank_processing_status": null,
      "extended_tracking_status": "",
      "amount": 1500.5,
      "fees": null,
      "currency": "USD",
      "payment_date": "2026-10-01",
      "bank_reference_number": null,
      "chips_ssn": null,
      "evidence": [],
      "status_info": {
        "code": "ACSP/G000",
        "short_description": "PaymentTransferredAndTracked",
        "long_description": "The Status Originator transferred the payment to the next Agent or to a Market Infrastructure. The payment transfer is tracked. No further updates will follow from the Status Originator.",
        "next_action": "On track. The payment was passed on and stays tracked, and this bank sends no further updates on it.",
        "severity": "info",
        "is_terminal": false
      }
    }
  ],
  "route": [],
  "position_sentence": "Handed to the next bank or payment system; the payment transfer remains tracked. The reports do not say which bank holds the money."
}
```

## Refusals

Besides the [access refusals](/docs/api/errors#access-refusals) every call can meet, this call can answer:

- [`not_found`](/docs/api/errors#not_found) (404): Not found.