# Операции по всем картам

Лента по всем картам компании одним запросом, от новых к старым. В
каждой строке есть `cardId` и `cardMaskedPan`, чтобы различать карты.
Пополнения сюда не входят — см. `GET /cards/recharges`. Авторизация и
её проведение схлопываются в одну финальную строку. Строки пополнений
отбрасываются уже после выборки страницы, поэтому страница может быть
короче `limit`, хотя более старые строки есть, — листайте, пока не
придёт пустая страница. Дата без времени — это 00:00 UTC. В
`cardsTestMode` лента пустая. Нужно право `cards.read`.

Endpoint: GET /cards/transactions
Version: 1.0.0
Security: apiKeyAuth

## Security:

  - `apiKeyAuth` (unknown)
    apiKey in header X-API-Key

## Query parameters:

  - `from` (string)
    ISO-8601. Только строки с `transactionTime >= from`.

  - `to` (string)
    ISO-8601. Только строки с `transactionTime <= to`.

  - `limit` (integer)

  - `before` (string)

## Response 200:

  - `200` (unknown)
    Страница операций

## Response 200 fields (application/json):

  - `id` (string, required)

  - `cardId` (string, required)
    ID карты в этом API

  - `processorBillId` (string, required)
    ID операции у эквайера — указывайте его в обращениях в поддержку.
В вебхуках это же значение называется `upayBillId`.

  - `processorOrderNo` (string | null)

  - `processorParentId` (string | null)
    Общий у авторизации и её проведения или отмены — по нему финальная
строка связывается с авторизацией, которую вы сохранили из
вебхука. В вебхуках это же значение называется `upayParentId`.

  - `type` (integer)
    Код типа операции у эквайера, см. `typeName`

  - `typeName` (string | null)
    Как прислал эквайер: `Consumption` (покупка), `Refund` (возврат),
`Deactivate` (деактивация). Строки пополнений
(`Recharge/Collateral`) в этот список не входят. Могут появиться
новые значения — неизвестные показывайте как есть.
    Example: Consumption

  - `status` (integer)
    Код статуса у эквайера, см. `statusName`

  - `statusName` (string | null)
    `Unposted` (авторизация, ещё не проведена), `Posted` (проведено),
`Cancelled` (авторизация отменена), `Failed` (отклонено).
    Example: Posted

  - `direction` (integer | null)
    `2` — деньги уходят с карты, `1` — деньги приходят на карту
    Example: 2

  - `directionName` (string | null)
    `Pay` — списание с карты, `Collect` — зачисление на карту
    Example: Pay

  - `amount` (string, required)
    Десятичная строка в валюте карты

  - `fee` (string | null)

  - `currency` (string | null)
    Example: USD

  - `originalAmount` (string | null)
    Сумма в валюте мерчанта, до конвертации в валюту карты. Покупка на
910 TRY выглядит так: `amount: "19.6248"`, `currency: "USD"`,
`originalAmount: "910"`, `originalCurrency: "TRY"`. Приходит у
покупок и возвратов (в том числе у покупок в долларах); у
служебных строк (пополнение, деактивация карты) — `null`.
    Example: 910

  - `originalCurrency` (string | null)
    Example: TRY

  - `cardMaskedPan` (string | null)
    Заполняется только в общей ленте `GET /cards/transactions`.

  - `merchantName` (string | null)

  - `merchantMcc` (string | null)
    Код категории торговой точки (MCC), как его прислал эквайер. Приходит у покупок, где эквайер его передал; у пополнений, закрытий карты и строк без мерчанта — `null`.
    Example: 5816

  - `ditchCode` (string | null)
    Канал эквайринга, а не категория мерчанта. Оставлен ради обратной совместимости — за MCC берите `merchantMcc`.
    Example: straitsx

  - `reason` (string | null)
    Пояснение эквайера, например причина отклонения

  - `transactionTime` (string, required)

  - `syncedAt` (string)

## Response 400:

  - `400` (unknown)
    Некорректный `from` / `to` / `before`

## Response 401:

  - `401` (unknown)
    Нет учётных данных или они неверны (API-ключ / сессионный токен).

## Response 401 fields (application/json):

  - `statusCode` (integer, required)
    HTTP-код ответа.
    Example: 400

  - `error` (string, required)
    Текстовое название HTTP-кода (у ошибок прав — `PERMISSION_DENIED`, как раньше).
    Example: Bad Request

  - `errorCode` (string, required)
    Стабильный машиночитаемый код, есть всегда. Со временем могут
появляться новые коды, поэтому неизвестное значение обрабатывайте
как общую ошибку для своего `statusCode`.
    Enum: "VALIDATION_ERROR", "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "CONFLICT", "UNPROCESSABLE", "INTERNAL_ERROR", "SERVICE_UNAVAILABLE", "BAD_GATEWAY", "AUTH_REQUIRED", "INVALID_API_KEY", "INVALID_CREDENTIALS", "SESSION_INVALID", "COMPANY_INACTIVE", "NO_COMPANY_MEMBERSHIP", "PERMISSION_DENIED", "ACCOUNT_ALREADY_EXISTS", "QR_AMOUNT_MISSING", "QR_INVALID", "QR_RESOLVE_FAILED", "AMOUNT_BELOW_MIN", "AMOUNT_ABOVE_MAX", "ST00012_SUM_MISSING", "ST00012_SUM_INVALID", "GIBDD_UIN_INVALID", "FINE_ALREADY_PAID", "FINE_NOT_FOUND", "QUOTE_NOT_FOUND", "QUOTE_EXPIRED", "INSUFFICIENT_BALANCE", "COMPANY_NOT_FOUND", "ORDER_NOT_FOUND", "UNSUPPORTED_CALLBACK_STATUS", "RATE_UNAVAILABLE", "DRIVER_HELPER_TRANSIENT", "WALLET_BACKEND_ERROR", "DISPUTE_NOT_FOUND", "DISPUTE_NOT_ALLOWED", "IDEMPOTENCY_KEY_REQUIRED", "CARDS_NOT_ENABLED", "CARD_NOT_FOUND", "CARD_REQUEST_NOT_FOUND", "CARD_REQUEST_NOT_CANCELABLE", "CARD_NOT_ACTIVE", "CARD_NOT_OWNED", "CARD_RECHARGE_INVALID", "CARD_EXTERNAL_ID_TAKEN", "BRIDGE_ERROR", "MEMBER_NOT_FOUND", "CANNOT_CHANGE_OWN_ROLE", "ROLE_CHANGE_NOT_ALLOWED", "INVITE_NOT_FOUND", "INVITE_USED", "INVITE_EXPIRED", "INVITE_INVALID", "WEBHOOK_DELIVERY_NOT_FOUND", "WEBHOOK_URL_NOT_CONFIGURED", "INVALID_SIGNATURE", "PAYOUTS_NOT_ENABLED", "PAYOUT_NOT_FOUND", "PAYOUT_REQUISITE_INVALID", "PAYOUT_BANK_UNKNOWN", "PAYOUT_BANK_REQUIRED", "PAYOUT_ACTIVE_LIMIT", "PAYOUT_REQUISITE_COOLDOWN", "PAYOUT_OUTSIDE_WORKING_HOURS", "PAYOUT_NOT_CANCELABLE", "PAYOUT_DISPUTE_NOT_ALLOWED", "PAYOUT_SERVICE_REJECTED", "PAYOUT_SERVICE_UNAVAILABLE"

  - `message` (any, required)
    Сообщение для человека (на русском). У ошибок валидации — массив строк.

  - `details` (object)
    Необязательные подробности ошибки, например
`{ "required": "orders.create" }`, `{ "minAmountRub": 100 }`
или `{ "nspkCode": "RQ00010" }`.
    Example: {"nspkCode":"RQ00010"}

  - `required` (string)
    Только у `PERMISSION_DENIED` — право, которого не хватает API-ключу.
    Example: orders.create

  - `path` (string)
    Путь запроса, вызвавшего ошибку, вместе с query-строкой.
    Example: /orders/prepare

  - `timestamp` (string)
    Время ошибки (ISO 8601).
    Example: 2026-05-27T16:41:49.000Z

  - `requestId` (string)
    Идентификатор запроса, он же приходит в заголовке ответа
`X-Request-Id`. Указывайте его в обращениях в поддержку.
    Example: 439436bd-201c-4084-9063-58cfa2cd40ad

## Response 403:

  - `403` (unknown)
    Доступ к картам закрыт: либо компании не подключена программа карт,
либо у API-ключа нет нужного права на карты.

## Response 403 fields (application/json):

  - `statusCode` (integer, required)
    HTTP-код ответа.
    Example: 400

  - `error` (string, required)
    Текстовое название HTTP-кода (у ошибок прав — `PERMISSION_DENIED`, как раньше).
    Example: Bad Request

  - `errorCode` (string, required)
    Стабильный машиночитаемый код, есть всегда. Со временем могут
появляться новые коды, поэтому неизвестное значение обрабатывайте
как общую ошибку для своего `statusCode`.
    Enum: "VALIDATION_ERROR", "BAD_REQUEST", "UNAUTHORIZED", "FORBIDDEN", "NOT_FOUND", "CONFLICT", "UNPROCESSABLE", "INTERNAL_ERROR", "SERVICE_UNAVAILABLE", "BAD_GATEWAY", "AUTH_REQUIRED", "INVALID_API_KEY", "INVALID_CREDENTIALS", "SESSION_INVALID", "COMPANY_INACTIVE", "NO_COMPANY_MEMBERSHIP", "PERMISSION_DENIED", "ACCOUNT_ALREADY_EXISTS", "QR_AMOUNT_MISSING", "QR_INVALID", "QR_RESOLVE_FAILED", "AMOUNT_BELOW_MIN", "AMOUNT_ABOVE_MAX", "ST00012_SUM_MISSING", "ST00012_SUM_INVALID", "GIBDD_UIN_INVALID", "FINE_ALREADY_PAID", "FINE_NOT_FOUND", "QUOTE_NOT_FOUND", "QUOTE_EXPIRED", "INSUFFICIENT_BALANCE", "COMPANY_NOT_FOUND", "ORDER_NOT_FOUND", "UNSUPPORTED_CALLBACK_STATUS", "RATE_UNAVAILABLE", "DRIVER_HELPER_TRANSIENT", "WALLET_BACKEND_ERROR", "DISPUTE_NOT_FOUND", "DISPUTE_NOT_ALLOWED", "IDEMPOTENCY_KEY_REQUIRED", "CARDS_NOT_ENABLED", "CARD_NOT_FOUND", "CARD_REQUEST_NOT_FOUND", "CARD_REQUEST_NOT_CANCELABLE", "CARD_NOT_ACTIVE", "CARD_NOT_OWNED", "CARD_RECHARGE_INVALID", "CARD_EXTERNAL_ID_TAKEN", "BRIDGE_ERROR", "MEMBER_NOT_FOUND", "CANNOT_CHANGE_OWN_ROLE", "ROLE_CHANGE_NOT_ALLOWED", "INVITE_NOT_FOUND", "INVITE_USED", "INVITE_EXPIRED", "INVITE_INVALID", "WEBHOOK_DELIVERY_NOT_FOUND", "WEBHOOK_URL_NOT_CONFIGURED", "INVALID_SIGNATURE", "PAYOUTS_NOT_ENABLED", "PAYOUT_NOT_FOUND", "PAYOUT_REQUISITE_INVALID", "PAYOUT_BANK_UNKNOWN", "PAYOUT_BANK_REQUIRED", "PAYOUT_ACTIVE_LIMIT", "PAYOUT_REQUISITE_COOLDOWN", "PAYOUT_OUTSIDE_WORKING_HOURS", "PAYOUT_NOT_CANCELABLE", "PAYOUT_DISPUTE_NOT_ALLOWED", "PAYOUT_SERVICE_REJECTED", "PAYOUT_SERVICE_UNAVAILABLE"

  - `message` (any, required)
    Сообщение для человека (на русском). У ошибок валидации — массив строк.

  - `details` (object)
    Необязательные подробности ошибки, например
`{ "required": "orders.create" }`, `{ "minAmountRub": 100 }`
или `{ "nspkCode": "RQ00010" }`.
    Example: {"nspkCode":"RQ00010"}

  - `required` (string)
    Только у `PERMISSION_DENIED` — право, которого не хватает API-ключу.
    Example: orders.create

  - `path` (string)
    Путь запроса, вызвавшего ошибку, вместе с query-строкой.
    Example: /orders/prepare

  - `timestamp` (string)
    Время ошибки (ISO 8601).
    Example: 2026-05-27T16:41:49.000Z

  - `requestId` (string)
    Идентификатор запроса, он же приходит в заголовке ответа
`X-Request-Id`. Указывайте его в обращениях в поддержку.
    Example: 439436bd-201c-4084-9063-58cfa2cd40ad

## Response 401 examples:

  - `Не передан ни API-ключ, ни сессионный токен` (unknown)

  - `Неизвестный или перевыпущенный API-ключ` (unknown)

  - `Сессионный токен истёк или повреждён` (unknown)

  - `Компания отключена (API-ключ участника)` (unknown)

  - `Участник удалён из компании` (unknown)

## Response 403 examples:

  - `Программа карт не подключена компании` (unknown)

  - `У API-ключа нет права на карты` (unknown)

  - `Карта или заявка принадлежит другой компании` (unknown)

